全局 Kubernetes 上游
目录结构
|-- global_k8s_upstreams/
|-- global_k8s_upstreams.yaml
|-- ...
YAML 文件中可以包含一个或多个全局 Kubernetes 上游配置。
配置说明
每个全局 Kubernetes 上游配置都是一个键值对,其中键是上游名称,值是一个包含以下参数的对象:
参数名 | 数据类型 | 是否必选 | 描述 |
---|---|---|---|
ssl | boolean | 否 | 是否启用 SSL 连接,默认为 false |
disable_ssl_verify | boolean | 否 | 是否禁用 SSL 验证,默认为 false |
enable_checker | boolean | 否 | 是否启用健康检查,默认为 false |
k8s_services | array | 是 | Kubernetes 服务列表 |
checker | object | 否 | 健康检查配置,仅在 enable_checker 为 true 时有效 |
k8s_services 配置
参数名 | 数据类型 | 是否必选 | 描述 |
---|---|---|---|
k8s_name | string | 是 | Kubernetes 集群名称 |
k8s_namespace | string | 是 | Kubernetes 命名空间 |
k8s_service | string | 是 | Kubernetes 服务名称 |
k8s_service_port | integer | 是 | Kubernetes 服务端口 |
checker 配置
健康检查配置包含多个参数,用于定义如何进行健康检查。主要参数包括:
参数名 | 数据类型 | 描述 |
---|---|---|
type | string | 健康检查类型,如 “http” |
interval | integer | 检查间隔 |
timeout | integer | 超时时间 |
fall | integer | 连续失败次数阈值 |
rise | integer | 连续成功次数阈值 |
http_req_method | string | HTTP 请求方法 |
http_req_uri | string | HTTP 请求 URI |
valid_statuses | array | 有效的 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 上游相关的配置。
注意事项
全局 Kubernetes 上游是一个全局配置,为了保持与多个本地配置的兼容性,在更新配置时不会执行删除操作。
每个全局 Kubernetes 上游必须有一个唯一的名称。
k8s_name
必须是已经在系统中定义的 Kubernetes 集群名称。k8s_service_port
必须是一个有效的端口号(1-65535)。如果启用了健康检查(
enable_checker: true
),必须提供有效的checker
配置。在更新配置时,工具会比较新旧配置来确定是否需要更新。如果配置有变化,则会执行更新操作。
在导入配置时,工具会先检查配置的有效性,然后再执行添加或更新操作。
在导出配置时,工具会将 Kubernetes 集群 ID 转换为集群名称,以便于配置的可读性和可移植性。