15.3. etcd 암호화 활성화
etcd 암호화를 활성화하여 클러스터에서 중요한 리소스를 암호화할 수 있습니다.
초기 암호화 프로세스가 완료될 때까지 etcd 리소스를 백업하지 마십시오. 암호화 프로세스가 완료되지 않으면 백업이 부분적으로만 암호화될 수 있습니다.
etcd 암호화를 활성화한 후 다음과 같은 몇 가지 변경 사항이 발생할 수 있습니다.
- etcd 암호화는 몇 가지 리소스의 메모리 사용에 영향을 미칠 수 있습니다.
- 리더가 백업을 제공해야 하므로 백업 성능에 일시적인 영향을 줄 수 있습니다.
- 디스크 I/O는 백업 상태를 수신하는 노드에 영향을 미칠 수 있습니다.
AES-GCM 또는 AES-CBC 암호화에서 etcd 데이터베이스를 암호화할 수 있습니다.
					하나의 암호화 유형에서 다른 암호화 유형으로 etcd 데이터베이스를 마이그레이션하려면 API 서버의 spec.encryption.type 필드를 수정할 수 있습니다. etcd 데이터를 새 암호화 유형으로 마이그레이션하는 것은 자동으로 수행됩니다.
				
사전 요구 사항
- 
						cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
- APIServer오브젝트를 수정합니다.- oc edit apiserver - $ oc edit apiserver- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- spec.encryption.type필드를- aesgcm또는- aescbc로 설정합니다.- spec: encryption: type: aesgcm- spec: encryption: type: aesgcm- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- AES-GCM 암호화의aesgcm또는 AES-CBC 암호화를 위한aescbc로 설정합니다.
 
- 파일을 저장하여 변경 사항을 적용합니다. - 암호화 프로세스가 시작됩니다. etcd 데이터베이스 크기에 따라 이 프로세스를 완료하는 데 20분 이상 걸릴 수 있습니다. 
- etcd 암호화에 성공했는지 확인합니다. - OpenShift API 서버의 - Encrypted상태 조건을 검토하여 해당 리소스가 성공적으로 암호화되었는지 확인합니다.- oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- $ oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 암호화에 성공하면 출력에 - EncryptionCompleted가 표시됩니다.- EncryptionCompleted All resources encrypted: routes.route.openshift.io - EncryptionCompleted All resources encrypted: routes.route.openshift.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력에 - EncryptionInProgress가 표시되는 경우에도 암호화는 계속 진행 중입니다. 몇 분 기다린 후 다시 시도합니다.
- 쿠버네티스 API 서버의 - Encrypted상태 조건을 검토하여 해당 리소스가 성공적으로 암호화되었는지 확인합니다.- oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 암호화에 성공하면 출력에 - EncryptionCompleted가 표시됩니다.- EncryptionCompleted All resources encrypted: secrets, configmaps - EncryptionCompleted All resources encrypted: secrets, configmaps- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력에 - EncryptionInProgress가 표시되는 경우에도 암호화는 계속 진행 중입니다. 몇 분 기다린 후 다시 시도합니다.
- OpenShift OAuth API 서버의 - Encrypted상태 조건을 검토하여 해당 리소스가 성공적으로 암호화되었는지 확인합니다.- oc get authentication.operator.openshift.io -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- $ oc get authentication.operator.openshift.io -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 암호화에 성공하면 출력에 - EncryptionCompleted가 표시됩니다.- EncryptionCompleted All resources encrypted: oauthaccesstokens.oauth.openshift.io, oauthauthorizetokens.oauth.openshift.io - EncryptionCompleted All resources encrypted: oauthaccesstokens.oauth.openshift.io, oauthauthorizetokens.oauth.openshift.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 출력에 - EncryptionInProgress가 표시되는 경우에도 암호화는 계속 진행 중입니다. 몇 분 기다린 후 다시 시도합니다.