tls证书加密
创建类型为tls的secret为Nginx提供https证书访问
#创建ca公钥和私钥
openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3560 -nodes -subj '/CN=www.test.com'
#创建客户端公钥和私钥
openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=www.test.com'
#ca签发客户端私钥生成证书
openssl x509 -req -sha256 -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
创建secret
root@deploy:~/secret# kubectl create secret tls Nginx-tls --cert=./server.crt --key=./server.key
查看secret,检查创建的私钥和公钥
root@deploy:~/secret# kubectl get secrets Nginx-tls -o yaml
root@deploy:~/secret# vim Nginx-https.yaml
apiVersion: v1
kind: ConfigMap
Metadata:
name: Nginx-config
data:
https: |
server {
listen 80;
server_name www.test.com;
listen 443 ssl;
ssl_certificate /etc/Nginx/conf.d/certs/tls.crt;
ssl_certificate_key /etc/Nginx/conf.d/certs/tls.key;
location / {
root /usr/share/Nginx/html;
index index.html;
if ($scheme = http ){
rewrite / https://www.test.com permanent;
}
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
}
}
}
root@deploy:~/secret# kubectl apply -f Nginx-https.yaml
创建应用和service,绑定configmap和secret
root@deploy:~/secret# vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
Metadata:
labels:
app: web
name: web-deployment
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
Metadata:
labels:
app: web
spec:
containers:
- image: Nginx
name: Nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: Nginx-conf
mountPath: "/etc/Nginx/conf.d"
- name: Nginx-secret
mountPath: "/etc/Nginx/conf.d/certs"
volumes:
- name: Nginx-conf
configMap:
name: Nginx-config
items:
- key: https
path: https.conf
- name: Nginx-secret
secret:
secretName: Nginx-tls
---
apiVersion: v1
kind: Service
Metadata:
labels:
app: web-svc
name: web-svc
namespace: default
spec:
ports:
- name: web1
port: 80
protocol: TCP
targetPort: 80
nodePort: 30080
- name: web2
port: 443
protocol: TCP
targetPort: 443
nodePort: 30443
selector:
app: web
type: NodePort
root@deploy:~/secret# kubectl apply -f deployment.yaml
查看pod和svc
配置haproxy设置反向代理
root@haproxyA:~# vim /etc/haproxy/haproxy.cfg.
listen http
bind 192.168.100.20:80
mode tcp
server node1 192.168.100.5:30080 check inter 3s fall 3 rise 3
server node2 192.168.100.6:30080 check inter 3s fall 3 rise 3
listen https
bind 192.168.100.20:443
mode tcp
server node1 192.168.100.5:30443 check inter 3s fall 3 rise 3
server node2 192.168.100.6:30443 check inter 3s fall 3 rise 3
root@haproxyA:~# systemctl restart haproxy
客户端配置hosts本地域名解析
服务器配置hosts解析curl测试
root@deploy:~/secret# grep 'www.test.com' /etc/hosts
192.168.100.20 www.test.com
root@deploy:~/secret# curl -k -L www.test.com
访问www.test.com
查看证书签发信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。