From 74268ba3be8c4fd774d0f4d64048245eef5b1ee0 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 3 Jun 2022 17:46:45 +0200 Subject: [PATCH] operator: add kuttl test for decommission --- .../k8s/tests/e2e/decommission/00-assert.yaml | 22 ++++++++++++++ .../e2e/decommission/00-redpanda-cluster.yaml | 25 ++++++++++++++++ .../k8s/tests/e2e/decommission/01-assert.yaml | 29 ++++++++++++++++++ .../k8s/tests/e2e/decommission/01-probe.yaml | 30 +++++++++++++++++++ .../k8s/tests/e2e/decommission/02-assert.yaml | 22 ++++++++++++++ .../decommission/02-redpanda-downscale.yaml | 6 ++++ .../k8s/tests/e2e/decommission/03-assert.yaml | 29 ++++++++++++++++++ .../k8s/tests/e2e/decommission/03-probe.yaml | 30 +++++++++++++++++++ 8 files changed, 193 insertions(+) create mode 100644 src/go/k8s/tests/e2e/decommission/00-assert.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/00-redpanda-cluster.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/01-assert.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/01-probe.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/02-assert.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/02-redpanda-downscale.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/03-assert.yaml create mode 100644 src/go/k8s/tests/e2e/decommission/03-probe.yaml diff --git a/src/go/k8s/tests/e2e/decommission/00-assert.yaml b/src/go/k8s/tests/e2e/decommission/00-assert.yaml new file mode 100644 index 0000000000000..48dfc553a94d6 --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/00-assert.yaml @@ -0,0 +1,22 @@ +apiVersion: redpanda.vectorized.io/v1alpha1 +kind: Cluster +metadata: + name: decommissioning +status: + replicas: 3 +--- + +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +collectors: + - type: pod + selector: app.kubernetes.io/name=redpanda + tail: -1 + - type: pod + namespace: redpanda-system + selector: control-plane=controller-manager + tail: -1 + - type: command + command: kubectl get clusters -o jsonpath={@} -n $NAMESPACE + - type: command + command: kubectl get pods -o jsonpath={@} -n $NAMESPACE diff --git a/src/go/k8s/tests/e2e/decommission/00-redpanda-cluster.yaml b/src/go/k8s/tests/e2e/decommission/00-redpanda-cluster.yaml new file mode 100644 index 0000000000000..7bb3d1f5d8e61 --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/00-redpanda-cluster.yaml @@ -0,0 +1,25 @@ +apiVersion: redpanda.vectorized.io/v1alpha1 +kind: Cluster +metadata: + name: decommissioning +spec: + image: "localhost/redpanda" + version: "dev" + replicas: 3 + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 1 + memory: 500Mi + configuration: + rpcServer: + port: 33145 + kafkaApi: + - port: 9092 + adminApi: + - port: 9644 + pandaproxyApi: + - port: 8082 + developerMode: true diff --git a/src/go/k8s/tests/e2e/decommission/01-assert.yaml b/src/go/k8s/tests/e2e/decommission/01-assert.yaml new file mode 100644 index 0000000000000..a3c57ca43421e --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/01-assert.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + job-name: wait-for-3-brokers +status: + containerStatuses: + - name: curl + state: + terminated: + message: | + 3 + phase: Succeeded +--- + +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +collectors: + - type: pod + selector: app.kubernetes.io/name=redpanda + tail: -1 + - type: pod + namespace: redpanda-system + selector: control-plane=controller-manager + tail: -1 + - type: command + command: kubectl get clusters -o jsonpath={@} -n $NAMESPACE + - type: command + command: kubectl get pods -o jsonpath={@} -n $NAMESPACE diff --git a/src/go/k8s/tests/e2e/decommission/01-probe.yaml b/src/go/k8s/tests/e2e/decommission/01-probe.yaml new file mode 100644 index 0000000000000..b3306231ee82b --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/01-probe.yaml @@ -0,0 +1,30 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: wait-for-3-brokers +spec: + backoffLimit: 10 + template: + spec: + activeDeadlineSeconds: 90 + containers: + - name: curl + image: curlimages/curl:latest + env: + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /bin/sh + - -c + - -ex + args: + - > + url=http://decommissioning-0.decommissioning.$NAMESPACE.svc.cluster.local:9644/v1/brokers + res=$(curl --silent -L $url | tr '{' '\n' | grep node_id | wc -l) && + echo $res > /dev/termination-log && + if [[ "$res" != "3" ]]; then + exit 1; + fi + restartPolicy: Never diff --git a/src/go/k8s/tests/e2e/decommission/02-assert.yaml b/src/go/k8s/tests/e2e/decommission/02-assert.yaml new file mode 100644 index 0000000000000..ff279070c0692 --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/02-assert.yaml @@ -0,0 +1,22 @@ +apiVersion: redpanda.vectorized.io/v1alpha1 +kind: Cluster +metadata: + name: decommissioning +status: + replicas: 2 +--- + +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +collectors: + - type: pod + selector: app.kubernetes.io/name=redpanda + tail: -1 + - type: pod + namespace: redpanda-system + selector: control-plane=controller-manager + tail: -1 + - type: command + command: kubectl get clusters -o jsonpath={@} -n $NAMESPACE + - type: command + command: kubectl get pods -o jsonpath={@} -n $NAMESPACE diff --git a/src/go/k8s/tests/e2e/decommission/02-redpanda-downscale.yaml b/src/go/k8s/tests/e2e/decommission/02-redpanda-downscale.yaml new file mode 100644 index 0000000000000..4ef80085dfdd3 --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/02-redpanda-downscale.yaml @@ -0,0 +1,6 @@ +apiVersion: redpanda.vectorized.io/v1alpha1 +kind: Cluster +metadata: + name: decommissioning +spec: + replicas: 2 diff --git a/src/go/k8s/tests/e2e/decommission/03-assert.yaml b/src/go/k8s/tests/e2e/decommission/03-assert.yaml new file mode 100644 index 0000000000000..875ada95dc8ae --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/03-assert.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + labels: + job-name: wait-for-2-brokers +status: + containerStatuses: + - name: curl + state: + terminated: + message: | + 2 + phase: Succeeded +--- + +apiVersion: kuttl.dev/v1beta1 +kind: TestAssert +collectors: + - type: pod + selector: app.kubernetes.io/name=redpanda + tail: -1 + - type: pod + namespace: redpanda-system + selector: control-plane=controller-manager + tail: -1 + - type: command + command: kubectl get clusters -o jsonpath={@} -n $NAMESPACE + - type: command + command: kubectl get pods -o jsonpath={@} -n $NAMESPACE diff --git a/src/go/k8s/tests/e2e/decommission/03-probe.yaml b/src/go/k8s/tests/e2e/decommission/03-probe.yaml new file mode 100644 index 0000000000000..c20a7a1e388ee --- /dev/null +++ b/src/go/k8s/tests/e2e/decommission/03-probe.yaml @@ -0,0 +1,30 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: wait-for-2-brokers +spec: + backoffLimit: 10 + template: + spec: + activeDeadlineSeconds: 90 + containers: + - name: curl + image: curlimages/curl:latest + env: + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /bin/sh + - -c + - -ex + args: + - > + url=http://decommissioning-0.decommissioning.$NAMESPACE.svc.cluster.local:9644/v1/brokers + res=$(curl --silent -L $url | tr '{' '\n' | grep node_id | wc -l) && + echo $res > /dev/termination-log && + if [[ "$res" != "2" ]]; then + exit 1; + fi + restartPolicy: Never