쿠버네티스 TLS 암호화 설정 방법

TLS 암호화를 구성하는 것은 클러스터의 보안을 강화하는 중요한 단계입니다. 클라이언트와 서버 간의 통신에 사용되는 암호화 알고리즘을 지정하여, 안전한 데이터 전송을 보장할 수 있습니다. 쿠버네티스에서는 이 설정을 etcd, kube-apiserver, kubelet의 세 가지 주요 구성 요소에 각각 적용해야 합니다.

1. etcd 설정 변경

etcd는 쿠버네티스 클러스터의 모든 데이터를 저장하는 분산형 데이터베이스입니다. etcd 간의 통신과 etcd와 API 서버 간의 통신을 보호하기 위해 TLS 설정을 변경해야 합니다.

  • 설정 파일: /etc/kubernetes/manifests/etcd.yaml (kubeadm으로 설치한 경우)
  • 추가/수정 옵션:
    • --cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: etcd에서 지원할 TLS 암호화 스위트를 지정합니다. 이 옵션은 클라이언트-서버 및 etcd 노드 간의 통신에 적용됩니다.
    • --tls-min-version=TLS1.3: etcd가 지원할 최소 TLS 버전을 TLS 1.3으로 설정하여, 오래된 취약한 TLS 버전을 비활성화합니다.

https://etcd.io/docs/v3.6/op-guide/configuration/

Configuration options

etcd configuration files, flags, and environment variables

etcd.io

 
 

2. kube-apiserver 설정 변경

kube-apiserver는 클러스터의 모든 REST 요청을 처리하는 핵심 구성 요소입니다. API 서버가 클라이언트와 통신할 때 사용할 암호화 스위트를 명확히 지정해야 합니다.

  • 설정 파일: /etc/kubernetes/manifests/kube-apiserver.yaml
  • 추가/수정 옵션:
    • --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: API 서버가 사용하는 TLS 암호화 스위트를 지정합니다. 이 설정은 API 서버가 외부 클라이언트와 통신할 때 적용됩니다.
    • --tls-min-version=VersionTLS13: API 서버가 허용할 최소 TLS 버전을 TLS 1.3으로 설정합니다.

https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/

kube-apiserver

Synopsis The Kubernetes API server validates and configures data for the api objects which include pods, services, replicationcontrollers, and others. The API Server services REST operations and provides the frontend to the cluster's shared state through w

kubernetes.io

 
 

3. kubelet 설정 변경

kubelet은 각 노드에서 실행되는 에이전트로, API 서버와 통신하며 파드를 관리합니다. kubelet 또한 TLS 통신을 사용하므로, API 서버와 호환되는 TLS 설정을 갖추어야 합니다.

  • 설정 파일: /var/lib/kubelet/config.yaml
  • 추가/수정 옵션:
    • tlsCipherSuites: ["TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"]
    • tlsMinVersion: VersionTLS13
    • kubelet은 커맨드 라인 플래그(--tls-cipher-suites)를 사용하거나, 설정 파일(tlsCipherSuites, tlsMinVersion)을 통해 값을 설정할 수 있습니다.

https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/

kubelet

Synopsis The kubelet is the primary "node agent" that runs on each node. It can register the node with the apiserver using one of: the hostname; a flag to override the hostname; or specific logic for a cloud provider. The kubelet works in terms of a PodSpe

kubernetes.io

 

'k8s > CKS' 카테고리의 다른 글

[CKS] AppArmor  (0) 2025.09.11
[CKS] BOM 툴 trivy -2  (0) 2025.09.10
[CKS] 쿠버네티스 API 서버 보안 강화: 익명 접근 차단  (0) 2025.09.09
[CKS] BOM 툴 trivy -1  (0) 2025.09.09
[CKS] Pod Security Standards - restricted  (0) 2025.09.08

+ Recent posts