網站首頁 編程語言 正文
前言
k8s集群服務部署好之后,需要對外提域名訪問,這時候就需要ingress-nginx了,今天來給大家分享一下
一、部署配置Ingress
1、獲取配置文件
#文件已下載到本地 https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy
2、準備鏡像
unzip ingress-nginx-nginx-0.20.0.zip cd ingress-nginx-nginx-0.20.0/deploy/ vim mandatory.yaml #其他文件的集合 #編輯mandatory.yaml文件,將defaultbackend鏡像地址改成阿里云的鏡像地址(如下圖) image: registry.cn-hangzhou.aliyuncs.com/allinpay/defaultbackend-amd64:v1.5
3、安裝
kubectl apply -f mandatory.yaml
#稍等片刻,使用下列命令查詢 kubectl get namespace kubectl get pods -n ingress-nginx
4、創建后端pod和service (pod-B、service-B)
vim deploy-demo.yaml apiVersion: v1 kind: Service metadata: name: myapp namespace: default spec: selector: app: myapp release: canary ports: - name: http targetPort: 80 port: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy namespace: default spec: replicas: 3 selector: matchLabels: app: myapp release: canary template: metadata: labels: app: myapp release: canary spec: containers: - name: myapp image: ikubernetes/myapp:v2 ports: - name: http containerPort: 80 #應用配置 kubectl apply -f deploy-demo.yaml #查看 kubectl get pods
5、創建service-A
vim service-nodeport.yaml apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: type: NodePort ports: - name: http port: 80 targetPort: 80 protocol: TCP nodePort: 30080 - name: https port: 443 targetPort: 443 protocol: TCP nodePort: 30443 selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx #應用配置 kubectl apply -f service-nodeport.yaml #查看 kubectl get svc -n ingress-nginx
在外部瀏覽器中中訪問:ip:30080
此時報錯的原因是因為沒有生成ingress-controller關聯到service-B的ingress規則;
6、定義ingress規則
定義ingress規則,此間規則會自動注入到ingress-controller(pod)的nginx.conf中;
ingress-controller是直接關聯到service-B的,但是中間由ingress來生成各種規則;
vim ingress-myapp.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-myapp namespace: default annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: myapp.magedu.com http: paths: - path: backend: serviceName: myapp servicePort: 80
此時ingress-controller的nginx.conf中會自動生成一個server段的配置,也就是一個nginx的虛擬主機的字段,還包括upstream配置等;
upstream自動代理到后端pod(pod-B),這些都是自動生成,所以就實現了自動生成配置,自動更改配置等;
只需要改此yaml文件即可;
#應用配置 kubectl apply -f ingress-myapp.yaml
在外部主機上配置好host文件
然后在瀏覽器中再訪問,發現已經可以訪問到后端pod了
二、使用https
1、創建k8s證書(要注意和后端的pod使用相同的namespace)
kubectl -n default create secret tls ingress-test --key /home/centos/cert/cash432.key --cert /home/centos/cert/cash432.crt
2、創建ingress規則
注意namespace的相同性,要不然證書無法生效
vim ingress-myapp-cash432.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-myapp namespace: default annotations: kubernetes.io/ingress.class: "nginx" kubernetes.io/secure-backends: "true" kubernetes.io/ssl-passthrough: "true" spec: tls: - hosts: - myapp.cash432.xyz secretName: ingress-test rules: - host: myapp.cash432.xyz http: paths: - path: backend: serviceName: myapp servicePort: 80 #應用配置 kubectl apply -f ingress-myapp-cash432.yaml
瀏覽器訪問
原文鏈接:https://blog.csdn.net/qq_37837432/article/details/121720678
相關推薦
- 2021-12-05 判斷網頁時瀏覽器打開還是釘釘打開
- 2022-03-22 .NET?6中間件Http?Logging使用介紹_實用技巧
- 2022-05-15 require和import的區別詳解
- 2022-05-08 ASP.NET中Web?API的參數綁定_實用技巧
- 2022-09-16 Go1.16新特性embed打包靜態資源文件實現_Golang
- 2024-04-07 springboot整合redis配置
- 2022-11-19 Android權限詢問的實例詳解_Android
- 2022-01-19 標準時間格式轉換(正則寫法)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支