다음을 통해 공유


애플리케이션 라우팅 추가 기능을 사용하여 관리되는 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 설치를 참조하세요.

제한 사항

  • 애플리케이션 라우팅 추가 기능은 최대 5개의 Azure DNS 영역을 지원합니다.
  • 애플리케이션 라우팅 추가 기능은 관리 ID있는 AKS 클러스터에서만 사용할 수 있습니다.
  • 추가 기능과 통합된 모든 전역 Azure DNS 영역은 동일한 리소스 그룹에 있어야 합니다.
  • 추가 기능과 통합된 모든 프라이빗 Azure DNS 영역은 동일한 리소스 그룹에 있어야 합니다.
  • app-routing-system 네임스페이스에서 ingress-nginx ConfigMap 편집은 지원되지 않습니다.
  • 다음 코드 조각 주석이 차단되어 수신이 구성되지 않도록 합니다. load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, } , '.

Azure CLI를 사용하여 애플리케이션 라우팅 사용

새 클러스터에서 사용

새 클러스터에서 애플리케이션 라우팅을 사용하도록 설정하려면 az aks create 명령을 사용하여 --enable-app-routing 플래그를 지정합니다.

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

기존 클러스터에서 사용

기존 클러스터에서 애플리케이션 라우팅을 사용하도록 설정하려면 az aks approuting enable 명령을 사용합니다.

az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>

AKS 클러스터에 연결

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

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

az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>

애플리케이션 배포

애플리케이션 라우팅 추가 기능은 Kubernetes 수신 개체에 주석을 사용하여 적절한 리소스를 만듭니다.

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

    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
    

이 매니페스트는 AKS 저장소 애플리케이션에 필요한 배포 및 서비스를 만듭니다.

수신 개체 만들기

애플리케이션 라우팅 추가 기능은 webapprouting.kubernetes.azure.com이라는 클러스터에 수신 클래스를 만듭니다. 이 클래스로 수신 개체를 만들면 추가 기능이 활성화됩니다.

  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

AKS 저장소가 브라우저에서 수신 컨트롤러의 공용 IP 주소를 가리키는지 확인할 수 있습니다. kubectl을 사용하여 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 <ClusterName> --resource-group <ResourceGroupName>

참고 항목

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

다음 단계