証明書管理ツールは、多く公開されています。 この例では、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