Azure AKS에서 여러 수신 사용

현재 일하고 있는 회사에서 여러 프로젝트를 진행하고 있습니다. 내 임무는 각 프로젝트에 대한 개발 및 스테이징 환경을 배포하고 유지하는 것이며 일부는 이미 배포되었습니다. 각 환경에 대해 하나의 AKS를 사용했으며 이는 모든 환경에 대해 하나를 공유하는 것보다 비용이 많이 듭니다. Google에서 이 작업을 수행하는 방법을 찾는 것이 약간 까다롭다는 것을 알았으므로 이 게시물에서 설명하고 누군가 유용하다고 생각하기를 바랍니다.

먼저 Ingress용 새 네임스페이스를 만듭니다.kubectl create ns ingress-nginx
Helm을 사용하여 클러스터에 Ingress를 설치합니다. 또한 Azure CLI (az)은 Azure 리소스 및 물론 kubectl과 상호 작용합니다.

Ingress의 repo를 Helm에 추가하여 시작하겠습니다.helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
그리고 필요한 각 환경에 대해 Helm을 통해 Ingress를 한 번 설치합니다.helm install blog-dev ingress-nginx/ingress-nginx --set controller.ingressClass=blog-dev --namespace ingress-nginx --set controller.replicaCount=1 --set rbac.create=true
이제 ge는 공용 IP가 할당된 모든 컨트롤러가 있는지 확인하기 위해 서비스를 확인할 수 있습니다.



이제 각 환경에 대한 새 네임스페이스를 만듭니다. 평소처럼 거기에 모든 것을 배치하십시오. 테스트만 하는 경우 nginx만 배포할 수 있습니다. 이제 Ingress 라우팅 파일을 살펴보고 다음과 같이 가정해 보겠습니다.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: blog-dev-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: blog-dev
spec:
  rules:
  - http:
      paths:
        - path: /
          backend:
            serviceName: nginx-service
            servicePort: 80

7행을 확인하십시오. Ingress 파일이 컨트롤러 중 하나를 가리키는 ingress.class 주석이 있습니다. Helm과 함께 컨트롤러를 설치했을 때를 기억한다면 --set controller.ingressClass=blog-dev는 Ingress 컨트롤러의 클래스를 설정합니다. 각 배포의 Ingress를 다른 컨트롤러로 가리키기만 하면 됩니다. 제대로 수행한 경우 kubectl get svc -n ingress-nginx에서 찾은 LoadBalancer의 IP를 통해 모든 환경에 액세스할 수 있습니다.

이제 IP를 통해 모든 환경에 액세스할 수 있지만 일반적으로 SSL이 필요하거나 팀이 환경에 쉽게 액세스할 수 있도록 URL만 있으면 됩니다.

다음 명령을 따르십시오.az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, 'YOUR_IP_HERE')].[id]" --output tsv (YOUR_IP_HERE에 인용 부호 유지)

이전 명령의 출력을 여기에 넣습니다.az network public-ip update --ids OUTPUT --dns-name blog-dev
그러면 LoadBalancer의 IP가 blog-dev.westeurope.cloudapp.azure.com 모양의 URL과 연결됩니다. (글쎄, 서유럽이나 다른 지역.)

이제 새 URL의 연결만 허용하도록 인그레스를 편집합니다.

spec:
  rules:
  - host: blog-dev.westeurope.cloudapp.azure.com
    http:
      paths:
        - path: /
          backend:
            serviceName: nginx-service
            servicePort: 80

그리고 끝났습니다! 동일한 AKS에는 n개의 환경이 있으며 모두 다른 네임스페이스, 다른 URL 및 따라서 다른 IP 주소를 사용합니다. 이들은 완전히 격리된 환경이며 일부 RBAC 액세스 역할을 추가하여 블로그 개발자가 예를 들어 camunda 환경에 액세스하는 것을 금지하는 것이 좋을 수 있습니다.

도움이 되셨기를 바랍니다. 그렇다면 공유하고 좋아요를 눌러주세요!

좋은 웹페이지 즐겨찾기