全部產品
Search
文件中心

Container Service for Kubernetes:在Knative中使用ALB網關

更新時間:Jun 19, 2024

ALB是專門面向HTTP、HTTPS和QUIC等應用程式層負載情境的負載平衡服務,具備超強彈性及大規模七層流量處理能力,支援Header和Cookie灰階發布。本文介紹如何在Knative中使用ALB網關。

前提條件

配置建立ALB網關

當前支援使用以下兩種方式配置ALB網關。

方式一:部署Knative時選擇ALB網關

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Knative

  3. 組件管理頁簽,單擊一鍵部署Knative

  4. 在部署Knative頁面,選擇ALB服務網關並選擇至少兩個虛擬交換器。關於建立虛擬交換器的具體操作,請參見建立交換器

  5. 配置完成後,單擊一鍵部署

方式二:修改Knative設定檔配置建立ALB

對於已部署的Knative,您可以通過修改Knative設定檔來配置ALB網關。關於如何部署Knative,請參見部署Knative部署Knative

  1. 執行以下命令,編輯config-network.yaml檔案。

    kubectl -n knative-serving edit configmap config-network
  2. 參照以下格式修改並儲存config-network.yaml檔案

    修改ingress.class: alb.ingress.networking.knative.dev並設定vswitch-ids後,儲存並退出config-network檔案即可配置ALB網關。關於ALB支援的地區和可用性區域,請參見ALB支援的地區與可用性區域

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作為Ingress控制器。
      vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # 此處的參數請替換為您已建立的兩個不同可用性區域交換器ID,系統在建立ALB時自動綁定VSwitch。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

使用已有ALB網關

對於已部署的Knative,您可以通過修改Knative設定檔來配置ALB網關。關於如何部署Knative,請參見在ACK叢集中部署Knative在ACK Serverless叢集中部署Knative

  1. 執行以下命令,編輯config-network.yaml檔案。

    kubectl -n knative-serving edit configmap config-network
  2. 參照以下格式修改並儲存config-network.yaml檔案

    在設定檔中修改ingress.class: alb.ingress.networking.knative.dev並設定albconfig為已有ALB。此時不需要配置vswitch-ids

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作為Ingress控制器。
      albconfig: alb-dev-albconfig # 用於指定已存在的ALB配置名稱,若無需建立ALB而是使用現有ALB,則需填寫此項。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

通過ALB網關訪問部署的服務

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Knative

  3. Knative頁面的服務管理頁簽下,選擇命名空間default,然後單擊使用模板建立,將以下YAML樣本粘貼至模板,最後單擊建立

    建立一個名為helloworld-go的服務。

    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"
  4. 服務管理頁面的預設網域名稱訪問網關列,分別擷取helloworld-go服務的網域名稱和網關地址。

  5. 執行以下命令,訪問helloworld-go服務。

    curl -H "host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com	 # 網關IP和網域名稱請以您的實際資料為準。

    預期輸出:

    Hello Knative!

    預期輸出表明服務訪問成功。