9.5. kubelet の TLS セキュリティープロファイルの設定

HTTP サーバーとしての動作時に kubelet の TLS セキュリティープロファイルを設定するには、KubeletConfig カスタムリソース (CR) を作成して特定のノード用に事前定義済みの TLS セキュリティープロファイルまたはカスタム TLS セキュリティープロファイルを指定します。TLS セキュリティープロファイルが設定されていない場合には、TLS セキュリティープロファイルは Intermediate になります。

kubelet はその HTTP/GRPC サーバーを使用して Kubernetes API サーバーと通信し、コマンドを Pod に送信して kubelet 経由で Pod で exec コマンドを実行します。

ワーカーノードで Old TLS セキュリティープロファイルを設定する KubeletConfig CR のサンプル

apiVersion: config.openshift.io/v1
kind: KubeletConfig
 ...
spec:
  tlsSecurityProfile:
    old: {}
    type: Old
  machineConfigPoolSelector:
    matchLabels:
      pools.operator.machineconfiguration.openshift.io/worker: ""

設定済みのノードの kubelet.conf ファイルで、設定済みの TLS セキュリティープロファイルの暗号化および最小 TLS セキュリティープロファイルを確認できます。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. KubeletConfig CR を作成し、TLS セキュリティープロファイルを設定します。

    カスタム プロファイルの KubeletConfig CR のサンプル

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: set-kubelet-tls-security-profile
    spec:
      tlsSecurityProfile:
        type: Custom 1
        custom: 2
          ciphers: 3
          - 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: "" 4

    1
    TLS セキュリティープロファイルタイプ (OldIntermediate、または Custom) を指定します。デフォルトは Intermediate です。
    2
    選択したタイプに適切なフィールドを指定します。
    • old: {}
    • intermediate: {}
    • custom:
    3
    custom タイプには、TLS 暗号の一覧と最小許容 TLS バージョンを指定します。
    4
    オプション: TLS セキュリティープロファイルを適用するノードのマシン設定プールラベルを指定します。
  2. KubeletConfig オブジェクトを作成します。

    $ oc create -f <filename>

    クラスター内のワーカーノードの数によっては、設定済みのノードが 1 つずつ再起動されるのを待機します。

検証

プロファイルが設定されていることを確認するには、ノードが Ready になってから以下の手順を実行します。

  1. 設定済みノードのデバッグセッションを開始します。

    $ oc debug node/<node_name>
  2. /host をデバッグシェル内のルートディレクトリーとして設定します。

    sh-4.4# chroot /host
  3. kubelet.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",