[CKS] 1-8. TLS Certificates

안정적인 쿠버네티스 운영을 위해 인증서 관리와 로그 분석은 보안을 강화하고 문제를 신속하게 해결하는 방법을 알아봅니다.

개요

기존 인증서를 확인하는 방법을 확인하고 인증서에 대한 헬스 체크를 수행하여 관리하는 방법을 살펴봅니다.

인증서 관리

kubeadm 같은 도구를 사용하는 경우 올바른 인증서를 찾는 방법을 확인합니다.

우선 api-server를 확인합니다.

모든 인증서 정보가 존재합니다.

cat /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
  containers:
    - command:
        - kube-apiserver
        - --authorization-mode=Node,RBAC
        - --advertise-address=172.17.0.32
        - --allow-privileged=true

        - --client-ca-file=/etc/kubernetes/pki/ca.crt


        - --disable-admission-plugins=PersistentVolumeLabel
        - --enable-bootstrap-token-auth=true

        - --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
        - --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
        - --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key


        - --etcd-servers=https://127.0.0.1:2379
        - --insecure-port=0

        - --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
        - --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
        - --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key

인증서를 디코딩하고 정보를 확인합니다.

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

로그 확인

문제가 발생하면 서비스 로그를 검토하면 문제를 정확히 파악하는 데 도움이 될 수 있습니다. 클러스터 배포 방식에 따라 다음 방법 중 하나를 사용하세요.

Native OS

journalctl -u etcd.service -l

kubeadm

docker ps -a
docker logs <CONTAINER_ID>

조직 인증서 관리를 위한 Excel 표를 구성하는 방식입니다. 지속적인 인증서 관리 및 감사에 매우 유용할 수 있습니다.

Notion Image

Hands-on LAB

kubernetes 설정 파일은 /etc/kubernetes에 저장됩니다.

cd /etc/kubernetes

클라이언트는 연결하고자하는 서버가 제시하는 인증서가 신뢰할 수 있는지 확인하기 위해서 서버의 인증서를 가지고 있어야한다.

Reference