全部產品
Search
文件中心

Server Load Balancer:Container ServiceACK使用ALB Ingress最佳實務

更新時間:Jul 26, 2024

ALB Ingress基於阿里雲應用型負載平衡ALB(Application Load Balancer)之上提供更為強大的Ingress流量管理方式,相容Nginx Ingress,具備處理複雜業務路由和認證自動探索的能力,支援HTTP、HTTPS和QUIC協議,滿足在雲原生應用情境下對超強彈性和大規模七層流量處理能力的需求。當您希望在ACK叢集中配置ALB Ingress實現Ingress流量管理,您可以參考本文部署服務並通過ALB Ingress訪問服務。

背景資訊

ALB Ingress涉及到的概念介紹如下:

  • ALB Ingress Controller:Ingress Controller是Kubernetes中負責管理Ingress資源的組件。它充當叢集內的進入點,將外部流量路由到適當的服務。ALB Ingress Controller通過API Server擷取Ingress資源的變化,動態地產生AlbConfig,然後依次建立ALB執行個體、監聽、路由轉寄規則以及後端伺服器組。

  • AlbConfig CRD:CRD (Custom Resource Definition) 是 Kubernetes 中的一種機制,用於擴充 Kubernetes API,並允許使用者自訂資源類型。一個AlbConfig對應一個ALB執行個體。

  • Ingress Class:Ingress Class是Kubernetes Ingress資源的一個屬性,用於定義Ingress Controller的類別或標識。它允許在叢集中同時使用多個Ingress Controller,並為每個Ingress資源指定使用的特定Controller。

  • Ingress:Ingress是Kubernetes中用於定義外部流量路由規則和訪問規則的資來源物件,通過Ingress Controller來實現流量轉寄功能。ALB Ingress可以通過註解項配置轉寄規則,配置完成後,HTTP/HTTPS請求可以通過註解項配置的轉寄規則轉寄到對應的Service上。

  • Service:在Kubernetes中,Service是一種抽象的資來源物件,用於定義一組具有相同邏輯功能的Pod執行個體,並為它們提供穩定的虛擬IP地址和連接埠。

    Service為應用程式提供了一個穩定的入口,允許其他應用程式或服務通過訪問Service的虛擬IP和連接埠來與後端Pod進行通訊,而無需瞭解具體的Pod IP地址和連接埠。Service是後端真實服務的抽象,一個Service可以代表多個相同的後端服務。

您可參照下圖,理解ALB網路執行個體與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,會存在ALB 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. 單擊右上方使用YAML建立資源

    1. 樣本模板:選擇自訂

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

      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的服務連接埠號碼。

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

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

  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

相關文檔