實現效果: 使用阿里雲域名訪問k8s內部服務 k8s集群是自建在阿里雲ecs服務器上的
條件:
1.擁有阿里雲域名以及至少一台ecs服務器
2.k8s集群部署完成
3.nginx-ingress、default-http-backend組件已安裝
4.jenkins的服務以及svc已經部署好
例子: 使用阿里雲域名訪問k8s內部部署的jenkins服務
1.添加三級域名並解析到k8s集群任意一台服務器上
主機記錄: jenkins
主機類型: A
記錄值: 服務器ip地址
2.申請剛才添加域名的https證書 阿里雲可以免費申請20個 如果不會申請 可以自行百度
3.創建tls
將https證書下載到本地 再上傳到master服務器上並解壓 解壓出來一般會有兩個文件pem跟key 然后執行命令kubectl create secret tls jenkins-ssl --key ./jenkins.test.cn.key --cert ./jenkins.test.cn.pem -n kube-ops
意思是在namespace為kube-ops的命名空間下創建了一個名為jenkins-ssl的secret
4.創建ingress規則
需要注意的就是jenkins的svc需要跟創建的ingress處於同一個命名空間下
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: jenkins
namespace: kube-ops
annotations:
#進行說明我們接下來要用到的規則是nginx,就是靠annotations來識別類型的,只有進行注解了才能轉化為對應的與controller相匹配的規則
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: 'true' #http 自動轉https
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" #修改代理超時時間,默認是60s
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec:
rules:
- host: jenkins.test.cn
http:
paths:
- path: /
backend:
serviceName: jenkins-svc
servicePort: 8080
tls:
- hosts:
- jenkins.test.cn
secretName: jenkins-ssl
5.測試訪問
在瀏覽器輸入ingress配置的域名 jenkins.test.cn 即可訪問到k8s集群內布的jenkins服務!!!