애플리케이션 라우팅 추가 항목 기능을 포함하는 관리형 NGINX 수신

주의

Kubernetes SIG 네트워크 및 보안 대응 위원회에서는 Ingress NGINX 프로젝트퇴역을 발표했으며, 유지 관리는 2026년 3월에 종료될 예정입니다. 현재 NGINX에서 애플리케이션 라우팅 추가 기능을 사용하는 AKS 클러스터에는 즉각적인 조치가 필요하지 않습니다. Microsoft는 2026년 11월까지 라우팅 추가 기능 애플리케이션 인그레스 리소스에 대한 중요한 보안 패치를 공식적으로 지원할 예정입니다.

AKS는 수신 및 L7 트래픽 관리의 장기적 표준으로 게이트웨이 API로 전환함으로써 업스트림 Kubernetes와 보조를 맞추고 있습니다. 현재 설정에 따라 마이그레이션 경로를 계획하는 것이 좋습니다.

  • 애플리케이션 라우팅 추가 기능 사용자: 프로덕션 워크로드는 2026년 11월까지 완벽하게 지원됩니다. 게이트웨이 API 기반 수신 트래픽 관리 환경을 위한 애플리케이션 라우팅 게이트웨이 API 구현으로 마이그레이션합니다.
  • OSS NGINX 사용자에게 는 다음과 같은 몇 가지 옵션이 있습니다.
  • 서비스 메시 사용자: 서비스 메시를 채택하려는 경우 Istio 기반 서비스 메시 추가 기능을 고려합니다. 지금은 Istio Ingress를 사용하고, 이제 정식 출시된 Istio Gateway API로 마이그레이션할 계획을 세우세요.

AKS(Azure Kubernetes Service) 클러스터에서 실행되는 애플리케이션으로 HTTP(Hypertext Transfer Protocol) 및 보안(HTTPS) 트래픽을 라우팅하는 한 가지 방법은 Kubernetes 수신 개체를 사용하는 것입니다. NGINX에서 애플리케이션 라우팅 추가 기능을 사용하도록 설정하면 AKS 클러스터에서 수신 컨트롤러를 만들고 구성하고 관리합니다.

이 문서에서는 관리되는 NGINX 수신 컨트롤러를 사용하도록 설정하고 AKS 클러스터의 애플리케이션에 트래픽을 라우팅하도록 수신 개체를 구성하는 방법을 보여 줍니다.

NGINX 기능을 사용하는 애플리케이션 라우팅 추가 기능

NGINX를 사용하는 애플리케이션 라우팅 추가 항목 기능은 다음을 제공합니다:

다른 구성에 대해서는 다음을 참조하시기 바랍니다:

Important

2027년 9월 30일부터 AKS(Azure Kubernetes Service)는 더 이상 OSM(Open Service Mesh) 추가 기능을 지원하지 않습니다. 업스트림 Open Service Mesh 프로젝트가 사용 중지되었습니다.

클러스터에서 OSM 추가 기능을 사용하는 경우 지원 종료 날짜 전에 Istio 추가 기능으로 마이그레이션합니다. 이 사용 중지 알림은 관리되는 OSM 추가 기능에만 적용되며 오픈 소스 또는 자체 관리 서비스 메시 설치를 다루지 않습니다. 마이그레이션 단계는 OSM 추가 기능에서 Istio 추가 기능으로의 마이그레이션 지침을 참조하세요. AKS 공지 사항 및 업데이트에 대한 정보를 유지하려면 AKS 릴리스 정보를 따르세요.

필수 구성 요소

  • Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
  • Azure CLI 버전 2.54.0 이상이 설치되고 구성되어 있어야 합니다 az --version 을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

제한 사항

  • 애플리케이션 라우팅 추가 항목 기능은 최대 5개의 Azure DNS 영역을 지원합니다.

  • 애플리케이션 라우팅 추가 기능은 관리형 ID가 활성화된 AKS 클러스터에서만 사용 설정할 수 있습니다.

  • 추가 항복 기능과 통합된 모든 전역 Azure DNS 영역은 동일한 리소스 그룹 내에 있어야 합니다.

  • 추가 항목 기능과 통합된 모든 전역 프라이빗 Azure DNS 영역은 동일한 리소스 그룹 내에 있어야 합니다.

  • 네임스페이스에서 ConfigMap 수신-ngix 편집은 app-routing-system 지원되지 않습니다.

  • 코드 조각 주석 값이 다음 차단된 값과 일치하면 수신이 구성되지 않습니다.

    차단된 값 Effect
    load_module 수신이 구성되지 않았습니다.
    lua_package 수신이 구성되지 않았습니다.
    _by_lua 수신이 구성되지 않았습니다.
    location 수신이 구성되지 않았습니다.
    root 수신이 구성되지 않았습니다.
    proxy_pass 수신이 구성되지 않았습니다.
    serviceaccount 수신이 구성되지 않았습니다.
    { 수신이 구성되지 않았습니다.
    } 수신이 구성되지 않았습니다.
    ' 수신이 구성되지 않았습니다.
  • 추가 기능은 관리하는 수신 nginx 프록시 Pod에 Microsoft 관리되지 않는 사이드카(예: 사용자 지정 원격 분석, 로깅 또는 보안 에이전트)를 삽입하는 것을 공식적으로 지원하지 않습니다. 관리형 프록시 Pod에 자체 사이드카를 주입하기로 선택한 경우, 발생하는 모든 문제에 대해 Microsoft는 최선의 노력 수준의 지원만 제공합니다.

Azure CLI 사용하여 애플리케이션 라우팅 추가 기능 사용

새 클러스터에서 활성화하십시오

신규 클러스터에서 애플리케이션 라우팅을 활성화하려면 az aks create 해당 플래그를 지정하여 --enable-app-routing 명령어를 사용하십시오.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

기존 클러스터에서 활성화하십시오

기존 클로스터에서 애플리케이션 라우팅을 활성화하려면 az aks approuting enable 해당 내용을 사용하십시오.

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

AKS 클러스터에 연결

로컬 컴퓨터에서 Kubernetes 클러스터에 연결하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. 해당 명령어를 사용하여 로컬에 az aks install-cli 설치할 수 있습니다. Azure Cloud Shell을 사용하면 kubectl 이 이미 설치되어 있습니다.

kubectl 명령을 사용하여 Kubernetes 클러스터에 연결하도록 az aks get-credentials을 구성합니다.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

애플리케이션을 배포하십시오

Kubernetes 수신 개체는 수신 컨트롤러에 대한 라우팅 규칙을 정의합니다. 애플리케이션 라우팅 추가 기능의 관리되는 수신 클래스 및 지원되는 주석을 사용하여 컨트롤러가 트래픽을 처리하는 방법을 구성합니다.

  1. 명령을 사용하여 aks-store 예시 Pod를 실행하는 kubectl create namespace 라고 하는 애플리케이션 네임스페이스를 생성합니다.

    kubectl create namespace aks-store
    
  2. 다음 YAML 매니페스트 파일을 사용하여 AKS 저장소 애플리케이션을 배포하십시오.

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

이 매니페스트는 배포 product-serviceorder-servicestore-front 해당 서비스를 만듭니다rabbitmq. 서비스는 store-front 다음 섹션에서 수신이 라우팅하는 포트 80을 노출합니다.

수신 개체를 생성하십시오

애플리케이션 라우팅 추가 기능을 사용하도록 설정하면 webapprouting.kubernetes.azure.com 이라는 수신 클래스가 만들어집니다. 추가 기능의 관리되는 NGINX 수신 컨트롤러를 사용하도록 수신 개체에서 이 클래스를 지정합니다.

  1. 다음 YAML 매니페스트를 복사하여 ingress.yaml 이라는 새 파일에 저장한 후 로컬 컴퓨터에 보관합니다.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. 다음 명령어를 사용하여 수신 리소스를 kubectl apply 생성하십시오.

    kubectl apply -f ingress.yaml -n aks-store
    

    다음 예시 출력은 생성된 리소스를 보여줍니다.

    ingress.networking.k8s.io/store-front created
    

관리되는 수신 리소스 확인

사용자는 명령을 사용하여 관리되는 수신이 만들어졌는지 kubectl get ingress 확인할 수 있습니다.

kubectl get ingress -n aks-store

수신이 성공적으로 생성되면 아래의 다음 예시와 같은 출력 결과를 확인할 수 있습니다:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

브라우저에서 수신 컨트롤러의 공용 IP 주소를 가리켜 AKS 저장소가 작동하는지 확인할 수 있습니다. 다음 명령은 부하 분산 장치가 네임스페이스의 관리되는 NGINX 수신 컨트롤러 서비스에 nginxapp-routing-system 할당한 외부 IP 주소를 검색합니다.

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

애플리케이션 라우팅 추가 항목 기능을 제거하십시오

연결이 된 네임스페이스를 제거하려고 하면 kubectl delete namespace 명령을 사용하십시오.

kubectl delete namespace aks-store

클러스터에서 애플리케이션 라우팅 추가 항목 기능을 제거하려고 한다면 az aks approuting disable 명령을 사용하십시오.

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

참고

애플리케이션 라우팅 추가 기능을 사용하지 않도록 설정할 때 클러스터로의 잠재적 트래픽 중단을 방지하기 위해 configMaps, 비밀 및 컨트롤러를 실행하는 배포 를 비롯한 일부 Kubernetes 리소스는 클러스터에 남아 있습니다. 해당 리소스는 앱 라우팅 시스템 네임스페이스내부에 있습니다. 만약해서 리소스가 더 이상 필요하지 않는 경우라면 아래를 사용하여 해당 리소스를 제거할 수 있습니다 kubectl delete ns app-routing-system.