우리의 NGINX 포크

Tier: Free, Premium, Ultimate Offering: Self-managed

우리의 포크GitHub에서 가져온 NGINX 차트입니다.

NGINX 포크에 대한 조정 사항

NGINX 포크에 다음과 같은 조정이 이루어졌습니다:

  • tcp-configmap.yaml: 새로운 tcpExternalConfig 설정에 따라 선택적입니다.
  • 다른 차트에서 템플릿화된 TCP ConfigMap 이름을 사용할 수 있는 기능
    • controller-configmap-tcp.yaml: .metadata.name은 템플릿 ingress-nginx.tcp-configmap입니다.
    • controller-deployment.yaml: .spec.template.spec.containers[0].args는 ConfigMap 이름에 대해 ingress-nginx.tcp-configmap 템플릿을 사용합니다.
    • GitLab 차트는 ingress-nginx.tcp-configmap을 오버라이드하여 gitlab/gitlab-org/charts/gitlab-shell이 TCP 서비스를 구성할 수 있도록 합니다.
  • 릴리스 이름에 따라 템플릿화된 Ingress 이름을 사용할 수 있는 기능
  • controller.service.loadBalancerIPexternalIpTpl로 교체 (기본값은 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 헬퍼를 제거했습니다.
    • 이 검사는 2020년에 구현된 이후 업데이트되지 않았습니다.
    • #3383의 일환으로 ubi를 포함하는 태그를 참조해야 하므로, semverCompare는 기대대로 작동하지 않습니다.
  • HPAs에서 autoscaling/v2beta2 및 autoscaling/v2 API에 대한 지원이 추가되었고, 메모리 및 사용자 정의 메트릭을 지원하며, 동작 구성을 지원하도록 HPA 설정이 확장되었습니다.
  • PodDisruptionBudget의 API 버전에 대한 조건부 지원이 추가되었습니다.
  • 외부 및 내부(controller.service.internal.enabled로 활성화된 경우) 서비스에 대해 GitLab Shell(SSH 액세스)을 독립적으로 활성화/비활성화하는 다음 부울 값을 추가했습니다:
    • controller.service.enableShell.
    • controller.service.internal.enableShell.
      (기존 차트 패턴 controller.service.enableHttp(s)를 따릅니다.)
  • controller-serviceaccount.yaml에 템플릿 호출 {{ include "ingress-nginx.automountServiceAccountToken" . }}를 추가했습니다.
  • _helpers.tpl에 템플릿을 추가했습니다:

    {{/*  
    기본 ServiceAccount 토큰이 Kubernetes에 의해 마운트되어야 하는지 여부를 설정합니다.  
    
    기본값은 'true'입니다.  
    */}}  
    {{- define "ingress-nginx.automountServiceAccountToken" -}}  
    automountServiceAccountToken: {{ pluck "automountServiceAccountToken" .Values.serviceAccount .Values.global.serviceAccount | first }}  
    {{- end -}}  
    
  • default-backend-serviceaccount.yaml에 템플릿 호출 {{ include "ingress-nginx.defaultBackend.automountServiceAccountToken" . }}를 추가했습니다.
  • _helpers.tpl에 템플릿을 추가했습니다:

    {{/*  
    기본 ServiceAccount 토큰이 Kubernetes에 의해 마운트되어야 하는지 여부를 설정합니다.  
    
    기본값은 '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 규칙을 추가했습니다. 우리의 차트가 4.0.6에 있을 때 필요한데, 컨트롤러 이미지를 1.11.2로 업데이트했습니다. 차트를 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