当前位置:首页 > 编程笔记 > 正文
已解决

Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)

来自网友在路上 174874提问 提问时间:2023-10-31 21:07:47阅读次数: 74

最佳答案 问答题库748位专家为你答疑解惑

之前我们讲解过 Kubernetes - Ingress HTTP 搭建解决方案,并分别提供了旧版本和新版本。如果连 HTTP 都没搞明白的可以先去过一下这两篇

  • Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客
  • Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)-CSDN博客

废话不多说,马上开始给大家带来今天如何从 HTTP 升级 HTTPS 的配置解决方案,特别是微信小程序等强制性要求用 HTTPS 调用必知必会~

全文提到的“域名”一词指的是用到的完整域名而不是顶级域名的意思,比如:你用到啊a.b.com,接下来所有的地方就是 a.b.com 而不是 b.com 以下阅读时注意,否则必掉坑;如果你用到就是 b.com 那就是 b.com 也不需要添油加醋~

开始教程(域名:api.app.com 为例)

1、检查将要配置的域名查看状态

  • 检测地址:SSL状态检测

  • Ps:因为还没配置到 K8S Ingress 上,所以肯定是不合规,等全部配置完成后,我们可以再回头验证

2、下载 HTTPS SSL 域名证书加密文件

在阿里云、腾讯云或者其他云上,直接下载即可(当然自己会生成也可以),我这边以腾讯云为例,如图所示,建议下载 Nginx 版本

这里有一个巨坑,就是我开头特别提醒的,就是在申请 SSL 证书的时候,需要填写域名,很多人以为填写顶级域名即可(除非业务是用到顶级域名) ,这里的原则是需要用到啥域名就填写完整的域名,除非有钱人直接购买泛域名证书,那我们另当别论,一般免费的只支持单域名噢~

  • 因为我们用的是免费证书,所以这里填写的是“api.app.com”,而不是“app.com” 

3、制作应用的 Secret

apiVersion: v1
kind: Secret
data:tls.crt: base64 encoded certtls.key: base64 encoded key
metadata:name: app-ssl-secretnamespace: default
type: kubernetes.io/tls
  • 照抄即可,关键是要记住这里的 app-ssl-secret 这个名字,等下应用的 Ingress 需要用到

4、将 Secret 文件和 SSL 证书文件合体

假设第 3 步的 Secret 文件叫“app-ssl-secret.yaml”,将这个文件放到 SSL 证书文件夹里面,为的是和证书里的文件在同目录下,便于 kubectl 生成应用 secret。执行成功后再配置应用 Ingress 即可

kubectl create secret tls app-ssl-secret --cert=api.app.com_bundle.crt --key=api.app.com.key

5、配置 Ingress

注意:配置的是应用级的 Ingress,而不是 Ingress-Controller 噢~

如果已经配置过应用 Ingress,只需要关注 tls 配置即可,否则整个拿来把你!secretName 就是刚刚说的名字,注意 tls 里面的缩进,否则配置可能不生效,最恶心的时也不报错,所以配置好后,最好回头看一下刚刚配置的是否还在,否则会消失掉,掉坑过

还有一个坑是新版本 Ingress yaml 文件格式,我以为 secretName 正确写法是 secret:name: xxx(因为在 rules 里的 serviceName 掉坑过,DDDD),没想到它这里还是旧版本写法——secretName: xxx

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-szqynamespace: defaultannotations: kubernetes.io/ingress.class: "nginx"
spec:tls: # config SSL, if needn't remove it- hosts:- api.app.comsecretName: app-ssl-secretrules:- host: api.app.com # 外部可以访问的域名http:paths:- path: /pathType: Prefixbackend:service:name: app-server # app service nameport: number: 38080 # app service port
# 如果没配置过的话,需要执行
kubectl create -f nginx-ingress-controller-app-service.yaml

6、校验

最后,我们在通过刚开始的检测地址校验下,突然间发现……成功了~

  • Ps:当然还有一种简单粗暴验证方案,就是通过 https 在浏览器里访问,如果是合规的就会出现一把安全锁,否则会提示不安全 
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)":http://eshow365.cn/6-28993-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!