Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
Enterprise Kubernetes 演算子
/ /

TLS 証明書の構成

このセクションでは、 MongoDBの各コンポーネントに対する TLS 証明書の作成と、TLS 証明書を適切なKubernetesポッドに安全にマウントするための各KubernetesクラスターでのKubernetes Secret の作成に関するガイダンスを提供します。

以下に概説するプロセスでは、Cert Manager を使用して TLS 証明書を作成します。ただし、これは 独自のガイドであり、CertManager はMongoDBでサポートされていないことに注意してください。さらに、CertManager は、 Kubernetesクラスターに TLS 証明書を追加できる多くの方法の 1 つしかありません。また、組織のセキュリティ要件 によっては、自己署名証明書が本番環境の配置に適していない場合があります。パブリックに信頼されている証明書が必要な場合は、それに応じて発行者を構成するか、TLS 証明書を直接提供してください。詳細については、cert-manager 統合の設定 を参照してください。

始める前に、次のタスクを実行してください。

  • kubectl をインストールします。

  • Helm をインストールします。

  • GKE クラスターガイドで説明されているように、K8S_CLUSTER_*_CONTEXT_NAME 環境変数を設定します。

含まれているすべてのソースコードはMongoDB Kubernetes Operatorリポジトリにあります。

1
1helm repo add jetstack https://charts.jetstack.io --force-update
2
1helm upgrade --install \
2 cert-manager jetstack/cert-manager \
3 --kube-context "${K8S_CLUSTER_0_CONTEXT_NAME}" \
4 --namespace cert-manager \
5 --create-namespace \
6 --set crds.enabled=true
3
1kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
2apiVersion: cert-manager.io/v1
3kind: ClusterIssuer
4metadata:
5 name: selfsigned-cluster-issuer
6spec:
7 selfSigned: {}
8EOF
9
10kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer selfsigned-cluster-issuer
11
12kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
13apiVersion: cert-manager.io/v1
14kind: Certificate
15metadata:
16 name: my-selfsigned-ca
17 namespace: cert-manager
18spec:
19 isCA: true
20 commonName: my-selfsigned-ca
21 secretName: root-secret
22 privateKey:
23 algorithm: ECDSA
24 size: 256
25 issuerRef:
26 name: selfsigned-cluster-issuer
27 kind: ClusterIssuer
28EOF
29
30kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready -n cert-manager certificate my-selfsigned-ca
31
32kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
33apiVersion: cert-manager.io/v1
34kind: ClusterIssuer
35metadata:
36 name: my-ca-issuer
37spec:
38 ca:
39 secretName: root-secret
40EOF
41
42kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait --for=condition=Ready clusterissuer my-ca-issuer
4
1kubectl apply --context "${K8S_CLUSTER_0_CONTEXT_NAME}" -f - <<EOF
2apiVersion: cert-manager.io/v1
3kind: Certificate
4metadata:
5 name: test-selfsigned-cert
6 namespace: cert-manager
7spec:
8 dnsNames:
9 - example.com
10 secretName: test-selfsigned-cert-tls
11 issuerRef:
12 name: my-ca-issuer
13 kind: ClusterIssuer
14EOF
15
16kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" wait -n cert-manager --for=condition=Ready certificate test-selfsigned-cert
17
18kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" delete -n cert-manager certificate test-selfsigned-cert
5
1mkdir -p certs
2
3openssl s_client -showcerts -verify 2 \
4-connect downloads.mongodb.com:443 -servername downloads.mongodb.com < /dev/null \
5| awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="certs/cert"a".crt"; print >out}'
6
7kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" get secret root-secret -n cert-manager -o jsonpath="{.data['ca\.crt']}" | base64 --decode > certs/ca.crt
8cat certs/ca.crt certs/cert2.crt certs/cert3.crt >> certs/mms-ca.crt
9
10kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${MDB_NAMESPACE}" --from-file=ca-pem=certs/mms-ca.crt --from-file=mms-ca.crt=certs/mms-ca.crt
11kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" create cm ca-issuer -n "${OM_NAMESPACE}" --from-file=ca-pem=certs/mms-ca.crt --from-file=mms-ca.crt=certs/mms-ca.crt

戻る

Istio Service Triggers

項目一覧