
AWS Marketplace Ingress Controller 이미지 사용
이 문서는 AWS Marketplace 를 통해 NGINX Ingress Controller를 사용하는 데 필요한 단계를 안내합니다. AWS Marketplace NGINX Ingress Controller가 제대로 작동하려면 따라야 하는 추가 단계가 있습니다.
IMPORTANT: 이 문서는 EKS 버전 1.19를 사용합니다. 1.19 미만의 EKS 버전은 NGINX Pod 내에서 추가 보안 설정이 marketplace 이미지와 제대로 작동하도록 해야 합니다. 이 문서에서는 eksctl을 사용하여 Marketplace에서 NGINX Ingress Controller 배포하기 위해 Kubernetes 클러스터 액세스를 활성화하는 데 필요한 단계를 수행하는 방법에 대해 설명합니다.
Note: Marketplace의 NGINX Ingress Controller는 AWS 리 US-West-1에서 작동하지 않습니다.
목차
1. Instructions
2. eksctl utility를 사용한 단계별 지침
1. Instructions
AWS Marketplace 사용 지침:
- 작동하는 AWS EKS 클러스터가 있는지 확인합니다. EKS 클러스터가 없는 경우 AWS 콘솔 또는 AWS 도구 eksctl을 사용하여 클러스터를 생성할 수 있습니다. eksctl을 사용하여 EKS를 시작하는 방법에 대한 자세한 내용은 이 가이드를 참조하십시오.
- NGINX Ingress Controller에 대해 생성된 서비스 계정과 연결할 새 IAM 역할을 생성해야 합니다. 이 IAM 역할에는 AWS NGINX Ingress Controller 이미지의 사용량을 모니터링할 수 있는 특정 IAM 정책이 있습니다. 이 단계는 필수 단계입니다. 이를 생략하면 AWS Marketplace NGINX Ingress Controller가 제대로 작동하지 않고 NGINX Ingress가 시작되지 않습니다. 여기에서 AWS EKS IAM 설명서를 참조하고 여기에서 AWS Marketplace에 필요한 정책을 자세히 설명하는 설명서를 참조하십시오.
- 이 IAM 역할을 EKS 클러스터의 서비스 계정과 연결해야 합니다. 그렇게 하면 서비스 계정 Kubernetes 객체에 IAM 역할에 대한 링크를 표시하는 Annotation이 생깁니다.
Note: IAM 서비스 계정을 생성하려면 먼저 AWS EKS 클러스터를 OIDC 공급자와 연결해야 합니다! 이것은 필수 사항 입니다.
2. eksctl utility를 사용한 단계별 지침
여기에는 기존 EKS 클러스터가 실행 중이라고 가정합니다. 그렇지 않은 경우 계속하기 전에 하나를 만드십시오. 이것은 또한 NGINX Ingress Controller에 대한 Namespace가 이미 존재한다고 가정합니다.
1. EKS 클러스터를 “OIDC IAM 공급자”와 연결합니다(--cluster <name>
및 --region <region>
을 사용자 환경의 값으로 바꿉니다).
eksctl utils associate-iam-oidc-provider --region=eu-west-1 --cluster=json-eu-east1 --approve
2. 이제 클러스터에 대한 IAM 역할 및 서비스 계정을 생성합니다. --name <name>
--namespace <name>
및 --region <region>
을 값으로 대체합니다.
eksctl create iamserviceaccount --name nginx-ingress --namespace nginx-ingress --cluster json-test01 --region us-east-2 --attach-policy-arn arn:aws:iam::aws:policy/AWSMarketplaceMeteringRegisterUsage --approve
그러면 필요한 정책이 연결된 IAM 역할이 생성되고, 서비스 계정이 없는 경우 생성하고, AWS 클러스터에 필요한 Annotation을 추가합니다. 여기에서 문서를 참조하십시오. eksctl이 자동으로 생성하므로 NGINX Ingress Contrller 배포에 서비스 계정 yaml 파일을 적용할 필요가 없습니다.
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
EKS.amazonaws.com/role-arn: arn:aws:iam::001234567890:role/eksctl-json-us-west2-addon-iamserviceaccount-Role1-IJJ6CF9Y8IPY
labels:
app.kubernetes.io/managed-by: eksctl
name: nginx-ingress
namespace: nginx-ingress
secrets:
- name: nginx-ingress-token-zm728
서비스 계정에 대해 생성하는 이름이 Manifest 배포를 위해 rbac.yaml
파일에 있는 계정과 일치하는지 확인하십시오.
위에서 생성한 IAM 서비스 계정과 일치하는 rbac.yaml
파일의 샘플 출력:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: nginx-ingress
subjects:
- kind: ServiceAccount
name: nginx-ingress
namespace: nginx-ingress
roleRef:
kind: ClusterRole
name: nginx-ingress
apiGroup: rbac.authorization.k8s.io
3. AWS Marketplace 포털의 지침에 지정된 AWS ECR Registry에 로그인합니다.

NGINX Ingress Controller에 대한 ECR Pull 지침
Note: AWS Labs는 자격 증명 도우미도 제공합니다. 설정 및 구성 방법에 대한 지침은 GitHub repo를 참조하십시오.
4. nginx-plus-ingress.yaml
Manifest에서 이미지를 업데이트합니다.