雲盒(CloudBox)是將阿里雲公用雲的計算、儲存、網路等基礎設施以軟硬一體方式,延伸部署到您的本地機房,滿足資料安全、資料本地處理、低延時等業務需求的全託管雲端服務。您可以在ACK叢集中建立雲盒節點池,將業務Pod調度至雲盒節點上來使用雲盒資源。將ACK叢集添加至ASM後,ASM將同時管理公用雲和雲盒節點池中的Pod,為應用之間的流量提供豐富、統一的路由、安全以及可觀測能力。本文介紹如何使用ASM管理帶有雲盒節點池的ACK叢集。
前提條件
已經建立了帶有雲盒節點池的ACK叢集。具體操作,請參見在ACK叢集中使用雲盒資源。
已建立並添加ACK叢集到ASM執行個體。具體操作,請參見已建立ASM執行個體和添加叢集到ASM執行個體。
步驟一:部署入口網關
雲盒節點池對於Service有特殊限制:
雲盒內LoadBalancer類型的Service只支援掛載雲盒ECS執行個體,公用雲LoadBalancer類型的Service只支援掛載公用雲ECS執行個體。
位於雲盒內的CLB不支援掛載EIP,即無法在雲盒內建立一個公網CLB。
所以當您部署LoadBalancer類型的ASM入口網關時,需要確保網關CLB和網關Pod同時處於公用雲可用性區域或雲盒可用性區域。
ASM網關支援使用serviceAnnotations欄位配置CLB可用性區域,支援使用nodeSelector
、affinity
欄位配置網關Pod調度策略。
本樣本中,我們在雲盒可用性區域內建立一個ASM網關,通過serviceAnnotations指定網關CLB的可用性區域,通過nodeSelector指定網關Pod的可用性區域,具體YAML如下所示。
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
name: ingressgateway
namespace: "istio-system"
spec:
clusterIds:
- ${ACK Cluster ID}
externalTrafficPolicy: Local
gatewayType: ingress
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
replicaCount: 2
resources:
limits:
cpu: '2'
memory: 2G
requests:
cpu: 200m
memory: 256Mi
serviceType: LoadBalancer
serviceAnnotations:
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: ${雲盒資源所在虛擬機器交換器ID}
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: ${雲盒資源所在可用性區域ID}
nodeSelector:
topology.kubernetes.io/zone: ${雲盒資源所在可用性區域ID}
rollingMaxSurge: "100%"
rollingMaxUnavailable: "25%"
您可以將上述YAML儲存在本地檔案中,使用ASM的kubeconfig建立該網關資源,也可以使用ASM控制台通過YAML建立ASM網關。具體操作,請參見樣本一:使用KubeAPI管理入口網關。
步驟二:部署應用並配置網關規則
由於步驟一中建立的是一個私人網關,無法直接通過公網訪問。請確保您當前環境可以訪問VPC網路之後,再執行測試命令。
執行操作步驟,在使用雲盒節點的ACK叢集中部署httpbin應用和網關規則,並進行測實驗證。