6.3. Kubernetes KMS v2 비활성화
KMS 암호화를 비활성화하고 로컬 etcd 암호화로 마이그레이션하여 작업을 간소화하거나 외부 KMS 연결 문제를 해결할 수 있습니다.
Kubernetes KMS v2는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
6.3.1. KMS 암호화 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
외부 KMS 암호화를 비활성화하고 로컬 암호화로 마이그레이션하여 작업을 간소화하거나 KMS 연결 문제를 해결할 수 있습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - etcd 백업을 생성했습니다.
모든 etcd 데이터의 재암호화가 수행됩니다.
프로세스
다음 명령을 입력하여
APIServer사용자 정의 리소스를 편집합니다.$ oc edit apiserver cluster암호화 구성을 변경합니다.
apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: encryption: type: <encryption><
;encryption>를aescbc,aesgcm또는ID로 바꿉니다.저장 및 종료합니다.
OpenShift Container Platform은 etcd 데이터를 자동으로 마이그레이션합니다. 마이그레이션 시간은 etcd 크기와 시크릿 수에 따라 다릅니다.
다음 명령을 입력하여 마이그레이션 진행 상황을 모니터링합니다.
$ oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}{end}'출력에
EncryptionCompleted가 표시될 때까지 기다립니다.다음 명령을 입력하여 kube-apiserver Pod가 롤아웃되었는지 확인합니다.
$ oc get pods -n openshift-kube-apiserver -l app=openshift-kube-apiserver다음 명령을 실행하여 각 컨트롤 플레인 노드에서 고정 Pod 매니페스트를 제거합니다.
$ for node in $(oc get nodes --selector=node-role.kubernetes.io/master -o name | cut -d/ -f2); do echo "Removing static pod from $node..." oc debug node/$node -- chroot /host \ rm -f /etc/kubernetes/manifests/vault-kms-plugin.yaml done/etc/kubernetes/manifests/에서 매니페스트가 제거되면 kubelet에서 정적 Pod를 자동으로 중지합니다.다음 명령을 실행하여 소켓 디렉터리를 정리합니다.
$ for node in $(oc get nodes --selector=node-role.kubernetes.io/master -o name | cut -d/ -f2); do oc debug node/$node -- chroot /host rm -rf /var/run/kmsplugin done- 백업 보존 기간이 통과되면 KMS 키를 해제해야 합니다.
검증
다음 명령을 입력하여 암호화 유형을 확인합니다.
$ oc get apiserver cluster -o jsonpath='{.spec.encryption.type}'테스트 보안에서 새 암호화 유형을 사용하는지 확인합니다.
다음 명령을 입력하여 테스트 시크릿을 생성합니다.
$ oc create secret generic encryption-test --from-literal=key=value -n default다음 명령을 입력하여 etcd pod 이름을 가져옵니다.
$ oc get pods -n openshift-etcd -l app=etcd -o name | head -1다음 명령을 입력하여 암호화 접두사를 확인합니다.
$ oc exec -n openshift-etcd <etcd_pod_name> -- etcdctl get /kubernetes.io/secrets/default/encryption-test --print-value-only | hexdump -C | head -1출력은
k8s:enc:aescbc:v1:,k8s:enc:aesgcm:v1:또는ID에 대해 읽을 수 있는 JSON으로 시작되어야 합니다.다음 명령을 입력하여 테스트 시크릿을 삭제합니다.
$ oc delete secret encryption-test -n default
마이그레이션이 성공적으로 완료될 때까지 KMS 키를 삭제하지 마십시오.