証明書管理ツールは、多く公開されています。 この例では、cert-managerを使用します。
注意
この例で作成された証明書はパスワードで保護されていないことに注意してください。
Kubernetesクラスタ上で操作する場合は、ocコマンドをkubectlコマンドに読み替えてください。
oc create namespace cert-manager
oc apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.0/cert-manager.yaml
この例では、名前空間my-namespaceに自己署名証明書を作成できる発行者を作成します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: my-namespace
spec:
selfSigned: {}
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: cacert
namespace: my-namespace
spec:
subject:
organizations:
- My Organization
organizationalUnits:
- CA
commonName: "My Organization Certificate Authority"
duration: 87600h
isCA: true
secretName: cacert
issuerRef:
name: selfsigned-issuer
EOF
上記のコマンドは、名前空間my-namespaceのKubernetesシークレット「cacert」に格納されている自己署名ルート証明書と秘密鍵を作成します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: ca-issuer
namespace: my-namespace
spec:
ca:
secretName: cacert
EOF
FEPCluster名が名前空間my-namespaceのmydbであると仮定します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: mydb-fep-cert
namespace: my-namespace
spec:
subject:
commonName: "mydb-headless-svc"
dnsNames:
- "*.my-namespace.pod"
- "*.my-namespace.pod.cluster.local"
- "mydb-primary-svc"
- "mydb-primary-svc.my-namespace"
- "mydb-primary-svc.my-namespace.svc"
- "mydb-primary-svc.my-namespace.svc.cluster.local"
- "mydb-replica-svc"
- "mydb-replica-svc.my-namespace"
- "mydb-replica-svc.my-namespace.svc"
- "mydb-replica-svc.my-namespace.svc.cluster.local"
duration: 8760h
usages:
- server auth
secretName: mydb-fep-cert
issuerRef:
name: ca-issuer
EOF
FEPCluster名が名前空間my-namespaceのmydbであると仮定します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: mydb-patroni-cert
namespace: my-namespace
spec:
subject:
commonName: "mydb-headless-svc"
dnsNames:
- "*.my-namespace.pod"
- "*.my-namespace.pod.cluster.local"
- "*.mydb-primary-svc"
- "*.mydb-primary-svc.my-namespace"
- "*.mydb-replica-svc "
- "*.mydb-replica-svc.my-namespace"
duration: 8760h
usages:
- server auth
secretName: mydb-patroni-cert
issuerRef:
name: ca-issuer
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: mydb-postgres-cert
namespace: my-namespace
spec:
subject:
commonName: "postgres"
duration: 8760h
usages:
- client auth
secretName: mydb-postgres-cert
issuerRef:
name: ca-issuer
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: mydb-repluser-cert
namespace: my-namespace
spec:
subject:
commonName: "repluser"
duration: 8760h
usages:
- client auth
secretName: mydb-repluser-cert
issuerRef:
name: ca-issuer
EOF
FEPLogging名が名前空間feplogging-devのnflであると仮定します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: fluentd-cert
namespace: feplogging-dev
spec:
subject:
commonName: "nfl-fluentd-headless-service"
dnsNames:
- 'nfl-fluentd-headless-service'
- 'nfl-fluentd-headless-service.feplogging-dev'
- 'nfl-fluentd-headless-service.feplogging-dev.svc'
- 'nfl-fluentd-headless-service.feplogging-dev.svc.cluster.local'
duration: 8760h
usages:
- server auth
secretName: fluentd-cert
issuerRef:
name: ca-issuer
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: prometheus-cert
namespace: feplogging-dev
spec:
subject:
commonName: "prometheus"
duration: 8760h
usages:
- client auth
secretName: prometheus-cert
issuerRef:
name: ca-issuer
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: fluentbit-cert
namespace: feplogging-dev
spec:
subject:
commonName: "fluentbit"
duration: 8760h
usages:
- client auth
secretName: fluentbit-cert
issuerRef:
name: ca-issuer
EOF
FEPExporter名が名前空間my-namespaceのexp1であると仮定します。
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: fepexporter-cert
namespace: my-namespace
spec:
subject:
commonName: "exp1-service"
dnsNames:
- 'exp1-service'
- 'exp1-service.fepexporter-dev'
- 'exp1-service.fepexporter-dev.svc'
- 'exp1-service.fepexporter-dev.svc.cluster.local'
duration: 8760h
usages:
- server auth
secretName: fepexporter-cert
issuerRef:
name: ca-issuer
EOF
cat << EOF | oc apply -f -
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: prometheus-cert
namespace: my-namespace
spec:
subject:
commonName: "prometheus"
duration: 8760h
usages:
- client auth
secretName: prometheus-cert
issuerRef:
name: ca-issuer
EOF