15.3. etcd 暗号化の有効化
etcd 暗号化を有効にして、クラスターで機密性の高いリソースを暗号化できます。
初期暗号化プロセスが完了するまで、etcd リソースをバックアップしないでください。暗号化プロセスが完了しない場合、バックアップは一部のみ暗号化される可能性があります。
etcd 暗号化を有効にすると、いくつかの変更が発生する可能性があります。
- etcd 暗号化は、いくつかのリソースのメモリー消費に影響を与える可能性があります。
- リーダーがバックアップを提供する必要があるため、バックアップのパフォーマンスに一時的な影響が生じる場合があります。
- ディスク I/O は、バックアップ状態を受け取るノードに影響を与える可能性があります。
etcd データベースは、AES-GCM または AES-CBC 暗号化で暗号化できます。
					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-CBC 暗号化の場合はaescbcに、AES-GCM 暗号化の場合はaesgcmに設定します。
 
- 変更を適用するためにファイルを保存します。 - 暗号化プロセスが開始されます。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が表示される場合、これは暗号化が進行中であることを意味します。数分待機した後に再試行します。
- Kubernetes 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が表示される場合、これは暗号化が進行中であることを意味します。数分待機した後に再試行します。