Google Cloud Platform에서 Spinnaker 설치 및 관리

이 솔루션은 누가 사용하면 좋은가요?

Google Cloud Platform의 Spinnaker는 프로덕션에 즉시 사용 가능한 Spinnaker 인스턴스를 손쉽게 설치하고 해당 인스턴스를 장기적으로 관리하는 데 사용되는 도구입니다.

이 솔루션은 다음 용도로 사용됩니다.

  • Google Cloud Platform에서 프로덕션에 즉시 사용 가능한 구성으로 오픈소스 Spinnaker를 쉽게 설치할 수 있는 방법을 원하는 모든 사람

  • Spinnaker를 '미리 살펴보고' 자신의 요구사항에 맞는 CD 솔루션인지 결정하고자 하는 모든 사람

  • 관리자 추가, 계정 추가, 업그레이드 등 Spinnaker의 장기 실행 인스턴스 여러 개를 관리하게 될 관리자

이 솔루션은 다음과 같은 이점을 제공합니다.

  • GCP에 Spinnaker를 설치하고 실행할 때 Google에서 권장하는 방법

  • Spinnaker가 일반적으로 함께 사용되는 기타 여러 서비스와 사전 통합

  • 원활한 진행을 위한 샘플 애플리케이션 및 기타 도우미

이 솔루션은 무엇인가요?

Google Cloud Platform용 Spinnaker는 Google Cloud Platform에 Spinnaker를 설치하고 관리하는 데 사용되는 솔루션입니다. 설치 및 관리 콘솔, Spinnaker 및 해당 마이크로서비스, 샘플 애플리케이션으로 구성됩니다.

Spinnaker란 무엇인가요?

Spinnaker는 소프트웨어 변경사항을 빠르고 확실하게 공개할 수 있는 오픈소스 기반의 멀티 클라우드 지속적 배포 플랫폼입니다.

Spinnaker에 대해 자세히 알아보려면 Spinnaker 웹사이트를 참조하세요.

Deck란 무엇인가요?

Deck는 Spinnaker UI입니다. 다음 방법 중 하나를 사용하여 Deck에 액세스할 수 있습니다.

  • 포트 전달

    관리 콘솔은 포트 8080을 전달하는 명령어와 해당 포트를 통해 Deck에 액세스할 때 클릭하는 버튼을 제공합니다.

  • 인터넷을 통해 공개적으로 사용 가능한 도메인

    이 도메인은 IAP(Identity-Aware Proxy)로 보호됩니다.

관리 콘솔

관리 콘솔을 사용하면 다음 작업을 쉽게 수행할 수 있습니다.

  • Spinnaker 설치

    Google Cloud Platform용 Spinnaker를 사용하면 올바른 버전의 오픈소스 Spinnaker를 Google Kubernetes Engine에서 쉽게 실행할 수 있습니다. 설치 후 사용자가 사용할 수 있게 설정할 수 있습니다. 설치 과정은 솔루션 시작 후에 관리 콘솔에서 시작됩니다.

  • Spinnaker 관리

    이 관리 콘솔을 사용하여 관리자 추가, 추가 GKE 클러스터 또는 기타 제공업체에 배포할 계정 만들기 등 Spinnaker 설치 관리/운영 작업을 수행할 수 있습니다.

    Spinnaker 설치를 완료하면 관리 과정이 시작됩니다. Google Cloud Console의 GKE 애플리케이션 페이지에 있는 링크를 통해 직접 열 수도 있습니다.

관리 콘솔은 Cloud Shell을 사용하며 창 오른쪽의 가이드에 안내를 표시합니다. 이 가이드는 실행할 명령어를 표시하며 해당 명령어를 클릭하여 Cloud Shell에 복사하고 실행할 수 있습니다.

Cloud Shell이란 무엇인가요?

Cloud Shell은 GCP에 명령줄 액세스를 제공하는 Google Cloud Platform의 도구입니다.

안내를 찾아 복원하려면 어떻게 해야 하나요?

  • 오른쪽 창의 안내가 사라지면 Cloud Shell에서 다음 명령어를 입력하면 됩니다.

    cloudshell launch-tutorial ~/spinnaker-for-gcp/scripts/install/provision-spinnaker.md
    
  • 관리 콘솔로 돌아가려면 Google Cloud Platform에 Spinnaker 설치의 안내를 따라 다시 실행하면 됩니다.

  • 도움이 필요하면 이 문서를 다시 참조하세요.

사용 요금이 청구되나요?

Google Cloud Platform용 Spinnaker의 일부로 설치된 Google Cloud Platform 리소스에 대한 요금이 청구됩니다.

그리고 Spinnaker를 설치하고 구성할 때 선택한 옵션에 따라 다른 리소스에 대한 요금도 청구될 수 있습니다. Google Cloud Platform 가격 계산기를 사용하여 이 솔루션의 비용을 추정할 수 있습니다.

Google Cloud 가격 책정무료 체험판에 대해 자세히 알아보세요.

Spinnaker Google Cloud Platform 설치 및 사용

Marketplace에서 GCP용 Spinnaker 페이지 Google Cloud Platform용 Spinnaker로 이동 버튼을 클릭하여 이 솔루션에 액세스합니다.

Google Cloud Platform용 Spinnaker를 설치하면 Google Cloud Console에서 Spinnaker 및 관리 콘솔에 액세스할 수 있습니다.

Google Cloud Platform에 Spinnaker 설치

  1. Google Cloud Platform용 Spinnaker로 이동 버튼을 클릭하여 GCP용 Spinnaker Marketplace 페이지에서 솔루션을 시작합니다.

  2. Cloud Shell에서 열기 메시지가 표시되면 계속을 클릭합니다.

    Cloud Shell이 열리고 Spinnaker 저장소에 있는 파일을 보여주는 파일 트리와 안내가 표시됩니다.

    관리 콘솔

    spinnaker-for-gcp 저장소가 Cloud Shell에 클론됩니다.

  3. 화면에 표시되는 안내를 따릅니다.

관리 콘솔의 설치 과정에서는 명령어를 표시하여 설치 프로세스를 안내합니다. 이러한 명령어는 Cloud Shell 프롬프트에 복사한 다음 Enter 키를 누르면 실행할 수 있습니다. 명령어는 GKE에서 Spinnaker 설치 프로세스를 자동화하는 스크립트를 실행합니다.

언제든지 안내 창이 사라지면 Cloud Shell에서 다음 명령어를 사용하여 복원할 수 있습니다.

cloudshell launch-tutorial ~/spinnaker-for-gcp/scripts/install/provision-spinnaker.md

Spinnaker 액세스

Spinnaker를 설치한 후 포트 전달 명령어를 실행하면 Deck UI에 액세스하고 Spinnaker를 사용할 수 있습니다. port-forwarding 명령어는 사용자와 공유할 수 있으며 GKE 클러스터에 액세스할 수 있는 경우 포트 8080에서 Deck(Spinnaker UI)에 연결할 수 있습니다.

또는 IAP(Identity-Aware Proxy)를 사용하여 보호되는 공개 인터넷에 Spinnaker를 노출할 수 있습니다.

두 방법은 아래에 설명되어 있습니다.

포트를 전달하여 Spinnaker에 액세스

관리 콘솔의 Cloud Shell에서 명령어를 실행하여 localhost:8080에서 Spinnaker에 액세스할 수 있도록 포트를 전달할 수 있습니다.

  1. 관리 콘솔에서 connect_unsecured.sh 명령어를 클릭하여 복사하고 Enter 키를 누릅니다.

    그러면 로컬 포트 8080이 Deck를 실행 중인 pod의 포트 9000(Deck가 사용하는 포트)으로 전달됩니다.

  2. 'Spinnaker에 연결…' 링크를 클릭합니다. 그러면 미리보기 버튼이 강조 표시됩니다.

  3. 강조 표시된 미리보기 버튼을 클릭하고 포트 8080에서 미리보기를 선택합니다.

    포트 8080에서 미리보려면 클릭

브라우저에 Spinnaker 사용자 인터페이스인 Deck가 열립니다. Spinnaker 문서 사이트에 Spinnaker 사용에 대한 안내가 있습니다.

다시 관리 콘솔에서 다음과 같은 몇 가지 다른 작업을 수행할 수 있습니다.

  • 포트를 전달하지 않고도 팀이 Spinnaker를 안전하게 사용하도록 설정
  • Spinnaker 감사 로그 보기
  • Spinnaker 마이크로서비스의 로그 보기
  • 다음을 클릭하여 솔루션의 Spinnaker 관리 부분으로 이동합니다.
  • port-forwarding 명령어를 사용자와 공유합니다. 사용자가 GKE 클러스터에 액세스할 수 있는 경우 포트 8080에서 Deck(Spinnaker UI)에 연결할 수 있습니다.

사용자가 인터넷을 통해 Spinnaker에 액세스하도록 허용

콘솔에는 인터넷을 통해 안전하게 Spinnaker를 사용자에게 노출할 수 있게 해주는 보안 엔드포인트를 만드는 명령어가 포함되어 있습니다.

  1. 관리 콘솔에서 설치 과정의 2단계로 이동합니다('Spinnaker에 연결').

  2. 'Expose Spinnaker publicly(Spinnaker를 공개적으로 노출)'에서 버튼을 클릭하여 명령어를 명령줄에 복사하고 Enter 키를 누릅니다.

    스크립트가 Spinnaker 인스턴스를 제공할 새 엔드포인트를 만듭니다. 스크립트가 끝나면 사용자가 이 엔드포인트에 액세스할 수 있게 OAuth 설정 방법을 안내하도록 콘솔 안내가 변경됩니다.

  3. 화면에 표시되는 안내를 따릅니다.

    OAuth 사용자 인증 정보를 생성할 때 생성된 클라이언트 ID와 보안 비밀을 복사해야 합니다. 스크립트에서 클라이언트 ID와 보안 비밀을 입력하라는 메시지가 표시되면 복사한 항목을 입력해야 합니다.

이제 OAuth2를 사용하여 인증된 사용자와 공유할 수 있는 Spinnaker 엔드포인트가 생겼습니다. Spinnaker 링크가 관리 콘솔에 표시됩니다. 이 Spinnaker 인스턴스의 GKE 애플리케이션 페이지에도 링크가 있습니다.

Spinnaker 관리

관리 콘솔을 사용하여 다음을 비롯한 spinnaker 인스턴스 관리 작업을 수행합니다.

  • 관리자(운영자) 추가
  • 클라우드 제공업체 계정 추가

    제공업체는 애플리케이션을 배포할 클라우드 환경입니다(예: Google Compute Engine).

  • Spinnaker 업그레이드

  • Halyard 명령어를 호출하여 Spinnaker 구성

  • spin 명령어를 호출하여 애플리케이션 및 파이프라인과 같은 Spinnaker 리소스 관리

  1. 이 콘솔의 관리 부분에 액세스합니다.

    다음 옵션 중 하나를 사용합니다.

    콘솔이 이미 열려 있는 경우:

    1. 설치 과정이 끝나면 다음을 클릭합니다.

    2. 다음 단계 페이지에서 명령어를 복사하고 Enter 키를 누릅니다.

      안내 창이 변경되고 관리 프로세스가 시작됩니다.

      콘솔 내에서 Spinnaker 관리 시작

    콘솔이 아직 열려 있지 않은 경우:

    1. Google Kubernetes Engine 애플리케이션 페이지로 이동합니다.

    2. Spinnaker 애플리케이션을 엽니다.

      애플리케이션 설명에 Cloud Shell의 관리 환경 열기 링크가 있습니다.

    3. 링크를 클릭하여 관리 콘솔을 열면 이제 관리 기능이 시작됩니다.

      GKE 애플리케이션 페이지에서 Spinnaker 관리 시작

    4. GCP 프로젝트를 선택하고 시작을 클릭합니다.

Spinnaker 인스턴스의 관리자 추가

더 많은 운영자에게 액세스 권한을 부여하면 해당 운영자가 관리 콘솔을 사용할 수 있습니다.

  1. IAM 권한 페이지에서 사용자에게 Spinnaker를 설치한 GCP 프로젝트에 대한 Owner 역할을 부여합니다.

  2. IAP 보안 엔드포인트에 Spinnaker를 제공하고 있고 운영자 권한을 부여할 사용자에게 사용자 액세스 권한이 아직 없는 경우 다음 명령어를 사용합니다(콘솔 관리 부분의 5단계에도 있음).

    ~/spinnaker-for-gcp/scripts/manage/grant_iap_access.sh
    

    Cloud Shell 명령줄의 안내를 따릅니다.

클라우드 제공업체 계정 추가

관리 콘솔을 사용하여 클라우드 제공업체 계정을 Spinnaker가 지원하는 만큼 추가할 수 있습니다. 이는 사용자가 애플리케이션을 배포하려는 각 클라우드에 하나씩 있어야 합니다. 예를 들어 Google Compute Engine 및 AWS에 애플리케이션을 배포하는 경우 각각 하나씩 제공업체 계정을 추가합니다.

관리 콘솔에서 GKE 계정을 추가하는 데 사용되는 다음 명령어를 표시합니다.

~/spinnaker-for-gcp/scripts/manage/add_gke_account.sh

Google Compute Engine의 경우:

~/spinnaker-for-gcp/scripts/manage/add_gce_account.sh

Google App Engine의 경우:

~/spinnaker-for-gcp/scripts/manage/add_gae_account.sh

이러한 명령어는 관리 콘솔에서 실행하거나 Cloud Shell에서 기존 Spinnaker 인스턴스를 대상으로 입력할 수 있습니다.

Halyard 명령어 실행

모든 hal 명령어를 호출하여 Spinnaker 설치를 구성하고 관리할 수 있습니다.

이렇게 하려면 Spinnaker를 설치한 관리 콘솔의 Cloud Shell에서 명령어를 호출하기만 하면 됩니다.

Spinnaker 업그레이드

  1. 어느 버전으로 업그레이드할지 알아보세요.

    spinnaker.io의 버전 페이지에는 사용 가능한 안정적인 버전이 나와 있습니다.

  2. 콘솔에서 관리 과정으로 이동합니다.

    ~/spinnaker-for-gcp/scripts/manage/update_console.sh

  3. 'Scripts for Common Commands(일반적인 명령어 스크립트)'라는 제목의 화면이 나타날 때까지 다음을 클릭합니다.

  4. 'Spinnaker 업그레이드'에서 첫 번째 명령어를 셸에 복사하고 Enter 키를 누릅니다.

    이 명령어는 다음과 같습니다.

    cloudshell edit \
     ~/spinnaker-for-gcp/scripts/install/properties
    
  5. 표시되는 properties 파일에서 Spinnaker 버전을 수정합니다.

    export SPINNAKER_VERSION=1.14.8
    
  6. 다음 명령어를 통해 Halyard를 호출하여 변경사항을 적용합니다.

    ~/spinnaker-for-gcp/scripts/manage/update_spinnaker_version.sh
    

관리 콘솔 다시 시작

어떤 이유로 콘솔을 다시 시작해야 하는 경우(예: 탭이나 창을 닫은 경우) 콘솔을 시작할 때와 같은 방법으로 콘솔을 다시 시작할 수 있습니다. 이전에 Google Cloud Platform용 Spinnaker를 설치한 적이 있다면 Google Cloud Console의 GKE 애플리케이션 페이지에서도 실행할 수 있습니다.

콘솔을 다시 시작하면 원할 경우 중단한 부분부터 이어서 다시 시작할지 묻는 메시지가 표시됩니다.

관리 콘솔 업그레이드

  1. 관리 콘솔에서 3단계 '일반적인 명령어 스크립트'로 이동하여 페이지 하단으로 스크롤합니다.

  2. 'Upgrade Management Environment(관리 환경 업그레이드)'에 표시되는 명령어를 실행합니다.

관리 콘솔이 최신 변경사항을 포함하도록 업그레이드됩니다.

Google Cloud Platform용 Spinnaker 삭제

어떤 이유로 Spinnaker를 삭제하려면 다음 안내를 따르세요.

  1. 관리 콘솔을 열고 'Delete Spinnaker(Spinnaker 삭제)' 페이지가 표시될 때까지 다음을 클릭합니다.

  2. Cloud Shell 터미널에 명령어를 복사하고 Enter 키를 누릅니다.

이 Spinnaker 인스턴스용으로 생성된 모든 리소스와 배포된 기존 리소스가 모두 삭제됩니다.

샘플 애플리케이션

Google Cloud Platform용 Spinnaker 솔루션은 Spinnaker를 시작하는 데 도움이 되는 샘플 애플리케이션과 함께 제공됩니다.

설치하려면 다음 안내를 따르세요.

  1. 관리 콘솔에서 'Use Spinnaker(Spinnaker 사용)'이라는 제목의 단계가 표시될 때까지 다음을 클릭합니다.

  2. 샘플 애플리케이션 및 파이프라인 설치에서 버튼을 클릭하여 명령어를 붙여넣고 Enter 키를 누릅니다.

    Cloud Shell은 번호가 매겨진 사용 가능한 샘플 앱 목록을 반환합니다.

  3. 원하는 애플리케이션에 해당하는 번호를 누르거나 'Quit(종료)'에 해당하는 번호를 눌러 설치하지 않고 종료합니다.

  4. Enter 키를 누릅니다.

    그러면 가이드 창에 샘플 애플리케이션에 대한 안내가 표시됩니다.

  5. 샘플 앱을 종료하고 콘솔의 관리 부분으로 돌아가려면 시작을 클릭하고 다음을 클릭한 후 'Start a new build(새 빌드 시작)' 페이지 하단으로 스크롤하여 'Return to Spinnaker console(Spinnaker 콘솔로 돌아가기)'에서 명령어를 실행합니다.

기타 고려사항

GCP용 Spinnaker 아키텍처

Spinnaker 및 해당 마이크로서비스는 다음 아키텍처를 사용하여 GKE에 설치됩니다.

GCP의 Spinnaker 아키텍처

기존 클러스터에 Spinnaker 설치

Spinnaker 인스턴스를 기존 인프라에 설치할 수 있으므로 이 솔루션이 새 인프라를 만들 필요가 없습니다.

클러스터는 다음 조건을 충족해야 합니다.

  • 이 솔루션은 호스트형 Redis 인스턴스를 사용하므로 IP 별칭이 사용 설정되어 있어야 합니다.

  • 프로젝트 기본 서비스 계정을 사용하는 경우 해당 노드의 전체 Cloud Platform 범위가 설정되어 있어야 합니다.

설치 스크립트를 실행하기 전에 다음 작업을 수행합니다.

  1. 다음 명령어를 복사하고 실행합니다(설치 과정의 1단계에서도 사용 가능).

    cloudshell edit \
        ~/spinnaker-for-gcp/scripts/install/properties
    

    파일 편집기에 properties 파일이 열립니다.

  2. Spinnaker를 설치할 Kubernetes 클러스터를 식별하도록 properties 파일의 이 섹션을 수정합니다.

    # If cluster does not exist, it will be created.
    export GKE_CLUSTER=$DEPLOYMENT_NAME
    export ZONE=us-west1-b
    export REGION=us-west1
    
  3. 해당하는 경우 사용하려는 다른 기존 인프라와 계정을 식별하도록 다른 속성도 마찬가지로 수정합니다.

    예를 들어 기존 Cloud Memorystore Redis 인스턴스나 버킷 또는 서비스 계정이 있습니다. 두 사례 모두에서 인프라가 없으면 설치 스크립트에서 인프라를 자동으로 생성합니다.

여러 Spinnaker 설치 관리

여러 Spinnaker 인스턴스를 실행하는 경우 해당 인스턴스가 별도의 클러스터에 있고 서로 다른 Kubernetes 컨텍스트에 있어야 합니다.

설치 중 하나를 관리하려면 다음 안내를 따르세요.

  1. 사용자 인증 정보를 가져옵니다.

    gcloud container get-credentials
    
  2. 적절한 Kubernetes 컨텍스트로 전환합니다.

    kubectl config use-context <CONTEXT_NAME>
    
  3. 해당 클러스터에 저장된 구성을 가져옵니다.

    ~/spinnaker-for-gcp/scripts/manage/pull_config.sh.
    

이제 ~/spinnaker-for-gcp/scripts/install/properties의 구성은 해당 Spinnaker 인스턴스의 구성입니다. hal 명령어 실행과 같이 일반적으로 가능한 관리 작업을 수행합니다. Spinnaker는 선택된 컨텍스트의 Spinnaker 인스턴스에 이러한 명령어를 적용합니다.