CNCF 下的 buildpack 是定義出轉換程式碼至 image 的標準,使用者可以適擇適合的 builder (Google, HeroKu, Paketo) 來產出 container image,除了免去編輯 Dockerfile 的部份、container image layer 有相同的體驗、container image 的安全性交由 builder 來處理等等好處。不過美好的事情背後也是有一些取捨。本篇文章就是最近優化 CI/CD pipeline 流程上使用 buildpack 的心得分享還有遇到的坑及解決方案
Buildpack 讓發開人員免去了寫 Dockerfile 的痛苦,在使用 Cloud Run Button 中可以透過 project.toml 的配置來設定 buildpack 執行時期的參數,在 go code 進入點不在根目錄中的程式可以配置 GOOGLE_BUILDABLE 來指定程式進入點,必免導至 Container image 建立失敗
延續上一篇文章 Rbac1 Design,透過 Postgres Transpose Rows to Columns (crosstab) 將行列互換,可以拿到一個基於每一個使用者基於 RBAC resource 對應操作權限
權限系統在任何應用程式都是基礎且重要的部份,主要是對不同的人訪問資源進行權限的控制,本篇文章並沒有特別的再說明 Role-Based Access Control, 解釋的文章已經太多了,隨便 Google 都是一堆。最期在公司的專案也是有採用 RBAC 來管控系統的權限,一般的 RBAC0 (最基本的 User - Role - Permission) 的模型大至上可以符合需求,不過在權限配直的時候會有一點重工,所以選擇了有角色繼承的 RBAC1 來進行實作
Golang 也因為開源、程式語法的簡潔開始受到程式開發人員的喜好。也因些在搭建微服務架構應用程式的時候有很多選擇,在 Web 框架中就有 Gin, Echo, Beego 等等,每一個 Web 框架都有其不同的特性,而 Go-Kit 是一個微服務開發的工具鏈,本場次將基於 Kuberentes/Istio 透過 Go-kit 搭建微服務架構應用程式實戰中的工程項目進行說明
Kubernetes Nginx ingress/Istio manifest for Gokit microservice demo