Spinnaker on GKE (도입편)
ToDo
Halyard on GKE Quickstart - [ htps //w w. s 핀아케 r. 이오 / 세츠 p / 쿠이 cks rt / 하 rdg / ]
이것을 그대로(최신판으로 해, asia-northeast1-c존에서) 해 보았다.
Spinnaker?
-> CD (Continuous Delivery Platform)
장점은
· Immutable Infrastructure *1의 철저
· 예측 가능하고 안전한 배포 파이프 라인 만들기
(cron에 의해서도 파이프라인 기동 가능 → k8s jobs의 관리에도)
역할
(인용: 참고 기사①)
이로 인해 출시
안정적인 이미지 만들기, 배포 후 테스트, 문제가 발생한 경우 되감기
등의 작업을 "제대로"관리할 수 있다
이 "제대로"부분을 이번에는 검증하고 싶다.
→ 이번에는 도입 만
Halyard?
-> Spinnaker 자체의 Deploy 관리 도구
Spinnaker는 복수의 컴포넌트(컨테이너)로 형성되어 있기 때문에, Halyard에서의 관리가 추천되고 있다.
Spinnaker의 각 컴포넌트의 Deploy, Test, Update의 실행을 포함한다.
필요한 것
· GCP 계정
·gcloud 명령 (GoogleCloudSDK)
GCE, GKE 사용
· · 이하의 API 활성화
Google Identity and Access Management (IAM) API
Google Cloud Resource Manager API
만드는 것
GCE에 Halyard를 배포하고 거기에서 GKE에 Spinnaker를 배포
해봤어
조금 시간이 걸리므로 먼저 GKE 클러스터를 만듭니다.
(1.8.4-gke.0, asia-northeast1-c, 나머지는 기본값)
왼쪽에 VM(GCE) 생성
GCP_PROJECT=$(gcloud info --format='value(config.project)')
HALYARD_SA=halyard-service-account
gcloud iam service-accounts create $HALYARD_SA \
--project=$GCP_PROJECT \
--display-name $HALYARD_SA
HALYARD_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$HALYARD_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/iam.serviceAccountKeyAdmin \
--member serviceAccount:$HALYARD_SA_EMAIL
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/container.admin \
--member serviceAccount:$HALYARD_SA_EMAIL
GCS_SA=gcs-service-account
gcloud iam service-accounts create $GCS_SA \
--project=$GCP_PROJECT \
--display-name $GCS_SA
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/storage.admin \
--member serviceAccount:$GCS_SA_EMAIL
HALYARD_HOST=$USER-halyard-`date +%m%d`
gcloud compute instances create $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--scopes=cloud-platform \
--service-account=$HALYARD_SA_EMAIL \
--image-project=ubuntu-os-cloud \
--image-family=ubuntu-1404-lts \
--machine-type=n1-standard-4
VM(GCE)에 SSH로 들어가기
gcloud compute ssh $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--ssh-flag="-L 9000:localhost:9000" \
--ssh-flag="-L 8084:localhost:8084"
최신 안정 버전 kubectl을 넣는다. (이번에는 v1.8.4가 들어갔다)
→ 시도했지만 화면이 표시되지 않는 버그가되어 꽤 막혔습니다.
튜토리얼대로 여기는 v1.6.1을 넣는다.
curl -O https://storage.googleapis.com/kubernetes-release/release/v1.6.1/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
안정판 halyard를 끼워넣는다.
curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/stable/InstallHalyard.sh
sudo bash InstallHalyard.sh
. ~/.bashrc
GKE 등록
GKE_CLUSTER_NAME={YOUR_GKE_CLUSTER_NAME}
GKE_CLUSTER_ZONE={YOUR_GKE_CLUSTER_ZONE}
gcloud config set container/use_client_certificate true
gcloud container clusters get-credentials $GKE_CLUSTER_NAME \
--zone=$GKE_CLUSTER_ZONE
GCS_SA=gcs-service-account
GCS_SA_DEST=~/.gcp/gcp.json
mkdir -p $(dirname $GCS_SA_DEST)
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud iam service-accounts keys create $GCS_SA_DEST \
--iam-account $GCS_SA_EMAIL
Spinnaker 최신 버전을 사용하도록 설정 (이번에는 v1.5.1이 설정됨)
hal config version edit --version $(hal version latest -q)
GCS 설정
hal config storage gcs edit \
--project $(gcloud info --format='value(config.project)') \
--json-path ~/.gcp/gcp.json
hal config storage edit --type gcs
GCR 설정
hal config provider docker-registry enable
hal config provider docker-registry account add my-gcr-account \
--address asia.gcr.io \
--password-file ~/.gcp/gcp.json \
--username _json_key
k8s 공급자 설정
hal config provider kubernetes enable
hal config provider kubernetes account add my-k8s-account \
--docker-registries my-gcr-account \
--context $(kubectl config current-context)
Deploy Spinnaker!
hal config deploy edit \
--account-name my-k8s-account \
--type distributed
hal deploy apply
Halyard (GCP) ⇔ Spinnaker (GKE) 연결
hal deploy connect
이번에는 로컬에서 9000 번을 링크하여 SSH 연결했으므로,
http://localhost:9000 에서 Spinnaker에 연결
※ deploy 후, OAuth를 설정하지 않은, GCR에 아무것도 없는 등 Warning이 나오지만 접속은 할 수 있다
감상
길어졌으므로, 실 동작에 대해서는 다른 기사에 쓰려고 생각합니다.
컨테이너 레지스트리(이번은 GCR)와 제휴해 주어 매우 편리해.
hal 명령 기억하지 않으면. 내용의 동작까지 이해할 수 있으면 k8s의 공부도 될 것 같다.hal deploy apply
SoCOOL! Halyard는 상주시키지 않아도 좋을까?
매우 유용한 기사
① Global Continuous Delivery with Spinnaker - Netflix 본가 블로그
→ 소개.
② Spinnaker의 Continuous Delivery - 메르카
→ 알기 쉽고 사용하고 싶어지는 기사. 간결하게 정리되어 있어 훌륭하다.
③ Compute Engine에서 Spinnaker 실행 - GCP Blog
→ "Spinnaker 정보"섹션을 이해하기 쉽습니다.
*1 불변의 인프라 (참고: ht tp // // 게으른. 아니. 이. jp / l / m / 엔 rp 리세 / rc c s / 1701 / 23 / l_kz_ 0123_01. jpg )
Reference
이 문제에 관하여(Spinnaker on GKE (도입편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Subaru365/items/83d5e761ef6bb5a22168
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
· GCP 계정
·gcloud 명령 (GoogleCloudSDK)
GCE, GKE 사용
· · 이하의 API 활성화
Google Identity and Access Management (IAM) API
Google Cloud Resource Manager API
만드는 것
GCE에 Halyard를 배포하고 거기에서 GKE에 Spinnaker를 배포
해봤어
조금 시간이 걸리므로 먼저 GKE 클러스터를 만듭니다.
(1.8.4-gke.0, asia-northeast1-c, 나머지는 기본값)
왼쪽에 VM(GCE) 생성
GCP_PROJECT=$(gcloud info --format='value(config.project)')
HALYARD_SA=halyard-service-account
gcloud iam service-accounts create $HALYARD_SA \
--project=$GCP_PROJECT \
--display-name $HALYARD_SA
HALYARD_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$HALYARD_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/iam.serviceAccountKeyAdmin \
--member serviceAccount:$HALYARD_SA_EMAIL
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/container.admin \
--member serviceAccount:$HALYARD_SA_EMAIL
GCS_SA=gcs-service-account
gcloud iam service-accounts create $GCS_SA \
--project=$GCP_PROJECT \
--display-name $GCS_SA
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/storage.admin \
--member serviceAccount:$GCS_SA_EMAIL
HALYARD_HOST=$USER-halyard-`date +%m%d`
gcloud compute instances create $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--scopes=cloud-platform \
--service-account=$HALYARD_SA_EMAIL \
--image-project=ubuntu-os-cloud \
--image-family=ubuntu-1404-lts \
--machine-type=n1-standard-4
VM(GCE)에 SSH로 들어가기
gcloud compute ssh $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--ssh-flag="-L 9000:localhost:9000" \
--ssh-flag="-L 8084:localhost:8084"
최신 안정 버전 kubectl을 넣는다. (이번에는 v1.8.4가 들어갔다)
→ 시도했지만 화면이 표시되지 않는 버그가되어 꽤 막혔습니다.
튜토리얼대로 여기는 v1.6.1을 넣는다.
curl -O https://storage.googleapis.com/kubernetes-release/release/v1.6.1/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
안정판 halyard를 끼워넣는다.
curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/stable/InstallHalyard.sh
sudo bash InstallHalyard.sh
. ~/.bashrc
GKE 등록
GKE_CLUSTER_NAME={YOUR_GKE_CLUSTER_NAME}
GKE_CLUSTER_ZONE={YOUR_GKE_CLUSTER_ZONE}
gcloud config set container/use_client_certificate true
gcloud container clusters get-credentials $GKE_CLUSTER_NAME \
--zone=$GKE_CLUSTER_ZONE
GCS_SA=gcs-service-account
GCS_SA_DEST=~/.gcp/gcp.json
mkdir -p $(dirname $GCS_SA_DEST)
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud iam service-accounts keys create $GCS_SA_DEST \
--iam-account $GCS_SA_EMAIL
Spinnaker 최신 버전을 사용하도록 설정 (이번에는 v1.5.1이 설정됨)
hal config version edit --version $(hal version latest -q)
GCS 설정
hal config storage gcs edit \
--project $(gcloud info --format='value(config.project)') \
--json-path ~/.gcp/gcp.json
hal config storage edit --type gcs
GCR 설정
hal config provider docker-registry enable
hal config provider docker-registry account add my-gcr-account \
--address asia.gcr.io \
--password-file ~/.gcp/gcp.json \
--username _json_key
k8s 공급자 설정
hal config provider kubernetes enable
hal config provider kubernetes account add my-k8s-account \
--docker-registries my-gcr-account \
--context $(kubectl config current-context)
Deploy Spinnaker!
hal config deploy edit \
--account-name my-k8s-account \
--type distributed
hal deploy apply
Halyard (GCP) ⇔ Spinnaker (GKE) 연결
hal deploy connect
이번에는 로컬에서 9000 번을 링크하여 SSH 연결했으므로,
http://localhost:9000 에서 Spinnaker에 연결
※ deploy 후, OAuth를 설정하지 않은, GCR에 아무것도 없는 등 Warning이 나오지만 접속은 할 수 있다
감상
길어졌으므로, 실 동작에 대해서는 다른 기사에 쓰려고 생각합니다.
컨테이너 레지스트리(이번은 GCR)와 제휴해 주어 매우 편리해.
hal 명령 기억하지 않으면. 내용의 동작까지 이해할 수 있으면 k8s의 공부도 될 것 같다.hal deploy apply
SoCOOL! Halyard는 상주시키지 않아도 좋을까?
매우 유용한 기사
① Global Continuous Delivery with Spinnaker - Netflix 본가 블로그
→ 소개.
② Spinnaker의 Continuous Delivery - 메르카
→ 알기 쉽고 사용하고 싶어지는 기사. 간결하게 정리되어 있어 훌륭하다.
③ Compute Engine에서 Spinnaker 실행 - GCP Blog
→ "Spinnaker 정보"섹션을 이해하기 쉽습니다.
*1 불변의 인프라 (참고: ht tp // // 게으른. 아니. 이. jp / l / m / 엔 rp 리세 / rc c s / 1701 / 23 / l_kz_ 0123_01. jpg )
Reference
이 문제에 관하여(Spinnaker on GKE (도입편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Subaru365/items/83d5e761ef6bb5a22168
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
조금 시간이 걸리므로 먼저 GKE 클러스터를 만듭니다.
(1.8.4-gke.0, asia-northeast1-c, 나머지는 기본값)
왼쪽에 VM(GCE) 생성
GCP_PROJECT=$(gcloud info --format='value(config.project)')
HALYARD_SA=halyard-service-account
gcloud iam service-accounts create $HALYARD_SA \
--project=$GCP_PROJECT \
--display-name $HALYARD_SA
HALYARD_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$HALYARD_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/iam.serviceAccountKeyAdmin \
--member serviceAccount:$HALYARD_SA_EMAIL
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/container.admin \
--member serviceAccount:$HALYARD_SA_EMAIL
GCS_SA=gcs-service-account
gcloud iam service-accounts create $GCS_SA \
--project=$GCP_PROJECT \
--display-name $GCS_SA
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--project=$GCP_PROJECT \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud projects add-iam-policy-binding $GCP_PROJECT \
--role roles/storage.admin \
--member serviceAccount:$GCS_SA_EMAIL
HALYARD_HOST=$USER-halyard-`date +%m%d`
gcloud compute instances create $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--scopes=cloud-platform \
--service-account=$HALYARD_SA_EMAIL \
--image-project=ubuntu-os-cloud \
--image-family=ubuntu-1404-lts \
--machine-type=n1-standard-4
VM(GCE)에 SSH로 들어가기
gcloud compute ssh $HALYARD_HOST \
--project=$GCP_PROJECT \
--zone=asia-northeast1-c \
--ssh-flag="-L 9000:localhost:9000" \
--ssh-flag="-L 8084:localhost:8084"
최신 안정 버전 kubectl을 넣는다. (이번에는 v1.8.4가 들어갔다)
→ 시도했지만 화면이 표시되지 않는 버그가되어 꽤 막혔습니다.
튜토리얼대로 여기는 v1.6.1을 넣는다.
curl -O https://storage.googleapis.com/kubernetes-release/release/v1.6.1/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
안정판 halyard를 끼워넣는다.
curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/stable/InstallHalyard.sh
sudo bash InstallHalyard.sh
. ~/.bashrc
GKE 등록
GKE_CLUSTER_NAME={YOUR_GKE_CLUSTER_NAME}
GKE_CLUSTER_ZONE={YOUR_GKE_CLUSTER_ZONE}
gcloud config set container/use_client_certificate true
gcloud container clusters get-credentials $GKE_CLUSTER_NAME \
--zone=$GKE_CLUSTER_ZONE
GCS_SA=gcs-service-account
GCS_SA_DEST=~/.gcp/gcp.json
mkdir -p $(dirname $GCS_SA_DEST)
GCS_SA_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:$GCS_SA" \
--format='value(email)')
gcloud iam service-accounts keys create $GCS_SA_DEST \
--iam-account $GCS_SA_EMAIL
Spinnaker 최신 버전을 사용하도록 설정 (이번에는 v1.5.1이 설정됨)
hal config version edit --version $(hal version latest -q)
GCS 설정
hal config storage gcs edit \
--project $(gcloud info --format='value(config.project)') \
--json-path ~/.gcp/gcp.json
hal config storage edit --type gcs
GCR 설정
hal config provider docker-registry enable
hal config provider docker-registry account add my-gcr-account \
--address asia.gcr.io \
--password-file ~/.gcp/gcp.json \
--username _json_key
k8s 공급자 설정
hal config provider kubernetes enable
hal config provider kubernetes account add my-k8s-account \
--docker-registries my-gcr-account \
--context $(kubectl config current-context)
Deploy Spinnaker!
hal config deploy edit \
--account-name my-k8s-account \
--type distributed
hal deploy apply
Halyard (GCP) ⇔ Spinnaker (GKE) 연결
hal deploy connect
이번에는 로컬에서 9000 번을 링크하여 SSH 연결했으므로,
http://localhost:9000 에서 Spinnaker에 연결
※ deploy 후, OAuth를 설정하지 않은, GCR에 아무것도 없는 등 Warning이 나오지만 접속은 할 수 있다
감상
길어졌으므로, 실 동작에 대해서는 다른 기사에 쓰려고 생각합니다.
컨테이너 레지스트리(이번은 GCR)와 제휴해 주어 매우 편리해.
hal 명령 기억하지 않으면. 내용의 동작까지 이해할 수 있으면 k8s의 공부도 될 것 같다.hal deploy apply
SoCOOL! Halyard는 상주시키지 않아도 좋을까?
매우 유용한 기사
① Global Continuous Delivery with Spinnaker - Netflix 본가 블로그
→ 소개.
② Spinnaker의 Continuous Delivery - 메르카
→ 알기 쉽고 사용하고 싶어지는 기사. 간결하게 정리되어 있어 훌륭하다.
③ Compute Engine에서 Spinnaker 실행 - GCP Blog
→ "Spinnaker 정보"섹션을 이해하기 쉽습니다.
*1 불변의 인프라 (참고: ht tp // // 게으른. 아니. 이. jp / l / m / 엔 rp 리세 / rc c s / 1701 / 23 / l_kz_ 0123_01. jpg )
Reference
이 문제에 관하여(Spinnaker on GKE (도입편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Subaru365/items/83d5e761ef6bb5a22168
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
① Global Continuous Delivery with Spinnaker - Netflix 본가 블로그
→ 소개.
② Spinnaker의 Continuous Delivery - 메르카
→ 알기 쉽고 사용하고 싶어지는 기사. 간결하게 정리되어 있어 훌륭하다.
③ Compute Engine에서 Spinnaker 실행 - GCP Blog
→ "Spinnaker 정보"섹션을 이해하기 쉽습니다.
*1 불변의 인프라 (참고: ht tp // // 게으른. 아니. 이. jp / l / m / 엔 rp 리세 / rc c s / 1701 / 23 / l_kz_ 0123_01. jpg )
Reference
이 문제에 관하여(Spinnaker on GKE (도입편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Subaru365/items/83d5e761ef6bb5a22168텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)