6.3. Kubernetes KMS v2 を無効にする
KMS 暗号化を無効にしてローカルの etcd 暗号化に移行することで、操作を簡素化したり、外部 KMS 接続の問題を解決したりできます。
Kubernetes KMS v2 は、テクノロジープレビュー版の機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
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、またはアイデンティティーに置き換えてください。保存して終了します。
OpenShift Container Platform は etcd データを自動的に移行します。移行時間は、etcd のサイズとシークレットの数によって異なります。
移行の進行状況を監視するには、次のコマンドを入力してください。
$ oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}{end}'出力に
EncryptionCompletedと表示されるまでお待ちください。以下のコマンドを入力して、kube-apiserverPod が正しく展開されていることを確認します。
$ 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 donekubelet は
、/etc/kubernetes/manifests/からマニフェストが削除されると、静的 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以下のコマンドを入力して、etcdPod 名を取得します。
$ 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:で始まるか、またはアイデンティティーに対して読みやすい JSON を表示する必要があります。以下のコマンドを入力して、テストシークレットを削除してください。
$ oc delete secret encryption-test -n default
移行が正常に完了するまで、KMS キーを削除しないでください。