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。 |
请求示例
{ "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 }] } } } }