0%

k8s配置argo+minio

配置minio对象存储作为argo-workflow的artifact仓库的一些笔记,默认集群环境已经安装完argo-workflow的相关组件(此过程比较简单,没有坑,直接看官方文档即可)

Helm安装部署minio

首先在helm上添加minio的仓库,然后使用helm安装命令:

1
helm install -n argo --name argo-artifacts --set persistence.enabled=true --set persistence.enabled=true --set accessKey=myaccesskey,secretKey=mysecretkey --set service.type=NodePort --set service.port=30090 stable/minio 

创建一个k8s下NodePort形式的minio,对外暴露端口30090。

假设安装的namespace为argo,进入下一个步骤。

修改argo命名空间下的ConfigMap

在使用helm安装minio后,会在argo这个namespace底下生成一个opaque的secret,里面就是存的accessKey和secretKey。所以为了让argo-workflows在制作artifacts时能拿到调用minio的权限。

进入minio的后台界面,手动输入accessKey和secretKey,创建一个bucket,这里举例叫my-bucket,然后在argo命名空间下名字叫workflow-controller的ConfigMap上添加data字段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
data:
artifactRepository:
s3:
bucket: my-bucket
# endpoint是minio的名字.命名空间:端口
endpoint: argo-artifacts.argo:9000
insecure: false
accessKeySecret:
# secret的名字
name: argo-artifacts
key: accesskey
secretKeySecret:
# secret的名字
name: argo-artifacts-minio
key: secretkey

给命名空间下的default ServiceAccount 赋权

下面这条命令就是给argo命名空间下的default账户cluster-admin权限,创建了一个clusterrolebinding

1
kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin --serviceaccount=argo:default

这样argo-workflows就可以通过这个default账户对集群资源做调度了。