在Knative中使用ALB網(wǎng)關(guān)
ALB是專門面向HTTP、HTTPS和QUIC等應(yīng)用層負(fù)載場(chǎng)景的負(fù)載均衡服務(wù),具備超強(qiáng)彈性及大規(guī)模七層流量處理能力,支持Header和Cookie灰度發(fā)布。本文介紹如何在Knative中使用ALB網(wǎng)關(guān)。
前提條件
已創(chuàng)建ACK Serverless集群或Kubernetes托管版集群。具體操作,請(qǐng)參見創(chuàng)建集群或創(chuàng)建Kubernetes托管版集群。
配置新建ALB網(wǎng)關(guān)
當(dāng)前支持使用以下兩種方式配置ALB網(wǎng)關(guān)。
方式一:部署Knative時(shí)選擇ALB網(wǎng)關(guān)
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在組件管理頁簽,單擊一鍵部署Knative。
在部署Knative頁面,選擇ALB服務(wù)網(wǎng)關(guān)并選擇至少兩個(gè)虛擬交換機(jī)。關(guān)于創(chuàng)建虛擬交換機(jī)的具體操作,請(qǐng)參見創(chuàng)建交換機(jī)。
配置完成后,單擊一鍵部署。
方式二:修改Knative配置文件配置新建ALB
對(duì)于已部署的Knative,您可以通過修改Knative配置文件來配置ALB網(wǎng)關(guān)。關(guān)于如何部署Knative,請(qǐng)參見部署Knative、部署Knative。
執(zhí)行以下命令,編輯config-network.yaml文件。
kubectl -n knative-serving edit configmap config-network
參照以下格式修改并保存config-network.yaml文件。
修改
ingress.class: alb.ingress.networking.knative.dev
并設(shè)置vswitch-ids
后,保存并退出config-network
文件即可配置ALB網(wǎng)關(guān)。關(guān)于ALB支持的地域和可用區(qū),請(qǐng)參見ALB支持的地域與可用區(qū)。apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作為Ingress控制器。 vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # 此處的參數(shù)請(qǐng)?zhí)鎿Q為您已創(chuàng)建的兩個(gè)不同可用區(qū)交換機(jī)ID,系統(tǒng)在創(chuàng)建ALB時(shí)自動(dòng)綁定VSwitch。 ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
使用已有ALB網(wǎng)關(guān)
對(duì)于已部署的Knative,您可以通過修改Knative配置文件來配置ALB網(wǎng)關(guān)。關(guān)于如何部署Knative,請(qǐng)參見在ACK集群中部署Knative、在ACK Serverless集群中部署Knative。
執(zhí)行以下命令,編輯config-network.yaml文件。
kubectl -n knative-serving edit configmap config-network
參照以下格式修改并保存config-network.yaml文件。
在配置文件中修改
ingress.class: alb.ingress.networking.knative.dev
并設(shè)置albconfig
為已有ALB。此時(shí)不需要配置vswitch-ids
。apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作為Ingress控制器。 albconfig: alb-dev-albconfig # 用于指定已存在的ALB配置名稱,若無需新建ALB而是使用現(xiàn)有ALB,則需填寫此項(xiàng)。 ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
通過ALB網(wǎng)關(guān)訪問部署的服務(wù)
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在Knative頁面的服務(wù)管理頁簽下,選擇命名空間為default,然后單擊使用模板創(chuàng)建,將以下YAML示例粘貼至模板,最后單擊創(chuàng)建。
創(chuàng)建一個(gè)名為
helloworld-go
的服務(wù)。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"
在服務(wù)管理頁面的默認(rèn)域名和訪問網(wǎng)關(guān)列,分別獲取
helloworld-go
服務(wù)的域名和網(wǎng)關(guān)地址。執(zhí)行以下命令,訪問
helloworld-go
服務(wù)。curl -H "host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # 網(wǎng)關(guān)IP和域名請(qǐng)以您的實(shí)際數(shù)據(jù)為準(zhǔn)。
預(yù)期輸出:
Hello Knative!
預(yù)期輸出表明服務(wù)訪問成功。