helm安裝ingress
阿新 • • 發佈:2020-11-04
helm安裝ingress
一、安裝Helm
# wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz # tart -zxvf helm-v3.3.4-linux-amd64.tar.gz # mv linux-amd64/helm /usr/local/bin/helm # helm version version.BuildInfo{Version:"v3.3.4", GitCommit:"a61ce5633af99708171414353ed49547cf05013d", GitTreeState:"clean", GoVersion:"go1.14.9"}
# mkdir ingress && cd ingress # 新建倉庫 # helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx # helm pull ingress ingress-nginx/ingress-nginx # tar -xf ingress-nginx-3.7.1.tgz && cd ingress-nginx
三、安裝ingress
1. 修改values.yaml
# 修改controller映象地址 repository: registry.cn-beijing.aliyuncs.com/dotbalo/controller # dnsPolicy dnsPolicy: ClusterFirstWithHostNet # 使用hostNetwork,即使用宿主機上的埠80 443 hostNetwork: true # 使用DaemonSet,將ingress部署在指定節點上 kind: DaemonSet # 節點選擇,將需要部署的節點打上ingress=true的label nodeSelector: kubernetes.io/os: linux ingress: "true" # 修改type,改為ClusterIP。如果在雲環境,有loadbanace可以使用loadbanace type: ClusterIP # 修改kube-webhook-certgen映象地址 registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen
2. 安裝ingress
# 選擇節點打label # kubectl label node node01 ingress=true # 建立一個ingress的namespace # kubectl create ns ingress-nginx # 建立ingress # helm install ingress-nginx -n ingress-nginx # kubectl get pods -n ingress-nginx -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ingress-nginx-controller-mrb2t 1/1 Running 0 15h 192.168.10.243 node01 <none> <none>
四、使用ingress
-
Ingress配置檔案
ingress-example.yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress annotations: kubernetes.io/ingressClass: "nginx" spec: rules: - host: foo.bar.com http: paths: - path: / backend: serviceName: nginx-svc servicePort: 80
kubernetes.io/ingressClass: "nginx"
:使用ingressClass: "nginx",告訴ingress實現的配置rules
: 一個rules可以有多個hosthost
: 訪問ingress的域名path
: 類似於nginx的location配置,同一個host可以配置多個pathbackend
:描述Service和ServicePort的組合。對ingress匹配主機和路徑的HTTP與HTTPS請求將被轉發到後端Pod -
建立一個nginx的Deployment
apiVersion: v1 kind: Service metadata: name: nginx-svc labels: app: nginx-svc spec: selector: app: nginx ports: - name: http protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" labels: app: nginx name: nginx namespace: default spec: progressDeadlineSeconds: 600 replicas: 2 #副本數 revisionHistoryLimit: 10 # 歷史記錄保留的個數 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx:1.15.2 imagePullPolicy: IfNotPresent name: nginx terminationMessagePath: /dev/termination-log terminationMessagePolicy: File restartPolicy: Always terminationGracePeriodSeconds: 30
-
建立
# kubectl create -f ingress-example.yaml Warning: networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress ingress.networking.k8s.io/example-ingress created
檢視ingress
# kubectl get ingress Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress NAME CLASS HOSTS ADDRESS PORTS AGE example-ingress <none> foo.bar.com 10.101.32.165 80 107s
-
修改本機hosts檔案,訪問far.bar.com