Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/
适用于Kubernetes Operator 的MongoDB控制器
/ /

配置 TLS 证书

本节将指导您为MongoDB的每个组件创建 TLS 证书,以及在每个Kubernetes集群中创建Kubernetes密钥,以便将 TLS 证书安全地挂载到相应的Kubernetes Pod 中。

The process outlined below utilizes Cert Manager for creating the TLS certificates. However, please note that this is an opinionated guide, and CertManager is not supported by MongoDB. Moreover, CertManager is only one of many ways in which you can add TLS certificates to your Kubernetes clusters. Additionally, self-signed certificates may not be suitable for production deployments, depending on the security requirements of your organization. If you require publicly trusted certificates please configure your Issuer accordingly or provide the TLS certificate directly. To learn more, see Set Up a cert-manager Integration.

开始之前,请执行以下任务:

  • 安装 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 服务网格

在此页面上