Ingress-Nginx 安裝
配置一個 Web 伺服器或者負載均衡器比想象的難。大多數 Web 服務的配置檔案非常相似。有些應用需要一些奇怪的需求,但是在大多數的情況下,可以使用相同的邏輯以達到預期的效果。
Ingress 資源體現了這一思想,ingress 控制器處理了上述奇怪的需求。
Ingress 控制器是一個守護程序,作為一個 Pod 部署,它監視 Apiserver 的 ingresses 端點以獲取 ingress 資源的更新。
目錄
- Ingress-Nginx 安裝
- 下載部署檔案
- 修改 Service Nodeport 檔案
- 部署 Ingress
- 測試 Ingress
- 建立 Nginx
- 建立 Ingress
- 部署測試應用
- 檢視 Ingress
- 驗證 Ingress
下載部署檔案
# Ingress-nginx Deployment YAML 檔案
for file in configmap.yaml mandatory.yaml namespace.yaml rbac.yaml with-rbac.yaml; do wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/$file; done
# Service Nodeport YAML 檔案
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml
修改 Service Nodeport 檔案
...
ports:
- name: http
port: 80
targetPort: 80
# 自定義 NodPort
# 確保重啟 SVC 後,Port 不變
nodePort: 30080
protocol: TCP
- name: https
port: 443
targetPort: 443
nodePort: 30443
protocol: TCP
...
部署 Ingress
kubectl apply ./
# 檢視 Ingress-Deploy、Service
# 注意:namespace 為 ingress-nginx
kubectl get deploy -n ingress-nginx
kubectl get svc -n ingress-nginx
測試 Ingress
建立 Nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: ingress-nginx
spec:
replicas: 3
selector:
matchLabels:
app: ingress-nginx
release: test
template:
metadata:
labels:
app: ingress-nginx
release: test
spec:
containers:
- name: ingress-nginx
image: nginx
resources:
limits:
memory: "128Mi"
cpu: "50m"
ports:
- containerPort: 80
name: nginx-port
---
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx-svc
spec:
selector:
app: ingress-nginx
release: test
ports:
- port: 80
targetPort: nginx-port
建立 Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
# host: 確保域名與 Node 的 IP 對應
# 1.1.1.1 test.test.com
- host: test.test.com
http:
paths:
- path:
backend:
serviceName: ingress-nginx-svc
servicePort: 80
部署測試應用
kubectl apply -f ./
檢視 Ingress
kubectl get ingress
# 檢視詳細資訊
kubectl describe ingress nginx-ingress
驗證 Ingress
透過外網訪問域名加埠,此處為 test.test.com:30080。
- 一個nginx-ingress部署示例
- Ingress-nginx Installation Guide