プロファイル適用性: レベル 1 - マスターノード
証明書ベースのkubelet認証を有効にする。
apiserver はデフォルトで kubelet の HTTPS エンドポイントに対して認証を行いません。apiserver からのリクエストは匿名として扱われます。リクエストを送信する際に
apiserver が kubelet に対して認証を行うように、証明書ベースの kubelet 認証を設定する必要があります。
注意デフォルトでは、証明書ベースのkubelet認証は設定されていません。
|
影響
apiserverおよびkubeletにTLSを構成する必要があります。
監査
コントロールプレーンノードで次のコマンドを実行します:
ps -ef | grep kube-apiserver
--kubelet-client-certificate
および --kubelet-client-key
引数が存在し、適切に設定されていることを確認してください。代替監査方法
kubectl get pod -nkube-system -lcomponent=kube-apiserver -o=jsonpath='{range .items[]}{.spec.containers[].command} {"\n"}{end}' | grep '--kubelet-client-certificate' | grep -i false
終了コードが1の場合、コントロールが存在しないか失敗しています。
修復
Kubernetes ドキュメントに従って、apiserver と kubelet 間の TLS 接続を設定します。次に、コントロールプレーンノード上の API サーバーポッド仕様ファイル
/etc/kubernetes/manifests/kube-apiserver.yaml
を編集し、以下のように kubelet クライアント証明書とキーのパラメータを設定します。--kubelet-client-certificate=<path/to/client-certificate-file> --kubelet-client-key=<path/to/client-key-file>