流程编排

简要概述

基于 argo workflow 实现对各个原子接口编排完成较复杂的任务流程。

引入改模块后对编译后的二进制增加大约 4M 大小。

配置示例

最小化配置

# 流程编排配置
automations:
  enable: true

导出默认值

# 流程编排配置
automations:
  enable: false
  kubernetes:
    config_path: ""
    rest_config:
      host: ""
      bearer_token: ""
      bearer_token_file: ""
      tls_client_config:
        insecure: false

配置说明

KubernetesConfig

名称 类型 说明
config_path string 连接 k8s 的 kubeconfig 配置文件地址
rest_config RestConfig 连接 k8s 的 rest config 配置参数,优先级低于 config_path
  • RestConfig
名称 类型 说明
host string kube-apiserver 地址,如 1.1.1.1:6443
bearer_token string 访问 apiserver 的 token
bearer_token_file string 访问 apiserver 的 token 文件,优先级低于 bearer_token
tls_client_config TLSClientConfig 连接 apiserver tls 配置
  • TLSClientConfig
名称 类型 说明
insecure bool 是否忽略 ca 证书验证

应用场景

在集群内连接 apiserver

  • 配置 app.yaml 文件
# 流程编排配置
automations:
  enable: true

如果未主动配置 k8s 连接串,则使用 “InClusterConfig” 模式连接 kube-apiserver,依赖以下变量与文件:

KUBERNETES_SERVICE_HOST
KUBERNETES_SERVICE_PORT
/var/run/secrets/kubernetes.io/serviceaccount/token
/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  • 确认 sa 挂载了 token

假设运行 pod 的 sa 账号是 “grpc-kit”。

开启 “automountServiceAccountToken” 参数以自动挂载 token(默认开启状态):

apiVersion: v1
kind: ServiceAccount
metadata:
  name: grpc-kit
automountServiceAccountToken: true

或者在 Pod 中开启(默认开启状态):

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  automountServiceAccountToken: true
  • 确认 sa 用于创建 workflow 权限

假设应用运行在命名空间 “biz-dev-uptime” 下使用 “grpc-kit” 账户:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: grpc-kit
  namespace: biz-dev-uptime

---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: grpc-kit
  namespace: biz-dev-uptime
  annotations:
    kubernetes.io/service-account.name: grpc-kit

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: executor
rules:
- apiGroups:
  - argoproj.io
  resources:
  - workflowtaskresults
  - workflowtemplates
  verbs:
  - create
  - patch

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: executor
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: executor
subjects:
- kind: ServiceAccount
  name: grpc-kit
  namespace: biz-dev-uptime



最后修改 November 22, 2024: feat: add k8s connect config (c108f22)