애플리케이션 라우팅 추가 기능을 사용하여 관리되는 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-nginx ConfigMap 편집은 지원되지 않습니다.
  • 다음 코드 조각 주석이 차단되어 수신이 구성되지 않도록 합니다. 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 수신 개체에 주석을 사용하여 적절한 리소스를 만듭니다.

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

    kubectl create namespace hello-web-app-routing
    
  2. 다음 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)"
    
  3. 다음 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이라는 클러스터에 수신 클래스를 만듭니다. 이 클래스로 수신 개체를 만들면 추가 기능이 활성화됩니다.

  1. 다음 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
    
  2. 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 리소스는 클러스터에 남아 있을 수 있습니다. 이러한 리소스는 configMapssecrets를 포함하며 앱 라우팅 시스템 네임스페이스에서 만들어집니다. 원하는 경우 이러한 리소스를 제거할 수 있습니다.

다음 단계