説明
--kubelet-certificate-authority は、kube-apiserver が kubelet サーバー証明書の検証に使う CA ファイルを指定します。API サーバーは既定でこの証明書を検証しないため、信頼できないネットワークでは中間者攻撃を受けるおそれがあります。
想定される影響
- kubelet を装う接続先にログや管理要求が渡る可能性があります。
- CA やサーバー名が誤っていると検証に失敗し、ノード管理が中断する可能性があります。
対処方法
--kubelet-certificate-authorityに、kubelet サーバー証明書を発行した信頼済み CA バンドルを指定してください。- 接続先のアドレスが証明書の DNS 名または IP アドレスと一致し、API サーバーがファイルを読めることを確認してください。
- kubelet の認証・認可も構成し、正常な接続の成功と信頼しない証明書の拒否を試験してください。
例
Kubernetes 1.6.0 を使う過去の引数例です。サポート対象の環境で使う実際の CA ファイルとマウント先に置き換えてください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command: ["kube-apiserver"]
kubelet サーバー証明書を検証する CA が指定されていません。HTTPS の暗号化だけではサーバーの身元を検証できません。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command: ["kube-apiserver"]
args: ["--kubelet-certificate-authority=/path/to/any/cert/file.pem"]
検証用 CA ファイルを指定しています。その内容が実際の kubelet サーバー証明書に対応する必要があります。