이 페이지에서는 Google Kubernetes Engine(GKE)에서 애플리케이션 레이어 보안 비밀 암호화와 관련된 문제를 해결하는 방법을 설명합니다.
업데이트 실패
애플리케이션 레이어 보안 비밀 암호화의 암호화 구성을 업데이트할 때 GKE는 Kubernetes 클러스터에서 모든 보안 비밀 객체를 다시 작성해야 합니다. GKE는 모든 보안 비밀이 새 Cloud KMS 키로 암호화되거나 사용자가 구성한 경우 암호화되지 않은 상태로 작성되도록 이를 수행합니다.
이 업데이트 작업은 다음과 같은 조건으로 인해 실패할 수 있습니다.
- 업데이트가 진행되는 동안 Kubernetes 컨트롤 플레인을 일시적으로 사용할 수 없습니다.
- 사용자 정의
AdmissionWebhook
은 GKE에서 보안 비밀 객체를 업데이트할 수 없도록 합니다. - 업데이트 작업이 완료되기 전에 업데이트된 Cloud KMS 키 또는 이전 Cloud KMS 키가 사용 중지됩니다.
업데이트 작업이 성공할 때까지 업데이트된 Cloud KMS 키 또는 이전 Cloud KMS 키와 상호작용하지 마세요.
디버깅 필드
버전 1.29 이상을 실행하는 새 GKE 클러스터에는 Cluster.DatabaseEncryption
에 대한 업데이트를 추적하고 오류를 복구하는 데 도움이 되는 추가 필드가 포함됩니다.
다음 단계는 DatabaseEncryption.CurrentState
필드가 비어 있지 않은 클러스터에만 적용됩니다. CurrentState
필드가 비어 있으면 이 클러스터 버전에서 이 기능이 아직 사용 설정되지 않은 것입니다.
이러한 필드에 적용되는 한도는 다음과 같습니다.
- 출력 전용입니다. 즉, 클러스터 생성 또는 업데이트 요청 중에 설정할 수 없습니다.
CurrentState
필드
Cluster.DatabaseEncryption
의 CurrentState
필드를 검사하여 DatabaseEncryption
업데이트 작업의 현재 상태를 검사할 수 있습니다.
CurrentState 의 값 |
설명 |
---|---|
|
최신 업데이트 작업이 성공했습니다. 추가 작업이 필요하지 않습니다. 이전에 사용한 키는 폐기할 수 있습니다. |
|
업데이트가 진행 중입니다. |
|
최근 업데이트에 오류가 있습니다. 이전에 사용한 Cloud KMS 키는 GKE에서 계속 사용될 수 있으므로 사용 중지하거나 폐기하지 마세요. 자세한 내용은 |
LastOperationErrors
필드
업데이트 작업이 실패하면 GKE 컨트롤 플레인의 기본 오류가 gcloud container clusters update
의 출력에 표시됩니다.
가장 최근에 실패한 두 가지 업데이트 작업의 오류 메시지도 Cluster.DatabaseEncryption.LastOperationErrors
에서 확인할 수 있습니다.
DecryptionKeys
필드
새 암호화 작업에 사용되는 Cloud KMS 키는 DatabaseEncryption.KeyName
에 표시됩니다. 일반적으로 이 키는 클러스터에서 사용하는 유일한 키입니다.
하지만 DatabaseEncryption.DecryptionKeys
에는 업데이트가 진행 중이거나 실패한 뒤에 클러스터에서 사용되는 추가 키가 포함됩니다.
실패한 업데이트에서 복구
실패한 업데이트에서 복구하려면 다음을 수행합니다.
- 오류 메시지를 검토하고 표시된 문제를 해결합니다.
- 실패한 명령어(예:
gcloud container clusters update ... --database-encryption-key
)를 실행하여 업데이트 요청을 다시 시도합니다. 원래 수행한 것과 동일한 업데이트 요청으로 다시 시도하거나 클러스터를 이전 상태로 다시 업데이트하는 것이 좋습니다. GKE가 하나 이상의 보안 비밀을 읽을 수 없는 경우 다른 키 또는 암호화 상태로 전환하지 못할 수 있습니다.
다음 섹션에는 오류가 발생하는 일반적인 이유가 나와 있습니다.
Cloud KMS 키 오류
오류 메시지에 하나 이상의 Cloud KMS 키에 대한 참조가 포함된 경우 Cloud KMS 키 구성을 검사하여 관련 키 버전을 사용할 수 있는지 확인합니다.
예를 들어 Cloud KMS 키가 사용 중지되었거나 폐기되었다는 오류가 표시되면 키 또는 키 버전을 다시 사용 설정합니다.
보안 비밀을 업데이트할 수 없음
Kubernetes API가 허용 웹훅으로 인해 업데이트 요청을 거부하면 다음 오류가 발생할 수 있습니다.
error admission webhook WEBHOOK_NAME denied the request
이 오류를 해결하려면 웹훅을 삭제하거나 수정하여 GKE가 주요 업데이트 중에 모든 네임스페이스의 보안 비밀을 업데이트할 수 있도록 합니다.