Certyfikaty w Kubernetesie
W dobie chmur publicznych wiedza o komunikacji pomiędzy poszczególnymi komponentami Kubernetesa być może nie jest niezbędna do używania klastrów, ale może być przydatna. Jeżeli jednak masz zamiar podchodzić do egzaminów certyfikacyjnych CKA lub CKS to wiedza o gdzie instalowane są certyfikaty w Kubernetesie będzie niezbędna.
Komponenty
Poniższy schemat przedstawia poszczególne komponenty w Kubernetesie. Nie będę ich tu opisywał. Zainteresowanych odsyłam do dokumentacji. Strzałkami zaznaczyłem komunikację pomiędzy poszczególnymi usługami. Jak się zapewne domyślacie, każdy serwer oraz klienci powinien posiadać swój certyfikat, a nad całością powinno „czuwać” tak zwane Certificate Authority.
Certyfikaty w Kubernetesie
W Kubernetesie certyfikaty potrzebne są m.in. dla następujących połączeń:
- certyfikat klienta dla komunikacji Kubelet do API Server
- certyfikat serwera dla API Server
- certyfikat klienta dla komunikacji API Server do Kubelet
- certyfikat klienta dla komunikacji API Server do etcd
- certyfikat klienta dla komunikacji controller manager do API Server
- certyfikat klienta dla komunikacji scheduler do API Server
Jest ich oczywiście więcej, ale skupmy się na wiedzy potrzebnej do egzaminów. Gdzie i jak je znaleźć?
Zakładam, że mamy klaster uruchomiony za pomocą narzędzie kubeadm. Z takim będziecie mieli do czynienia podczas egzaminów. Wystarczy klaster złożony z jednego mastera i jednego worker noda.
Po utworzeniu klastra wchodzimy przez ssh na mastera. Pokażę po kolei gdzie są poszczególne certyfikaty.
CA cert, API Server cert, API Server client cert ->etcd, API Server client cert ->kubelet
Znajdują się w katalogu /etc/kubernetes/pki Wchodzimy więc do niego i sprawdzamy zawartość:
cd /etc/kubernetes/pki && ll
etcd server cert
Umieszczony jest w podkatalogu etcd. Sprawdźmy więc jego zawartość
ll etcd
Scheduler client cert ->API Server
Ten certyfikat przechowywany jest w pliku konfiguracyjnym scheduler.conf. Aby przejrzeć jego zawartość musimy podnieść uprawnienia.
sudo -i cat /etc/kubernetes/scheduler.conf
Controller Manager client cert -> API Server
cat /etc/kubernetes/controller-manager.conf
Kubelet client cert -> API Server
Kubelet jest komponentem, który znajdziemy zarówno na masterze jak i na worker nodach. Następne dwa certyfikaty będę więc zainstalowane w obu mniejscach.
cat /etc/kubernetes/kubelet.conf
Kubelet server cert
cd /var/lib/kubelet/pki && ll
Jeżeli chcesz wiedzieć więcej o certyfikatach w Kubernetesie warto spojrzeć na ten materiał: All You Need to Know About Certificates in Kubernetes lub przeczytać dokumentację.