全部產品
Search
文件中心

:建立ALB Ingress

更新時間:Jul 27, 2024

使用ALB Ingress時,您需要在叢集中建立多種資源以配置由ALB Ingress到後端Pod的完整轉寄路徑。您可以參考本文快速部署樣本後端應用,並建立ALB Ingress以對外提供服務。

閱讀前提示

閱讀本文前,推薦您閱讀ALB Ingress概述以瞭解ALB Ingress的基本概念。

使用限制

  • 如果您使用的是Flannel網路外掛程式,則ALB Ingress後端Service服務僅支援NodePort和LoadBalancer類型。

  • AlbConfig、Namespace、Ingress和Service這些資源的名稱不能以aliyun開頭。

  • 低版本Nginx Ingress Controller無法識別Ingress資源中的spec:ingressClassName欄位。如果叢集中同時存在Nginx Ingress和ALB Ingress,會存在Ingress資源被低版本Nginx Ingress Controller調諧的風險。因此,請及時升級Nginx Ingress Controller版本,或通過Annotation註解項指定ALB Ingress對應的ingressClass。具體操作,請參見升級Nginx Ingress Controller組件ALB Ingress服務進階用法

情境樣本

本教程以四個部署了Nginx的Pod為例,示範如何通過配置ALB Ingress,實現相同網域名稱不同URL路徑的流量轉寄。

前端請求

流量轉寄至

demo.domain.ingress.top/coffee

coffee服務

demo.domain.ingress.top/tea

tea服務

前提條件

步驟一:安裝ALB Ingress Controller組件

使用ALB Ingress前,請安裝ALB Ingress Controller組件。

建立叢集時安裝

建立ACK託管叢集ACK專有叢集時,在Ingress參數配置地區,選擇安裝ALB Ingress

您可以為ALB雲原生網關執行個體來源選擇建立使用已有暫不建立選項。這三種選項的對比如下:

重要

如果選擇建立使用已有,則會在安裝ALB Ingress Controller組件後自動建立AlbConfig以及與之匹配的IngressClass資源,在AlbConfig中會自動設定連接埠為80,協議為HTTP的listener

對比項

建立

使用已有

暫不建立

適用情境

在叢集中第一次使用ALB Ingress,叢集中不存在AlbConfig的情境。

希望使用已有ALB執行個體的情境。

希望在安裝組件後配置AlbConfig的情境。

工作原理

建立AlbConfig後,會使用其中的配置自動建立一個ALB執行個體。

會自動建立一個AlbConfig,其中的id欄位會填入被選擇的ALB執行個體的ID。

只安裝ALB Ingress Controller,而不建立AlbConfig。

後續操作

網路類型中選擇ALB執行個體的網路類型,然後在虛擬交換器中選擇ALB執行個體關聯的虛擬交換器。

重要

為保障業務高可用,推薦您選擇2個或以上不同可用性區域的交換器。

ALB雲原生網關執行個體中選擇希望使用的ALB執行個體。如果您需要使用AlbConfig關聯該ALB執行個體,請參見複用已有ALB執行個體

重要

不支援使用基礎版ALB執行個體。

使用已有AlbConfig,或後續完成AlbConfig的配置。

在已有叢集中安裝

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  3. 組件管理頁面,單擊網路頁簽,在網路組件地區,在ALB Ingress Controller組件卡片的右下角單擊安裝

  4. 安裝組件 ALB Ingress Controller對話方塊,為選擇ALB 雲原生網關執行個體來源選擇建立使用已有暫不建立選項。這三種選項的對比如下:

    重要

    如果選擇建立使用已有,則會在安裝ALB Ingress Controller組件後自動建立AlbConfig以及與之匹配的IngressClass資源,在AlbConfig中會自動設定連接埠為80,協議為HTTP的listener

    對比項

    建立

    使用已有

    暫不建立

    適用情境

    在叢集中第一次使用ALB Ingress,叢集中不存在AlbConfig的情境。

    希望使用已有ALB執行個體的情境。

    希望在安裝組件後配置AlbConfig的情境。

    工作原理

    建立AlbConfig後,會使用其中的配置自動建立一個ALB執行個體。

    會自動建立一個AlbConfig,其中的id欄位會填入被選擇的ALB執行個體的ID。

    只安裝ALB Ingress Controller,而不建立AlbConfig。

    後續操作

    網路類型中選擇ALB執行個體的網路類型,然後在虛擬交換器中選擇ALB執行個體關聯的虛擬交換器。

    重要

    為保障業務高可用,推薦您選擇2個或以上不同可用性區域的交換器。

    ALB雲原生網關執行個體中選擇希望使用的ALB執行個體。如果您需要使用AlbConfig關聯該ALB執行個體,請參見複用已有ALB執行個體

    重要

    不支援使用基礎版ALB執行個體。

    使用已有AlbConfig,或後續完成AlbConfig的配置。

  5. 單擊確定

說明

若需要在ACK專有叢集中通過ALB Ingress訪問服務,在部署服務前需要為ALB Ingress Controller授權。具體操作,請參見為ACK專有叢集授予ALB Ingress Controller存取權限

步驟二:部署後端服務

控制台

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 單擊右上方使用YAML建立資源

    1. 樣本模板:選擇自訂

    2. 模板:輸入YAML設定檔代碼。該設定檔用於部署兩個名稱分別為coffeetea的Deployment,以及兩個名稱分別為coffee-svctea-svc的Service。

      YAML設定檔參考

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: coffee
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: coffee
        template:
          metadata:
            labels:
              app: coffee
          spec:
            containers:
            - name: coffee
              image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: coffee-svc
      spec:
        ports:
        - port: 80
          targetPort: 80
          protocol: TCP
        selector:
          app: coffee
        type: NodePort
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: tea
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: tea
        template:
          metadata:
            labels:
              app: tea
          spec:
            containers:
            - name: tea
              image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: tea-svc
      spec:
        ports:
        - port: 80
          targetPort: 80
          protocol: TCP
        selector:
          app: tea
        type: NodePort
  4. 配置完成後單擊建立,頁面將提示建立成功

  5. 檢查Deployment和Service建立成功:

    1. 在左側導覽列,選擇工作負載 > 無狀態。可查看到名稱為coffee和tea的Deployment已部署。

    2. 在左側導覽列,選擇網路 > 服務。可查看到名稱為coffee-svc和tea-svc的Service已部署。

kubectl

  1. 建立並拷貝以下內容到cafe-service.yaml檔案中,用於部署兩個名稱分別為coffeetea的Deployment,以及兩個名稱分別為coffee-svctea-svc的Service。

    YAML設定檔參考

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      type: NodePort
  2. 執行以下命令,部署兩個Deployment和兩個Service。

    kubectl apply -f cafe-service.yaml

    預期輸出:

    deployment "coffee" created
    service "coffee-svc" created
    deployment "tea" created
    service "tea-svc" created
  3. 執行以下命令,查看應用和服務的狀態。

    1. 執行以下命令,查看應用的狀態。

      kubectl get deployment

      預期輸出:

      NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
      coffee                           1/2     2            1           2m26s
      tea                              1/1     1            1           2m26s
    2. 執行以下命令,查看服務的狀態。

      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

步驟三:建立AlbConfig

說明

如果在步驟一:安裝ALB Ingress Controller組件中,您為ALB雲原生網關執行個體來源選擇了建立使用已有選項,controller會自動建立一個名為“alb”的AlbConfig和名為“alb”的IngressClass資源,您可忽略此步驟。

控制台

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 自訂資源

  3. 單擊右上方使用YAML建立資源

    1. 樣本模板:選擇自訂

    2. 模板:輸入YAML設定檔代碼。

      YAML設定檔參考

      apiVersion: alibabacloud.com/v1
      kind: AlbConfig
      metadata:
        name: alb
      spec:
        config:
          name: alb-test
          addressType: Internet
          zoneMappings:
          - vSwitchId: vsw-uf6ccg2a9g71hx8go****
          - vSwitchId: vsw-uf6nun9tql5t8nh15****
        listeners:
          - port: 80
            protocol: HTTP

      可調整參數說明如下:

      參數

      是否必填

      說明

      metadata.name

      AlbConfig的名稱。

      說明

      AlbConfig的名稱在叢集中必須是唯一的。因此,在建立AlbConfig時,您需要確保AlbConfig名稱的唯一性,以避免命名衝突。

      spec.config.name

      ALB執行個體的名稱。

      spec.config.addressType

      ALB執行個體的網路類型。取值如下:

      • Internet(預設值):公網類型。面向公網提供應用型負載平衡服務,公網可訪問。

        說明

        應用型負載平衡通過綁定Elastic IP Address進行公網服務,使用公網類型ALB執行個體將收取Elastic IP Address的執行個體費與頻寬、流量費用,詳情參見隨用隨付

      • Intranet:私網類型。面向VPC內部提供應用型負載平衡服務,公網不可訪問。

      spec.config.zoneMappings

      設定ALB交換器ID。建立交換器具體操作請參見建立和管理交換器

      說明
      • 指定的交換器必須在ALB當前所支援的可用性區域內,且與叢集處於同一VPC。關於ALB支援的地區與可用性區域,請參見ALB支援的地區與可用性區域

      • 應用型負載平衡支援多可用性區域部署,若當前地區支援2個及以上可用性區域,為保障業務高可用,請至少選擇2個或以上不同可用性區域的交換器。

      spec.listeners

      配置ALB的監聽連接埠和協議。本文配置樣本為連接埠80的HTTP監聽。

      監聽定義了流量進入負載平衡的方式和規則,此處建議保留該配置,否則您需要另行建立監聽才可使用ALB Ingress。

  4. 配置完成後單擊建立,頁面將提示建立成功

  5. 檢查ALB執行個體建立成功:

    1. 登入應用型負載平衡ALB控制台

    2. 在頂部功能表列,選擇執行個體所屬的地區。

    3. 執行個體頁面,在執行個體列表可查看到名稱為alb-test的ALB執行個體,表示執行個體建立成功。

kubectl

  1. 拷貝以下內容到alb-test.yaml檔案中,用於建立AlbConfig。

    YAML設定檔參考

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb-test
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    可調整參數說明如下:

    參數

    是否必填

    說明

    metadata.name

    AlbConfig的名稱。

    說明

    AlbConfig的名稱在叢集中必須是唯一的。因此,在建立AlbConfig時,您需要確保AlbConfig名稱的唯一性,以避免命名衝突。

    spec.config.name

    ALB執行個體的名稱。

    spec.config.addressType

    ALB執行個體的網路類型。取值如下:

    • Internet(預設值):公網類型。面向公網提供應用型負載平衡服務,公網可訪問。

      說明

      應用型負載平衡通過綁定Elastic IP Address進行公網服務,使用公網類型ALB執行個體將收取Elastic IP Address的執行個體費與頻寬、流量費用,詳情參見隨用隨付

    • Intranet:私網類型。面向VPC內部提供應用型負載平衡服務,公網不可訪問。

    spec.config.zoneMappings

    設定ALB交換器ID。建立交換器具體操作請參見建立和管理交換器

    說明
    • 指定的交換器必須在ALB當前所支援的可用性區域內,且與叢集處於同一VPC。關於ALB支援的地區與可用性區域,請參見ALB支援的地區與可用性區域

    • 應用型負載平衡支援多可用性區域部署,若當前地區支援2個及以上可用性區域,為保障業務高可用,請至少選擇2個或以上不同可用性區域的交換器。

    spec.listeners

    配置ALB的監聽連接埠和協議。本文配置樣本為連接埠80的HTTP監聽。

    監聽定義了流量進入負載平衡的方式和規則,此處建議保留該配置,否則您需要另行建立監聽才可使用ALB Ingress。

  2. 執行以下命令,建立AlbConfig。

    kubectl apply -f alb-test.yaml

    預期輸出:

    albconfig.alibabacloud.com/alb-demo created

步驟四:建立IngressClass

IngressClass建議與AlbConfig一一對應。

說明

如果在步驟一:安裝ALB Ingress Controller組件中,您為ALB雲原生網關執行個體來源選擇了建立使用已有選項,controller會自動建立一個名為“alb”的AlbConfig和名為“alb”的IngressClass資源,您可忽略此步驟。

控制台

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 自訂資源

  3. 單擊右上方使用YAML建立資源

    1. 樣本模板:選擇自訂

    2. 模板:輸入YAML設定檔代碼。

      YAML設定檔參考

      apiVersion: networking.k8s.io/v1
      kind: IngressClass
      metadata:
        name: alb
      spec:
        controller: ingress.k8s.alibabacloud/alb
        parameters:
          apiGroup: alibabacloud.com
          kind: AlbConfig
          name: alb

      可調整參數說明如下:

      參數

      是否必填

      說明

      metadata.name

      IngressClass的名稱。

      說明

      IngressClass的名稱在叢集中必須是唯一的。因此,在建立IngressClass時,您需要確保IngressClass名稱的唯一性,以避免命名衝突。

      spec.parameters.name

      關聯的AlbConfig的名稱。

  4. 配置完成後單擊建立,頁面將提示建立成功

  5. 檢查IngressClass建立成功:

    1. 在左側導覽列,選擇工作負載 > 自訂資源

    2. 選擇資來源物件瀏覽器頁簽。

    3. API組搜尋欄中,輸入IngressClass進行搜尋,可查看到對應的IngressClass已建立。

kubectl

  1. 建立並拷貝以下內容到alb.yaml檔案中,用於建立IngressClass。

    YAML設定檔參考

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb

    可調整參數說明如下:

    參數

    是否必填

    說明

    metadata.name

    IngressClass的名稱。

    說明

    IngressClass的名稱在叢集中必須是唯一的。因此,在建立IngressClass時,您需要確保IngressClass名稱的唯一性,以避免命名衝突。

    spec.parameters.name

    關聯的AlbConfig的名稱。

  2. 執行以下命令,建立IngressClass。

      kubectl apply -f alb.yaml

    預期輸出:

    ingressclass.networking.k8s.io/alb created

步驟五:建立Ingress

控制台

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

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

  3. 路由頁面,單擊建立 Ingress,在建立 Ingress對話方塊配置路由。

    配置項

    說明

    樣本值

    網關類型

    可按需選擇ALB應用型負載平衡MSE雲原生網關Nginx三種網關類型。

    關於三種網關的差異,請參見Nginx Ingress、ALB Ingress和MSE Ingress對比

    ALB應用負載型均衡

    名稱

    自訂路由名稱。

    cafe-ingress

    Ingress Class

    自訂Ingress的類。

    alb

    監聽/連接埠

    在AlbConfig中定義ALB的監聽連接埠和協議,規定了流量進入負載平衡方式和處理規則。

    HTTP:80

    規則

    單擊+ 添加規則可新增多個路由規則。

    • 網域名稱:自訂網域名。

    • 路徑映射:配置如下配置項。

      • 路徑:指定服務訪問的URL路徑。本例中不做配置,保留根路徑/

      • 匹配規則:支援首碼匹配(Prefix)完整匹配(Exact)預設(ImplementationSpecific)

      • 服務名稱:選擇目標服務,即K8s內的Service。

      • 連接埠:選擇服務需要暴露的連接埠。

    • Ingress支援同一個網域名稱下配置多條路徑。單擊+ 添加路徑新增路徑。

    • 網域名稱:demo.domain.ingress.top

    • 路徑映射

      • 路徑:/tea

      • 匹配規則:預設(ImplementationSpecific)

      • 服務名稱:tea-svc

      • 連接埠:80

    • 路徑映射

      • 路徑:/coffee

      • 匹配規則:預設(ImplementationSpecific)

      • 服務名稱:coffee-svc

      • 連接埠:80

    TLS配置

    開啟TLS配置開關,配置安全的路由服務。

    • 網域名稱:自訂網域名。

    • 保密字典:根據需要選擇對應的保密字典。

      如果您需要建立Secret,請執行如下操作。

      1. 保密字典右側,單擊建立

      2. 建立 Secret對話方塊,自訂保密字典的名稱CertKey,然後單擊確定

      3. 保密字典的下拉框,選擇已建立的Secret。

    單擊+ 新增TLS配置,可配置多條TLS。

    更多詳情,請參見配置HTTPS認證以實現加密通訊

    關閉TLS配置,此樣本中不需要配置TLS。

    更多配置

    • 灰階發布:開啟灰階發布開關。灰階規則可按照要求標頭、Cookie 、權重三個維度進行設定。

      說明

      要求標頭、Cookie 、權重可以只設定一種,若同時設定生效規則按要求標頭、Cookie、權重順序匹配。

      • 按要求標頭:基於Request Header的流量切分,設定後會添加註解nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-header-valuenginx.ingress.kubernetes.io/canary-by-header-pattern

      • 按Cookie:基於Cookie的流量切分,設定後會添加註解nginx.ingress.kubernetes.io/canary-by-cookie

      • 按權重:佈建要求到指定服務的百分比(值為0~100的整數),設定後會添加註解nginx.ingress.kubernetes.io/canary-weight

    • 協議:指定後端服務的協議,設定後會添加註解nginx.ingress.kubernetes.io/backend-protocol

      支援HTTP、HTTPS、gRPC、gRPCS四種服務合約。

    • 重寫路徑:將用戶端請求中的路徑重寫後發送到後端服務,設定後會添加註解 nginx.ingress.kubernetes.io/rewrite-target

    關閉灰階發布,協議和重寫路徑保持預設。此樣本中不需要配置灰階發布、協議、重新路徑。

    自訂轉寄規則

    開啟自訂轉寄規則,可精細化管理入站流量。

    說明

    轉寄規則的條件條目上限為10個。

    • 轉寄條件下拉框中選擇:

      • 網域名稱

        匹配請求網域名稱,如果設定了多個網域名稱,則網域名稱之間是或的關係。設定後會添加註釋alb.ingress.kubernetes.io/conditions.host-example

      • 路徑

        匹配請求路徑,如果設定了多個路徑,則路徑之間是或的關係。設定後會添加註釋alb.ingress.kubernetes.io/conditions.path-example

      • HTTP標題

        以索引值對形式匹配請求的頭部資訊。例如,鍵是headername值是headervalue1。如果設定了多個Header值,則Header之間是或的關係。設定後會添加註釋alb.ingress.kubernetes.io/conditions.http-header-example

    • 轉寄動作下拉框中選擇:

      • 轉寄至

        轉寄到後端多伺服器組。在服務名稱中,請選擇目標服務。在連接埠中,選擇目標連接埠號碼。然後自訂配置權重值。

        說明
        • 如果是Flannel網路外掛程式叢集則不支援ClusterIP類型服務。

        • 選擇轉寄至,就不需要配置規則中的路徑映射

      • 返回固定響應

        設定通過ALB給用戶端返回固定響應內容,可以設定響應狀態代碼,本文內容和本文類型。按需求配置響應狀態代碼響應本文類型(可選)、響應本文(可選)

        響應本文類型

        • text/plain:表示無格式的內容類型。

        • text/css:表示XML格式的內容。

        • text/html:表示HTML格式的內容。

        • application/javascript:表示JavaScript格式的內容。

        • application/json:表示JSON格式內容類型。

    自訂轉寄規則支援多種轉寄條件及轉寄動作,您可以佈建網域名、路徑、HTTP標題轉寄條件,轉寄至、返回固定響應的轉寄動作。瞭解更多配置,請參見自訂ALB Ingress的轉寄規則

    關閉自訂轉寄規則。此樣本中不需要配置自訂轉寄規則。

    註解

    您可自訂註解名稱和值,也可根據名稱選擇或搜尋要配置的註解。Ingress的註解請參見Annotations

    單擊+添加註解,可對Ingress無上限地添加註解。

    無需配置,此樣本不需要配置註解。

    標籤

    標籤的作用是為Ingress添加對應的標籤,標示該Ingress的特點。

    單擊+添加標籤,可對Ingress無上限地添加標籤。

    無需配置,此樣本不需要配置標籤。

  4. 配置完成,在建立Ingress頁面的左下角,單擊確定。

  5. 檢查Ingress建立成功:

    1. 在左側導覽列,選擇網路 > 路由。可查看到名稱為cafe-ingress的Ingress已部署。

    2. 在cafe-ingress的端點列,可查看到端點資訊。

kubectl

  1. 建立並拷貝以下內容到cafe-ingress.yaml檔案中,用於建立Ingress。

    YAML設定檔參考

    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: 80

    可調整參數說明如下:

    參數

    是否必填

    說明

    metadata.name

    Ingress的名稱。

    說明

    Ingress的名稱在叢集中必須是唯一的。因此,在建立Ingress時,您需要確保Ingress名稱的唯一性,以避免命名衝突。

    spec.ingressClassName

    關聯的IngressClass的名稱。

    spec.rules.host

    HTTP頭部host欄位網域名稱資訊,需要配置為您的自有網域名稱。

    當您在瀏覽器中訪問您的自有網域名稱時,例如“http://demo.domain.ingress.top”,瀏覽器會在發送HTTP請求時自動添加一個“Host: demo.domain.ingress.top”的頭部欄位。這樣,伺服器就可以根據該頭部欄位來識別請求的目標主機名稱。在Kubernetes中,Ingress規則中的host欄位會與來自請求的Host頭部欄位進行匹配。當匹配成功時,Ingress規則就會將請求路由到相應的後端服務進行處理。

    說明
    • 此處如果配置了自有網域名稱,需要確保該自有網域名稱完成備案,否則可能訪問時無法解析。具體操作,請參見ICP備案全流程

    • 此處如果未配置,那麼該Ingress規則將匹配所有到達Ingress Controller的請求。

    spec.rules.http.paths.path

    轉寄路徑URL。

    spec.rules.http.paths.pathType

    URL匹配規則。詳情可參考基於URL路徑轉寄請求

    spec.rules.http.paths.backend.service.name

    填寫您此前建立的Service名稱。

    spec.rules.http.paths.backend.service.port.number

    填寫您此前建立的Service的服務連接埠號碼。

    這個連接埠號碼的設定非常重要,因為它決定了在路由到後端服務時使用的連接埠。確保連接埠號碼正確設定,以確保請求可以正確路由到後端服務並被處理。

  2. 執行以下命令,配置coffeetea服務對外暴露的網域名稱和path路徑。

    kubectl apply -f cafe-ingress.yaml

    預期輸出:

    ingress.networking.k8s.io/cafe-ingress created
  3. (可選)執行以下命令擷取ALB執行個體DNS地址。

    kubectl get ingress

    預期輸出:

    NAME           CLASS    HOSTS                         ADDRESS                                               PORTS   AGE
    cafe-ingress   alb      demo.domain.ingress.top       alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com   80      50s

(可選)步驟六:佈建網域名解析

如果您在建立Ingress時配置了spec.rules.host欄位為您的自有網域名稱,您需要將您的網域名稱添加CNAME記錄解析到ALB DNS名稱。後續通過你的自有網域名稱訪問服務。

  1. 登入Container ServiceACK控制台

  2. 單擊叢集名稱,進入叢集管理頁面。

  3. 在左側導覽列,選擇網路 > 路由

  4. 在cafe-ingress的端點列,複製其對應的DNS名稱。

  5. 完成以下步驟來添加CNAME解析記錄。

    1. 登入網域名稱解析控制台

    2. 網域名稱解析頁面單擊添加網域名稱

    3. 添加網域名稱對話方塊中輸入您的主機網域名稱,然後單擊確認

      重要

      您的主機網域名稱需已完成TXT記錄驗證。

    4. 在目標網域名稱的操作列單擊解析設定

    5. 解析設定頁面單擊添加記錄

    6. 添加記錄面板配置以下資訊完成CNAME解析配置,然後單擊確認

      配置

      說明

      記錄類型

      在下拉式清單中選擇CNAME

      主機記錄

      您的網域名稱的首碼,例如www

      解析請求來源

      選擇預設。

      記錄值

      輸入欄位名對應的CNAME地址,即您複製的DNS名稱。

      TTL

      全稱Time To Live,表示DNS記錄在DNS伺服器上的緩衝時間,本文使用預設值。

步驟七:測試流量轉寄

在瀏覽器中輸入“測試網域名稱+URL路徑”,測試流量轉寄是否正確。

說明
  • 如果您配置了自有網域名稱,則“測試網域名稱”為您的自有網域名稱。

  • 如果您未配置自有網域名稱,則“測試網域名稱”為cafe-ingress的端點DNS名稱。

測試網域名稱以demo.domain.ingress.top為例:

  1. 在瀏覽器中輸入demo.domain.ingress.top/coffee,將返回coffee-svc對應的後端服務介面。 image

  2. 在瀏覽器中輸入demo.domain.ingress.top/tea,將返回tea-svc對應的後端服務介面。image

相關文檔