EDAS支持ALB Ingress應用路由。ALB Ingress基于阿里云應用型負載均衡ALB(Application Load Balancer)提供更有效的Ingress流量管理方式,同時兼容Nginx Ingress,具備處理復雜業務路由和證書自動發現的能力。本文介紹在EDAS控制臺如何配置應用路由和轉發規則。

前提條件

  • 添加服務Service
  • 已安裝ALB Ingress Controller組件。
    • 若需要創建集群,請在組件配置配置向導頁面,在Ingress字段右側選擇ALB Ingress
    • 若已創建集群,且未安裝ALB Ingress Controller組件。關于如何安裝ALB Ingress Controller組件,請參見管理組件

約束限制

  • 為Ingress服務創建的ALB由EDAS完全托管,無法在ALB控制臺配置,否則可能造成Ingress服務的異常。
  • 不能修改EDAS創建的Ingress資源(含有以下標簽:edas-domain: edas-adminedas-domain),不能變更或刪除Ingress關聯的IngressClass、AlbConfig資源(以edas-{alb_id}格式命名的資源)。
  • 若集群的網絡插件類型為Flannel,則僅支持后端Service的類型為NodePort或LoadBalancer。
  • 如果需要配置HTTPS類型轉發,則需要改Ingress實例的所有規則都開啟TLS。
  • ALB Ingress支持證書自動發現,路由規則開啟TLS后無需進行Secret資源配置,但需要在SSL證書服務中購買對應域名的證書,且需要域名匹配的證書唯一。證書支持泛域名證書和單域名證書。
  • 使用應用路由需要依賴已有標準版ALB實例,配置應用路由ALB Ingress后,綁定的ALB實例無法再被其他集群復用。

背景信息

ALB Ingress Controller通過API Server獲取Ingress資源的變化,動態地生成AlbConfig,然后依次創建ALB實例、監聽、路由轉發規則以及后端服務器組。Kubernetes中Service、Ingress與AlbConfig有著以下關系:
  • Service是后端真實服務的抽象,一個Service可以代表多個相同的后端服務。
  • Ingress是反向代理規則,用來規定HTTP或HTTPS請求應該被轉發到哪個Service上。例如,根據請求中不同的Host和URL路徑,讓請求轉發到不同的Service上。
  • AlbConfig是在ALB Ingress Controller提供的CRD資源,使用AlbConfig CRD來配置ALB實例和監聽。一個AlbConfig對應一個ALB實例。
ae

操作步驟

  1. 登錄EDAS控制臺,在左側導航欄,單擊流量管理 > 應用路由
  2. 應用路由(K8s Ingress)頁面頂部菜單欄選擇地域,在頁面中選擇目標微服務空間
  3. 應用路由(K8s Ingress)頁面,單擊創建Ingress
  4. 創建Nginx Ingress面板中,設置相關參數,然后單擊確定
    配置項 描述
    類型 選擇ALB Ingress
    K8s集群 從下拉列表中選擇目標K8s集群。
    K8s命名空間 K8s命名空間通過將系統內部的對象分配到不同的命名空間中,形成邏輯上分組的不同項目、小組或用戶組,便于不同的分組在共享使用整個集群的資源的同時還能被分別管理。
    • default:沒有其他命名空間的對象的默認命名空間。
    • kube-system:系統創建的對象的命名空間。
    • kube-public:此命名空間是自動創建的,并且可供所有用戶(包括未經過身份驗證的用戶)讀取。

    此處以選擇default為例。

    應用路由名稱 自定義設置路由名稱,在同一個命名空間下應用路由名稱必須唯一。

    支持小寫字母、數字和短劃線(-),且必須以字母開頭,以字母或數字結尾。

    重定向至HTTPS 打開重定向至HTTPS開關,表示用HTTP協議訪問時會重定向到HTTPS協議。
    ALB實例

    選擇路由綁定的ALB實例,列表中僅返回與選擇的K8s集群在同一專有網絡下的ALB實例。

    若您還沒有ALB實例,請參見創建應用型負載均衡

    說明
    • 僅支持標準版ALB實例。
    • 若選擇ALB實例綁定到該K8s集群后,無法再被其他集群使用。
    • 可以使用一個ALB實例綁定一個集群中的多個應用路由。
    轉發規則
    說明 在添加應用路由時,需注意:
    • 在同一個應用路由下,可以創建多個路由規則:
      • 相同域名和路徑的組合,只能對應一個Service。
      • 同一個Service,可以對應多個域名和路徑組合。
    • 在不同應用路由下,可以創建完全相同的路由規則。
    域名 指定訪問域名。
    路徑 指定訪問路徑,必須以正斜線(/)開頭。
    應用 從下拉列表中選擇當前K8s集群中的目標應用。
    服務名稱 從下拉列表中選擇當前應用的目標服務Service。
    服務端口 服務Service的服務端口。
    開啟TLS 選中開啟TLS,即代表允許外部HTTPS請求路由到內部Service的路由規則集合。

    如果允許外部HTTPS請求,還需要設置TLS證書。在EDAS控制臺左側導航欄應用管理 > Kubernetes配置 > 保密字典列表中選擇TLS證書類型的保密字典。如果您還沒有將HTTPS證書保存到保密字典,請單擊創建保密字典。創建保密字典的具體操作,請參見創建保密字典

    注解 為Ingress添加注解鍵值對。添加特定的注解能夠實現ALB Ingress的高級能力,詳情請參見ALB Ingress服務高級用法
    標簽 為Ingress添加標簽鍵值對。使用標簽能夠便于對已配置特定標簽的Ingress進行分組管理。
    創建完成后,新建的應用路由出現在應用路由列表。您可以對其進行查看詳情、變更路由規則信息和刪除應用路由等操作。