Argo Workflows 是一个开源的工作流管理平台,用于运行复杂的 Kubernetes 作业。它支持多种编排模式,并能够管理和追踪每一个工作流任务的状态变化。本文将介绍如何在生产环境中部署和使用 Argo Workflows。
Argo Workflows 可以通过 Helm 来部署,因此你需要首先安装并配置 Helm。确保你的环境中已正确设置 Helm:
# 安装 Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 添加 Argo Workflows 的仓库
helm repo add argo https://argoproj.github.io/argo-helm/
# 更新 Helm 仓库
helm repo update
为了隔离工作流相关的资源,建议为 Argo Workflows 创建一个独立的命名空间:
kubectl create namespace argo
如果你使用 Minio 作为状态存储服务,需要配置相应的 Secret 和 StorageClass。
apiVersion: v1
data:
accessKey: <minio_access_key>
secretKey: <minio_secret_key>
kind: Secret
metadata:
name: argo-minio-secret
type: Opaque
将上述 YAML 文件保存为 argo-minio-secret.yaml
,并执行:
kubectl apply -f argo-minio-secret.yaml
创建一个名为 argocd-storage-class
的 StorageClass 以支持 Minio 存储。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: argocd-storage-class
provisioner: kubernetes.io/minio-object-storage
parameters:
bucketName: <minio_bucket_name>
accessKeySecretRef:
name: argo-minio-secret
key: accessKey
secretKeySecretRef:
name: argo-minio-secret
key: secretKey
endpoint: https://<minio_endpoint>
将上述 YAML 文件保存为 argocd-storage-class.yaml
,并执行:
kubectl apply -f argocd-storage-class.yaml
使用 Helm 安装 Argo Workflows。
helm install argo-workflow argo/argo-workflow \
--namespace argo \
--set global.storageClass=argocd-storage-class \
--set workflow.storage.bucket=<minio_bucket_name> \
--set artifactStorage.class=argocd-storage-class \
--set argoproj.argo-server.artifactLocation=s3://<bucket-name> \
上述命令中的参数可以调整以适应你的具体需求。
部署完成后,可以通过访问 Argo Workflows 的 UI 来检查状态:
kubectl port-forward svc/argo-workflow-ui -n argo 2746:8080 &
然后在浏览器中打开 http://localhost:2746
。
Argo Workflows 支持使用 YAML 文件定义工作流。以下是一个简单的示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
templates:
- name: say-hello-to
inputs:
parameters:
- name: who
default: World
container:
image: alpine:3.6
command: ["/bin/sh", "-c"]
args: ["echo Hello, $(arg @inputs.parameters.who)"]
- name: say-goodbye-to
inputs:
parameters:
- name: who
default: World
container:
image: alpine:3.6
command: ["/bin/sh", "-c"]
args: ["echo Goodbye, $(arg @inputs.parameters.who)"]
entrypoint: say-hello-to
保存上述内容为 hello-world.yaml
,并执行:
argo submit hello-world.yaml --watch
你可以通过 Argo Workflows 的 UI 或者使用命令行工具来监控和管理你的工作流任务。
本文介绍了如何在 Kubernetes 集群中部署和使用 Argo Workflows。从环境准备到实际操作,我们详细描述了每一步的操作步骤,并提供了一些示例帮助你快速上手。希望这些内容能为你在生产环境中成功部署 Argo Workflows 提供参考与指导。