11.5. kubelet의 TLS 보안 프로필 구성
HTTP 서버 역할을 할 때 kubelet에 대한 TLS 보안 프로필을 구성하려면 KubeletConfig
CR(사용자 정의 리소스)을 생성하여 특정 노드에 대해 사전 정의 또는 사용자 지정 TLS 보안 프로필을 지정합니다. TLS 보안 프로필이 구성되지 않은 경우 기본 TLS 보안 프로필은 Intermediate
입니다.
kubelet은 HTTP/GRPC 서버를 사용하여 명령을 Pod에 전송하고 로그를 수집하며 kubelet을 통해 Pod에서 exec 명령을 실행하는 Kubernetes API 서버와 통신합니다.
작업자 노드에서 Old
TLS 보안 프로필을 구성하는 샘플 KubeletConfig
CR
apiVersion: config.openshift.io/v1 kind: KubeletConfig ... spec: tlsSecurityProfile: old: {} type: Old machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" #...
구성된 노드의 kubelet.conf
파일에서 구성된 TLS 보안 프로필의 암호 및 최소 TLS 버전을 확인할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
KubeletConfig
CR을 생성하여 TLS 보안 프로필을 구성합니다.Custom
프로파일의 샘플KubeletConfig
CRapiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-kubelet-tls-security-profile spec: tlsSecurityProfile: type: Custom 1 custom: 2 ciphers: 3 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" 4 #...
KubeletConfig
오브젝트를 생성합니다.$ oc create -f <filename>
클러스터의 작업자 노드 수에 따라 구성된 노드가 하나씩 재부팅될 때까지 기다립니다.
검증
프로필이 설정되었는지 확인하려면 노드가 Ready
상태가 된 후 다음 단계를 수행합니다.
구성된 노드의 디버그 세션을 시작합니다.
$ oc debug node/<node_name>
디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다.sh-4.4# chroot /host
kubelet.conf
파일을 확인합니다.sh-4.4# cat /etc/kubernetes/kubelet.conf
출력 예
"kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", #... "tlsCipherSuites": [ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" ], "tlsMinVersion": "VersionTLS12", #...