自上一篇中對 Trino cluster 的 helm chart 設定告一段落後,我們就可以來切分開發環境,並依照團隊需求去制定開發以及部署 Trino 的流程,本文會以筆者專案使用的環境切分及部署流程做介紹:
舉例而言,可以在 production
的 trino-elt.yaml
放入欲覆蓋的參數,並且指定環境名稱為 production
,如此部署文件可依環境切分的乾淨且易讀,使修改部分部署參數變成一件容易的事 :
server:
node:
# 指定環境名稱 production
environment: production
config:
query:
# 覆蓋掉 shared 的記憶體上限設定
maxMemory: "93GB"
exchangeManager:
name: filesystem
baseDir: s3://sldatacenter-trino-fault-tolerant-production
有了容易修改且可依環境切分的 Helm Chart 後,我們需要一個可以進行 CI/CD 的腳本,雖說是 CI/CD ,其實只包含如何持續部署 ( CD ) 不同設定 Trino Cluster 的腳本,也是本文欲探討的重點。
由於我們使用的部署工具是 Bitbucket Pipeline,首先需在 deployment pipeline 裡面定義部署 trino-elt
的步驟,包含了:
# bitbucket-pipelines.yml
sl-trino-elt-latest:
- step: *set-variables
- step: &deploy-trino-elt-stg
<<: *deploy-trino-elt
name: "[DEPLOY-STG] trino-elt"
deployment: staging
- step: &deploy-trino-elt-prod
<<: *deploy-trino-elt
name: "[DEPLOY-PROD] trino-elt"
deployment: production
trigger: manual
可以看到 pipeline 裡面不管是部署到 Staging 還是 Production 都使用了相同的錨點 &deploy-trino-elt
,在這段錨點裡面做了幾件事:
trino-elt
並指定 image 版本# bitbucket-pipelines.yml
- step: &deploy-trino-elt
name: "[DEPLOY] trino-elt"
oidc: true
script:
- *oidc-script
- *env-script
- ./scripts/deploy.sh login-eks
- ./scripts/deploy.sh trino-elt ${IMAGE_TAG}
*OIDC(OpenID Connect)
是一種基於 OAuth 2.0 的身份認證協議
可以讓 Bitbucket 安全地向 AWS 證明:『我符合某個合法身份(IAM),不需要密碼。』
這樣就不必把 AWS secret 寫進環境變數造成資安風險。
系列文明日《部署與 CICD,Trino 在雲端 (五)》,將延續前篇,介紹 trino-elt
的部署流程,並說明如何進行 Trino 的版本管理。
My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/