기존 GKE 클러스터에 다른 IAP 커넥터 배포

이 페이지에서는 추가 온프레미스 IAP 커넥터를 프로덕션 환경의 기존 Google Kubernetes Engine(GKE) 클러스터에 배포하는 프로세스에 대해 설명합니다. Google Cloud SDK, kubectl, Helm과 같은 도구에 이미 잘 알고 있어야 합니다.

온프레미스 IAP 커넥터를 처음으로 배포하는 방법에 대한 간단한 개요는 온프레미스 앱에 IAP 사용 설정을 참조하세요.

시작하기 전에

다음을 사용하여 배포할 준비가 되었는지 확인하세요.

  • 기존 GKE 클러스터
    • VPC 기반(IP 별칭)을 사용하도록 클러스터를 설정해야 합니다. 클러스터에 있는 VPC는 VPC(NAT 게이트웨이 등)의 경로를 통해 인터넷에 액세스할 수 있어야 합니다.
    • GKE 클러스터가 단일 클러스터에서 여러 IAP 커넥터 인스턴스를 제공하려면 개별 애플리케이션을 지원하는 pod와 함께 자동 확장되도록 구성해야 합니다.
  • GKE 클러스터(노드/pod)에서 백엔드/온프레미스 인스턴스로 트래픽을 허용하는 방화벽 규칙
  • Google 관리 SSL 인증서 및 고정 외부 IP
  • 로컬 클라이언트 머신에 설치된 Helm(버전 2.0.0 이상) 패키지 관리자
  • Ambassador 이미지를 검색하기 위해 서브넷에 구성된 Cloud NAT
  • 대상 풀 및 대상 프록시에 대해 설명된 TLS 인증서 제한을 수용하기 위해 증가된 전역 부하 분산기 수

Helm을 사용하여 구성 및 배포

  1. GitHub 저장소를 클론하여 시작합니다.

  2. 저장소를 클론한 iap-connector/terraform-and-helm/iap-connector/helm/values 디렉터리에 있는 Helm 차트 values_example.yaml을 구성합니다.

    이 차트는 두 개의 Ambassador 프록시를 통해 단일 전역 부하 분산기 프록시를 공유하는 클러스터에 두 개의 애플리케이션을 배포하는 방법을 보여줍니다. 프록시에는 각 앱마다 하나씩 두 개의 인증서가 바인딩되어 있습니다. 이 예시 파일은 단일 인그레스 프록시의 한계까지 지원하도록 맞춤설정할할 수 있습니다.

    YAML 파일이 구성되면 values.yaml으로 저장하세요.

  3. Helm을 초기화합니다.

    helm init
    
  4. GKE 클러스터에 설치할 수 있는 Helm 권한을 부여합니다.

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin
      --user system:serviceaccount:kube-system:default
    
  5. YAML 파일에 정의된 대로 Helm 차트를 설치하여 전역 부하 분산기, GKE의 인그레스 서비스, 백엔드 서비스를 만드세요.

    helm install --name my-release ./iap-connector -f values.yaml
    

HTTP 백엔드 애플리케이션 구성

기본적으로 Ambassador는 HTTPS를 사용하여 대상 리소스에 배포하지만 HTTP 백엔드를 선호할 수 있습니다. 배포를 HTTP로 변경하려면 다음을 수행하세요.

  1. 수정하려는 서비스를 찾습니다.

    kubectl get services
    
  2. 이전 명령어에서 서비스 이름을 복사하여 서비스를 수정합니다.

    kubectl edit service <serviceName>
    
  3. service로 시작하는 줄을 찾고 프로토콜을 https에서 http로, 포트 번호를 80으로 변경하세요.

    service:http://example.service.internal:80
    
  4. TLS를 지정하는 줄을 삭제합니다.

    tls:true