ssl - 将 SSL 证书添加到入口控制器与将其添加到入口资源
问题描述
入口控制器部署.yml
spec:
containers:
- args:
- /nginx-ingress-controller
- --default-backend-service=stratus/nginx-ingress-default-backend
- --election-id=ingress-controller-leader
- --ingress-class=nginx
- --configmap=ingress-controller-leader-nginx
- --enable-ssl-passthrough
入口资源.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: 'REPOSITORY_NAME'
namespace: service
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
tls:
- hosts:
- "xyz-development.com"
- secretName: ingress-secret-tls
rules:
- host: "xyz-development.com"
http:
paths:
- path: /service/
backend:
serviceName: 'REPOSITORY_NAME'
servicePort: 8080
秘密包含一个签名证书,CN 为 xyz-development.com
端点:xyz-development.com/service/swagger-ui.html
如果我尝试使用上述配置访问端点,我最终会出现“您的连接不是私有的”错误。
但是如果我将入口控制器 deployment.yml 修改为
spec:
containers:
- args:
- /nginx-ingress-controller
- --default-backend-service=stratus/nginx-ingress-default-backend
- --election-id=ingress-controller-leader
- --ingress-class=nginx
- --configmap=stratus/ingress-controller-leader-nginx
- --enable-ssl-passthrough
- --default-ssl-certificate=service/ingress-secret-tls
然后该站点使用我的有效证书是安全的。
- 这是预期的行为吗?
- 即使在控制器中删除了默认的ssl证书标志,不应该使用入口resource.yml中提到的秘密吗?
- 任何其他指针或更好的做法将不胜感激
解决方案
您的清单中有一个小错字导致第一个选项失败;它不.spec.tls
应该是条目数组中的新元素:
- secretName: ingress-secret-tls # wrong
secretName: ingress-secret-tls # correct
推荐阅读
- javascript - 检查选定的文本是否被点击
- python - Django覆盖模型表单中外键字段的显示名称
- python - 在熊猫数据框中,如何在不使用循环的情况下根据一列的数据设置其他列的值?
- python - 使用 Pandas 从列中删除第一个单词,有时是第二个单词
- gradle - 如何解决 Intellij Idea 中的 Gradle 错误
- mysql - Badstore SQL 注入:文本不起作用
- c# - 如何反编译包含 lambdas 的 .NET dll 以便构建
- javascript - 在我的网页的一部分中动态打开完整日历
- java - Jdbi 和继承:条件映射?
- python - 如何从多轮骰子游戏中提取价值?