kubernetes-the-hard-way/docs/ja/04-certificate-authority.md

4.3 KiB
Raw Blame History

CAのプロビジョニングとTLS証明書の生成

このラボでは、opensslを使用してPKIインフラストラクチャをプロビジョニングし、Certificate Authorityをブートストラップし、以下のコンポーネントのためのTLS証明書を生成しますkube-apiserver、kube-controller-manager、kube-scheduler、kubelet、およびkube-proxy。このセクションのコマンドはjumpboxから実行する必要があります。

Certificate Authority

このセクションでは、他のKubernetesコンポーネントのために追加のTLS証明書を生成するために使用できるCertificate Authorityをプロビジョニングします。CAの設定とopensslを使用した証明書の生成は、特に初めて行う場合には時間がかかることがあります。このラボを効率化するために、各Kubernetesコンポーネントの証明書を生成するために必要な詳細を定義したopenssl設定ファイルca.confを含めました。

ca.conf設定ファイルを確認してください:

cat ca.conf

このチュートリアルを完了するためにca.confファイルのすべてを理解する必要はありませんが、opensslと証明書管理の高レベルな設定を学ぶための出発点と考えてください。

すべてのCertificate Authorityは、プライベートキーとルート証明書から始まります。このセクションでは自己署名のCertificate Authorityを作成しますが、これはこのチュートリアルに必要なすべてであり、実際のプロダクション環境で行うべきことではありません。

CA設定ファイル、証明書、およびプライベートキーを生成します

{
  openssl genrsa -out ca.key 4096
  openssl req -x509 -new -sha512 -noenc \
    -key ca.key -days 3653 \
    -config ca.conf \
    -out ca.crt
}

結果:

ca.crt ca.key

クライアントとサーバーの証明書の作成

このセクションでは、各KubernetesコンポーネントとKubernetes adminユーザーのためのクライアント証明書を生成します。

証明書とプライベートキーを生成します:

certs=(
  "admin" "node-0" "node-1"
  "kube-proxy" "kube-scheduler"
  "kube-controller-manager"
  "kube-api-server"
  "service-accounts"
)
for i in ${certs[*]}; do
  openssl genrsa -out "${i}.key" 4096

  openssl req -new -key "${i}.key" -sha256 \
    -config "ca.conf" -section ${i} \
    -out "${i}.csr"

  openssl x509 -req -days 3653 -in "${i}.csr" \
    -copy_extensions copyall \
    -sha256 -CA "ca.crt" \
    -CAkey "ca.key" \
    -CAcreateserial \
    -out "${i}.crt"
done

上記のコマンドを実行すると、各Kubernetesコンポーネントのプライベートキー、証明書要求、および署名されたSSL証明書が生成されます。以下のコマンドで生成されたファイルをリストできます

ls -1 *.crt *.key *.csr

クライアントとサーバーの証明書の配布

このセクションでは、各マシンに適切な証明書とプライベートキーをコピーします。Kubernetesコンポーネントが互いに認証するために使用される資格情報としてこれらの証明書を扱う必要があります。

node-0node-1マシンに適切な証明書とプライベートキーをコピーします:

for host in node-0 node-1; do
  ssh root@$host mkdir /var/lib/kubelet/

  scp ca.crt root@$host:/var/lib/kubelet/

  scp $host.crt \
    root@$host:/var/lib/kubelet/kubelet.crt

  scp $host.key \
    root@$host:/var/lib/kubelet/kubelet.key
done

serverマシンに適切な証明書とプライベートキーをコピーします:

scp \
  ca.key ca.crt \
  kube-api-server.key kube-api-server.crt \
  service-accounts.key service-accounts.crt \
  root@server:~/

kube-proxykube-controller-managerkube-schedulerkubeletクライアント証明書は、次のラボで認証構成ファイルを生成するために使用されます。

次:認証のためのKubernetes構成ファイルの生成