빠른 시작: Git 저장소에서 구성 동기화

이 빠른 시작에서는 구성 동기화를 사용하여 Google Kubernetes Engine 클러스터를 관리하기 위한 GitOps 접근 방식을 구현하는 방법을 보여줍니다. GitOps 워크플로를 사용하면 Git 저장소를 클러스터 구성의 단일 정보 소스로 사용합니다.

구성 동기화를 사용하면 다음과 같은 이점이 있습니다.

  • 일관성 적용: 모든 클러스터의 구성이 동일하도록 보장하여 구성 드리프트의 위험을 줄입니다.
  • 보안 개선: 클러스터 구성을 중앙에서 관리하고 감사하여 보안 정책을 더 쉽게 적용할 수 있습니다.
  • 속도 향상: 구성 변경사항의 출시를 자동화하여 변경사항을 더 빠르고 안정적으로 배포할 수 있습니다.

이 튜토리얼에서는 GKE 클러스터를 만들고 샘플 저장소에서 구성 파일을 동기화하도록 구성 동기화를 구성합니다. 이 튜토리얼에서는 구성 동기화의 작동 방식을 이해하고 구성 동기화를 사용하여 일관되고 자동화된 방식으로 클러스터를 관리하는 방법을 알아봅니다.

시작하기 전에

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Make sure that you have the following role or roles on the project: Kubernetes Engine Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 액세스 권한 부여를 클릭합니다.
    4. 새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.

    5. 역할 선택 목록에서 역할을 선택합니다.
    6. 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
    7. 저장을 클릭합니다.
    8. 클러스터 만들기

      이 섹션에서는 이 튜토리얼에서 사용할 수 있는 클러스터를 만듭니다. 실제 시나리오에서는 여러 클러스터를 관리하는 경우가 많지만 이 튜토리얼을 단순화하기 위해 하나의 클러스터만 만들고 관리합니다.

      클러스터를 만들려면 다음 단계를 수행합니다.

      1. Google Kubernetes Engine API를 사용 설정합니다.

        GKE로 이동

      2. Google Cloud 콘솔에서 Kubernetes Engine 페이지로 이동합니다.

        Google Kubernetes Engine으로 이동

      3. 만들기를 클릭합니다.

      4. Autopilot 섹션에서 구성을 선택합니다.

      5. 클러스터 기본사항 섹션의 이름 필드에 cs-cluster를 입력합니다. 다른 모든 필드는 권장 기본값을 그대로 둡니다.

      6. 만들기를 클릭합니다. Kubernetes 클러스터 페이지로 이동합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다. 클러스터 옆에 있는 상태 열에 녹색 체크표시가 보이면 준비된 것입니다.

      클러스터 구성

      이제 클러스터가 있으므로 Git 저장소에서 구성 파일을 동기화하도록 구성 동기화를 구성할 수 있습니다.

      Google Cloud 콘솔에서 구성 동기화를 구성하려면 다음 단계를 완료하세요.

      1. Google Cloud 콘솔에서 기능 섹션 아래의 구성 페이지로 이동합니다.

        구성으로 이동

      2. 구성 동기화 설치를 클릭합니다.
      3. 사용할 구성 동기화 버전을 선택합니다.
      4. 설치 옵션에서 개별 클러스터에 구성 동기화 설치를 선택합니다.
      5. 사용 가능한 클러스터 테이블에서 cs-cluster를 선택하고 구성 동기화 설치를 클릭합니다. 몇 분 후 설정 탭에서 cs-cluster의 상태가 사용 설정됨으로 표시됩니다.
      6. 구성 동기화 대시보드에서 클러스터 패키지 배포를 클릭합니다.
      7. 패키지 배포를 위한 클러스터 선택 테이블에서 cs-cluster를 선택한 다음 계속을 클릭합니다.
      8. Git에서 호스팅되는 패키지를 선택한 상태로 두고 계속을 클릭합니다.
      9. 패키지 이름 필드에 sample-repository를 입력합니다.
      10. 저장소 URL 필드에 https://github.com/GoogleCloudPlatform/anthos-config-management-samples를 입력합니다.
      11. 경로 필드에 config-sync-quickstart/multirepo/root를 입력합니다.
      12. 다른 필드는 기본값 그대로 둡니다.
      13. 패키지 배포를 클릭합니다.

        몇 분 후 cs-cluster동기화 상태 열에 동기화됨이 표시됩니다.

      구성 동기화가 저장소에 동기화되었으므로 저장소의 구성과 클러스터 상태를 지속적으로 조정합니다.

      패키지 세부정보 보기

      구성 동기화에서 관리하는 객체를 보려면 패키지 탭으로 이동하여 cs-cluster를 클릭합니다. 패키지 세부정보 페이지에는 리소스 유형, 리소스가 동기화된 네임스페이스 등 동기화된 모든 리소스의 개요가 표시됩니다.

      (선택사항) 샘플 저장소 살펴보기

      클러스터에 적용된 구성은 /config-sync-quickstart/multirepo/ 저장소에 정의되어 있습니다. 이 샘플에서는 root 저장소로 표시되는 클러스터 관리자 수준 구성이 namespaces 저장소로 표시되는 네임스페이스 수준 구성과 분리된 다중 저장소 설정을 보여줍니다. 이 예에서는 이러한 구성이 서로 다른 폴더로 분할됩니다. 실제 시나리오에서는 액세스 권한이 서로 다른 두 저장소에 구성을 저장할 수 있습니다.

      개략적으로 클러스터 수준 또는 루트 저장소는 일반적으로 중앙 관리자가 관리하며 클러스터 전체 리소스, 네임스페이스 구성, 정책을 포함합니다. 네임스페이스 수준 저장소에는 일반적으로 개별 네임스페이스와 관련된 구성이 포함되며 애플리케이션 팀에서 관리하는 경우가 많습니다.

      루트 저장소에 저장할 수 있는 주요 파일 유형은 다음과 같습니다.

      • 네임스페이스 생성: namespace-gamestore.yaml과 같은 파일은 네임스페이스 자체를 생성합니다.
      • 클러스터 범위 리소스: 전체 클러스터에 영향을 미치는 파일에는 권한을 부여하는 클러스터 전체 역할을 추가하는 ClusterRole 객체와 같은 리소스가 포함됩니다.
      • 네임스페이스 저장소 연결: 이 다중 저장소 설정의 키 파일은 reposync-gamestore.yaml 파일입니다. 이 RepoSync 객체는 구성 동기화가 다른 경로에서 gamestore 네임스페이스의 구성을 동기화하도록 지시합니다. 이 예에서 RepoSync 객체는 동일한 저장소 내의 config-sync-quickstart/multirepo/ namespaces/gamestore 디렉터리를 가리키지만 실제 시나리오에서는 다른 Git 저장소를 가리킬 수 있습니다.

      네임스페이스 저장소에는 gamestore 네임스페이스의 애플리케이션별 구성이 포함되어 있습니다. 예를 들어 configmap-inventory.yaml 파일에는 gamestore 애플리케이션의 인벤토리 데이터가 포함됩니다. 이러한 유형의 GitOps 설정을 사용하면 애플리케이션 팀이 중앙 루트 저장소를 수정하지 않고도 자체 배포 및 네임스페이스 범위 리소스를 더 자율적으로 관리할 수 있습니다.

      삭제

      1. 콘솔에서 Google Cloud GKE 메뉴로 이동합니다.

        GKE로 이동

      2. cs-cluster 옆의 작업을 클릭한 다음 삭제를 클릭합니다.

      3. 확인 메시지가 나타나면 삭제를 다시 클릭합니다.

      다음 단계