Upgrade to Pro — share decks privately, control downloads, hide ads and more …

如何使用 Argo Event& Workflow 快速建置自定義的工作流程 @ #CNTUG #47

如何使用 Argo Event& Workflow 快速建置自定義的工作流程 @ #CNTUG #47

平常我們使用 Kubernetes Job / Cronjob 可以滿足我們簡單的任務需求,像是資料庫備份清理等…每日作業,那假設我想要執行具有更複雜相依關係的任務,或是我想要有個Webhook來讓我可以即時依照需求來觸發任務那該怎麼做?
別怕Argo Event & Workflow 可以幫上你,這次演說中會跟大家介紹它們,並且跟大家分享SRE團隊透過它們打造的自動化Lighthouse跑分系統。

講師名: Jiun-Wei Wan (wei)
講師簡介:
1. 喜歡寫 Go
2. 喜歡 Kubernetes
3. 有時候會貢獻一些開源專案
4. 每天一杯咖啡

Event: https://www.meetup.com/CloudNative-Taiwan/events/284821277/

More Decks by LINE Developers Taiwan

Other Decks in Technology

Transcript

  1. 01 02 03 04 05 06 Contents Infrastructure in LINE

    TW SRE Team & Products Taiwan Observability Platform Argo Workflows LHCI Farm Argo Events
  2. VM VKS (Kubernetes) DNS Load Balancer Infrastructure in LINE Databases

    (MySQL, Redis etc…) VOS (Object Storage) VBS (Block Storage)
  3. Observability TW SRE Team • K8s 應⽤監控、微服務分布式跟蹤、⽇誌匯聚搜尋 • 提供整個台灣辦公室各應⽤開發團隊的全域監控 •

    ⽬前已經使⽤的OSS專案包含 • Grafana • Grafana Loki • Prometheus • Grafana Tempo • OpenTelemetry/Jaeger(legacy) • 告警系統整合(Slack) ⽇常
  4. CI/CD TW SRE Team • 代管 Argo CD 推⾏ GitOps

    • 提供訂製 Drone plugin ⽀援特殊CI需求 • Lighthouse 整合前端⾴⾯效能指標 • ⽬前已經使⽤的OSS專案包含 • Argo CD • Lighthouse CI ⽇常
  5. Grafana LHCI Farm TOP Argo CD Sentry Status 專案團隊 TW

    SRE Team 產品 – Taiwan Observability Platform 應⽤程式 部署 Logs、Metrics 、Traces 應⽤程式 監控 錯誤追蹤 專案狀態 總表 前端⾴⾯ 效能指標
  6. 優 • 開發快速 • 很容易理解 • 利⽤Kubernetes原⽣的功能不⽤ 額外裝東⻄ 缺 優缺點

    • 腳本到處複製貼上 • Job沒辦法單獨重⽤ • 腳本中途失敗不好除錯
  7. 什麼是 Argo Workflows? Argo Workflows Argo Workflows 是⼀個開源容器原⽣⼯作流引擎,⽤於在 Kubernetes 上編排並⾏作業。

    Argo Workflows 實現為 Kubernetes CRD(⾃定義資源定義)。 • 定義⼯作流中的每個步驟都是⼀個容器的⼯作流。 • 將多步驟⼯作流建模為⼀系列任務或使⽤有向無環圖 (DAG) 捕獲任務之間的依賴關係。 • 使⽤ Kubernetes 上的 Argo Workflows 在很短的時間內輕鬆運⾏機器學習或數據處理的計算密集型作業。 • 在 Kubernetes 上本地運⾏ CI/CD 管道,無需配置複雜的軟件開發產品。 ※Source from︓https://argoproj.github.io/argo-workflows/
  8. Lighthouse CI Lighthouse CI is a suite of tools that

    make continuously running, saving, retrieving, and asserting aga inst Lighthouse results as easy as possible. ※Source from︓https://github.com/GoogleChrome/lighthouse-ci
  9. 什麼是 Argo Events? Argo Events Argo Events是⼀個⽤於 Kubernetes 的事件驅動的⼯作流⾃動化框架,可幫助您觸發來⾃各種來源(如 webh

    ook、S3、調度、消息隊列、gcp pubsub、sns、sqs)的事件的 K8s 對象、Argo ⼯作流、無服務器⼯作負載 等…… • ⽀持來⾃ 20 多個事件源的事件。 • 能夠為⼯作流⾃動化定制業務級約束邏輯。 • 管理從簡單、線性、實時到復雜、多源事件的所有內容。 • ⽀持 Kubernetes Objects、Argo Workflow、AWS Lambda、Serverless 等作為觸發器。 ※Source from︓https://argoproj.github.io/argo-events/
  10. EventSource AMQP AWS SNS AWS SQS Azure Events Hub Bitbucket

    Bitbucket Server Calendar Emitter File Based Events GCP PubSub Generic EventSource GitHub GitLab ※Source from︓https://argoproj.github.io/argo-events/concepts/event_source/ Support types HDFS K8s Resources Kafka Minio NATS NetApp StorageGrid MQTT NSQ Pulsar Redis Slack Stripe Webhooks
  11. Sensors AWS Lambda Apache OpenWhisk Argo Rollouts Argo Workflows Custom

    - Build Your Own HTTP Requests - Serverless Workloads (OpenFaas, Kubeless, Knative etc.) Kafka Messages NATS Messages Slack Notifications Azure Event Hubs Messages Create any Kubernetes Objects Log (for debugging event bus messages) ※Source from︓https://argoproj.github.io/argo-events/concepts/trigger/ Trigger
  12. LandPress 架構 Fram API Argo Events Webhook & Sensor Argo

    Workflows Lighthouse CI 使用者點擊 觸發報表掃描 驗證資料 產生設定檔 紀錄Workflow狀態 收到Webhook 觸發Workflow 使用Farm API產生 的組態檔執行lhci 跑分 保存報告