iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 23
0
DevOps

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

Best Practice for DevOps on GitLab and GCP : DevOps Lab 專案環境建置 - GCP篇 - Day 23 -

Imgur

前言

延續前篇 DevOps Lab 專案環境建置 - GitLab篇,這次要使用 Cloud Shell 在 GCP 上建立一個新專案,並且要新增三個計算實例 Dev、QA 和 Prod,以便後續在轉寫自動化時能有實際的設備進行佈署。

啟動 Cloud Shell

使用 Cloud Shell 連結 或點擊下圖中的位置,可以進入 Cloud Shell。

Imgur

Cloud Shell 畫面參考圖如下:

Imgur

GCP 新增專案

新增一個專案給 devops-lab 使用,指令如下:

$ gcloud projects create --name=my-devops-lab my-devops-lab
Create in progress for [https://cloudresourcemanager.googleapis.com/v1/projects/my-devops-lab].
Waiting for [operations/cp.4732255101655597409] to finish...done.
Enabling service [cloudapis.googleapis.com] on project [my-devops-lab]...
Operation "operations/acf.158d0da5-b89a-4e44-8f9b-d45dfc1219a9" finished successfully.

設定預設 Project ID、Zone 與 Region

$ gcloud config set project my-devops-lab
$ gcloud config set compute/zone asia-east1-a
$ gcloud config set compute/region asia-east1

連動 Billing Account

在寫文章時發現使用指令建立的 Project 竟然沒有連動 Billing Account 導致各種功能的 API 無法使用,這邊手動連動。

提示:目前的 billing 功能仍在 alpha 版本以後可能會有變動

取得 Billing Account 列表

$ gcloud alpha billing accounts list
ACCOUNT_ID            NAME          OPEN  MASTER_ACCOUNT_ID
01AE04-88F505-41482E  我的帳單帳戶  True

連動專案與付費帳號

$ gcloud alpha billing projects link --billing-account=01AE04-88F505-41482E my-devops-lab
billingAccountName: billingAccounts/01AE04-88F505-41482E
billingEnabled: true
name: projects/my-devops-lab/billingInfo
projectId: my-devops-lab

查詢 Image 列表

使用指令 gcloud compute images list 並篩選關鍵字 ubuntu 這時可以看到,第一個欄位是 Name,第二個欄位是 Project,這兩個是建立計算實例需要的參數要記住。

$ gcloud compute images list | grep ubuntu
ubuntu-1404-trusty-v20190514                          ubuntu-os-cloud    ubuntu-1404-lts                               READY
ubuntu-1604-xenial-v20190913                          ubuntu-os-cloud    ubuntu-1604-lts                               READY
ubuntu-1804-bionic-v20190918                          ubuntu-os-cloud    ubuntu-1804-lts                               READY
ubuntu-1904-disco-v20190918                           ubuntu-os-cloud    ubuntu-1904                                   READY
...

建立 Dev, QA 與 Prod 計算實例

建立計算實例並指定使用 ubuntu 16.04 版本,由於第一次使用到 compute 相關 API 會被詢問是否開啟 API 選擇 Y後,經過幾分鐘時間計算實例就會被建立起來

$ gcloud compute instances create dev qa prod \
--image=ubuntu-1604-xenial-v20190913 --image-project=ubuntu-os-cloud
API [compute.googleapis.com] not enabled on project [934898608672].
Would you like to enable and retry (this will take a few minutes)?
(y/N)?  y

Enabling service [compute.googleapis.com] on project [934898608672]...
Operation "operations/acf.e4fd9941-51de-4e0d-ac66-2e14df638e4c" finished successfully.
Created [https://www.googleapis.com/compute/v1/projects/my-devops-lab/zones/asia-east1-a/instances/dev].
Created [https://www.googleapis.com/compute/v1/projects/my-devops-lab/zones/asia-east1-a/instances/qa].
Created [https://www.googleapis.com/compute/v1/projects/my-devops-lab/zones/asia-east1-a/instances/prod].
NAME  ZONE          MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
dev   asia-east1-a  n1-standard-1               10.140.0.2   35.221.157.140  RUNNING
qa    asia-east1-a  n1-standard-1               10.140.0.3   34.80.74.137     RUNNING
prod  asia-east1-a  n1-standard-1               10.140.0.4   104.199.230.182  RUNNING

結語

下一篇幾經思考後,覺得直接在 GCP 上開一台設備專門跑 GitLab Runner,既能讓讀者嘗試建置私有 GitLab Runner,又能更輕易的撰寫後續的 gitlab-ci.yml 覺得頗為合適。

參考


上一篇
Best Practice for DevOps on GitLab and GCP : DevOps Lab 專案環境建置 - GitLab篇 - Day 22 -
下一篇
Best Practice for DevOps on GitLab and GCP : DevOps Lab 專案環境建置 - GitLab Runner篇 - Day 24 -
系列文
Best Practice for DevOps on GitLab and GCP30

尚未有邦友留言

立即登入留言