NGINX Ingress控制器
插件介绍
NGINX Ingress控制器能根据Service中Pod的变化动态地调整配置,结合Nginx的高稳定性、高性能、高并发处理能力等特点,对容器化应用具有灵活的应用层管理能力。
字段说明
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| basic | 否 | object | 插件基础配置参数,无需指定。 |
| flavor | 是 | 表2 object | 插件规格参数 |
| custom | 是 | 表3 object | 插件自定义参数 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| ingressClass | 是 | String | 控制器名称,默认nginx。 |
| namespace | 是 | String | 插件部署的命名空间,默认kube-system。 |
| service | 是 | 对外访问service配置 | |
| config | 否 | Map<String>String | nginx配置参数,参考社区说明https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/ |
| admissionWebhooks | 否 | Ingress资源准入校验配置。 | |
| metrics | 否 | 监控指标配置。 | |
| defaultBackendService | 否 | String | 默认404服务,按 <namespace>/<service_name> 格式。 |
| extraArgs | 否 | 拓展参数配置 | |
| multiAZEnable | 否 | bool | 插件中deployment组件多可用部署是否采用强制模式,默认:false。强制模式下插件Deployment实例强制调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将无法全部运行。若multiAZEnable与multiAZBalance配置也同时为true,则以multiAZBalance为准使用多可用部署均分模式。 |
| multiAZBalance | 否 | bool | 插件中deployment组件多可用部署是否采用均分模式,默认:false。插件Deployment实例均匀调度到当前集群下各可用区,增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署;均分模式限制不同可用区间插件实例数相差不超过1,单个可用区资源不足会导致后续其他实例无法调度。 |
| tolerations | 否 | Array of 表5 | 污点容忍配置 |
| node_match_expressions | 否 | Array of 表6 | 插件实例亲和性配置 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| limitsCpu | 是 | String | CPU大小限制,单位:m |
| limitsMem | 是 | String | 内存大小限制,单位:Mi |
| name | 是 | String | 插件名称,固定为:nginx-ingress |
| requestsCpu | 是 | String | 申请的CPU大小,单位:m |
| requestsMem | 是 | String | 申请的内存大小,单位:Mi |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key | 否 | String | 污点键 |
| effect | 否 | String | 污点策略 |
| operator | 否 | String | 操作符 |
| tolerationSeconds | 否 | Int | 容忍时间窗 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| key | 否 | String | 污点键 |
| values | 否 | List<String> | 节点亲和的名称 |
| operator | 否 | String | 操作符 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| annotations | 否 | Map<String>String | 对外service的Annotations配置。主要配置ELB相关选项,如"kubernetes.io/elb.class","kubernetes.io/elb.id","kubernetes.io/elb.pass-through" |
| loadBalancerIP | 否 | String | service对接ELB时的ELB IP。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| enable | 否 | bool | 是否指标监控,默认true。 |
| excludeSocketMetrics | 否 | String | 屏蔽的监控指标,默认值为"nginx_ingress_controller_success,nginx_ingress_controller_header_duration_seconds,nginx_ingress_controller_ingress_upstream_latency_seconds" |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| default-ssl-certificate | 否 | String | 默认证书配置,见Default SSL Certificate。 |
请求示例
{
"kind": "Addon",
"apiVersion": "v3",
"metadata": {
"annotations": {
"addon.install/type": "install"
}
},
"spec": {
"clusterID": "2292498e-**************ac1001ba",
"version": "2.2.52",
"addonTemplateName": "nginx-ingress",
"values": {
"basic": {
"basickey":"val"
},
"flavor": {
"replicas": 2,
"resources": [{
"limitsCpu": "8000m",
"limitsMem": "4000Mi",
"name": "nginx-ingress",
"requestsCpu": "8000m",
"requestsMem": "4000Mi"
}]
},
"custom": {
"config": {
"keep-alive-requests": "100"
},
"defaultBackend": {
"enabled": true
},
"defaultBackendService": "",
"extraArgs": {
"default-ssl-certificate": ""
},
"ingressClass": "nginx",
"multiAZBalance": false,
"multiAZEnabled": false,
"namespace": "kube-system",
"node_match_expressions": [],
"service": {
"annotations": {
"kubernetes.io/elb.class": "performance",
"kubernetes.io/elb.id": "8d6bd485-d8ac-4693-815d-9d54d79b0666"
},
"loadBalancerIP": ""
},
"tolerations": [{
"key": "node.kubernetes.io/not-ready",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 60
},
{
"key": "node.kubernetes.io/unreachable",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 60
}]
}
}
}
}