12. cert-manager
cert-managerを使うと証明書の発行と更新を自動化できる。
インストール
| $ helm repo add jetstack https://charts.jetstack.io
$ helm repo update
$ helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set crds.enabled=true
|
動作確認
| $ kubectl get pods -n cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-5f885f9c55-4wqd2 1/1 Running 0 109s
cert-manager-cainjector-7f45ffb9d5-cx5ch 1/1 Running 0 109s
cert-manager-webhook-7944648944-k8wzz 1/1 Running 0 109s
|
ClusterIssuerのリソースを作成する
自己署名証明書を発行するCAを定義する。
| k8s/cluster-issuer.yaml |
|---|
| # 認証局(CA: Certificate Authority)を定義するリソース
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned # この認証局は自己署名証明書を発行する
spec:
selfSigned: {}
|
Certificateのリソースを作成する
本来はdnsNamesにドメインを指定するのだが、自己署名証明書を使う場合はipAddressesにIPアドレスをハードコーディングしないといけない。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: app-tls
namespace: app
spec:
secretName: app-tls
issuerRef:
name: selfsigned
kind: ClusterIssuer
ipAddresses:
- xxx.xxx.xxx.xxx
# dnsNames:
# - example.com
|