Skip to content

Commit 9cf1906

Browse files
Okabe-Junyat-inu
andauthored
[ja] Following the upstream for content/ja/docs/setup/best-practices/certificates.md and minor fixes (#44811)
* del: unnecessary empty line * update: fllowing upsteram * feat: translate into Japanese * fix: use half-wide colon * some fixes * update: L170 Co-authored-by: inukai <82919057+t-inu@users.noreply.github.com> * update: L188 Co-authored-by: inukai <82919057+t-inu@users.noreply.github.com> * update: L94 Co-authored-by: inukai <82919057+t-inu@users.noreply.github.com> * fix: row --------- Co-authored-by: inukai <82919057+t-inu@users.noreply.github.com>
1 parent df7c09f commit 9cf1906

File tree

1 file changed

+84
-17
lines changed

1 file changed

+84
-17
lines changed

content/ja/docs/setup/best-practices/certificates.md

Lines changed: 84 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ Kubernetesでは、TLS認証のためにPKI証明書が必要です。
1111
自身で証明書を作成することも可能です。例えば、秘密鍵をAPIサーバーに保持しないことで、管理をよりセキュアにする場合が挙げられます。
1212
本ページでは、クラスターに必要な証明書について説明します。
1313

14-
15-
1614
<!-- body -->
1715

1816
## クラスターではどのように証明書が使われているのか
1917

20-
Kubernetesは下記の用途でPKIを必要とします
18+
Kubernetesは下記の用途でPKIを必要とします:
2119

2220
* kubeletがAPIサーバーの認証をするためのクライアント証明書
21+
* APIサーバーがkubeletと通信するためのkubeletの[サーバー証明書](/docs/reference/access-authn-authz/kubelet-tls-bootstrapping/#client-and-serving-certificates)
2322
* APIサーバーのエンドポイント用サーバー証明書
2423
* クラスターの管理者がAPIサーバーの認証を行うためのクライアント証明書
2524
* APIサーバーがkubeletと通信するためのクライアント証明書
@@ -36,11 +35,14 @@ Kubernetesは下記の用途でPKIを必要とします:
3635

3736
## 証明書の保存場所
3837

39-
kubeadmを使用してKubernetesをインストールする場合、証明書は`/etc/kubernetes/pki`に保存されます。このドキュメントの全てのパスは、そのディレクトリの相対パスを表します。
38+
kubeadmを使用してKubernetesをインストールする場合、ほとんどの証明書は`/etc/kubernetes/pki`に保存されます。このドキュメントの全てのパスは、そのディレクトリの相対パスを表します。
39+
ただしユーザーアカウントの証明書に関しては、kubeadmは`/etc/kubernetes`に配置します。
4040

4141
## 手動で証明書を設定する
4242

43-
kubeadmで証明書を生成したくない場合は、下記の方法のいずれかで手動で生成可能です。
43+
もしkubeadmに必要な証明書の生成を望まない場合、それらを単一ルート認証局を使って作成するか、全ての証明書を提供することで作成できます。
44+
自身の認証局を作成する詳細については、[証明書を手動で生成する](/ja/docs/tasks/administer-cluster/certificates/)を参照してください。
45+
証明書の管理についての詳細は、[kubeadmによる証明書管理](/ja/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)を参照してください。
4446

4547
### 単一ルート認証局
4648

@@ -55,6 +57,16 @@ kubeadmで証明書を生成したくない場合は、下記の方法のいず
5557
| front-proxy-ca.crt,key | kubernetes-front-proxy-ca | [front-end proxy](/docs/tasks/extend-kubernetes/configure-aggregation-layer/)用    |
5658

5759
上記の認証局に加えて、サービスアカウント管理用に公開鍵/秘密鍵のペア(`sa.key``sa.pub`)を取得する事が必要です。
60+
次の例は、前の表で示されたCAのキーと証明書を示しています:
61+
62+
```
63+
/etc/kubernetes/pki/ca.crt
64+
/etc/kubernetes/pki/ca.key
65+
/etc/kubernetes/pki/etcd/ca.crt
66+
/etc/kubernetes/pki/etcd/ca.key
67+
/etc/kubernetes/pki/front-proxy-ca.crt
68+
/etc/kubernetes/pki/front-proxy-ca.key
69+
```
5870

5971
### 全ての証明書
6072

@@ -72,9 +84,14 @@ CAの秘密鍵をクラスターにコピーしたくない場合、自身で全
7284
| kube-apiserver-kubelet-client | kubernetes-ca | system:masters | client | |
7385
| front-proxy-client | kubernetes-front-proxy-ca | | client | |
7486

87+
{{< note >}}
88+
`kube-apiserver-kubelet-client`にスーパーユーザーグループ`system:masters`を使用する代わりに、より権限の低いグループを使用することができます。
89+
そのために、kubeadmは`kubeadm:cluster-admins`グループを使用します。
90+
{{< /note >}}
91+
7592
[1]: クラスターに接続するIPおよびDNS名( [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)を使用する場合と同様、ロードバランサーのIPおよびDNS名、`kubernetes``kubernetes.default``kubernetes.default.svc``kubernetes.default.svc.cluster``kubernetes.default.svc.cluster.local`)
7693

77-
`kind`は下記の[x509の鍵用途](https://pkg.go.dev/k8s.io/api/certificates/v1beta1#KeyUsage)のタイプにマッピングされます:
94+
ここで`種類`は、一つまたは複数のx509の鍵用途にマッピングされており、これは[CertificateSigningRequest](/docs/reference/kubernetes-api/authentication-resources/certificate-signing-request-v1#CertificateSigningRequest)`.spec.usages`にも記載されています:
7895

7996
| 種類 | 鍵の用途     |
8097
|--------|---------------------------------------------------------------------------------|
@@ -87,14 +104,14 @@ CAの秘密鍵をクラスターにコピーしたくない場合、自身で全
87104
{{< /note >}}
88105

89106
{{< note >}}
90-
kubeadm利用者のみ
107+
kubeadm利用者のみ:
91108

92109
* 秘密鍵なしでCA証明書をクラスターにコピーするシナリオは、kubeadmドキュメントの外部認証局の項目で言及されています。
93110
* kubeadmでPKIを生成すると、`kube-etcd``kube-etcd-peer`および `kube-etcd-healthcheck-client`証明書は外部etcdを利用するケースでは生成されない事に留意してください。
94111

95112
{{< /note >}}
96113

97-
### 証明書のパス
114+
### 証明書のパス {#certificate-paths}
98115

99116
証明書は推奨パスに配置するべきです([kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)を使用する場合と同様)。
100117
パスは場所に関係なく与えられた引数で特定されます。
@@ -123,24 +140,67 @@ kubeadm利用者のみ:
123140
| sa.key | | kube-controller-manager | service-account-private |
124141
| | sa.pub | kube-apiserver | service-account-key |
125142

126-
## ユーザアカウント用に証明書を設定する
143+
次の例は、自分自身で全てのキーと証明書を生成している場合に提供する必要があるファイルパスを[前の表](#certificate-paths)から示しています:
144+
145+
```
146+
/etc/kubernetes/pki/etcd/ca.key
147+
/etc/kubernetes/pki/etcd/ca.crt
148+
/etc/kubernetes/pki/apiserver-etcd-client.key
149+
/etc/kubernetes/pki/apiserver-etcd-client.crt
150+
/etc/kubernetes/pki/ca.key
151+
/etc/kubernetes/pki/ca.crt
152+
/etc/kubernetes/pki/apiserver.key
153+
/etc/kubernetes/pki/apiserver.crt
154+
/etc/kubernetes/pki/apiserver-kubelet-client.key
155+
/etc/kubernetes/pki/apiserver-kubelet-client.crt
156+
/etc/kubernetes/pki/front-proxy-ca.key
157+
/etc/kubernetes/pki/front-proxy-ca.crt
158+
/etc/kubernetes/pki/front-proxy-client.key
159+
/etc/kubernetes/pki/front-proxy-client.crt
160+
/etc/kubernetes/pki/etcd/server.key
161+
/etc/kubernetes/pki/etcd/server.crt
162+
/etc/kubernetes/pki/etcd/peer.key
163+
/etc/kubernetes/pki/etcd/peer.crt
164+
/etc/kubernetes/pki/etcd/healthcheck-client.key
165+
/etc/kubernetes/pki/etcd/healthcheck-client.crt
166+
/etc/kubernetes/pki/sa.key
167+
/etc/kubernetes/pki/sa.pub
168+
```
169+
170+
## ユーザーアカウント用に証明書を設定する
127171

128172
管理者アカウントおよびサービスアカウントは手動で設定しなければなりません。
129173

130-
| ファイル名 | クレデンシャル名 | デフォルトCN | 組織       |
131-
|-------------------------|----------------------------|--------------------------------|----------------|
132-
| admin.conf | default-admin | kubernetes-admin | system:masters |
133-
| kubelet.conf | default-auth | system:node:`<nodeName>` (see note) | system:nodes |
134-
| controller-manager.conf | default-controller-manager | system:kube-controller-manager | |
135-
| scheduler.conf | default-scheduler | system:kube-scheduler | |
174+
| ファイル名 | クレデンシャル名 | デフォルトCN | O (in Subject) |
175+
|-------------------------|----------------------------|-------------------------------------|------------------------|
176+
| admin.conf | default-admin | kubernetes-admin | `<admin-group>` |
177+
| super-admin.conf | default-super-admin | kubernetes-super-admin | system:masters |
178+
| kubelet.conf | default-auth | system:node:`<nodeName>` (備考を参照) | system:nodes |
179+
| controller-manager.conf | default-controller-manager | system:kube-controller-manager | |
180+
| scheduler.conf | default-scheduler | system:kube-scheduler | |
136181

137182
{{< note >}}
138183
`kubelet.conf`における`<nodeName>`の値は**必ず**APIサーバーに登録されたkubeletのノード名と一致しなければなりません。詳細は、[Node Authorization](/docs/reference/access-authn-authz/node/)を参照してください。
139184
{{< /note >}}
140185

186+
{{< note >}}
187+
上記の例での`<admin-group>`は実装に依存します。
188+
一部のツールはデフォルトの`admin.conf`内の証明書に`system:masters`グループの一部として署名します。
189+
`system:masters`は緊急用のスーパーユーザーグループであり、RBACのようなKubernetesの認証レイヤーをバイパスすることができます。
190+
また、一部のツールはこのスーパーユーザーグループに紐づけられた証明書を含む`super-admin.conf`を生成しません。
191+
192+
kubeadmはkubeconfigファイル内に2つの別々の管理者証明書を生成します。
193+
一つは`admin.conf`内にあり、`Subject: O = kubeadm:cluster-admins, CN = kubernetes-admin`となっています。
194+
`kubeadm:cluster-admins``cluster-admin` ClusterRoleに紐づけられたカスタムグループです。
195+
このファイルは、kubeadmが管理する全てのコントロールプレーンマシン上で生成されます。
196+
197+
もう一つは`super-admin.conf`内にあり、`Subject: O = system:masters, CN = kubernetes-super-admin`となっています。
198+
このファイルは`kubeadm init`が呼び出されたノード上でのみ生成されます。
199+
{{< /note >}}
200+
141201
1. 各コンフィグ毎に、CN名と組織を指定してx509証明書と鍵ペアを生成してください。
142202

143-
1. 以下のように、各コンフィグで`kubectl`を実行してください。
203+
2. 以下のように、各コンフィグで`kubectl`を実行してください。
144204

145205
```shell
146206
KUBECONFIG=<filename> kubectl config set-cluster default-cluster --server=https://<host ip>:6443 --certificate-authority <path-to-kubernetes-ca> --embed-certs
@@ -158,5 +218,12 @@ KUBECONFIG=<filename> kubectl config use-context default-system
158218
| controller-manager.conf | kube-controller-manager | `manifests/kube-controller-manager.yaml`のマニフェストファイルに追記する必要があります。 |
159219
| scheduler.conf | kube-scheduler | `manifests/kube-scheduler.yaml`のマニフェストファイルに追記する必要があります。 |
160220

221+
以下のファイルは、前の表に挙げたファイルへの絶対パスを示しています:
161222

162-
223+
```
224+
/etc/kubernetes/admin.conf
225+
/etc/kubernetes/super-admin.conf
226+
/etc/kubernetes/kubelet.conf
227+
/etc/kubernetes/controller-manager.conf
228+
/etc/kubernetes/scheduler.conf
229+
```

0 commit comments

Comments
 (0)