前言
要求k8s的http访问不能强制转跳https,记录一下配置https访问,并且设置不进行强制转跳
链接
K8S官网:[https://kubernetes.io/](https://kubernetes.io/)
K8S中文文档:[https://kubernetes.io/zh-cn/docs/home/](https://kubernetes.io/zh-cn/docs/home/)
技术栈
服务
K8S== 1.22.6
HTTP访问
svc名称
为service服务名,用于绑定service
namespace命名空间
用于筛选对应的命名空间
端口
用于将端口一对一绑定
pod标签名
用于绑定指定的容器
访问域名
指的是设置域名访问该容器端口
后缀
如直接域名访问则输入`\`,根据需求设置`域名/后缀`访问
映射端口
要跟绑定的svc中映射的端口一致
apiVersion: v1
kind: Service
metadata:
name: svc名称
namespace: namespace命名空间
labels:
app: pod标签名
spec:
ports:
- name: service
protocol: TCP
port: 端口
targetPort: 目标端口
selector:
app: pod标签名
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pod标签名
namespace: namespace命名空间
spec:
rules:
- host: 访问域名
http:
paths:
- path: 后缀
pathType: Prefix
backend:
service:
name: svc名称
port:
number: 映射端口
HTTPS访问
导入证书
在阿里云下载Nginx类型的SSL证书
<--提前准备好证书,选择证书目录执行导入-->
kubectl create secret tls 自定义secret名称 --key xxx.key --cert xxx.pem -n 命名空间
<--查看生成的secret,确认证书存在即可-->
kubectl describe secret 自定义secret名称 -n 命名空间
配置HTTPS访问
svc名称
为service服务名,用于绑定service
namespace命名空间
用于筛选对应的命名空间
端口
用于将端口一对一绑定
pod标签名
用于绑定指定的容器
访问域名
指的是设置域名访问该容器端口
secret名称
为导入证书的secret名称
后缀
如直接域名访问则输入`\`,根据需求设置`域名/后缀`访问
映射端口
要跟绑定的svc中映射的端口一致
apiVersion: v1
kind: Service
metadata:
name: svc名称
namespace: namespace命名空间
labels:
app: pod标签名
spec:
ports:
- name: service
protocol: TCP
port: 端口
targetPort: 目标端口
selector:
app: pod标签名
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pod标签名
namespace: namespace命名空间
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
spec:
tls:
- hosts:
- 访问域名
secretName: secret名称
rules:
- host: 访问域名
http:
paths:
- path: 后缀
pathType: Prefix
backend:
service:
name: svc名称
port:
number: 映射端口
禁用http强制跳转https
在ingress部署文件中的annotations添加
禁用强制跳转
nginx.ingress.kubernetes.io/ssl-redirect: "false"
启用强制跳转
nginx.ingress.kubernetes.io/ssl-redirect: "true"
<--原来-->
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pod标签名
namespace: namespace命名空间
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
<--禁用ssl跳转-->
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pod标签名
namespace: namespace命名空间
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
评论区