Cloud Deploy에 Skaffold 사용

이 문서에서는 Skaffold 정의, Cloud Deploy에서 Skaffold를 사용하는 방법과 이유, Skaffold 사용을 위해 필요한 작업에 대해 설명합니다.

Cloud Deploy에서 Skaffold는 렌더링 및 배포 작업을 위해 사용됩니다. 또한 로컬 개발, 빌드, 테스트, 고급 배포 기능을 위해 사용할 수도 있습니다. 하지만 Cloud Deploy에는 렌더링 및 적용을 위해 매니페스트를 식별하는 Skaffold 구성필요합니다.

Skaffold란 무엇인가요?

Skaffold는 Kubernetes 네이티브 애플리케이션을 지속적으로 개발할 수 있게 해주는 명령줄 도구입니다. Skaffold를 사용해서 Cloud Deploy 지속적 배포 파이프라인에 사용할 로컬 개발 작업공간을 구성할 수 있습니다.

Skaffold에는 다음 기능이 포함되어 있습니다.

  • CI/CD 파이프라인 활동(빌드, 렌더링, 테스트 배포 등)을 개별적으로 제어할 수 있습니다.

  • 로컬 개발 도구로 유용합니다.

  • Skaffold 프로필을 사용하면 모두 동일한 구성 파일에서 서로 다른 빌드, 테스트, 배포 구성을 사용해서 여러 환경을 구분할 수 있습니다.

Cloud Deploy에 Skaffold가 사용되는 이유는 무엇인가요?

Google Cloud Deploy는 Skaffold를 사용해서 렌더링 도구와 전달 파이프라인을 구분합니다. 전달 파이프라인은 단순히 대상에서 대상으로의 진행을 정의하지만, Skaffold 구성은 렌더링되는 매니페스트 및 그 방법을 정의합니다. 이렇게 하면 전달 파이프라인 정의 방법에 영향을 주지 않고도 매니페스트 렌더링을 유연하게 수행할 수 있습니다.

Cloud Deploy에서 Skaffold를 사용할 때의 이점은 다음과 같습니다.

  • 손쉬운 온보딩

    로컬 개발 루프로 시작합니다. skaffold.yaml 파일을 팀과 공유해서 새로운 팀 멤버들에게 일관적인 도움을 줄 수 있습니다.

  • 여러 배포 대상 간 렌더링에 대한 일관적인 제어

    여러 대상에 대한 다양한 렌더링 및 배포가 포함된 Skaffold 프로필을 사용할 수 있습니다.

  • 전달 파이프라인 정의 방법을 훼손하지 않고 렌더링 도구 선택 가능

    Cloud Deploy는 Skaffold를 사용하여 배포 파이프라인 정의를 렌더링 세부정보와 분리할 수 있습니다. 이러한 분리를 통해 전달 파이프라인을 중단하지 않고도 매니페스트를 실험해볼 수 있습니다.

  • 일관성 있는 렌더링 프로세스

    렌더링 소스와 컨테이너를 사용해서 렌더링된 매니페스트를 생성합니다.

  • 배포 상태 확인

    Skaffold는 배포 상태를 점검하고 Cloud Deploy는 이를 사용합니다.

Cloud Deploy에서 Skaffold는 어떻게 사용되나요?

  • 출시 버전을 만들 때 컨테이너 이미지에 대한 렌더링 소스 및 참조가 Cloud Deploy로 전달됩니다.

    출시 버전을 만들 때 Cloud Deploy는 Cloud Build를 호출하고, Cloud Build는 다시 skaffold diagnoseskaffold render를 호출해서 해당 렌더링 소스 및 이미지를 사용하여 매니페스트를 렌더링합니다.

  • Skaffold 프로필을 사용하면 여러 대상에 적용되는 매니페스트를 분리할 수 있습니다.

  • Cloud Deploy는 정적 Skaffold 모듈을 지원합니다.

  • 배포 시 Cloud Deploy는 skaffold apply를 호출하여 렌더링된 매니페스트 또는 매니페스트를 대상 클러스터에 적용합니다.

  • 커스텀 대상을 사용하지 않는 한 Cloud Deploy는 애플리케이션 배포에 다른 배포자를 사용하는 것을 지원하지 않습니다. 하지만 Helm 또는 Kustomize와 같은 도구를 렌더러로 사용할 수 있습니다. Cloud Deploy가 특정 배포자(예: Helm)를 사용하지 않고 배포하는 방법에 관해 자세히 알아보려면 서비스 아키텍처를 참조하세요.

Skaffold 맞춤설정

  1. 파이프라인 요구사항에 맞게 Skaffold를 구성합니다.

    1. 전달 파이프라인의 요구사항을 결정합니다.

      포함할 대상 수는 몇 개인가요? 렌더링과 배포가 서로 동일한가요? 진행 중 각 대상에 대해 구성이 동일하면 Skaffold 프로필을 사용할 필요가 없습니다. 렌더링할 매니페스트를 기술하는 skaffold.yaml 파일만 필요합니다.

    2. 적용 가능한 경우 각 대상에 대해 Skaffold 프로필 만들기

      skaffold.yaml 파일에서 이를 정의하고 전달 파이프라인 정의 진행 시퀀스에서 바인딩합니다.

      Skaffold 프로필에 대한 자세한 내용은 Skaffold 문서를 참조하세요. 또한 Cloud Deploy에서 매니페스트 관리 문서에는 예시 프로필 구성이 포함되어 있습니다.

  2. 연속 통합 시스템에 Cloud Deploy를 연결합니다.

    CI 프로세스가 종료될 때 skaffold.yaml, 렌더링 소스, 렌더링된 매니페스트에 입력할 컨테이너 이미지를 전달합니다.

  3. 선택사항: Skaffold를 사용해서 로컬 개발 루프를 설정합니다.

    개발에 Skaffold 사용은 Cloud Deploy에서 선택사항입니다. Cloud Deploy를 작동하기 위해서는 렌더링할 매니페스트를 식별하는 skaffold.yaml 파일만 있으면 됩니다.

다음 단계