[Argo] 00 - Introduction to Argo

Ref: Argo Workflows 101 Workshop 22 Sep 2020

资源不多,这个有必要过一遍。

 

课程表

 

 

 

Argo 生态

Ref: Argo生态系的介绍

Argo CD

Ref: https://www.bilibili.com/video/BV17F411h7Zh/

貌似是个通常的部署网络服务的东西。

编排资源清单:Helm or Kustomize

Argo Workflows

官网文档:https://argoproj.github.io/argo-workflows/training/

该文档,同时推荐了四个视频。

Argo Events

Argo Events是一个事件驱动的 Kubernetes 工作流自动化框架。它支持20 多种不同的事件(例如 webhook、S3 drop、cronjob、消息队列-例如 Kafka、GCP PubSub、SNS、 SQS等)

特性:

Argo Rollouts

Argo-Rollout是一个Kubernetes Controller和对应一系列的CRD,提供更强大的Deployment能力。包括灰度发布、蓝绿部署、更新测试(experimentation)、渐进式交付(progressive delivery)等特性。 

 

 

为什么 Argo

Ref: Kubeflow 和 Argo 的综合比较

Argo 工作流程的主要组成部分讨论如下:

  • 工作流:这是 Argo 中最重要的组件。它有两个主要功能:第一个是定义要执行的工作流,第二个是存储工作流的状态。
  • 模板:模板有两大类,即模板定义和模板调用器。模板定义了要完成的工作,通常在一个容器中。此类别下的模板类型包括 Script、Containers、Resource 和 Suspend。资源模板用于在集群上创建、应用、替换、删除或修补资源。暂停模板用于在特定的持续时间内停止执行。模板调用器用于调用或调用其他模板并提供执行控制。此类别下的模板类型包括 Step 模板,它允许您在一系列步骤中定义任务,以及 DAG 模板,它允许您将任务定义为依赖关系图。
  • 工作流执行器:这是一种执行容器的方法。它符合特定的接口,使 Argo 能够执行某些操作,例如:收集制品、管理容器生命周期、监控 pod 日志等。
  • 制品存储库:这是存储制品的地方。请记住,制品是由容器保存的文件。

 

 

Argo 能本地搭建么?

当前,我们关心的是 Argo Workflows;相关资源如下:argo workflows 部署记录

配置与安装

通过 helm 方式进行部署 , 操作简洁 , 易于更新 , 且已有成熟的部署方案。

  • Namespace

kubectl create ns <namespace>

  

部署 argo workflows 需要 artifact repodatabase

  • Artifact repo

我们选择 s3存储, 需要创建一个 secret 存放 s3 的 accessKey 和 secretKey

例如 : s3/argo-s3-secret.yaml

apiVersion: v1
stringData:
  accessKey: <access-key-value>
  secretKey: <secret-key-value>
kind: Secret
metadata:
  name: argo-s3-secret
  labels:
    app: cos
type: Opaque

执行: 

kubectl create secret -n <namespace> -f s3/argo-s3-secret.yaml

 

  • Database

我们单独部署一个 postgresql 数据库供 argo-workflows 使用 - 通过 Helm方式 部署,选用 bitnami/postgresql chart - 需要提前创建 secret 存放 postgresql 的 admin password, username, password (for username)

提前创建 secret 存放 postgresql 的 admin password, username, password (for username) 例如: 
kubectl create secret -n argo-dev generic argo-workflows-postgresql \
  --from-literal=username=<username> \
  --from-literal=password=<password> \
  --from-literal=postgres-password=<postgres-password>

例如 : postgresql/examples.yaml

global:
  postgresql:
    auth:
      username: "<username>"
      database: "argo_postgres"
      existingSecret: "argo-workflows-postgresql"
      secretKeys:
        adminPasswordKey: "postgres-password"
        userPasswordKey: "password"
primary:
  persistence:
    size: 10Gi
readReplicas:
  persistence:
    size: 10Gi

Helm

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Install (& Upgrade)

helm upgrade --install -n <namespace> -f postgresql/example.yaml argo-workflows-postgresql bitnami/postgresql

 

Argo Workflows

Config: argo-workflows/exampls.yaml

controller:
  # -- enable persistence using postgres
  persistence:
    connectionPool:
      maxIdleConns: 100
      maxOpenConns: 0
    # save the entire workflow into etcd and DB
    nodeStatusOffLoad: false
    # enable archiving of old workflows
    archive: false
    postgresql:
      host: argo-workflows-postgresql
      port: 5432
      database: argo_postgres
      tableName: argo_workflows
      # the database secrets must be in the same namespace of the controller
      userNameSecret:
        name: argo-workflows-postgresql
        key: username
      passwordSecret:
        name: argo-workflows-postgresql
        key: password
artifactRepository:
  # -- Archive the main container logs as an artifact
  archiveLogs: false
  # -- Store artifact in a S3-compliant object store
  # @default -- See [values.yaml]
  s3:
    # Note the `key` attribute is not the actual secret, it's the PATH to
    # the contents in the associated secret, as defined by the `name` attribute.
    accessKeySecret:
      name: argo-s3-secret
      key: accessKey
    secretKeySecret:
      name: argo-s3-secret
      key: secretKey
    insecure: true
    bucket: <bucket>
    endpoint: <endpoint>
    region: <region>
Argo Config

 

Helm

helm repo add argo https://argoproj.github.io/argo-helm
helm repo update

Install (& Upgrade)

helm upgrade --install -n <namespace> -f argo-helm/example.yaml argo-workflows argo/argo-workflows

Testing

argo submit https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/hello-world.yaml --watch

 

End
posted @ 2022-07-23 11:42  郝壹贰叁  阅读(152)  评论(0编辑  收藏  举报