API サーバーの etcd CA ファイル設定の確認

kube-apiserver が信頼する CA で etcd サーバー証明書を検証するよう構成してください。

説明

--etcd-cafile は、kube-apiserver が etcd サーバー証明書を検証するための CA ファイルです。API サーバー自身のクライアント証明書とは別の設定です。

etcd がプライベート CA の証明書を使用する場合は、API サーバーがその CA を信頼するよう構成する必要があります。CA ファイルのパスだけでなく、実際の HTTPS 接続先とサーバー証明書の信頼関係も確認してください。

想定される影響

必要な CA を信頼していない場合やファイルが正しくない場合、TLS 接続が失敗する可能性があります。その対処として証明書検証を回避すると、偽のサーバーに接続するリスクが生じます。

対処方法

  • --etcd-cafile に信頼する CA ファイルを指定し、API サーバーから読み取れる場所にマウントしてください。
  • --etcd-servers に正しい HTTPS アドレスを指定し、サーバー証明書が接続先と信頼する CA に適合することを確認してください。
  • etcd がクライアント証明書を要求する場合は、--etcd-certfile と --etcd-keyfile を別途設定し、実際の接続を検証してください。

例

過去の kube-apiserver バージョンの引数を示す抜粋です。実際のデプロイには、サポート対象バージョン、etcd 接続先、証明書ファイルのマウントなどの設定も必要です。

変更前

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: []

etcd 用の 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"]
      args: ["--etcd-cafile=/path/to/ca/file.pem"]

CA ファイルを明示しています。例のパスを実際のファイルに置き換え、HTTPS 接続と必要なクライアント認証も確認してください。

参考資料