全域性 Kubernetes 上游

目錄結構

|-- global_k8s_upstreams/
  |-- global_k8s_upstreams.yaml
  |-- ...

YAML 檔案中可以包含一個或多個全域性 Kubernetes 上游配置。

配置說明

每個全域性 Kubernetes 上游配置都是一個鍵值對,其中鍵是上游名稱,值是一個包含以下引數的物件:

引數名資料型別是否必選描述
sslboolean是否啟用 SSL 連線,預設為 false
disable_ssl_verifyboolean是否禁用 SSL 驗證,預設為 false
enable_checkerboolean是否啟用健康檢查,預設為 false
k8s_servicesarrayKubernetes 服務列表
checkerobject健康檢查配置,僅在 enable_checker 為 true 時有效

k8s_services 配置

引數名資料型別是否必選描述
k8s_namestringKubernetes 叢集名稱
k8s_namespacestringKubernetes 名稱空間
k8s_servicestringKubernetes 服務名稱
k8s_service_portintegerKubernetes 服務埠

checker 配置

健康檢查配置包含多個引數,用於定義如何進行健康檢查。主要引數包括:

引數名資料型別描述
typestring健康檢查型別,如 “http”
intervalinteger檢查間隔
timeoutinteger超時時間
fallinteger連續失敗次數閾值
riseinteger連續成功次數閾值
http_req_methodstringHTTP 請求方法
http_req_uristringHTTP 請求 URI
valid_statusesarray有效的 HTTP 狀態碼列表

配置示例

global_k8s_upstream_name1:
  ssl: false
  disable_ssl_verify: false
  enable_checker: true
  k8s_services:
  - k8s_name: k8s_cluster_name1
    k8s_namespace: default
    k8s_service: test-hello
    k8s_service_port: 80
  - k8s_name: k8s_cluster_name1
    k8s_namespace: default
    k8s_service: test-hello-2
    k8s_service_port: 82
  checker:
    user_agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
    valid_statuses:
    - 200
    - 302
    rise: 2
    type: http
    fall: 3
    interval: 3
    timeout: 1
    http_req_method: GET
    http_req_host: test.com
    http_req_uri: /status
global_k8s_upstream_name2:
  ssl: true
  disable_ssl_verify: true
  enable_checker: false
  k8s_services:
  - k8s_name: k8s_cluster_name1
    k8s_namespace: default
    k8s_service: test-hello-2
    k8s_service_port: 82

此配置定義了兩個全域性 Kubernetes 上游,一個啟用了健康檢查,另一個啟用了 SSL 但禁用了健康檢查。

使用示例

更新配置到 OpenResty Edge 中:

edge-config https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -l global_k8s_upstreams -i /root/oredge-configs

從 OpenResty Edge 中匯出配置:

edge-config -u https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -E -l global_k8s_upstreams

示例中均使用 -l global_k8s_upstreams 來指定只匯入/匯出全域性 Kubernetes 上游相關的配置。

注意事項

  1. 全域性 Kubernetes 上游是一個全域性配置,為了保持與多個本地配置的相容性,在更新配置時不會執行刪除操作。

  2. 每個全域性 Kubernetes 上游必須有一個唯一的名稱。

  3. k8s_name 必須是已經在系統中定義的 Kubernetes 叢集名稱。

  4. k8s_service_port 必須是一個有效的埠號(1-65535)。

  5. 如果啟用了健康檢查(enable_checker: true),必須提供有效的 checker 配置。

  6. 在更新配置時,工具會比較新舊配置來確定是否需要更新。如果配置有變化,則會執行更新操作。

  7. 在匯入配置時,工具會先檢查配置的有效性,然後再執行新增或更新操作。

  8. 在匯出配置時,工具會將 Kubernetes 叢集 ID 轉換為叢集名稱,以便於配置的可讀性和可移植性。

相關文件