apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: openldap-qualif- spec: entrypoint: test-deployment arguments: parameters: - name: namespace value: openldap-qualif - name: app value: openldap-qualif # This spec contains two templates: hello-hello-hello and whalesay templates: - name: test-deployment parallelism: 1 # Instead of just running a container # This template has a sequence of steps steps: - - name: wait-upgrade # hello1 is run before the following steps template: wait-upgrade arguments: parameters: - name: time value: 10 - name: type value: sts - - name: test-openldap-upgrade # double dash => run after previous step template: test-openldap-upgrade arguments: parameters: - name: url value: "{{workflow.parameters.app}}.{{workflow.parameters.namespace}}" - name: password value: "Not@SecurePassw0rd" - name: user value: "cn=admin,dc=example,dc=org" - name: occurence value: "{{item}}" withSequence: count: "1" - - name: apply-chaos-test # double dash => run after previous step template: apply-chaos-test - - name: test-openldap # double dash => run after previous step template: test-openldap-upgrade arguments: parameters: - name: url value: "{{workflow.parameters.app}}.{{workflow.parameters.namespace}}" - name: password value: "Not@SecurePassw0rd" - name: user value: "cn=admin,dc=example,dc=org" - name: occurence value: "{{item}}" withSequence: count: "60" - - name: cleanup # double dash => run after previous step template: pause-chaos-test # This is the same template as from the previous example - name: wait-upgrade serviceAccountName: argo-workflow-invocator inputs: parameters: - name: time - name: type # type of resources to wait (deployement or sts) script: image: bitnami/kubectl:1.18.13 command: [/bin/bash] source: | sleep {{inputs.parameters.time}} kubectl rollout status -n {{workflow.parameters.namespace}} {{inputs.parameters.type}} {{workflow.parameters.app}} - name: test-openldap-upgrade serviceAccountName: argo-workflow-invocator inputs: parameters: - name: url - name: password - name: user - name: occurence script: image: alpine command: [sh] source: | # Contents of the here-script apk add openldap-clients echo "run ldap commands (add, search, modify...)" LDAPTLS_REQCERT=never ldapsearch -x -D '{{inputs.parameters.user}}' -w {{inputs.parameters.password}} -H ldaps://{{inputs.parameters.url}} -b 'dc=example,dc=org' sleep 60 - name: apply-chaos-test serviceAccountName: argo-workflow-invocator resource: # indicates that this is a resource template action: apply # can be any kubectl action (e.g. create, delete, apply, patch) manifest: | #put your kubernetes spec here apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-openldap namespace: openldap-qualif annotations: experiment.chaos-mesh.org/pause: "false" spec: action: pod-failure mode: random-max-percent value: "100" duration: "15s" selector: labelSelectors: "app": "openldap-qualif" scheduler: cron: "@every 2m" - name: pause-chaos-test serviceAccountName: argo-workflow-invocator resource: # indicates that this is a resource template action: apply # can be any kubectl action (e.g. create, delete, apply, patch) manifest: | #put your kubernetes spec here apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-openldap namespace: openldap-qualif annotations: experiment.chaos-mesh.org/pause: "true" spec: action: pod-failure mode: random-max-percent value: "100" duration: "15s" selector: labelSelectors: "app": "openldap-qualif" scheduler: cron: "@every 2m"