Fleet 전체에 리소스 배포

이 튜토리얼에서는 Fleet 패키지를 사용하여 클러스터의 Fleet에 Kubernetes 리소스 매니페스트를 배포하는 방법을 설명합니다. 구성 동기화의 Fleet 패키지와 같은 GitOps 도구를 사용하면 많은 수의 클러스터에서 구성 관리를 확장할 수 있습니다.

이 튜토리얼에서는 다음 태스크를 완료합니다.

  • Cloud Build에 Git 저장소 연결
  • Fleet에 클러스터 만들기 및 등록
  • 구성 동기화를 Fleet 기본값으로 설치
  • 저장소의 리소스를 클러스터 그룹에 배포

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    gcloud services enable anthos.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Install the Google Cloud CLI.
  9. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    gcloud services enable anthos.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  14. GitHub 계정을 만들거나 액세스 권한을 얻습니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

Git에 연결

Git 저장소에는 전체 함대에 배포할 리소스가 포함되어 있습니다. 이러한 리소스를 Fleet 패키지로 배포하려면 Git 저장소를 Cloud Build에 연결해야 합니다.

Git 저장소 만들기

이 튜토리얼에서는 GitHub를 Git 제공업체로 사용합니다. 새 GitHub 저장소를 만들려면 다음 단계를 완료하세요.

  1. 웹브라우저에서 GitHub를 엽니다.

  2. 필요한 경우 GitHub 계정에 로그인합니다. GitHub에서 다른 조직이나 팀에 액세스할 수 있으면 개인 계정으로 저장소를 만들어야 합니다.

  3. 툴바에서 추가 를 선택한 다음 새 저장소를 클릭합니다.

  4. fleet-package-tutorial를 저장소 이름으로 입력합니다.

  5. 저장소 공개 상태로 공개를 선택한 상태로 유지합니다.

  6. 저장소 만들기를 선택합니다.

Cloud Build에 저장소 연결

구성 동기화의 Fleet 패키지 서비스는 Cloud Build를 사용하여 Git 저장소에서 Kubernetes 리소스를 동기화하고 가져옵니다.

GitHub 저장소를 Cloud Build에 연결하려면 다음 단계를 완료하세요.

  1. Google Cloud 콘솔에서 Cloud Build 페이지를 열고 저장소를 선택합니다.

    저장소 페이지 열기

  2. 2세대 저장소 페이지에 있는지 확인합니다. 필요한 경우 저장소(2세대) 보기를 선택합니다.

  3. 호스트 연결 만들기를 클릭합니다.

  4. 리전 메뉴에서 us-central1(아이오와)을 리전으로 선택합니다.

  5. 이름 필드에 연결 이름으로 fleet-package-quickstart-connection을 입력합니다.

  6. 연결을 클릭합니다.

  7. Cloud Build를 GitHub 계정에 처음 연결하는 경우에는 다음 단계를 완료합니다.

    1. GitHub OAuth 토큰에 대한 요청을 수락합니다. 이 토큰은 Cloud Build GitHub 연결에 사용할 수 있도록 Secret Manager에 저장됩니다. 계속을 클릭합니다.
    2. GitHub 저장소에 Cloud Build를 설치합니다. 새 계정에 설치를 선택합니다.
    3. 새 GitHub 창이 열리면 이전에 Cymbal Bank 포크를 만든 GitHub 계정을 선택합니다. 프로덕션 환경에서는 액세스 권한을 위임한 다른 계정이나 저장소를 선택할 수 있습니다.
    4. 인증 메시지에 따라 GitHub에서 ID를 확인합니다.
    5. Cloud Build 저장소 액세스에 사용되는 GitHub 창에서 저장소만 선택을 선택합니다.
    6. 저장소가 나열된 드롭다운 메뉴에서 fleet-package-tutorial 저장소를 선택합니다.
    7. 저장을 클릭합니다.
  8. Google Cloud 콘솔의 Cloud Build 페이지에서 저장소 연결을 클릭하여 새 Git 저장소를 Cloud Build에 연결합니다.

  9. 연결 메뉴에서 fleet-package-quickstart-connection을 선택합니다.

  10. 저장소 메뉴에서 fleet-package-tutorial 저장소를 선택합니다.

  11. 링크를 선택합니다.

Fleet 설정

이 섹션에서는 클러스터를 만들고 Fleet에 등록한 후 구성 동기화를 Fleet 패키지로 설치하여 Fleet를 설정합니다.

클러스터 만들기

Fleet 패키지를 사용하여 여러 클러스터에 리소스를 배포하는 방법을 보여주기 위해 이 튜토리얼에서는 두 개의 클러스터를 만드는 방법을 보여줍니다.

두 클러스터를 만들고 프로젝트의 Fleet에 등록하려면 다음 단계를 따르세요.

  1. GKE 클러스터를 만듭니다.

    gcloud container clusters create-auto cluster1 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

    다음을 바꿉니다.

    • PROJECT_ID를 프로젝트 ID로 바꿉니다.
    • REGION을 클러스터를 만들 리전으로 바꿉니다(예: us-central1).
  2. 두 번째 GKE 클러스터를 만듭니다.

    gcloud container clusters create-auto cluster2 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

구성 동기화를 Fleet 기본값으로 설치

Fleet 패키지 서비스를 사용하려면 두 클러스터 모두에 구성 동기화가 설치되어 있어야 합니다. 다음 단계를 완료하여 여러 클러스터에 구성 동기화를 한 번에 설치하고 향후 Fleet에 등록되는 모든 클러스터에 설치할 수 있습니다.

  1. Google Cloud 콘솔에서 기능 관리자 페이지로 이동합니다.

    기능 관리자로 이동

  2. 구성 동기화 창에서 구성을 클릭합니다.

  3. Fleet 맞춤설정을 클릭합니다. 대화상자가 표시되면 자동 업그레이드를 선택합니다. 이 설정을 사용하면 클러스터에 Fleet 패키지를 지원하는 구성 동기화 버전이 포함됩니다.

  4. 변경사항 저장을 클릭합니다.

  5. 구성을 클릭합니다.

  6. 플릿 설정 구성 확인 대화상자에서 확인을 클릭합니다. 이전에 구성 동기화를 사용 설정하지 않은 경우 확인을 클릭하면 anthosconfigmanagement.googleapis.com API도 사용 설정할 수 있습니다.

  7. Fleet의 클러스터 테이블에서 두 클러스터를 모두 선택한 다음 Fleet 설정과 동기화를 클릭합니다. 이렇게 하면 구성한 설정으로 두 클러스터 모두에 구성 동기화가 설치됩니다.

    클러스터가 동기화되는 데 몇 분 정도 걸릴 수 있습니다. 구성 동기화가 설치됨으로 표시되면 다음 단계를 진행할 수 있습니다.

Cloud Build용 서비스 계정 설정

서비스 계정을 만들고 Cloud Build에 필요한 권한을 부여하려면 다음 단계를 완료하세요.

  1. 서비스 계정을 만듭니다.

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. 리소스 번들 게시자 역할에 대한 IAM 정책 바인딩을 추가하여 서비스 계정에 Git 저장소에서 리소스를 가져올 수 있는 권한을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/configdelivery.resourceBundlePublisher'
    

    메시지가 표시되면 정책 조건으로 None을 선택합니다.

  3. 로그 작성자 역할에 대한 IAM 정책 바인딩을 추가하여 서비스 계정에 로그를 작성할 수 있는 권한을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/logging.logWriter'
    

    메시지가 표시되면 정책 조건으로 None을 선택합니다.

전체 Fleet에 리소스 배포

이 튜토리얼에서는 Git 저장소에 nginx 배포가 포함된 Kubernetes 매니페스트를 추가하고, 출시 버전을 게시한 후, nginx 애플리케이션을 배포할 Fleet 패키지를 만듭니다.

저장소에 Kubernetes 매니페스트 커밋

GitHub에 리소스를 추가하고 출시를 게시하려면 다음 단계를 완료하세요.

  1. GitHub 저장소의 웹브라우저 창에서 파일 추가를 클릭한 후 새 파일 만들기를 클릭합니다.

  2. 파일 이름을 deployment.yaml로 지정하고 다음 콘텐츠를 붙여넣습니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx:1.14.2
            name: nginx
            ports:
            - containerPort: 80
    
  3. 변경사항 커밋을 클릭합니다.

  4. 확인 대화상자에서 main 브랜치에 직접 커밋을 선택한 상태로 유지하고 변경사항 커밋을 클릭합니다.

  5. 저장소의 기본 페이지에 있는 사이드바에서 출시 버전을 선택합니다.

  6. 페이지 상단에서 새 출시 버전 초안 작성을 선택합니다.

  7. 태그 선택 메뉴를 선택하고 태그로 v1.0.0을 입력합니다. 새 태그 만들기를 클릭합니다.

  8. 출시 버전 게시를 클릭합니다.

Fleet 패키지를 사용하여 클러스터에 리소스 배포

새 리소스를 배포하려면 새 Fleet 패키지를 만듭니다.

  1. 이 Fleet 패키지는 선택기 필드를 포함하지 않으므로 Fleet의 모든 클러스터를 타겟팅합니다. 즉, 향후 Fleet에 추가될 클러스터에 nginx 배포가 자동으로 추가됩니다.

    Cloud Shell에서 다음 콘텐츠가 포함된 fleet-package.yaml 파일을 만듭니다.

    resourceBundleSelector:
      cloudBuildRepository:
        name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME
        tag: v1.0.0
        serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com
        path:
    target:
      fleet:
        project: projects/PROJECT_ID
    rolloutStrategy:
      rolling:
        maxConcurrent: 1
    

    REPOSITORY_NAME을 Cloud Build의 저장소 이름으로 바꿉니다. 일반적으로 USERNAME-REPOSITORY_NAME 형식입니다.

  2. 출시를 시작할 Fleet 패키지를 만듭니다.

    gcloud alpha container fleet packages create fp-nginx.yaml \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. Fleet 패키지가 생성되었는지 확인합니다.

    gcloud alpha container fleet packages list
    

    제공된 링크를 클릭하면 Cloud Build 작업의 스트리밍 로그를 볼 수 있습니다.

    Fleet 패키지가 Fleet 전체에서 Kubernetes 리소스를 출시하기 시작합니다.

  4. Google Cloud 콘솔의 Google Kubernetes Engine 페이지에서 워크로드 페이지로 이동하여 모든 GKE 클러스터에 배포되는 워크로드의 집계된 뷰를 확인합니다.

    워크로드 페이지 열기

    워크로드를 사용할 수 있기까지 몇 분 정도 걸릴 수 있습니다. Autopilot에서 새 배포의 리소스 요청을 조정하는 동안 가용성 오류가 발생할 수도 있습니다.

    maxConcurrent:가 Fleet 패키지 정의에서 1로 설정되어 있으므로 Fleet 패키지 API는 nginx-deployment가 한 클러스터에 완전히 배포될 때까지 기다린 후 두 번째 클러스터에 대한 배포를 시작합니다. 출시 전략을 maxConcurrent: 2 이상으로 변경하면 리소스가 두 클러스터에 동시에 배포됩니다.

    몇 분 후 두 클러스터 모두에 nginx-deployment의 새 워크로드 2개가 표시됩니다. 페이지를 새로 고쳐야 할 수도 있습니다.

Fleet 패키지를 사용하여 다양한 배포 전략을 계속 살펴볼 수 있습니다. 예를 들어 Fleet에 새 클러스터를 추가하여 워크로드가 새 클러스터에 자동으로 배포되는 것을 관찰할 수 있습니다. 배포 전략 및 변형에 관한 자세한 내용은 Fleet 패키지 배포를 참고하세요.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 Google Cloud 프로젝트를 삭제하면 됩니다.

이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 만든 프로젝트를 삭제하세요.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

다음 단계를 완료하여 저장소를 삭제할 수 있습니다.

  1. Cymbal Bank GitHub 포크 웹브라우저 창의 저장소 이름 아래에서 설정을 클릭합니다.

  2. 일반 설정 페이지 (기본적으로 선택됨)에서 위험 영역 섹션으로 이동하고 이 저장소 삭제를 클릭합니다.

  3. 이 저장소를 삭제하고 싶습니다를 클릭합니다.

  4. 경고를 읽고 이 영향을 읽고 이해했습니다를 클릭합니다.

  5. 올바른 저장소를 삭제하는지 확인하려면 텍스트 필드에 저장소 이름을 입력합니다.

  6. 이 저장소 삭제를 클릭합니다.

다음 단계

  • Fleet 패키지에 대해 자세히 알아보세요.
  • Fleet 패키지 배포 방법을 알아보세요.
  • GKE Enterprise에서 최신 애플리케이션 환경을 배포, 실행, 관리하는 방법을 안내하는 일련의 튜토리얼인 확장형 앱 튜토리얼 앱 튜토리얼을 사용해 보세요. 여기에는 플릿 패키지로 구성 변경을 확장하는 방법을 살펴보는 변경 관리 중앙화 튜토리얼이 포함되어 있습니다.