iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 27
0
DevOps

Best Practice for DevOps on GitLab and GCP系列 第 27

Best Practice for DevOps on GitLab and GCP : DevOps Lab 自動化腳本 - 權限篇 - Day 27 -

Imgur

前言

映像檔已經被建立完成,接著在進入自動佈署前,還有一件很重要的事情,就是我們需要有足夠的權限,讓腳本在跑時能順利存取 devqa 等環境,這時就要來建立權限。話不多說我們開啟 Cloud Shell 之後就開始瘋狂打指令吧!!

服務帳戶

建立服務帳戶

$ gcloud iam service-accounts create --display-name=gitlab-ci gitlab-ci
Updated property [core/project].

取得服務帳戶列表

$ gcloud iam service-accounts list
NAME                                    EMAIL                                               DISABLED
gitlab-ci                               gitlab-ci@my-devops-lab.iam.gserviceaccount.com     False
Compute Engine default service account  934898608672-compute@developer.gserviceaccount.com  False

腳色權限

賦予服務帳戶腳色權限

$ gcloud projects add-iam-policy-binding \
--member=serviceAccount:gitlab-ci@my-devops-lab.iam.gserviceaccount.com \
--role=roles/editor my-devops-lab
Updated IAM policy for project [my-devops-lab].
bindings:
- members:
  - serviceAccount:service-934898608672@compute-system.iam.gserviceaccount.com
  role: roles/compute.serviceAgent
- members:
  - serviceAccount:934898608672-compute@developer.gserviceaccount.com
  - serviceAccount:934898608672@cloudservices.gserviceaccount.com
  - serviceAccount:gitlab-ci@my-devops-lab.iam.gserviceaccount.com
  role: roles/editor
- members:
  - user:mcacookie@gmail.com
  role: roles/owner
etag: BwWTYR6MW9w=
version: 1

金鑰

建立 GitLab CI 使用的金鑰存放到 gitlab-ci.json

$ gcloud iam service-accounts keys create --iam-account=gitlab-ci@my-devops-lab.iam.gserviceaccount.com gitlab-ci.json
created key [f4261c64c045a70d33362444654ff28ef3efbf5f] of type [json] as [gitlab-ci.json] for [gitlab-ci@my-devops-lab.iam.gserviceaccount.com]

測試金鑰開啟新的分頁後使用指令

$ gcloud auth activate-service-account \
--project=my-devops-lab \
--key-file=/home/mcacookie/gitlab-ci.json
Activated service account credentials for: [gitlab-ci@my-devops-lab.iam.gserviceaccount.com]

點選『下載檔案』並輸入完整路徑名稱取得 gitlab-ci.json

Imgur

Imgur

Variables

找到 設定 > CI/CD > Variables

  1. gitlab-ci.json 內容存入 GCP_KEY
  2. ~/.ssh/google_compute_engine 內容存入 PRI_KEY
  3. ~/.ssh/google_compute_engine.pub 內容存入 PUB_KEY
  4. Type 皆選擇 File 類型

Imgur

結語

經過一番設定後當我們運行腳本時,可以在系統環境變數中取得 GCP_KEY 並搭配 gcloud 相關指令即可完成登入行為並開始操作 GCP 上的各種服務。


上一篇
Best Practice for DevOps on GitLab and GCP : DevOps Lab 自動化腳本 - 映像檔篇 - Day 26 -
下一篇
Best Practice for DevOps on GitLab and GCP : DevOps Lab 自動化腳本 - 佈署篇 - Day 28 -
系列文
Best Practice for DevOps on GitLab and GCP30

尚未有邦友留言

立即登入留言