애플리케이션 라우팅 추가 기능을 사용하여 관리되는 NGINX 수신
HTTP(Hypertext Transfer Protocol) 및 보안(HTTPS) 트래픽을 AKS(Azure Kubernetes Service) 클러스터에서 실행되는 애플리케이션으로 라우팅하는 한 가지 방법은 Kubernetes 수신 개체를 사용하는 것입니다. 애플리케이션 라우팅 추가 기능 NGINX 수신 클래스를 사용하는 수신 개체를 만들 때 추가 기능이 AKS 클러스터에서 수신 컨트롤러를 하나 이상 만들고 구성하고 관리합니다.
이 문서에서는 AKS 클러스터에서 기본 수신 컨트롤러를 배포하고 구성하는 방법을 보여 줍니다.
NGINX 기능을 사용하는 애플리케이션 라우팅 추가 기능
NGINX를 사용하는 애플리케이션 라우팅 추가 항목은 다음을 제공합니다.
- Kubernetes NGINX 수신 컨트롤러를 기반으로 관리되는 NGINX 수신 컨트롤러를 쉽게 구성.
- 공용 및 프라이빗 영역 관리를 위해 Azure DNS와 통합.
- Azure Key Vault에 저장된 인증서로 SSL 종료.
다른 구성에 대해서는 다음을 참조하세요.
CNCF(Cloud Native Computing Foundation)에서 OSM(Open Service Mesh)를 사용 중지함에 따라 OSM과 함께 애플리케이션 라우팅 추가 기능을 사용하는 것은 권장되지 않습니다.
필수 구성 요소
- Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
- Azure CLI 버전 2.54.0 이상이 설치 및 구성되어 있어야 합니다.
az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. aks-preview
버전 0.5.171 이상의 Azure CLI 확장이 설치되어 있어야 합니다.
제한 사항
- 애플리케이션 라우팅 추가 기능은 최대 5개의 Azure DNS 영역을 지원합니다.
- 추가 기능과 통합된 모든 전역 Azure DNS 영역은 동일한 리소스 그룹에 있어야 합니다.
- 추가 기능과 통합된 모든 프라이빗 Azure DNS 영역은 동일한 리소스 그룹에 있어야 합니다.
app-routing-system
네임스페이스에서 ingress-nginxConfigMap
편집은 지원되지 않습니다.- 다음 코드 조각 주석이 차단되어 수신이 구성되지 않도록 합니다.
load_module
,lua_package
,_by_lua
,location
,root
,proxy_pass
,serviceaccount
,{
,}
,'
.
Azure CLI를 사용하여 애플리케이션 라우팅 사용
새 클러스터에서 사용
새 클러스터에서 애플리케이션 라우팅을 사용하도록 설정하려면 az aks create
명령을 사용하여 --enable-app-routing
플래그를 지정합니다.
az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing
기존 클러스터에서 사용
기존 클러스터에서 애플리케이션 라우팅을 사용하도록 설정하려면 az aks approuting enable
명령을 사용합니다.
az aks approuting enable -g <ResourceGroupName> -n <ClusterName>
AKS 클러스터에 연결
로컬 컴퓨터에서 Kubernetes 클러스터에 연결하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. az aks install-cli
명령을 사용하여 kubectl을 로컬로 설치할 수 있습니다. Azure Cloud Shell을 사용하는 경우 kubectl
이 이미 설치되어 있습니다.
az aks get-credentials 명령을 사용하여 Kubernetes 클러스터에 연결하도록 kubectl
을 구성합니다.
az aks get-credentials -g <ResourceGroupName> -n <ClusterName>
애플리케이션 배포
애플리케이션 라우팅 추가 기능은 Kubernetes 수신 개체에 주석을 사용하여 적절한 리소스를 만듭니다.
kubectl create namespace
명령을 사용하여 예제 Pod를 실행하는hello-web-app-routing
이라는 애플리케이션 네임스페이스를 만듭니다.kubectl create namespace hello-web-app-routing
다음 YAML 매니페스트를 deployment.yaml이라는 새 파일에 복사하여 배포를 만들고 이 파일을 로컬 컴퓨터에 저장합니다.
apiVersion: apps/v1 kind: Deployment metadata: name: aks-helloworld namespace: hello-web-app-routing spec: replicas: 1 selector: matchLabels: app: aks-helloworld template: metadata: labels: app: aks-helloworld spec: containers: - name: aks-helloworld image: mcr.microsoft.com/azuredocs/aks-helloworld:v1 ports: - containerPort: 80 env: - name: TITLE value: "Welcome to Azure Kubernetes Service (AKS)"
다음 YAML 매니페스트를 service.yaml이라는 새 파일에 복사하여 서비스를 만들고 이 파일을 로컬 컴퓨터에 저장합니다.
apiVersion: v1 kind: Service metadata: name: aks-helloworld namespace: hello-web-app-routing spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld
수신 개체 만들기
애플리케이션 라우팅 추가 기능은 webapprouting.kubernetes.azure.com이라는 클러스터에 수신 클래스를 만듭니다. 이 클래스로 수신 개체를 만들면 추가 기능이 활성화됩니다.
다음 YAML 매니페스트를 ingress.yaml이라는 새 파일에 복사하고 파일을 로컬 컴퓨터에 저장합니다.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <Hostname> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix
kubectl apply
명령을 사용하여 클러스터 리소스를 만듭니다.kubectl apply -f deployment.yaml -n hello-web-app-routing
다음 예제 출력에서는 생성된 리소스를 보여줍니다.
deployment.apps/aks-helloworld created
kubectl apply -f service.yaml -n hello-web-app-routing
다음 예제 출력에서는 생성된 리소스를 보여줍니다.
service/aks-helloworld created
kubectl apply -f ingress.yaml -n hello-web-app-routing
다음 예제 출력에서는 생성된 리소스를 보여줍니다.
ingress.networking.k8s.io/aks-helloworld created
관리되는 수신이 만들어졌는지 확인
kubectl get ingress
명령을 사용하여 관리되는 수신이 만들어졌는지 확인할 수 있습니다.
kubectl get ingress -n hello-web-app-routing
다음 예제 출력에서는 생성된 관리되는 수신을 보여 줍니다.
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
애플리케이션 라우팅 추가 기능 제거
연결된 네임스페이스를 제거하려면 kubectl delete namespace
명령을 사용합니다.
kubectl delete namespace hello-web-app-routing
클러스터에서 애플리케이션 라우팅 추가 기능을 제거하려면 az aks approuting disable
명령을 사용합니다.
az aks approuting disable --name myAKSCluster --resource-group myResourceGroup
애플리케이션 라우팅 추가 기능을 비활성화할 경우 일부 Kubernetes 리소스는 클러스터에 남아 있을 수 있습니다. 이러한 리소스는 configMaps 및 secrets를 포함하며 앱 라우팅 시스템 네임스페이스에서 만들어집니다. 원하는 경우 이러한 리소스를 제거할 수 있습니다.
다음 단계
사용자 지정 수신 구성 설정은 고급 수신 구성을 만들고 DNS 영역을 관리하고 보안 수신을 설정할 수 있도록 Azure DNS를 사용하여 사용자 지정 도메인을 구성하는 방법을 보여 줍니다.
Azure 내부 부하 분산 장치와 통합하고 프라이빗 Azure DNS 영역을 구성하여 프라이빗 엔드포인트에 대한 DNS 확인을 사용하도록 설정하여 특정 도메인을 확인하려면 Azure 프라이빗 DNS 영역에 대한 내부 NGINX 수신 컨트롤러 구성을 참조하세요.
애플리케이션의 성능과 사용량 분석의 일환으로 Grafana(미리 보기)에서 Prometheus를 사용하여 애플리케이션 라우팅 추가 기능에 포함된 Ingress-nginx 컨트롤러 메트릭을 모니터링하는 방법을 알아보세요.