更新时间:2024-10-31 GMT+08:00
分享

NGINX Ingress控制器

插件介绍

NGINX Ingress控制器能根据Service中Pod的变化动态地调整配置,结合Nginx的高稳定性、高性能、高并发处理能力等特点,对容器化应用具有灵活的应用层管理能力。

字段说明

表1 参数描述

参数

是否必选

参数类型

描述

basic

object

插件基础配置参数,无需指定。

flavor

表2 object

插件规格参数

custom

表3 object

插件自定义参数

表2 flavor

参数

是否必选

参数类型

描述

replicas

String

实例数,默认为:1

resources

resources object

容器资源(CPU、内存)配额。

表3 custom

参数

是否必选

参数类型

描述

ingressClass

String

控制器名称,默认nginx。

namespace

String

插件部署的命名空间,默认kube-system。

service

表8

对外访问service配置

config

Map<String>String

nginx配置参数,参考社区说明https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/

admissionWebhooks

表7

Ingress资源准入校验配置。

metrics

表9

监控指标配置。

defaultBackendService

String

默认404服务,按 <namespace>/<service_name> 格式。

extraArgs

表10

拓展参数配置

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

插件实例亲和性配置

表4 resources字段数据结构说明

参数

是否必选

参数类型

描述

limitsCpu

String

CPU大小限制,单位:m

limitsMem

String

内存大小限制,单位:Mi

name

String

插件名称,固定为:nginx-ingress

requestsCpu

String

申请的CPU大小,单位:m

requestsMem

String

申请的内存大小,单位:Mi

表5 tolerations污点

参数

是否必选

参数类型

描述

key

String

污点键

effect

String

污点策略

operator

String

操作符

tolerationSeconds

Int

容忍时间窗

表6 nodeMatchExpresssion节点亲和配置

参数

是否必选

参数类型

描述

key

String

污点键

values

List<String>

节点亲和的名称

operator

String

操作符

表7 admissionWebhook配置

参数

是否必选

参数类型

描述

enable

bool

是否开启Ingress资源准入校验,默认true。

表8 service配置

参数

是否必选

参数类型

描述

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。

表9 metrics配置

参数

是否必选

参数类型

描述

enable

bool

是否指标监控,默认true。

excludeSocketMetrics

String

屏蔽的监控指标,默认值为"nginx_ingress_controller_success,nginx_ingress_controller_header_duration_seconds,nginx_ingress_controller_ingress_upstream_latency_seconds"

表10 extraArg扩展参数配置

参数

是否必选

参数类型

描述

default-ssl-certificat

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
				}]
			}
		}
	}
}

相关文档