diff --git a/.github/workflows/cd-pipeline.yaml b/.github/workflows/cd-pipeline.yaml index 99f1acf5e..a9ee16e34 100644 --- a/.github/workflows/cd-pipeline.yaml +++ b/.github/workflows/cd-pipeline.yaml @@ -12,6 +12,7 @@ on: # rebuild any PRs and main branch changes - 'bitnami/discourse/**' - 'bitnami/dokuwiki/**' - 'bitnami/elasticsearch/**' + - 'bitnami/etcd/**' - 'bitnami/external-dns/**' - 'bitnami/fluentd/**' - 'bitnami/ghost/**' diff --git a/.vib/etcd/goss/goss.yaml b/.vib/etcd/goss/goss.yaml new file mode 100644 index 000000000..d17631071 --- /dev/null +++ b/.vib/etcd/goss/goss.yaml @@ -0,0 +1,33 @@ +http: + http://etcd:{{ .Vars.service.ports.peer }}/version: + status: 200 +file: + /bitnami/etcd: + exists: true + filetype: directory + mode: "2775" +command: + {{- $auth := printf "--user=root --password=%s" .Vars.auth.rbac.rootPassword }} + {{- $svc_endpoint := printf "--endpoints=etcd:%d" .Vars.service.ports.client }} + cluster-members: + exec: etcdctl {{ $auth }} {{ $svc_endpoint }} member list + exit-status: 0 + stdout: + {{- range $e, $i := until .Vars.replicaCount }} + - etcd-{{ $i }} + {{- end }} + {{- range $e, $i := until .Vars.replicaCount }} + {{- $key := printf "key_%s" (randAlpha 5) }} + {{- $value := printf "value_%s" (randAlpha 5) }} + manage-db-{{ $i }}: + exec: etcdctl {{ $auth }} {{ $svc_endpoint }} put {{ $key }} {{ $value }} && etcdctl {{ $auth }} --endpoints=etcd-{{ $i }}.etcd-headless:{{ $.Vars.containerPorts.client }} get {{ $key }} + exit-status: 0 + stdout: + - {{ $key }} + {{- end }} + check-user-info: + exec: id + exit-status: 0 + stdout: + - uid={{ .Vars.containerSecurityContext.runAsUser }} + - /groups=.*{{ .Vars.podSecurityContext.fsGroup }}/ diff --git a/.vib/etcd/goss/vars.yaml b/.vib/etcd/goss/vars.yaml new file mode 100644 index 000000000..b985d07eb --- /dev/null +++ b/.vib/etcd/goss/vars.yaml @@ -0,0 +1,14 @@ +auth: + rbac: + rootPassword: ComplicatedPassword123!4 +replicaCount: 3 +containerPorts: + client: 2378 +podSecurityContext: + fsGroup: 1002 +containerSecurityContext: + runAsUser: 1002 +service: + ports: + client: 80 + peer: 2381 diff --git a/.vib/etcd/vib-publish.json b/.vib/etcd/vib-publish.json index 56847fe5c..be5bb9094 100644 --- a/.vib/etcd/vib-publish.json +++ b/.vib/etcd/vib-publish.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/etcd" }, - "runtime_parameters": "ImF1dGgiOgogICJyYmFjIjoKICAgICJyb290UGFzc3dvcmQiOiAiQ3YzdzliTmRjcW1wIgoic2VydmljZSI6CiAgInBvcnRzIjoKICAgICJjbGllbnQiOiA4MAogICJ0eXBlIjogIkxvYWRCYWxhbmNlciI=", + "runtime_parameters": "YXV0aDoKICByYmFjOgogICAgcm9vdFBhc3N3b3JkOiBDb21wbGljYXRlZFBhc3N3b3JkMTIzITQKcmVwbGljYUNvdW50OiAzCmNvbnRhaW5lclBvcnRzOgogIGNsaWVudDogMjM3OAogIHBlZXI6IDIzODEKcG9kU2VjdXJpdHlDb250ZXh0OgogIGVuYWJsZWQ6IHRydWUKICBmc0dyb3VwOiAxMDAyCmNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgcnVuQXNVc2VyOiAxMDAyCnNlcnZpY2U6CiAgdHlwZTogTG9hZEJhbGFuY2VyCiAgcG9ydHM6CiAgICBjbGllbnQ6IDgwCiAgICBwZWVyOiAyMzgx", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -37,6 +37,18 @@ "endpoint": "lb-etcd-client", "app_protocol": "HTTP" } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/etcd/goss" + }, + "remote": { + "workload": "sts-etcd" + }, + "vars_file": "vars.yaml" + } } ] }, diff --git a/.vib/etcd/vib-verify.json b/.vib/etcd/vib-verify.json index 77e7dfa99..67809f874 100644 --- a/.vib/etcd/vib-verify.json +++ b/.vib/etcd/vib-verify.json @@ -22,7 +22,7 @@ "url": "{SHA_ARCHIVE}", "path": "/bitnami/etcd" }, - "runtime_parameters": "ImF1dGgiOgogICJyYmFjIjoKICAgICJyb290UGFzc3dvcmQiOiAiQ3YzdzliTmRjcW1wIgoic2VydmljZSI6CiAgInBvcnRzIjoKICAgICJjbGllbnQiOiA4MAogICJ0eXBlIjogIkxvYWRCYWxhbmNlciI=", + "runtime_parameters": "YXV0aDoKICByYmFjOgogICAgcm9vdFBhc3N3b3JkOiBDb21wbGljYXRlZFBhc3N3b3JkMTIzITQKcmVwbGljYUNvdW50OiAzCmNvbnRhaW5lclBvcnRzOgogIGNsaWVudDogMjM3OAogIHBlZXI6IDIzODEKcG9kU2VjdXJpdHlDb250ZXh0OgogIGVuYWJsZWQ6IHRydWUKICBmc0dyb3VwOiAxMDAyCmNvbnRhaW5lclNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgcnVuQXNVc2VyOiAxMDAyCnNlcnZpY2U6CiAgdHlwZTogTG9hZEJhbGFuY2VyCiAgcG9ydHM6CiAgICBjbGllbnQ6IDgwCiAgICBwZWVyOiAyMzgx", "target_platform": { "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}", "size": { @@ -37,6 +37,18 @@ "endpoint": "lb-etcd-client", "app_protocol": "HTTP" } + }, + { + "action_id": "goss", + "params": { + "resources": { + "path": "/.vib/etcd/goss" + }, + "remote": { + "workload": "sts-etcd" + }, + "vars_file": "vars.yaml" + } } ] }