k8s 绑定域名
项目介绍
将部署好的kubernetes服务绑定到域名上,方便访问。
域名准备
本教程使用cloudflare的域名管理,在cloudflare的SSL/TLS选项卡中,选择Full模式,这样可以保证https的安全性。然后添加新的Certificate,分别创建一个域名证书和一个通配符证书,创建.crt和.key文件保存这两个证书。
ConfigMap准备
创建一个.bash文件,用于保存域名证书和通配符证书的内容,保存到ConfigMap中。
kubectl create secret tls metopia-web3app-tls --namespace web3app --key ./rj-deck.com.key --cert ./rj-deck.com.crt
部署
创建ingress
创建ingress.yaml文件,用于部署ingress。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web3app-ingress
namespace: web3app
annotations:
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- web3app.rj-deck.com
secretName: metopia-web3app-tls
rules:
- host: web3app.rj-deck.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: metopia-web3app-service
port:
number: 80
部署ingress
kubectl apply -f ingress.yaml
DNS解析
在lens中检查ingress的loadbalancer的IP地址,然后在cloudflare中添加A记录,将域名解析到ingress的loadbalancer的IP地址上。注意此处域名需要与ingress中的绑定的域名一致。
测试
在浏览器中输入域名,查看是否能够访问到服务。如果能够访问到服务,说明绑定域名成功。