우리의 NGINX 포크

자세히: Tier: Free, Premium, Ultimate Offering: Self-Managed

우리의 NGINX 차트 forkGitHub에서 가져왔습니다.

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:
    • .spec.template.metadata.labelspodlabelsglobal.pod.labels 추가
  • default-backend-deployment.yaml:
    • .spec.template.metadata.labelspodlabelsglobal.pod.labels 추가
  • NGINX의 기본 노드 선택기 비활성화.
  • PDB maxUnavailable 지원 추가.
  • charts/nginx-ingress/templates/_helpers.tpl의 NGINX의 isControllerTagValid 도우미 제거
    • 이 확인은 2020년에 구현된 이후로 업데이트되지 않았습니다.
    • #3383의 일환으로, 예상대로 semverCompare가 작동하지 않으므로 ubi를 포함한 태그를 참조해야 합니다.
  • autoscaling/v2beta2 및 autoscaling/v2 API 지원 추가 및 메모리 및 사용자 지정 지표 및 동작 구성을 지원하기 위해 HPA 설정 확장
  • PodDisruptionBudget의 API 버전에 조건부 지원 추가
  • 외부 및 내부( controller.service.internal.enabled로 활성화된 경우) 서비스에 대해 독립적으로 GitLab Shell (SSH 액세스) 활성화/비활성화하기 위해 다음 boolean 추가:
    • controller.service.enableShell.
    • controller.service.internal.enableShell. (기존 차트 패턴 controller.service.enableHttp(s) 따름)
  • controller-serviceaccount.yaml에 템플릿 호출 {{ include "ingress-nginx.automountServiceAccountToken" . }} 추가
  • _helpers.tpl에 템플릿 추가:

    {{/*
    쿠버네티스에 의해 기본 ServiceAccount 토큰을 마운트해야 하는지 여부 설정
    
    기본값은 '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 토큰을 마운트해야 하는지 여부 설정
    
    기본값은 'true'
    */}}
    {{- define "ingress-nginx.defaultBackend.automountServiceAccountToken" -}}
    automountServiceAccountToken: {{ pluck "automountServiceAccountToken" .Values.defaultBackend.serviceAccount .Values.global.serviceAccount | first }}
    {{- end -}}
    
  • Pod 보안 표준 프로필 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.yaml and charts/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.1fallback을 삭제한 후에 제거될 것이며, 이는 8.8 릴리즈에 예정되어 있습니다.

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