ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
上面讲解的是配置 Ingress 处理 HTTP 请求,而如果想要使用 HTTPS 访问,则需要配置 Ingress 支持 TLS。 比如在 kubernetes 集群中的 Pod 上运行的是 web 服务器,在集群内部通信使用的是 HTTP 协议。那么只需要 Ingress Controller 处理 HTTPS 连接的相关内容即可。 具体的操作步骤为: * 创建自签名的密钥和 SSL 证书文件; * 将证书保存到 kubernetes 中的 Secret 资源对象上; * 将 Secret 对象添加到 Ingress 中。 使用 OpenSSL 工具生成密钥和证书文件: ~~~bash # CN=nginx.kube.com 用于指定网站域名 $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx-kube.key -out nginx-kube.crt -subj "/CN=nginx.kube.com" Generating a 2048 bit RSA private key .................................................................+++ ......................+++ writing new private key to 'nginx-kube.key' ----- ~~~ 可以看到在当前目录 /home/shiyanlou 下生成了两个文件,分别为 nginx-kube.key 和 nginx-kube.crt。 接下来使用命令`kubectl create secret tls`创建 Secret 资源对象: ~~~bash $ kubectl create secret tls nginx-kube-secret --key nginx-kube.key --cert nginx-kube.crt secret/nginx-kube-secret created ~~~ 最后修改前面的 ingress.yaml 文件,将其修改为如下所示: ~~~yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-nginx spec: tls: # 在 tls 字段下进行配置 - hosts: - nginx.kube.com # 域名 secretName: nginx-kube-secret # 对应的 secret rules: - host: nginx.kube.com http: paths: - path: / backend: serviceName: nginx servicePort: 80 ~~~ 更新配置信息: ~~~bash $ kubectl apply -f ingress.yaml # 查看更新后的 ingress,可以看到开放了 443 端口 $ kubectl get ingress NAME HOSTS ADDRESS PORTS AGE ingress-nginx nginx.kube.com 10.106.187.230 80, 443 51m ~~~ 现在通过浏览器访问地址`https://nginx.kube.com`,浏览器会提示不安全,点击`Advanced`\->`Accept the Risk and Continue`,就可以看到 nginx 页面了。 ![图片描述](https://doc.shiyanlou.com/courses/uid600404-20191119-1574145302570) ![图片描述](https://doc.shiyanlou.com/courses/uid600404-20191119-1574145314615) 也可以通过 curl 访问: ~~~bash $ curl -k -v https://nginx.kube.com * Rebuilt URL to: https://nginx.kube.com/ * Trying 10.192.0.3... * Connected to nginx.kube.com (10.192.0.3) port 443 (#0) ... * subject: CN=nginx.kube.com ... ~~~