14.5. kubelet の TLS セキュリティープロファイルの設定
kubelet が HTTP サーバーとして動作している場合、kubeletConfig カスタムリソース (CR) を作成して、特定のノードに対して定義済みまたはカスタムの TLS セキュリティープロファイルを指定することで、kubelet の TLS セキュリティープロファイルを設定できます。
TLS セキュリティープロファイルが設定されていない場合は、デフォルトの TLS セキュリティープロファイルである 中間 が使用されます。
kubelet はその HTTP/GRPC サーバーを使用して Kubernetes API サーバーと通信し、コマンドを Pod に送信して kubelet 経由で Pod で exec コマンドを実行します。
ワーカーノードで Old TLS セキュリティープロファイルを設定する KubeletConfig CR のサンプル
apiVersion: machineconfiguration.openshift.io/v1
kind: KubeletConfig
# ...
spec:
tlsSecurityProfile:
old: {}
type: Old
machineConfigPoolSelector:
matchLabels:
pools.operator.machineconfiguration.openshift.io/worker: ""
# ...
設定済みのノードの kubelet.conf ファイルで、設定済みの TLS セキュリティープロファイルの暗号化および最小 TLS セキュリティープロファイルを確認できます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform にログインしている。
手順
KubeletConfigCR を作成し、TLS セキュリティープロファイルを設定します。Customプロファイル用のKubeletConfigCR のサンプルapiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-kubelet-tls-security-profile spec: tlsSecurityProfile: type: Custom custom: ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" #...ここでは、以下のようになります。
spec.tlsSecurityProfile.type-
TLS セキュリティープロファイルの種類 (
旧、中間、またはカスタム) を指定します。デフォルトはIntermediateです。 spec.tlsSecurityProfile.type.custom選択したタイプに適したフィールドを指定します。
-
old: {} -
intermediate: {} -
modern: {} -
custom:
-
spec.tlsSecurityProfile.type.custom-
カスタムタイプの場合、TLS 暗号スイートのリストと、受け入れ可能な最小 TLS バージョンを指定します。 spec.machineConfigPoolSelector.matchLabels.custom- TLS セキュリティープロファイルを適用するノードのマシン設定プールラベルを指定します。このパラメーターは任意です。
KubeletConfigオブジェクトを作成します。$ oc create -f <filename>クラスター内のワーカーノードの数によっては、設定済みのノードが 1 つずつ再起動されるのを待機します。
検証
プロファイルが設定されていることを確認するには、ノードが Ready になってから以下の手順を実行します。
設定済みノードのデバッグセッションを開始します。
$ oc debug node/<node_name>/hostをデバッグシェル内のルートディレクトリーとして設定します。sh-4.4# chroot /hostkubelet.confファイルを表示します。sh-4.4# cat /etc/kubernetes/kubelet.conf出力例
"kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", #... "tlsCipherSuites": [ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" ], "tlsMinVersion": "VersionTLS12", #...