Helm으로 설치
이 문서에서는 Helm 을 사용하여 Kubernetes 클러스터에 NGINX Ingress Controller를 설치하는 방법을 설명합니다.
목차
1. 시작하기 전에
2. Helm 설치 커스텀 리소스 정의
2-1. CRD 업그레이드
2-2. CRD 제거
3. OCI 레지스트리로 Helm 차트 관리
3-1. 차트 설치
3-2. 차트 업그레이드
3-3. 차트 제거
3-4. 엣지 버전
4. Helm Source로 차트 관리
4-1. Helm 차트 가져오기
4-2. Helm 차트 설치
4-3. Helm 차트 업그레이드
4-4. Helm 차트 제거
5. 다운타임 없이 업그레이드
5-1. Background
5-2. 업그레이드 단계
6. Multiple NGINX Ingress Controller 실행
7. 구성
1. 시작하기 전에
주의:
모든 문서는 GitHub 저장소의 릴리스 페이지에 표시된 최신 안정화 버전에서만 사용해야 합니다.
- NGINX Ingress Controller가 지원하는 Kubernetes 버전
- Helm 3.0 이상.
- NGINX Plus를 사용하려면:
- NGINX Ingress Controller JWT를 가져와 라이선스 시크릿을 생성합니다.
- NGINX Ingress Controller 구독 인증서와 키를 사용하여 이미지를 다운로드합니다. ‘F5 레지스트리에서 NGINX Ingress Controller 가져오기’ 항목을 참조하세요.
- ‘JWT로 NGINX Ingress Controller 이미지 가져오기’ 항목에서는 구독 JWT 토큰을 사용해 이미지를 가져오는 방법을 설명합니다.
- ‘NGINX Ingress Controller 빌드’ 항목에서는 이미지를 Private Docker 레지스트리에 푸시하는 방법을 설명합니다.
values-plus.yaml의controller.image.repository필드를 해당 내용에 맞게 업데이트합니다.
2. Helm 설치 커스텀 리소스 정의
NGINX Ingress Controller는 Helm이 설치할 클러스터 내 커스텀 리소스 정의(CRD)가 필요합니다. CRD가 설치되지 않으면 NGINX Ingress Controller 파드가 Ready 상태가 되지 않습니다.
해당 CRD를 필요로 하는 커스텀 리소스를 사용하지 않는 경우(controller.enableCustomResources를 false로, controller.appprotect.enable을 false로, controller.appprotectdos.enable을 false로 설정한 경우), helm install 명령에 --skip-crds 옵션을 지정하여 CRD 설치를 건너뛸 수 있습니다.
2-1. CRD 업그레이드
참고:
CRD 업그레이드를 실행하기 전에 ‘V4로 업그레이드’에 설명된 단계를 반드시 읽고, 해당되는 경우 그 단계를 수행하십시오.
CRD를 업그레이드하려면 ‘Helm 차트 가져오기’에 설명된 대로 차트 소스를 가져온 후 다음을 실행하십시오.
kubectl apply -f crds/
또는 차트를 가져오지 않고 다음을 실행하여 CRD를 업그레이드할 수 있습니다.
kubectl apply -f https://raw.githubusercontent.com/nginx/kubernetes-ingress/v5.1.0/deploy/crds.yaml
위 명령에서 v5.1.0은 Helm 차트 버전이 아니라 NGINX Ingress Controller 릴리스 버전을 나타냅니다.
참고:
다음 경고는 예상된 것이므로 무시해도 됩니다:Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply.
새로운 릴리스가 있을 경우 특별 업그레이드 절차가 있는지 릴리스 노트를 확인하십시오.
2-2. CRD 제거
CRD를 제거하려면 ‘Helm 차트 가져오기’에 설명된 대로 차트 소스를 가져온 후 다음을 실행하십시오.
kubectl delete -f crds/
경고: 이 명령은 클러스터의 모든 네임스페이스에서 해당 커스텀 리소스를 모두 삭제합니다. 유지하려는 커스텀 리소스가 없고 클러스터에 다른 NGINX Ingress Controller 인스턴스가 실행 중이지 않은지 확인하십시오.
3. OCI 레지스트리로 Helm 차트 관리
3-1. 차트 설치
다음 명령을 실행하여 my-release라는 릴리스 이름으로 차트를 설치합니다(여기서 my-release는 사용자가 선택한 이름입니다).
- NGINX
helm install my-release oci://ghcr.io/nginx/charts/nginx-ingress --version 2.2.0
- NGINX Plus (사설 레지스트리 myregistry.example.com에 NGINX Ingress Controller 이미지 nginx-plus-ingress를 푸시한 상태임을 가정합니다)
helm install my-release oci://ghcr.io/nginx/charts/nginx-ingress --version 2.2.0 --set controller.image.repository=myregistry.example.com/nginx-plus-ingress --set controller.nginxplus=true
이 명령들은 GitHub Container Registry에서 최신 엣지 버전의 NGINX Ingress Controller를 설치합니다. Docker Hub를 사용하고 싶다면 ghcr.io/nginx/charts/nginx-ingress를 registry-1.docker.io/nginxcharts/nginx-ingress로 바꾸면 됩니다.
3-2. 차트 업그레이드
Helm은 릴리스 업그레이드 동안 CRD를 업그레이드하지 않습니다. 릴리스를 업그레이드하기 전에 ‘CRD 업그레이드’를 참고하세요.
릴리스 my-release 업그레이드
helm upgrade my-release oci://ghcr.io/nginx/charts/nginx-ingress --version 2.2.0
3-3. 차트 제거
릴리스 my-release 삭제/제거
helm uninstall my-release
해당 명령은 릴리스와 연관된 모든 Kubernetes 구성 요소를 제거하고 릴리스를 삭제합니다.
릴리스를 삭제해도 CRD는 제거되지 않습니다. CRD를 제거하려면 ‘CRD 제거’를 참조하십시오.
3-4. 엣지 버전
새 릴리스를 내놓기 전에 NGINX Ingress Controller의 최신 변경 사항을 테스트하려면 엣지 버전을 설치할 수 있습니다. 이 버전은 NGINX Ingress Controller 저장소의 main 브랜치에서 빌드됩니다. --version 플래그에 0.0.0-edge 값을 지정하여 엣지 버전을 설치할 수 있습니다:
helm install my-release oci://ghcr.io/nginx/charts/nginx-ingress --version 0.0.0-edge
경고: 엣지 버전은 프로덕션 환경에서 사용하기 위한 것이 아닙니다. 테스트 및 개발 목적으로만 사용해야 합니다.
4. Helm Source로 차트 관리
4-1. Helm 차트 가져오기
차트를 소스에서 설치하는 경우 이 단계가 필요합니다. 또한 이 단계는 NGINX Ingress Controller가 필요로 하는 커스텀 리소스 정의(CRD)를 관리하며, CRD를 업그레이드하거나 삭제할 때도 사용됩니다.
1. Helm Chart Sources를 가져옵니다.
helm pull oci://ghcr.io/nginx/charts/nginx-ingress --untar --version 2.2.0
2. 작업 디렉토리를 불러온 Source인 nginx-ingress 디렉토리로 변경합니다.
cd nginx-ingress
4-2. Helm 차트 설치
릴리스 이름을 my-release(사용자가 선택한 이름)로 하여 차트를 설치하려면 다음을 참고하세요.
- NGINX
helm install my-release .
- NGINX Plus
helm install my-release -f values-plus.yaml .
이 명령은 기본 설정으로 Kubernetes 클러스터에 Ingress Controller를 배포합니다. 구성 섹션에는 설치 중에 설정할 수 있는 매개변수가 나열되어 있습니다.
4-3. Helm 차트 업그레이드
Helm은 릴리스 업그레이드 중 CRD를 업그레이드하지 않습니다. 릴리스를 업그레이드하기 전에 ‘CRD 업그레이드’를 참조하십시오.
릴리스 my-release를 업그레이드하려면 다음 명령을 사용하세요.
helm upgrade my-release .
4-4. Helm 차트 제거
릴리스 my-release를 삭제/제거하려면 다음 명령을 사용하세요.
helm uninstall my-release
해당 명령은 릴리스와 연관된 모든 Kubernetes 구성 요소를 제거하고 릴리스를 삭제합니다.
릴리스를 제거해도 CRD는 삭제되지 않습니다. CRD를 제거하려면 ‘CRD 제거’를 참조하세요.
5. 다운타임 없이 업그레이드
5-1. Background
NGINX Ingress Controller 버전 3.1.0에서는 Helm 모범 사례에 맞추기 위해 Helm 리소스 이름, 레이블 및 애노테이션이 변경되었습니다. 3.1.0 이전 버전에서 Helm으로 업그레이드하면, 이러한 변경 때문에 Deployment, DaemonSet, Service 같은 일부 리소스가 새로 생성되어 다운타임이 발생합니다.
모든 리소스를 새 네이밍 규칙에 맞게 업데이트하는 것이 권장되지만, 다운타임을 피하려면 아래 단계들을 따르십시오.
5-2. 업그레이드 단계
참고: 다음 단계는 2.x 및 3.0.x 릴리스 모두에 적용됩니다.
1. deployment/daemonset에 대해
kubectl describe명령을 사용하여Selector값을 가져옵니다:
kubectl describe deployments -n <namespace>
Selector 아래의 key=value를 복사합니다.
Selector: app=nginx-ingress-nginx-ingress
2. git checkout v5.1.0을 사용하여 사용 가능한 최신 태그를 체크아웃합니다.
3. /kubernetes-ingress/charts/nginx-ingress로 이동합니다.
4. /kubernetes-ingress/charts/nginx-ingress에 있는 values.yaml 파일의 selectorLabels: {} 필드를 복사한 Selector 값으로 업데이트합니다.
selectorLabels: {app: nginx-ingress-nginx-ingress}
5. 다음 인수를 설정하여 helm upgrade를 실행합니다.
--set serviceNameOverride="nginx-ingress-nginx-ingress"
--set controller.name=""
--set fullnameOverride="nginx-ingress-nginx-ingress"
다음과 같이 보일 수 있습니다.
helm upgrade nginx-ingress oci://ghcr.io/nginx/charts/nginx-ingress --version 0.19.0 --set controller.kind=deployment/daemonset --set controller.nginxplus=false/true --set controller.image.pullPolicy=Always --set serviceNameOverride="nginx-ingress-nginx-ingress" --set controller.name="" --set fullnameOverride="nginx-ingress-nginx-ingress" -f values.yaml
6. 업그레이드 프로세스가 완료되면, kubectl describe 명령을 사용하여 Deployment의 이벤트를 검토하여 변경 사항을 확인하십시오
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 9m11s deployment-controller Scaled up replica set nginx-ingress-nginx-ingress-<old_version> to 1
Normal ScalingReplicaSet 101s deployment-controller Scaled up replica set nginx-ingress-nginx-ingress-<new_version> to 1
Normal ScalingReplicaSet 98s deployment-controller Scaled down replica set nginx-ingress-nginx-ingress-<old_version> to 0 from 1
6. Multiple NGINX Ingress Controller 실행
사용자 정의 리소스가 활성화된 클러스터에서 여러 Ingress Controller Release를 실행하는 경우 Release는 단일 버전의 CRD를 공유합니다. 결과적으로 Ingress Controller 버전이 CRD 버전과 일치하는지 확인하십시오. 또한 Release를 제거할 때 클러스터에서 실행 중인 다른 Ingress Controller release가 없을 때까지 CRD를 제거하지 마십시오.
자세한 내용은 Multiple Ingress Controller 실행을 참조하십시오.
7. 구성
다음 표에는 NGINX Ingress Controller 차트의 구성 가능한 매개변수와 해당 default값이 나열되어 있습니다.
| Parameter | 설명 | 기본값 |
|---|---|---|
controller.name | Ingress Controller, Daemonset 또는 Deployment의 이름 | Autogenerated |
controller.kind | Ingress Controller 설치 종류 – Deployment 또는 Daemonset. | deployment |
controller.nginxplus | NGINX Plus용 Ingress Controller를 배포 | false |
controller.nginxReloadTimeout | 변경 후 또는 초기 시작 시 Ingress Controller가 NGINX Reload를 기다리는 시간(ms)입니다. | 60000 |
controller.appprotect.enable | Ingress Controller에서 App Protect WAF 모듈을 활성화합니다. | false |
controller.appprotectdos.enable | Ingress Controller에서 App Protect DoS 모듈을 활성화합니다. | false |
controller.appprotectdos.debug | App Protect DoS 디버그 Log를 활성화 합니다. | false |
controller.appprotectdos.maxWorkers | 지원할 최대 NGINX 프로세스 수입니다. | 시스템의 CPU 코어 수 |
controller.appprotectdos.maxDaemons | 최대 ADMD 인스턴스 수입니다. | 1 |
controller.appprotectdos.memory | 사용할 RAM 메모리 크기(MB)입니다. | 컨테이너에 사용 가능한 RAM의 크기 50% 또는 80MB |
controller.hostNetwork | Ingress Controller Pod이 호스트의 Network Namespace를 사용할 수 있도록 합니다. | false |
controller.nginxDebug | NGINX에 대한 디버깅을 활성화합니다. nginx-debug Binary를 사용합니다. controller.config.entries를 통해 ConfigMap에서 error-log-level: debug가 필요합니다. | false |
controller.logLevel | Ingress Controller의 Log Level입니다. | 1 |
controller.image.repository | Ingress Controller의 이미지 Repository입니다. | nginx/nginx-ingress |
controller.image.digest | Ingress Controller 이미지 Digest입니다. Digest가 태그보다 우선합니다. | None |
controller.image.tag | Ingress Controller 이미지의 태그 입니다. | 2.4.1 |
controller.image.pullPolicy | Ingress Controller 이미지에 대한 Pull 정책 입니다. | IfNotPresent |
controller.lifecycle | Ingress Controller Pod의 Lifecycle입니다. | {} |
controller.customConfigMap | Ingress Controller에서 사용하는 사용자 정의 ConfigMap의 이름입니다. 설정하는 경우 기본 구성은 무시됩니다. | “” |
controller.config.name | Ingress Controller에서 사용하는 ConfigMap의 이름입니다. | Autogenerated |
controller.config.entries | NGINX 구성을 사용자 정의하기 위한 ConfigMap의 항목입니다. 지원되는 ConfigMap Key 목록은 ConfigMap 리소스 문서를 참조하세요. | {} |
controller.customPorts | NGINX ingress controller pod에 Expose할 사용자 정의 포트 목록입니다. 컨테이너 Pod에 대한 기존 Kubernetes Yaml 구문을 따릅니다. | [] |
controller.defaultTLS.cert | 기본 HTTPS 서버에 대한 base64 인코딩 TLS 인증서 Note: 기본적으로 사전 생성된 자체 서명 인증서가 사용됩니다. 자신의 인증서를 지정하는 것이 좋습니다. 또는 기본 서버 Secret를 완전히 생략하면 기본 서버에 대한 TLS 연결을 거부하도록 NGINX가 구성됩니다. | A pre-generated self-signed certificate. |
controller.defaultTLS.key | 기본 HTTPS 서버에 대한 base64 인코딩 TLS Key입니다. Note: 기본적으로 미리 생성된 Key가 사용됩니다. 고유한 Key를 지정하는 것이 좋습니다. 또는 기본 서버 Secret을 완전히 생략하면 NGINX가 기본 서버에 대한 TLS 연결을 거부하도록 구성됩니다. | A pre-generated key. |
controller.defaultTLS.secret | 기본 HTTPS 서버에 대한 TLS 인증서 및 Key가 있는 Secret입니다. 값은 <namespace>/<name> 형식을 따라야 합니다. controller.defaultTLS.cert 및 controller.defaultTLS.key 매개변수를 사용하여 인증서 및 Key를 지정하는 대신 사용됩니다. Note: 또는 기본 서버 Secret을 완전히 생략하면 NGINX가 기본 서버에 대한 TLS 연결을 거부하도록 구성됩니다. | None |
controller.wildcardTLS.cert | TLS가 활성화되었지만 Secret이 지정되지 않은 모든 Ingress/VirtualServer 호스트에 대한 base64 인코딩 TLS 인증서. 매개변수가 설정되지 않은 경우 이러한 Ingress/VirtualServer 호스트에 대해 NGINX는 TLS 연결을 설정하려는 모든 시도를 중단합니다. | None |
controller.wildcardTLS.key | TLS가 활성화되었지만 Secret이 지정되지 않은 모든 Ingress/VirtualServer 호스트에 대한 base64 인코딩 TLS Key. 매개변수가 설정되지 않은 경우 이러한 Ingress/VirtualServer 호스트에 대해 NGINX는 TLS 연결을 설정하려는 모든 시도를 중단합니다. | None |
controller.wildcardTLS.secret | TLS가 활성화되었지만 지정된 Secret이 없는 모든 Ingress/VirtualServer 호스트에 대한 TLS 인증서 및 Key가 있는 Secret입니다. 값은 <namespace>/<name> 형식을 따라야 합니다. controller.wildcardTLS.cert 및 controller.wildcardTLS.key 매개변수를 사용하여 인증서 및 Key를 지정하는 대신 사용됩니다. | None |
controller.nodeSelector | Ingress Controller Pod에 대한 Pod 할당을 위한 노드 선택기. | {} |
controller.terminationGracePeriodSeconds | Ingress Controller Pod의 종료 유예 기간입니다. | 30 |
controller.tolerations | Ingress Controller Pod의 허용 오차입니다. | [] |
controller.affinity | Ingress Controller Pod의 선호도입니다. | {} |
controller.volumes | Ingress Controller Pod의 Volume입니다. | [] |
controller.volumeMounts | Ingress Controller Pod의 VolumeMount입니다. | [] |
controller.initContainers | Ingress Controller Pod의 InitContainer 입니다. | [] |
controller.extraContainers | Ingress Controller Pod용 추가(예: sidecar) 컨테이너 입니다. | [] |
controller.resources | Ingress Controller Pod의 리소스 입니다. | requests: cpu=100m,memory=128Mi |
controller.replicaCount | Ingress Controller Deployment의 Replica 수입니다. | 1 |
controller.ingressClass | Ingress Controller의 Class입니다. Class와 이름이 동일한 IngressClass 리소스를 배포해야 합니다. 그렇지 않으면 Ingress Controller가 시작되지 않습니다. Ingress Controller는 해당 Class에 속하는 리소스만 처리합니다. 즉, “ingressClassName” 필드 리소스가 Class와 동일합니다. Ingress Controller는 모든 버전의 kubernetes에 대해 “ingressClassName” 필드가 없는 모든 VirtualServer/VirtualServerRoute/TransportServer 리소스를 처리합니다. | nginx |
controller.setAsDefaultIngress | ingressClassName 필드가 지정되지 않은 새 Ingress에는 controller.ingressClass에 지정된 Class가 할당됩니다. | false |
controller.watchNamespace | Ingress Controller가 리소스를 감시해야 하는 쉼표로 구분된 Namespace 목록입니다. 기본적으로 Ingress Controller는 모든 Namespace를 감시합니다. controller.watchNamespaceLabel과 상호 배타적입니다. Helm cli --set 옵션을 사용하여 여러 Namespace를 구성하는 경우 문자열을 큰따옴표로 묶고 쉼표는 백슬래시를 사용하여 이스케이프 처리해야 합니다. --set controller.watchNamespace="default\,nginx-ingress". | “” |
controller.watchNamespaceLabel | 레이블이 foo=bar인 Namespace만 감시하도록 Ingress Controller를 구성합니다. 기본적으로 Ingress Controller는 모든 Namespace를 감시합니다. controller.watchNamespace와 상호 배타적입니다. | “” |
controller.watchSecretNamespace | Ingress Controller가 Secret 유형의 리소스를 감시해야 하는 쉼표로 구분된 Namespace 목록입니다. 이 Arg가 구성되지 않은 경우 Ingress Controller는 모든 리소스에 대해 동일한 Namespace를 감시합니다. controller.watchNamespace 및 controller.watchNamespaceLabel을 참조하십시오. Helm cli --set 옵션을 사용하여 여러 Namespace를 구성하는 경우 문자열을 큰따옴표로 묶고 쉼표는 백슬래시를 사용하여 Escaoe 처리해야 합니다. --set controller.watchSecretNamespace="default\,nginx-ingress". | “” |
controller.enableCustomResources | 사용자 정의 리소스를 활성화합니다. | true |
controller.enablePreviewPolicies | 미리 보기 정책을 활성화합니다. 이 매개변수는 더 이상 사용되지 않습니다. OIDC 정책을 사용 설정하려면 대신 controller.enableOIDC를 사용하세요. | false |
controller.enableOIDC | OIDC 정책을 활성화합니다. | false |
controller.includeYear | Log 헤더에 연도를 포함합니다. 이 매개변수는 release 2.7에서 제거되며 연도는 기본적으로 포함됩니다. | false |
controller.enableTLSPassthrough | 포트 443에서 TLS Passthrough를 사용 설정합니다. controller.enableCustomResources가 필요합니다. | false |
controller.enableCertManager | cert-manager(cert-manager.io)를 사용하여 VirtualServer 리소스에 대한 x509 자동 인증서 관리를 활성화합니다. controller.enableCustomResources가 필요합니다. | false |
controller.enableExternalDNS | ExternalDNS를 사용하여 VirtualServer 리소스에 대한 공개 DNS 항목을 구성하기 위해 ExternalDNS와의 통합을 사용 설정합니다. controller.enableCustomResources가 필요합니다. | false |
controller.globalConfiguration.create | GlobalConfiguration 사용자 정의 리소스를 만듭니다. controller.enableCustomResources가 필요합니다. | false |
controller.globalConfiguration.spec | Ingress Controller의 전역 구성 매개변수를 정의하기 위한 GlobalConfiguration의 사양입니다. | {} |
controller.enableSnippets | Ingress, VirtualServer, VirtualServerRoute 및 TransportServer 리소스에서 사용자 정의 NGINX 구성 Snippet을 활성화합니다. | false |
controller.healthStatus | 기본 서버에 “/nginx-health” location를 추가합니다. location는 모든 요청에 대해 200 상태 코드로 응답합니다. Ingress Controller의 External Health Check에 유용합니다. | false |
controller.healthStatusURI | 기본 서버에서 상태 위치의 URI를 설정합니다. controller.healthStatus가 필요합니다. | “/nginx-health” |
controller.nginxStatus.enable | NGINX stub_status 또는 NGINX Plus API를 활성화합니다. | true |
controller.nginxStatus.port | NGINX stub_status 또는 NGINX Plus API가 Expose되는 포트를 설정합니다. | 8080 |
controller.nginxStatus.allowCidrs | NGINX stub_status 또는 NGINX Plus API에 대한 허용 목록에 IP/CIDR 블록을 추가합니다. 여러 IP/CIDR을 쉼표로 구분합니다. | 127.0.0.1,::1 |
controller.service.create | Ingress Controller Pod를 Expose하는 서비스를 생성합니다. | true |
controller.service.type | Ingress Controller에 대해 생성할 서비스 유형입니다. | LoadBalancer |
controller.service.allocateLoadBalancerNodePorts | 서비스에 대한 NodePort를 자동으로 할당할지 여부(Bool, LoadBalancers만 해당). | “” |
controller.service.ipFamilyPolicy | 이중 스택 기본 설정. 유효한 값: SingleStack, PreferDualStack, RequireDualStack. | “” |
controller.service.ipFamilies | 이 서비스에 할당된 IP 제품군 목록입니다. 유효한 값: IPv4, IPv6 | “” |
controller.service.externalTrafficPolicy | 서비스의 externalTrafficPolicy입니다. 로컬 값은 클라이언트 Source IP를 유지합니다. | Local |
controller.service.annotations | Ingress Controller 서비스의 Annotation입니다. | {} |
controller.service.extraLabels | 서비스의 추가 Label입니다. | {} |
controller.service.loadBalancerIP | Load Balancer의 Static IP 주소입니다. Controller.service.type을 LoadBalancer로 설정해야 합니다. 클라우드 공급자는 이 기능을 지원해야 합니다. | “” |
controller.service.externalIPs | Ingress Controller 서비스의 External IP 목록입니다. | [] |
controller.service.loadBalancerSourceRanges | Load Balancer에 액세스할 수 있는 IP 범위(CIDR)입니다. Controller.service.type을 LoadBalancer로 설정해야 합니다. 클라우드 공급자는 이 기능을 지원해야 합니다. | [] |
controller.service.name | 서비스의 이름입니다. | Autogenerated |
controller.service.customPorts | Ingress Controller 서비스를 통해 표시할 사용자 정의 포트 목록입니다. 서비스 포트에 대한 기존 Kubernetes yaml 구문을 따릅니다. | [] |
controller.service.httpPort.enable | Ingress Controller 서비스에 대한 HTTP 포트를 활성화합니다. | true |
controller.service.httpPort.port | Ingress Controller 서비스의 HTTP 포트입니다. | 80 |
controller.service.httpPort.nodePort | HTTP 포트에 대한 사용자 정의 NodePort입니다. controller.service.type을 NodePort로 설정해야 합니다. | “” |
controller.service.httpPort.targetPort | Ingress Controller 서비스의 HTTP 포트 Target 포트입니다. | 80 |
controller.service.httpsPort.enable | Ingress Controller 서비스에 대한 HTTPS 포트를 활성화합니다. | true |
controller.service.httpsPort.port | Ingress Controller 서비스의 HTTPS 포트입니다. | 443 |
controller.service.httpsPort.nodePort | HTTPS 포트에 대한 사용자 정의 NodePort입니다. controller.service.type을 NodePort로 설정해야 합니다. | “” |
controller.service.httpsPort.targetPort | Ingress Controller 서비스의 HTTPS 포트 Target 포트입니다. | 443 |
controller.serviceAccount.name | Ingress Controller Pod의 서비스 계정 이름입니다. RBAC에 사용됩니다. | Autogenerated |
controller.serviceAccount.imagePullSecretName | Docker Registry 자격 증명을 포함하는 Secret의 이름입니다. Secret은 Helm Release와 동일한 Namespace에 있어야 합니다. | “” |
controller.reportIngressStatus.enable | Ingress 리소스 상태의 주소 필드를 Ingress Controller의 외부 주소로 업데이트합니다. 또한 다음을 통해 외부 서비스를 통해 외부 주소의 Source를 지정해야 합니다. controller.ReportingressStatus.externalService, controller.reportingressStatus.ingressLink 또는 controller.config.entries를 통한 ConfigMap의 external-status-address 항목입니다. Note: controller.config.entries.external-status-address는 다른 항목보다 우선합니다. | true |
controller.reportIngressStatus.externalService | Ingress Controller가 외부에 Expose 되는 LoadBalancer 유형의 서비스 이름을 지정합니다. 서비스의 외부 주소는 Ingress, VirtualServer 및 VirtualServerRoute 리소스의 상태를 보고할 때 사용됩니다. controller.reportIngressStatus.enable을 true로 설정해야 합니다. 기본값은 자동 생성되며 controller.service.create가 true로 설정되고 controller.service.type이 LoadBalancer로 설정되면 활성화됩니다. | Autogenerated |
controller.reportIngressStatus.ingressLink | BIG-IP 시스템을 통해 Ingress Controller Pod를 Expose 하는 IngressLink 리소스의 이름을 지정합니다. BIG-IP 시스템의 IP는 Ingress, VirtualServer 및 VirtualServerRoute 리소스의 상태를 보고할 때 사용됩니다. controller.reportIngressStatus.enable을 true로 설정해야 합니다. | “” |
controller.reportIngressStatus.enableLeaderElection | Ingress 리소스의 상태를 보고하는 Controller의 여러 Replicas을 방지하려면 리더 선택을 활성화합니다. controller.reportIngressStatus.enable을 true로 설정해야 합니다. | true |
controller.reportIngressStatus.leaderElectionLockName | 리더 선택을 위한 잠금으로 사용되는 controller와 동일한 namespace 내에서 ConfigMap의 이름을 지정합니다. controller.reportIngressStatus.enableLeaderElection을 true로 설정해야 합니다. | Autogenerated |
controller.pod.annotations | Ingress Controller pod의 Annotation입니다. | {} |
controller.readyStatus.enable | Readiness Endpoint '/nginx-ready'를 사용 설정합니다. NGINX가 시작 후 모든 구성을 Load 하면 Endpoint는 성공 코드를 반환합니다. 또한 Readiness Endpoint을 사용하는 Ingress Controller Pod에 대한 조사 준비를 구성합니다. | true |
controller.readyStatus.port | Readiness Endpoint HTTP 포트입니다. | 8081 |
controller.readyStatus.initialDelaySeconds | Ingress Controller Pod이 시작된 후 조사 준비가 시작되기 전의 시간(s)입니다. | 0 |
controller.enableLatencyMetrics | Upstream에 대한 지연 시간 Metrics 수집을 활성화합니다. prometheus.create가 필요합니다. | false |
controller.minReadySeconds | 새로 생성된 Pod가 사용 가능한 것으로 간주되기 위해 컨테이너 충돌 없이 준비되어야 하는 최소 시간(s)을 지정합니다. docs | 0 |
controller.strategy | 이전 Pod를 새 Pod로 교체하는 데 사용할 전략을 지정합니다. docs | {} |
controller.disableIPV6 | IPV6 스택을 지원하지 않는 노드에 대해 IPV6 listener를 명시적으로 비활성화합니다. | false |
rbac.create | RBAC 구성. | true |
prometheus.create | NGINX 또는 NGINX Plus Metrics을 Prometheus 형식으로 Expose합니다. | false |
prometheus.port | Metrics을 스크랩하도록 포트를 구성합니다. | 9113 |
prometheus.scheme | 요청이 Prometheus Endpoint에 연결하는 데 사용해야 하는 HTTP 체계를 구성합니다. | http |
prometheus.secret | Prometheus Endpoint의 보안 HTTPS 연결을 설정하는 데 사용할 수 있는 Kubernetes TLS Secret의 namespace/name을 지정합니다. | “” |