1、ingress是什么
Ingress:K8s中的一个抽象资源,给管理员提供一个暴露应用的入口定义方法
Ingress Controller:根据Ingress生成具体的路由规则,并对Pod负载均衡器
![](https://img-blog.csdnimg.cn/img_convert/47835fb3bee97c62e9e950bf854e1800.png)
2、HTTP的重要性
HTTPS是安全的HTTP,HTTP协议的内容都是明文传输,HTTPS的目的是将这些内容加密,确保信息传输安全,最后一个字母S值得是SSL/TLS协议,它位于HTTP协议与TCP/IP协议的中间。
HTTPS优势:
1.加密隐私数据,防止您访客的隐私信息(账号,地址,手机号等)被劫持或窃取。
2.安全身份认证:验证网站的真实性,防止钓鱼网站。
3.防止网页篡改:防止数据在传输过程中被篡改,保护用户体验。
4.地址栏安全锁:地址栏头部的“锁”型图标,提高用户信任度
5.提高SEO排名:提高搜索排名顺序,为企业带来更多访问量
3、将一个项目对外暴露HTTPS访问
流程
浏览器》》serviceNoePort 》》ingress controller >> 分布在各个节点上的pod
配置HTTPS步骤
1.准备域名证书文件(来自:openssl/cfssl工具自签或者权威机构颁发)
cat > ca-config.json <<EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"kubernetes": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF
cat > ca-csr.json <<EOF
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
cat > web.zhang.cn-csr.json <<EOF
{
"CN": "web.zhang.cn",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes web.zhang.cn-csr.json | cfssljson -bare web.zhang.cn
将证书文件保存secret
【】kubectl create secret tls web-zhang-cn--cert=web.zhang.cn.pem --key=web.zhang.cn-key.pem
ingress规则配置tls(需要先部署ingress-controller)
本文默认已经部署,ingress-controller
【】添加ingress规则
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: zhang-https
spec:
tls:
-hosts:
secretName: web-zhang-cn
rules:
-host: web.zhang.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app.kubernetes.io/name: proxy
spec:
containers:
-name: nginx
image: nginx:stable
ports:
- containerPort: 80
name: http-web-svc
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app.kubernetes.io/name: proxy
ports:
-name: nginx-service-port
protocol: TCP
port: 80
targetPort: http-web-svc