首页 > 解决方案 > 使用 SSL 的 Kubernetes 端点

问题描述

是否可以在 Endpoint 中使用 SSL?

我有一个 Azure Database for MySQL,它需要 SSL 证书才能连接。我使用以下内容: https ://www.digicert.com/CACerts/BaltimoreCyber​​TrustRoot.crt.pem

在 Kubernetes 上,我运行了一个 NodeJS Pod,它通过这样的 Endpoint 与 MySQL 通信:

kind: Service
apiVersion: v1
metadata:
  name: mysql-remote
spec:
  ports:
  - protocol: TCP
    port: 3306
    targetPort: 3306
---

kind: Endpoints
apiVersion: v1
metadata:
  name: mysql-remote
subsets:
  - addresses:
      - ip: xx.xxx.xxx.xx
    ports:
      - port: 3306

我的 deplomyent.yaml 文件如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nodejs
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nodejs
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: nodejs
        image: xxx
        ports:
        - containerPort: 80
          name: nodejs
        env:
        - name: HOST
          value: "mysql-remote"
        - name: USER
          valueFrom:
            secretKeyRef:
              name: nodejssecret
              key: username
        - name: PASSWORD
          valueFrom:
            secretKeyRef:
              name: nodejssecret
              key: password

首先,我尝试将证书作为卷安装到 NodeJS。如果我使用例如 10 个不同的应用程序,那看起来很尴尬。有没有使用 SSL 的简单方法?

标签: kubernetes

解决方案


查看 deploying -a-stateful-application-on-azure-kubernetes-service-aks文章中的 Azure Kubernetes 服务 (AKS) 部分的安全性。

这个想法是从 BaltimoreCyber​​TrustRoot.crt.pem 证书创建 secter 并在部署中使用它

- name: database__connection__ssl
             valueFrom:
               secretKeyRef:
                 name: ssl-cert
                 key: BaltimoreCyberTrustRoot.crt.pem

推荐阅读