本指南将详细介绍如何在腾讯云容器服务 TKE 控制台的应用市场中部署社区版 ingress-nginx,并提供其关键参数的配置方法。
注意:
ingress-nginx 应用基于开源的 ingress-nginx 构建,腾讯云容器服务不提供 SLA 保障。
通过控制台创建应用
1. 登录 容器服务控制台,选择左侧导航栏中的 运维中心 > 应用市场。
2. 在应用管理页面上方,选择需创建应用的集群及地域,并单击新建。
3. 在新建应用页面,选择 nginx-ingress 应用。如下图所示:

4. 选择 Chart 版本,推荐版本如下:
Chart 版本 | ingress-nginx 应用版本 | 推荐的 TKE 版本 |
4.2.5 | v1.3.1 | 1.20,1.22,1.24 |
4.9.0 | v1.9.5 | 1.26,1.28,1.30 |
5. 单击参数 Values.yaml 
,进入参数配置界面,按需调整相关参数。

参数配置说明
工作负载类型
支持以下两种工作负载类型:
Deployment(默认)
Daemonset
controller:# -- Use a `DaemonSet` or `Deployment`kind: Deployment
资源设置
通过设置 requests 和 limits 为 ingress-nginx 分配资源。
controller:resources:## limits:## cpu: 100m## memory: 90Mirequests:cpu: 100mmemory: 90Mi
ingressClass 设置
默认的 ingressClass 为 nginx,可以通过设置不同值实现多个 ingress-nginx 应用的部署。
controller:...ingressClass: prodingressClassResource:name: prodcontrollerValue: k8s.io/ingress-prod
在创建 Ingress 资源时,需要显式指定对应的 ingressClassName。
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: nginxspec:ingressClassName: prodrules:- http:paths:- path: /pathType: Prefixbackend:service:name: exampleport:number: 80
调度设置
支持以下调度方式:
nodeSelector
tolerations(容忍)
affinity(亲和性)
示例配置如下:
controller:# nodeSelectornodeSelector:kubernetes.io/os: linuxtolerations: []# - key: "key"# operator: "Equal|Exists"# value: "value"# effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"affinity: {}# # An example of preferred pod anti-affinity, weight is in the range 1-100# podAntiAffinity:# preferredDuringSchedulingIgnoredDuringExecution:# - weight: 100# podAffinityTerm:# labelSelector:# matchExpressions:# - key: app.kubernetes.io/name# operator: In# values:# - '{{ include "ingress-nginx.name" . }}'# - key: app.kubernetes.io/instance# operator: In# values:# - '{{ .Release.Name }}'# - key: app.kubernetes.io/component# operator: In# values:# - controller# topologyKey: kubernetes.io/hostname# # An example of required pod anti-affinity# podAntiAffinity:# requiredDuringSchedulingIgnoredDuringExecution:# - labelSelector:# matchExpressions:# - key: app.kubernetes.io/name# operator: In# values:# - '{{ include "ingress-nginx.name" . }}'# - key: app.kubernetes.io/instance# operator: In# values:# - '{{ .Release.Name }}'# - key: app.kubernetes.io/component# operator: In# values:# - controller# topologyKey: kubernetes.io/hostname
请求入口配置
公网入口
请注意,启用公网入口会创建公网 CLB 资源。
controller:...service:enabled: trueexternal:enabled: trueannotations:service.cloud.tencent.com/direct-access: "true" # 开启直连 Pod 模式service.cloud.tencent.com/enable-grace-shutdown: "true" # 表示使用优雅停机service.cloud.tencent.com/enable-grace-shutdown-tkex: "true"type: LoadBalancer
内网入口
请注意,启用内网入口会创建内网 CLB 资源。
controller:...service:...internal:enabled: trueannotations:service.cloud.tencent.com/direct-access: "true" # 开启直连 Pod 模式service.cloud.tencent.com/enable-grace-shutdown: "true" # 表示使用优雅停机service.cloud.tencent.com/prevent-loopback: "true" # 规避回环service.cloud.tencent.com/enable-grace-shutdown-tkex: "true"service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: "subnet-xxx" # VPC 子网 IDtype: "LoadBalancer"
说明:
如果希望使用已有的 CLB,可以通过如下注解实现:
service.kubernetes.io/tke-existed-lbid: <LoadBalanceId>
。更多关于 Service 的配置信息,请参见 Service 使用已有 CLB。弹性伸缩 HPA
通过 Deployment 工作负载类型部署时,可以配置以下弹性伸缩策略。
controller:...autoscaling:enabled: trueannotations: {}minReplicas: 1maxReplicas: 11targetCPUUtilizationPercentage: 50targetMemoryUtilizationPercentage: 50behavior: {}# scaleDown:# stabilizationWindowSeconds: 300# policies:# - type: Pods# value: 1# periodSeconds: 180# scaleUp:# stabilizationWindowSeconds: 300# policies:# - type: Pods# value: 2# periodSeconds: 60
controller:...autoscalingTemplate:- pods:metric:name: k8s_pod_rate_cpu_core_used_limittarget:averageValue: "80"type: AverageValuetype: Pods