kubernetes - 使用 SSL 的 Kubernetes 端点
问题描述
是否可以在 Endpoint 中使用 SSL?
我有一个 Azure Database for MySQL,它需要 SSL 证书才能连接。我使用以下内容: https ://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.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 的简单方法?
解决方案
查看 deploying -a-stateful-application-on-azure-kubernetes-service-aks文章中的 Azure Kubernetes 服务 (AKS) 部分的安全性。
这个想法是从 BaltimoreCyberTrustRoot.crt.pem 证书创建 secter 并在部署中使用它
- name: database__connection__ssl
valueFrom:
secretKeyRef:
name: ssl-cert
key: BaltimoreCyberTrustRoot.crt.pem
推荐阅读
- python - 从python中的列表元素中删除字符
- java - 检查不重复的随机数
- android - 用于相机的具有透明度的矩形框
- mysql - MySQL 复制在 Master 上具有 NULL-able 列,在 Slave 上具有 NOT NULL
- rspec - Rails 5 Api 中的 rspec 控制器测试仍然很常见吗?
- python - Jupyter Notebook 不会输出
- python - 通过 id 计算从基线的变化
- visual-studio - Visual Studio 发布版本部署到 Hololens,但主版本没有 - 激活 Windows 应用商店失败
- java - 获取所有 DBpedia 资源的列表
- python-3.x - 在 python 中使用矩阵创建灰度图像