ALB Ingress支援HTTP、HTTPS和QUIC協議,滿足雲原生應用在需要高度彈性和大規模七層流量管理時的各種需求,與Nginx Ingress相容。同時,支援複雜的業務路由配置和TLS認證的自動管理,提供靈活的流量管理機制。您可以通過配置轉寄規則,實現不同URL訪問叢集內不同的Service。
前提條件
您已建立註冊叢集並接入本機資料中心叢集。具體操作,請參見通過控制台建立註冊叢集。
步驟一:建立AlbConfig
拷貝以下內容到alb-test.yaml檔案中,用於建立AlbConfig。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15**** listeners: - port: 80 protocol: HTTP參數
說明
spec.config.name
(可選)表示ALB執行個體的名稱。
spec.config.addressType
(必選)表示負載平衡的地址類型。取值如下:
Internet(預設值):負載平衡具有公網IP地址,DNS網域名稱被解析到公網IP,因此可以在公網環境訪問。
Intranet:負載平衡只有私網IP地址,DNS網域名稱被解析到私網IP,因此只能被負載平衡所在VPC的內網環境訪問。
spec.config.zoneMappings
(必選)用於設定ALB Ingress交換器ID,您需要至少指定兩個不同可用性區域交換器ID,指定的交換器必須在ALB當前所支援的可用性區域內,且與叢集處於同一VPC。關於ALB Ingress支援的地區與可用性區域,請參見ALB支援的地區與可用性區域。
執行以下命令,建立AlbConfig。
kubectl apply -f alb-test.yaml預期輸出:
albconfig.alibabacloud.com/alb-demo created建立並拷貝以下內容到alb.yaml檔案中,用於建立IngressClass。
1.19及之後版本叢集
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo1.19版本之前叢集
apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo執行以下命令,建立IngressClass。
kubectl apply -f alb.yaml預期輸出:
ingressclass.networking.k8s.io/alb created
步驟二:部署服務
建立並拷貝以下內容到cafe-service.yaml檔案中,用於部署兩個名稱分別為
coffee和tea的Deployment,以及兩個名稱分別為coffee和tea的Service。執行以下命令,部署兩個Deployment和兩個Service。
kubectl apply -f cafe-service.yaml預期輸出:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created查看建立的應用和服務的狀態。
執行以下命令,查看應用的狀態。
kubectl get deploy預期輸出:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s執行以下命令,查看服務的狀態。
kubectl get svc預期輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m38s
步驟三:配置ALB Ingress
建立並拷貝以下內容到cafe-ingress.yaml檔案中。
1.19及之後版本叢集
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # 配置Context Path - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # 配置Context Path - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 801.19版本之前叢集
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # 配置Context Path。 - path: /tea backend: serviceName: tea-svc servicePort: 80 # 配置Context Path。 - path: /coffee backend: serviceName: coffee-svc servicePort: 80執行以下命令,配置
coffee和tea服務對外暴露的網域名稱和path路徑。kubectl apply -f cafe-ingress.yaml預期輸出:
ingress.networking.k8s.io/cafe-ingress created執行以下命令擷取ALB執行個體地址。
kubectl get ing預期輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com 80 50s
步驟四:訪問服務
利用擷取的ALB執行個體地址,通過命令列方式訪問
coffee服務。curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee利用擷取的ALB執行個體地址,通過命令列方式訪問
tea服務。curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
相關文檔
如需瞭解ALB Ingress服務的進階用法,例如如何將來自不同網域名稱或URL路徑的請求轉寄給不同的後端伺服器組、配置健全狀態檢查、將HTTP訪問重新導向至HTTPS、灰階發布、配置自訂監聽連接埠等,請參見ALB Ingress服務進階用法。
AlbConfig是由ALB Ingress Controller提供的CRD資源,ALB Ingress Controller使用AlbConfig來配置ALB執行個體和監聽。詳細資料,請參見通過AlbConfig配置ALB執行個體。