我们的 NGINX 派生

我们的 NGINX chart 派生GitHub

对 NGINX 派生的调整

对 NGINX 派生进行了以下调整:

  • tcp-configmap.yaml:可选的,取决于新的 tcpExternalConfig 设置。
  • 能够使用来自另一个 chart 的模板化 TCP ConfigMap 名称。
    • controller-configmap-tcp.yaml.metadata.name 是一个模板 ingress-nginx.tcp-configmap
    • controller-deployment.yaml.spec.template.spec.containers[0].args 使用 ingress-nginx.tcp-configmap 模板作为 ConfigMap 名称。
    • 极狐GitLab chart 覆盖 ingress-nginx.tcp-configmap
  • 能够根据发布名称使用模板化的 Ingress 名称。
  • controller.service.loadBalancerIP 替换为 global.hosts.externalIP
  • 添加了通过 common.labels 配置选项添加常用标签的支持。
  • controller-deployment.yaml
    • podlabelsglobal.pod.labels 添加到 .spec.template.metadata.labels
  • default-backend-deployment.yaml
    • podlabelsglobal.pod.labels 添加到 .spec.template.metadata.labels
  • 禁用 NGINX 的默认 nodeSelectors。
  • 添加了对 PDB maxUnavailable 的支持。
  • charts/nginx-ingress/templates/_helpers.tpl 中删除 NGINX 的 isControllerTagValid helper:
    • 该检查自 2020 年实施以来一直没有更新。
    • 我们需要引用一个包含 ubi 的标签,这意味着 semverCompare 无论如何都不会按预期工作。
  • 在 HPA 中添加了对 autoscaling/v2beta2 和 autoscaling/v2 API 的支持,并扩展了 HPA 设置,支持内存和自定义指标以及行为配置。
  • 添加了对 API 版本的 PodDisruptionBudget 的条件支持。
  • 添加以下布尔值,独立启用/禁用外部和内部(如果使用 controller.service.internal.enabled 启用)服务的极狐GitLab Shell(SSH 访问):
    • controller.service.enableShell
    • controller.service.internal.enableShell。(遵循 controller.service.enableHttp(s) 的现有 chart 样式)
  • controller-serviceaccount.yaml 中增加模板调用 {{ include "ingress-nginx.controller.automountServiceAccountToken" . }}
  • 添加模板到 _helpers.tpl:

    {{/*
    Set if the default ServiceAccount token should be mounted by Kubernetes or not.
    
    Default is 'true'
    */}}
    {{- define "ingress-nginx.defaultBackend.automountServiceAccountToken" -}}
    automountServiceAccountToken: {{ pluck "automountServiceAccountToken" .Values.defaultBackend.serviceAccount .Values.global.serviceAccount | first }}
    {{- end -}}
    
  • 添加以下属性以和 Pod Security Standards Profile Restricted 保持一致:
    • controller-deployment.yaml
      • spec.template.spec.containers[0].securityContext.runAsNonRoot
      • spec.template.spec.containers[0].securityContext.seccompProfile
  • 添加下面新的 RBAC 规则。当我们的 chart 是 4.0.6 时,这将非常有必要,但是我们已经将控制器镜像更新到 1.11.2。一旦我们将 chart 更新到 4.11.2,我们就可以删除这个补丁。这是因为控制器现在使用 endpointslices 来跟踪端点。这需要同时添加到 charts/nginx-ingress/templates/clusterrole.yamlcharts/nginx-ingress/templates/controller-role.yaml 文件中:

    - apiGroups:
        - discovery.k8s.io
      resources:
        - endpointslices
      verbs:
        - list
        - watch
        - get
    

此外,为了支持从 v1.3.1 迁移到 v1.11.2,对于那些设置了他们自己的 RBAC 规则的用户,我们还添加了这些值,一旦我们删除 v1.3.1 回退,这些值将被删除,这将在 8.8 版本中进行。

  controller:
    image:
      fallbackTag: "v1.3.1"
      fallbackDigest: "sha256:54f7fe2c6c5a9db9a0ebf1131797109bb7a4d91f56b9b362bde2abd237dd1974"
      disableFallback: false