Application Gateway를 사용하여 HTTP 또는 HTTPS를 통해 AKS 서비스 노출
이 문서에서는 KUbernetes 수신 리소스를 사용하여 HTTP 또는 HTTPS를 통해 Azure 애플리케이션 게이트웨이를 통해 AKS(Azure Kubernetes Service) 서비스 예제를 노출하는 방법을 보여 줍니다.
팁
Kubernetes 수신 솔루션에 대한 컨테이너용 Application Gateway를 고려합니다.
필수 조건
- 설치된
ingress-azure
Helm 차트:- Greenfield 배포: 처음부터 시작하는 경우 Application Gateway를 사용하여 AKS 클러스터를 배포하고 AKS 클러스터에 AGIC(Application Gateway 수신 컨트롤러)를 설치하는 단계를 간략하게 설명하는 이러한 설치 지침을 참조하세요.
- Brownfield 배포: 기존 AKS 클러스터 및 Application Gateway 배포가 있는 경우 AKS 클러스터에 AGIC를 설치하려면 다음 지침을 참조하세요.
- 이 애플리케이션에서 HTTPS를 사용하려는 경우 x509 인증서 및 해당 프라이빗 키입니다.
게스트 북 애플리케이션 배포
애플리케이션은 guestbook
웹 UI 프런트 엔드, 백 엔드 및 Redis 데이터베이스로 구성된 정식 Kubernetes 애플리케이션입니다.
기본적으로 guestbook
포트80
에 이름이 frontend
있는 서비스를 통해 애플리케이션을 노출합니다. Kubernetes 수신 리소스가 없으면 AKS 클러스터 외부에서 서비스에 액세스할 수 없습니다. 애플리케이션을 사용하고 HTTP 및 HTTPS를 통해 애플리케이션에 액세스하도록 수신 리소스를 설정합니다.
애플리케이션을 배포하려면 다음을 수행합니다 guestbook
.
다음 명령을 실행하여 AKS 클러스터에 배포
guestbook-all-in-one.yaml
합니다.kubectl apply -f guestbook-all-in-one.yaml
HTTP를 통해 서비스 공개
애플리케이션을 guestbook
노출하려면 다음 수신 리소스를 사용합니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
이 수신은 frontend
배포 서비스를 Application Gateway 배포의 guestbook-all-in-one
기본 백 엔드로 노출합니다.
위의 수신 리소스를 다음과 같이 ing-guestbook.yaml
저장합니다.
다음 명령을 실행하여 배포
ing-guestbook.yaml
합니다.kubectl apply -f ing-guestbook.yaml
배포 상태에 대한 수신 컨트롤러의 로그를 확인합니다.
이제 guestbook
애플리케이션을 사용할 수 있습니다. Application Gateway 배포의 공용 주소를 방문하여 가용성을 확인할 수 있습니다.
HTTPS를 통해 서비스 공개
지정된 호스트 이름 없이
호스트 이름을 guestbook
지정하지 않으면 Application Gateway 배포를 가리키는 모든 호스트 이름에서 서비스를 사용할 수 있습니다.
수신 리소스를 배포하기 전에 인증서 및 프라이빗 키를 호스트하는 Kubernetes 비밀을 만듭니다.
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
다음 수신 리소스를 정의합니다.
secretName
섹션에서 비밀의 이름으로 바꿉<guestbook-secret-name>
니다.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - secretName: <guestbook-secret-name> rules: - http: paths: - backend: serviceName: frontend servicePort: 80
라는
ing-guestbook-tls.yaml
파일에 수신 리소스를 저장합니다.다음 명령을 실행하여 배포
ing-guestbook-tls.yaml
합니다.kubectl apply -f ing-guestbook-tls.yaml
배포 상태에 대한 수신 컨트롤러의 로그를 확인합니다.
이제 HTTP 및 HTTPS 둘 다에서 guestbook
애플리케이션을 사용할 수 있습니다.
지정된 호스트 이름 사용
멀티플렉스 TLS 구성 및 서비스에 대한 수신 리소스의 호스트 이름을 지정할 수도 있습니다. 호스트 이름을 guestbook
지정하면 지정된 호스트에서만 서비스를 사용할 수 있습니다.
다음 수신 리소스를 정의합니다.
secretName
섹션에서 비밀의 이름으로 바꿉<guestbook-secret-name>
니다.hosts
및host
섹션에서 호스트 이름으로 바꿉<guestbook.contoso.com>
니다.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - hosts: - <guestbook.contoso.com> secretName: <guestbook-secret-name> rules: - host: <guestbook.contoso.com> http: paths: - backend: serviceName: frontend servicePort: 80
다음 명령을 실행하여 배포
ing-guestbook-tls-sni.yaml
합니다.kubectl apply -f ing-guestbook-tls-sni.yaml
배포 상태에 대한 수신 컨트롤러의 로그를 확인합니다.
guestbook
이제 지정된 호스트에서만 HTTP 및 HTTPS에서 애플리케이션을 사용할 수 있습니다.
다른 서비스와 통합
다음 수신 리소스를 사용하여 경로를 추가하고 해당 경로를 다른 서비스로 리디렉션합니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: </other/*>
backend:
serviceName: <other-service>
servicePort: 80
- backend:
serviceName: frontend
servicePort: 80