全局 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 转换为集群名称,以便于配置的可读性和可移植性。

相关文档