環(huán)境準(zhǔn)備
Ingress安裝
我之前有一片文章寫的是用ingress暴露應(yīng)用,這篇文章接著上一片文章繼續(xù)講使用ingress暴露https的應(yīng)用。請(qǐng)先參考上一片文章將ingress先在Kubernetes集群當(dāng)中安裝上:
ingress暴露應(yīng)用文章地址:https://blog.csdn.net/m0_51510236/article/details/132536519
域名證書準(zhǔn)備
因?yàn)槭潜┞秇ttps,所以需要域名證書。分以下兩種情況:
- 自簽證書(瀏覽器會(huì)顯示網(wǎng)站不安全)
我之前寫過一篇nginx自簽證書相關(guān)的文章,這里就不在過多贅述。文章地址:https://blog.csdn.net/m0_51510236/article/details/124676341
- 購買證書(做實(shí)驗(yàn)推薦申請(qǐng)免費(fèi)證書)
購買證書就比較簡單了,同時(shí)你也可以申請(qǐng)免費(fèi)證書。在證書界面直接點(diǎn)擊下載nginx的證書即可:
國內(nèi)常見的ssl證書服務(wù)提供商有(本文章不打廣告):阿里云、騰訊云、華為云、青云等
部署應(yīng)用
這里部署的nginx和ingress-nginx沒啥關(guān)系,你們可以改用tomcat或apache等其他web服務(wù)器
這個(gè)步驟和上篇文章一模一樣,直接上yaml文件,這里就不再過多贅述(因?yàn)閲庀螺d鏡像過慢,我這里寫的是我自己事先拉取下來的鏡像地址,可自行修改):
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deploy
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deploy
strategy: {}
template:
metadata:
labels:
app: nginx-deploy
spec:
containers:
- image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/nginx:1.21.6
name: nginx
ports:
- containerPort: 80
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-deploy
name: nginx-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-deploy
type: ClusterIP
status:
loadBalancer: {}
可以看到應(yīng)用部署成功:
同時(shí)通過內(nèi)網(wǎng)也是能夠訪問的:
通過ingress暴露應(yīng)用
根據(jù)ssl證書生成對(duì)應(yīng)的secret
根據(jù)Kubernetes官方文檔我們可以看到,Secret總共有三種,分別是 docker-registry
、 generic
和 tls
。這次我們要?jiǎng)?chuàng)建的就是 tls
類型的Secure:
執(zhí)行命令:
kubectl create secret tls cloud-yueyang-city-tls --cert=***.pem --key=***.key --dry-run=client -o yaml
上面這段代碼會(huì)生成創(chuàng)建secret的yaml資源文件,我們來重點(diǎn)介紹兩個(gè)參數(shù):
- –cert: 證書公鑰文件,一般后綴名為
.pem
或.crt
,此參數(shù)需要填寫公鑰文件的路徑(絕對(duì)路徑或相對(duì)路徑) - –key: 證書私鑰文件,一般后綴名為
.key
,此參數(shù)需要填寫私鑰文件的路徑(絕對(duì)路徑或相對(duì)路徑)
執(zhí)行完后可以查看生成的Kubernetes的yaml資源清單內(nèi)容(文件過長,暫未顯示全部):
然后我們將其輸出到一個(gè)文件當(dāng)中:
kubectl create secret tls cloud-yueyang-city-tls --cert=***.pem --key=***.key --dry-run=client -o yaml > ***-tls-secret.yaml
然后我們執(zhí)行它:
kubectl apply -f ***-tls-secret.yaml
可以看到secret創(chuàng)建成功:
創(chuàng)建ingress暴露部署的應(yīng)用
確認(rèn)自己安裝了ingress
查看安裝的ingressclass,執(zhí)行以下命令:
kubectl get ingressclass
可以看到們已經(jīng)有一個(gè)名字為 nginx 的 ingressclass 了。如果沒有安裝那么去我的上一片文章進(jìn)行安裝:https://blog.csdn.net/m0_51510236/article/details/132536519
創(chuàng)建ingress
執(zhí)行一下命令獲取暴露應(yīng)用的yaml資源清單文件:
kubectl create ingress nginx-ingress --class=nginx --rule="cloud.yueyang.city/*=nginx-svc:80,tls=cloud-yueyang-city-tls" --dry-run=client -o yaml
解釋一下這里面的參數(shù):
-
--class=nginx
: 這個(gè)參數(shù)表示的是使用上面我們查詢出來類型名字為nginx的ingress暴露此應(yīng)用 -
--rule="cloud.yueyang.city/*=nginx-svc:80,tls=cloud-yueyang-city-tls"
: 暴露應(yīng)用的規(guī)則,其值的格式為域名/*=服務(wù)名:端口,tls=創(chuàng)建tls的secret名字
-
--dry-run=clien
和-o yaml
: 這兩個(gè)參數(shù)搭配在一起表示在客戶端嘗試運(yùn)行并輸出yaml資源清單文件內(nèi)容,并不會(huì)直接創(chuàng)建資源
可以查看到輸出內(nèi)容:
我們直接將它輸出到文件當(dāng)中并執(zhí)行:
kubectl create ingress nginx-ingress --class=nginx --rule="cloud.yueyang.city/*=nginx-svc:80,tls=cloud-yueyang-city-tls" --dry-run=client -o yaml > ingress.yaml
最后執(zhí)行它:
kubectl apply -f ingress.yaml
可以看到創(chuàng)建成功:
查看創(chuàng)建的ingress資源:
kubectl get ingress
查看里面有一個(gè)域名和一個(gè)IP地址:
需要確定域名的解析和IP地址是對(duì)的上的(同時(shí)你也可以通過修改你系統(tǒng)的hosts的配置文件來完成):
訪問你暴露的應(yīng)用
通過瀏覽器直接訪問你的域名:文章來源:http://www.zghlxwxcb.cn/news/detail-689036.html
好了,通過ingress暴露https應(yīng)用就完成了,下課!文章來源地址http://www.zghlxwxcb.cn/news/detail-689036.html
到了這里,關(guān)于用Kubernetes(k8s)的ingress部署https應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!