使用 GCP Instance Schedule 進行 GCE 定時開關機小記
在工作上, 因為節費的目的, 對於下列目的的機器會進行開關機控制
排程的機器
上班日才需要使用的機器
短期使用
早期還沒有 Instance Schedule 功能的時候, 可能是透過
Cloud Scheduler + PubSub + Cloud Function 來達成, 可以參考之前的文章 http://sakananote2.blogspot.com/2020/05/gcp-cloud-scheduler-pubsub-cloud.html
使用 Cron Job + Ansible playbook 來達成, 類似之前寫的 AWS 作法 http://sakananote2.blogspot.com/2019/08/ansible-with-aws-ec2-tag.html
現在 GCP 有內建的作法, 那就方便多了 :)
可以很輕鬆的設定機器的開關機時間, 例如下面的資訊
在使用 Instance Schedule 之前, 使用的 Service Account 需要compute.instances.start 與 compute.instances.stop權限
否則會出現下列訊息
然後會是使用專案的 service-xxxxxxx@compute-system.iam.gserviceaccount.com 來建立排程, 所以會建立 Custom Role 來加到該 Service account
好處是不會給過多的權限, 只給必要的 compute.instances.start 與 compute.instances.stop權限
先建立一個 Custom Role
點擊 IAM 點擊 Roles
點擊 CREATE ROLE 建立一個客製化的Role
點選 ADD PERMISSIONS
可以 filter 選擇 Compute Instance Admin(v1)
或是直接 filter compute.instances.start 和 compute.instances.stop 的 Permission 並勾選
Title:Instance_schedule
Description:Create on: 2021-10-03
ID:CustomRolexxx
Role launch stage:General Availability
點擊 Create 建置
可以觀察到有 Custom Role, Title 為 Instance_schedule
接下來要將剛剛建立的 custom role 附加到 service-xxxxxxx@compute-system.iam.gserviceaccount.com
在到 IAM 頁面
勾選 Incloud Google-provieded role grants
編輯 service-xxxxxxxxxxx@compute-system.iam.gserviceaccount.com 權限
service-xxxxxxxxxxx@compute-system.iam.gserviceaccount.com 的 xxxxxxxxx 會對應到自己的 ID
點擊 ADD ANOTHER ROLE
選擇剛剛建置的 role ( Instance_schedule )
點擊 SAVE 儲存
完成 權限設定
在 Virtual machines -- > VM instances 頁面
點選 CREATE SCHEDULE 建立排程
如果今天想要讓某些機器
在上班日開關機
0900 開機, 1800 關機
依範例建置如下
Name:weekday-0900-1800
Description:weekday-0900-1800
Region: asia-east1 (Taiwan)
Start time:上午 08:45 (因為GCP官方文件有說會延遲最高15分鐘所以提早15分開機)
Stop time:下午 06:00
Time zone:Taipei Standard Time(CST)
Initiate date:
End date:
Frequency:Repeat weekly
Days of the week:按照自己公司的工作日勾選
這邊可以利用 Initiate date / End date 來設計排程結束的期間, 但是最好跟開關機本身留 15 分鐘以上的緩衝時間
接下來將 VM 加入排程
點擊剛剛建立的排程
點選 ADD INSTANCES TO SCHEDULE
勾選要加入的 VM
點選 ADD
確認 VM 有被加入
到這邊應該算是大功告成
但是為了以後管理方便, 一般我們還會加上 LABEL, 這樣就可以快速觀察
這樣又向 GCP 更進一步
~ enjoy it
Reference:
厲害的同事筆記
http://sakananote2.blogspot.com/2020/05/gcp-cloud-scheduler-pubsub-cloud.html
http://sakananote2.blogspot.com/2019/08/ansible-with-aws-ec2-tag.html