一、ingress概念
通俗來講,ingress和Service、Deployment一樣也是一個k8s的資源類型,ingress用於實現用域名的方式訪問k8s內部應用
二、安裝helm

官網:https://helm.sh/docs/intro/install/ 此次安裝的版本地址:https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
執行helm version 看到如下輸出說明helm安裝成功

三、helm下載ingress
1、添加helm的ingress倉庫
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

2、下載ingress的helm包
執行命令helm pull ingress-nginx/ingress-nginx 會在本地下載一個壓縮包

解壓完后文件如下:

需要修改的values.yaml中的部分配置:
1、修改controller鏡像地址為 willdockerhub/ingress-nginx-controller:v0.47.0 修改admissionWebhook的地址為jettech/kube-webhook-certgen:v1.5.1 修改defaultbackend地址為mirrorgooglecontainers/defaultbackend-amd64:1.5(文中鏡像都是k8s.gcr.io下不能訪問,docker官方鏡像倉庫中找的對應版本,能訪問外網的話不用修改鏡像)
2、hostNetwork設置為true 、dnsPolicy設置為 ClusterFirstWithHostNet、NodeSelector添加ingress: "true"部署至指定節點、類型更改為kind: DaemonSet、type:loadBalancer 改為ClusterIP
3、不建議ingress controller 布置在master節點,這里就部署一個至node節點,生產建議最少三個,打標簽 kubectl label node k8s-node1 ingress=true
4、kubectl create ns ingress-nginx && helm install ingress-nginx -n ingress-nginx .

安裝完成后會返回上面的界面,看下ingress-controller部署到node1節點

四、測試
看下集群中創建的資源對象,進行測試

編寫ingress yaml文件
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
name: example
spec:
rules: # 一個Ingress可以配置多個rules
- host: k8s.nginx.com # 域名配置
http:
paths: # 相當於nginx的location配合,同一個host可以配置多個path /
- backend:
serviceName: nginx
servicePort: 8888
path: /

因為沒有dns解析,需要手動綁定host到宿主機ip

