持續交付與雲原生架構 - 黃健旻

Loading embed note

投影片

Speaker

講者個人部落格

CI/CD

Delivery vs. Deployment

  • Delivery (手動部署)
  • Deploy (全自動)

Jenkins

大家常用部署工具,用壞幾次就會很可怕

不論何種語言,(部屬時)較底層的部分,就是去執行一些 command。

  • Pre 權限
  • Action 檢查測試
  • Post

禮拜五部署
部屬啦,哪次不部屬
星期五部署一定是development(自動化)

Flagger: 全自動金絲雀

  • 漸進式的用新版本取代舊版本
  • 但,如何衡量正確性?
    • e.g., 講者的情況,用到許多外部服務,難以保證合作夥伴的情況
  • 重點是
    • 敏捷是為了讓你擁抱變化

然後你就加班了 加啦 哪次不加

Cloud Native

公有雲、私有雲、混合雲

high-impact changes frequently and predictably

P0: 風險等級最嚴重(和錢有關)
P1~P3: 風險分等,P3最低

CNCF Cloud Native Definition

cloud native 就是在談中間的抽象層

Docker -> Kubernetes

Docker部署

  • Docker: single container
  • Docker compose : 一次開多台容器
  • Docker swarm:好像沒啥人用了?
    • 變成使用Kubernetes管理

Microservice in Past

  • 具有註冊中心

Mesh

  • 每個容器都會塞proxy(e.g. Envoy)
  • envoy 互相連通 <- 網路層東西由他來控制,形成服務網格

控制部署

  1. Terraform: 以指令、腳本控制部署
    可以版控
  2. Kubernetes Engine

IaC (Infrastructure as Code)

當你把它變成程式碼,維護性就會更強,同時具可讀性(文件化)

GitOps

  • 目前 k8s 限定
    • Kubernetes
  • declarative service and application
  • CI/CD 的版控
    工具: ArgoCD
    • 把 kubernetes 的各種東西視覺化
    • 列出差異
  • 以前,是我們自己下指令
  • 現在,宣告期望的狀態,讓 agent 自動化代勞

相關文章:[書本導讀]-什麼是GitOps

tags: MOPCON 2020
Select a repo