Goal
We want to be able to instantiate a service that allows to store file located on a processing pod onto it.
We have already tested it with a static Argo yaml file, a MinIO running on the same kubernetes node, the minio service is reached because it is the only associated to the serviceAccount.
We have established three otpions that need to be available to the user for the feature to be implemented:
- Use a MinIO running constantly on the node that executes the argo workflow
- Use a MinIO
- A MinIO is instanciated when a new workflow is launched
Requirements
- Helm :
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 - Helm GO client :
$ go get github.com/mittwald/go-helm-client - MinIO chart :
https://charts.min.io/
Ressources
We need to create several ressources in order for the pods to communicate with the MinIO
MinIO Auth Secrets
Bucket ConfigMap
With the name artifact-repositories this configMap will be used by default. It contains the URL to the MinIO server and the key to the authentication data held in a secret ressource.
apiVersion: v1
kind: ConfigMap
metadata:
# If you want to use this config map by default, name it "artifact-repositories".
name: artifact-repositories
# annotations:
# # v3.0 and after - if you want to use a specific key, put that key into this annotation.
# workflows.argoproj.io/default-artifact-repository: oc-s3-artifact-repository
data:
oc-s3-artifact-repository: |
s3:
bucket: oc-bucket
endpoint: [ retrieve cluster with kubectl get service argo-artifacts -o jsonpath="{.spec.clusterIP}" ]:9000
insecure: true
accessKeySecret:
name: argo-artifact-secret
key: access-key
secretKeySecret:
name: argo-artifact-secret
key: secret-key
Code modifications
Rajouter un attribut "isDataLink"
- true/false
Rajouter un attribut DataPath ou un truc comme ca
- liste de map[string]string permet de n'avoir qu'une copie par fichier)
- éditable uniquement a travers la méthode addDataPath
- clé : path du fichier / value : nom de la copie dans minio
===> on a besoin du meme attribut pour Processing -> Data et Data -> Processing