425 字
2 分鐘
Azure DevOps 部署到 GKE (4) — Image Registry
2023-03-26
無標籤

前幾篇簡單地講完如何部署K8s應該會有點概念,你會發現要部署的AP並不會有任何程式碼出現在k8s.yml上,而是被包成image,今天就來說明image是怎麼一回事。


Docker#

要了解image是什麼,就得先學會Docker,要學習到如何打包image,並上傳到倉庫Registry,Registry可以選擇Docker官方的Docker Hub、Google Artifact Registry、Azure Container Registry、Amazon Elastic Container Registry,自己建的話可以考慮GitLab Container Registry、VMware Harbor Registry。學好docker可以先閱讀《Docker — — 從入門到實踐­》


Google Artifact Registry#

Artifact Registry是GCP的image倉庫,之前還有舊版叫Container Registry,不過官方建議使用新版的。

我們就來玩玩看Artifact Registry,到GCP找到Artifact Registry,點選建立存放區。

輸入名稱後,格式選擇Docker,區域我選asia-east1(台灣),並點選建立。

點進去後點選複製就就可以看到路徑,按複製起來,例如我的就是asia-east1-docker.pkg.dev/it-production-377006/nginxasia-east1-docker.pkg.dev代表區域網域,it-production-377006代表專案ID,nginx代表存放區。


打包Image並上傳#

我們打開Cloud Shell並輸入以下語法,取得Registry控制權

Terminal window
gcloud auth configure-docker asia-east1-docker.pkg.dev

再來創立一個Dockerfile

Terminal window
FROM nginx:1.23.1
RUN echo "Hello World" > /usr/share/nginx/html/index.html

再來執行打包與上傳的指令,這邊除了上面的存放區連結外,還要再加上image名稱與版本。

Terminal window
docker build . -t asia-east1-docker.pkg.dev/it-production-377006/nginx/a:1.0
docker push asia-east1-docker.pkg.dev/it-production-377006/nginx/a:1.0

到網頁上就會看到剛剛打包好的Image了


在GKE部署#

在建立部署作業中輸入剛剛的image名稱,就可以部署起來服務。


結語#

Google Artifact Registry用起來其實和Dockerhub差不多,而GKE整合自家的Registry更方便,不需要自行設定private repo的token。