이 문서에서는 Google Kubernetes Engine 클러스터에 애플리케이션을 배포하는 방법을 설명합니다.
Cloud Deploy를 사용하면 컨테이너 기반 워크로드를 모든 Google Kubernetes Engine 클러스터에 배포할 수 있습니다. GKE 대상에 배포할 때는 모든 Cloud Deploy 기능이 지원됩니다.
시작하기 전에
배포할 GKE 클러스터가 하나 이상 있어야 합니다.
배포할 GKE 클러스터가 없는 경우 클러스터를 만들면 됩니다.
이 skaffold.yaml
파일에서 deploy
스탠자는 kubectl
을 포함하며, Skaffold가 렌더링되어 Kubernetes(GKE)에 배포됨을 나타냅니다. 이 애플리케이션에 사용하는 매니페스트가 아래에 나열됩니다.
대상 구성 만들기
각 대상은 배포 파이프라인 YAML에서 구성하거나 별도의 파일에 포함할 수 있습니다. 또한 동일한 파일에 대상을 두 개 이상 구성할 수 있지만 서로 다른 kind: Target
스탠자에 있어야 합니다.
타겟은 전송 파이프라인과 동일한 프로젝트 및 리전에 정의되어야 합니다. 하지만 서비스 계정에 해당 프로젝트에 대한 액세스 권한이 있는 한 타겟이 배포되는 클러스터는 서로 다른 프로젝트 및 리전에 있을 수 있습니다.
대상 정의에서 GKE 클러스터를 가리키도록 gke
스탠자를 만듭니다.
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
이 GKE 리소스 식별자는 다음 요소를 사용합니다.
[
project_name
]은 이 클러스터를 실행하는 Google Cloud 프로젝트의 이름입니다.배포 대상 클러스터가 배포 파이프라인과 동일한 프로젝트에 있을 필요는 없습니다.
[
location
]은 클러스터가 생성된 리전입니다.[
cluster_name
]은 클러스터를 만들 때 클러스터에 지정된 이름입니다.이 이름은 Google Cloud 콘솔에서 프로젝트의 클러스터 목록에서 찾을 수 있습니다.
다음은 GKE 클러스터를 가리키는 대상 구성의 예시입니다.
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development cluster
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
Skaffold 구성 만들기
이 섹션에서는 GKE 클러스터에 배포할 때 사용할 간단한 Skaffold 구성의 예시를 제공하고 설명합니다.
다음은 GKE 클러스터에 배포하기 위한 skaffold.yaml
파일의 예시입니다.
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
Cloud Deploy에서 Skaffold 사용에서 배포 파이프라인에 Skaffold를 사용하는 방법을 자세히 설명하고 있습니다.
Kubernetes 매니페스트 준비
GKE에 애플리케이션을 배포하려면 Cloud Deploy에 하나 이상의 Kubernetes 매니페스트를 제공합니다. 이 매니페스트는 렌더링된 후 하나 이상의 대상 클러스터에 적용되어 애플리케이션에 배포됩니다.
이러한 매니페스트가 없으면 Cloud Deploy 배포 파이프라인을 사용하여 배포하기 전에 매니페스트를 만듭니다.
Kustomize 또는 Helm을 사용하여 매니페스트를 만들 수 있습니다. 매니페스트가 템플릿화되었고 렌더링이 필요한 경우에도 Kustomize 또는 Helm을 사용할 수 있습니다.
요약 정리
Kubernetes 매니페스트, skaffold.yaml
구성, Cloud Deploy 대상 정의가 준비되었으며 Cloud Deploy 리소스로 대상을 등록했습니다. 이제 배포 파이프라인을 호출하여 출시 버전을 만들고 파이프라인에 정의된 대상의 진행을 따라 진행할 수 있습니다.
프록시를 사용하여 배포
대상 GKE 클러스터의 프록시를 지정할 수 있습니다. 프록시를 통해서만 클러스터에 액세스하도록 설정된 조직을 위한 것입니다.
이렇게 하려면 대상 구성의 gke
스탠자에 proxyUrl
속성을 추가합니다.
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
여기서 URL
은 프록시의 URL입니다.
비공개 클러스터에 배포
다음 두 가지 옵션 중 하나를 사용하여 애플리케이션을 비공개 GKE 클러스터에 배포할 수 있습니다.
가상 프라이빗 클라우드(VPC) 네트워크 사용
가상 프라이빗 클라우드(VPC) 네트워크에 연결된 비공개 GKE 클러스터에 배포하도록 대상을 구성할 수 있습니다.
-
비공개 클러스터는 기본적으로 노드와 포드가 공개 인터넷으로부터 격리되는 VPC 기반 클러스터입니다.
비공개 클러스터 대상의 내부 IP를 사용하려는 경우 대상 구성의
gke
에서internalIp
를true
로 설정합니다. Cloud Build에서 이 비공개 클러스터에 배포하는 데 사용할 수 있는 비공개 작업자 풀을 만듭니다.
-
RENDER
에는 이 풀을 사용해야 합니다.DEPLOY
및VERIFY
에도 사용할 수 있습니다. 다음은RENDER
및DEPLOY
를 사용하는 예시입니다.executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
자세한 내용은 GKE용 ID 서비스를 사용하여 Cloud Build 비공개 풀에서 비공개 GKE 클러스터에 액세스 및 Cloud Build 비공개 풀로 비공개 GKE 클러스터에 액세스를 참조하세요.
프로젝트 및 권한 고려 사항
비공개 클러스터에 배포할 수 있는 비공개 작업자 풀을 사용하도록 대상을 구성할 수 있습니다. 하지만 리소스가 다른 프로젝트에 있는 경우 유의해야 할 몇 가지 사항이 있습니다.
- Cloud Deploy와 작업자 풀이 개별 프로젝트에 있는 경우
VPC에 대한 액세스 권한이 있고 대상과 다른 프로젝트에 있는 비공개 풀과 통신하려면 Cloud Deploy 서비스 에이전트에 해당 프로젝트와 통신할 수 있는 충분한 권한이 필요합니다.
실행 서비스 계정은 Cloud Storage 버킷에 액세스할 수 있는 권한도 필요합니다.
- 작업자 풀과 클러스터가 개별 프로젝트에 있는 경우
비공개 GKE 클러스터가 비공개 작업자 풀과 다른 프로젝트에 있는 경우 실행 서비스 계정은 클러스터가 있는 프로젝트와 통신할 수 있는 충분한 권한이 필요합니다.
GKE Enterprise 대상 및 connect 게이트웨이 사용
Anthos 대상 및 connect 게이트웨이를 사용하여 비공개 GKE 클러스터에 배포하도록 대상을 구성할 수 있습니다.
이 접근 방식에서는 Virtual Private Cloud 또는 가상 사설망 연결을 사용할 필요가 없습니다.
다음 단계
빠른 시작: GKE에 애플리케이션 배포 사용해 보기
배포 파이프라인을 호출하여 출시 버전 만들기
Cloud Deploy 대상 구성 자세히 알아보기
Cloud Deploy에서 Skaffold 사용자세히 알아보기
Cloud Deploy 실행 환경 알아보기
GKE 자세히 알아보기