diff --git a/test/e2e/testing-manifests/statefulset/cassandra/pdb.yaml b/test/e2e/testing-manifests/statefulset/cassandra/pdb.yaml new file mode 100644 index 00000000000..9944d2b387f --- /dev/null +++ b/test/e2e/testing-manifests/statefulset/cassandra/pdb.yaml @@ -0,0 +1,11 @@ +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: cassandra-pdb + labels: + pdb: cassandra +spec: + minAvailable: 2 + selector: + matchLabels: + app: cassandra diff --git a/test/e2e/testing-manifests/statefulset/cassandra/service.yaml b/test/e2e/testing-manifests/statefulset/cassandra/service.yaml new file mode 100644 index 00000000000..35b07733b5c --- /dev/null +++ b/test/e2e/testing-manifests/statefulset/cassandra/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: cassandra + name: cassandra +spec: + clusterIP: None + ports: + - port: 9042 + selector: + app: cassandra diff --git a/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml new file mode 100644 index 00000000000..269d0a18f63 --- /dev/null +++ b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml @@ -0,0 +1,86 @@ +apiVersion: "apps/v1beta1" +kind: StatefulSet +metadata: + name: cassandra +spec: + serviceName: cassandra + replicas: 3 + template: + metadata: + labels: + app: cassandra + spec: + containers: + - name: cassandra + image: gcr.io/google-samples/cassandra:v12 + imagePullPolicy: Always + ports: + - containerPort: 7000 + name: intra-node + - containerPort: 7001 + name: tls-intra-node + - containerPort: 7199 + name: jmx + - containerPort: 9042 + name: cql + resources: + requests: + cpu: "300m" + memory: 1Gi + securityContext: + capabilities: + add: + - IPC_LOCK + lifecycle: + preStop: + exec: + command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] + env: + - name: MAX_HEAP_SIZE + value: 512M + - name: HEAP_NEWSIZE + value: 100M + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CASSANDRA_SEEDS + value: "cassandra-0.cassandra.$(POD_NAMESPACE).svc.cluster.local" + - name: CASSANDRA_CLUSTER_NAME + value: "K8Demo" + - name: CASSANDRA_DC + value: "DC1-K8Demo" + - name: CASSANDRA_RACK + value: "Rack1-K8Demo" + - name: CASSANDRA_AUTO_BOOTSTRAP + value: "false" + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + readinessProbe: + exec: + command: + - /bin/bash + - -c + - /ready-probe.sh + initialDelaySeconds: 15 + timeoutSeconds: 5 + # These volume mounts are persistent. They are like inline claims, + # but not exactly because the names need to match exactly one of + # the stateful pod volumes. + volumeMounts: + - name: cassandra-data + mountPath: /cassandra_data + # These are converted to volume claims by the controller + # and mounted at the paths mentioned above. + # do not use these in production until ssd GCEPersistentDisk or other ssd pd + volumeClaimTemplates: + - metadata: + name: cassandra-data + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi + diff --git a/test/e2e/testing-manifests/statefulset/cassandra/tester.yaml b/test/e2e/testing-manifests/statefulset/cassandra/tester.yaml new file mode 100644 index 00000000000..65699f8e3cf --- /dev/null +++ b/test/e2e/testing-manifests/statefulset/cassandra/tester.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: cassandra-test-server +spec: + replicas: 3 + template: + metadata: + labels: + app: test-server + spec: + containers: + - name: test-server + image: gcr.io/google-containers/cassandra-e2e-test:0.1 + imagePullPolicy: Always + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + initialDelaySeconds: 2 + periodSeconds: 2 +--- +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: tester-pdb + labels: + pdb: test-server +spec: + minAvailable: 1 + selector: + matchLabels: + app: test-server +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: test-server + name: test-server +spec: + ports: + - port: 8080 + selector: + app: test-server + type: LoadBalancer