이 문서에서는 Google Kubernetes Engine 클러스터에 애플리케이션을 배포하는 방법을 설명합니다.
Google Cloud Deploy를 사용하면 모든 Google Kubernetes Engine 클러스터에 컨테이너 기반 워크로드를 배포할 수 있습니다. GKE 대상에 배포할 때는 모든 Google Cloud Deploy 기능이 지원됩니다.
시작하기 전에
배포할 GKE 클러스터가 하나 이상 있어야 합니다.
배포할 GKE 클러스터가 없는 경우 클러스터를 만들면 됩니다.
Google Cloud Deploy 배포 파이프라인이 있어야 합니다.
이 skaffold.yaml
파일에서 deploy
스탠자는 kubectl
을 포함하며, Skaffold가 렌더링되어 Kubernetes(GKE)에 배포됨을 나타냅니다. 이 애플리케이션에 사용하는 매니페스트가 아래에 나와 있습니다.
대상 구성 만들기
각 대상은 배포 파이프라인 YAML에서 구성하거나 별도의 파일에 포함할 수 있습니다. 또한 동일한 파일에 대상을 두 개 이상 구성할 수 있지만 서로 다른 kind: Target
스탠자에 있어야 합니다.
대상 정의에서 GKE 클러스터를 가리키는 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/v3alpha1
kind: Config
metadata:
name: gke-application
deploy:
kubectl:
manifests:
- [MANIFEST]
Google Cloud Deploy에서 Skaffold 사용에서 배포 파이프라인에 Skaffold를 사용하는 방법을 자세히 설명하고 있습니다.
Kubernetes 매니페스트 준비
GKE에 애플리케이션을 배포하려면 Google Cloud Deploy에 하나 이상의 Kubernetes 매니페스트를 제공합니다. 이 매니페스트는 렌더링된 후 하나 이상의 대상 클러스터에 적용되어 애플리케이션에 배포됩니다.
이러한 매니페스트가 없으면 Google Cloud Deploy 배포 파이프라인을 사용하여 배포하기 전에 매니페스트를 만듭니다.
Kustomize 또는 Helm을 사용하여 매니페스트를 만들 수 있습니다. 매니페스트가 템플릿화되었고 렌더링이 필요한 경우에도 Kustomize 또는 Helm을 사용할 수 있습니다.
요약 정리
Kubernetes 매니페스트, skaffold.yaml
구성, Google Cloud Deploy 대상 정의가 준비되었으며 Google Cloud Deploy 리소스로 대상을 등록했습니다. 이제 배포 파이프라인을 호출하여 출시 버전을 만들고 파이프라인에 정의된 대상의 진행을 따라 진행할 수 있습니다.
비공개 클러스터에 배포
다음 두 가지 옵션 중 하나를 사용하여 애플리케이션을 비공개 GKE 클러스터에 배포할 수 있습니다.
Virtual Private Cloud 네트워크 사용
Virtual Private Cloud 네트워크에 연결된 비공개 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"
자세한 내용은 Cloud Build 비공개 풀로 비공개 GKE 클러스터에 액세스를 참조하세요.
프로젝트 및 권한 고려 사항
비공개 클러스터에 배포할 수 있는 비공개 작업자 풀을 사용하도록 대상을 구성할 수 있습니다. 하지만 리소스가 다른 프로젝트에 있는 경우 유의해야 할 몇 가지 사항이 있습니다.
- Google Cloud Deploy와 작업자 풀이 개별 프로젝트에 있는 경우
VPC에 대한 액세스 권한이 있고 대상과 다른 프로젝트에 있는 비공개 풀과 통신하려면 Google Cloud Deploy 서비스 에이전트에 해당 프로젝트와 통신할 수 있는 충분한 권한이 필요합니다.
실행 서비스 계정은 Cloud Storage 버킷에 액세스할 수 있는 권한도 필요합니다.
- 작업자 풀과 클러스터가 개별 프로젝트에 있는 경우
비공개 GKE 클러스터가 비공개 작업자 풀과 다른 프로젝트에 있는 경우 실행 서비스 계정은 클러스터가 있는 프로젝트와 통신할 수 있는 충분한 권한이 필요합니다.
Anthos 대상 및 connect 게이트웨이 사용
Anthos 대상 및 connect 게이트웨이를 사용하여 비공개 GKE 클러스터에 배포하도록 대상을 구성할 수 있습니다.
이 접근 방식에서는 Virtual Private Cloud 또는 가상 사설망 연결을 사용할 필요가 없습니다.
다음 단계
빠른 시작: GKE에 애플리케이션 배포 사용해 보기
배포 파이프라인을 호출하여 출시 버전 만들기
Google Cloud Deploy 대상 구성 자세히 알아보기
Google Cloud Deploy에서 Skaffold 사용 자세히 알아보기
Google Cloud Deploy 실행 환경 알아보기
GKE 자세히 알아보기