From bb8f61b51122057a9c90d87dbed09cf7fc0aa3cd Mon Sep 17 00:00:00 2001 From: Ori Shoshan Date: Thu, 13 Jul 2023 13:48:35 +0300 Subject: [PATCH] Wait for Kafka startup in ecom-demo to avoid CrashLoopBackOff when other containers wait for initial Kafka startup (#101) --- .../shadow-mode/ecom-demo-mtls.yaml | 58 ++++++++++++++++++- .../code-examples/shadow-mode/ecom-demo.yaml | 58 ++++++++++++++++++- 2 files changed, 110 insertions(+), 6 deletions(-) diff --git a/static/code-examples/shadow-mode/ecom-demo-mtls.yaml b/static/code-examples/shadow-mode/ecom-demo-mtls.yaml index 64becfe68..22d3c0baf 100644 --- a/static/code-examples/shadow-mode/ecom-demo-mtls.yaml +++ b/static/code-examples/shadow-mode/ecom-demo-mtls.yaml @@ -554,7 +554,11 @@ spec: credentials-operator.otterize.com/cert-file-name: svid.pem credentials-operator.otterize.com/ca-file-name: bundle.pem spec: - serviceAccountName: default + serviceAccountName: checkoutservice + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:checkoutservice-latest' @@ -918,7 +922,11 @@ spec: annotations: credentials-operator.otterize.com/tls-secret-name: orderservice-credentials-secret spec: - serviceAccountName: default + serviceAccountName: orderservice + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:orderservice-latest' @@ -1000,12 +1008,16 @@ spec: credentials-operator.otterize.com/cert-file-name: svid.pem credentials-operator.otterize.com/ca-file-name: bundle.pem spec: - serviceAccountName: default + serviceAccountName: paymentservice terminationGracePeriodSeconds: 5 volumes: - name: otterize-credentials secret: secretName: paymentservice-credentials-secret + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:paymentservice-latest' @@ -1651,3 +1663,43 @@ spec: resources: requests: storage: "8Gi" +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: statefulset-reader +rules: + - apiGroups: ["apps"] + resources: ["statefulsets"] + verbs: ["get", "watch", "list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: read-statefulsets +subjects: + - kind: ServiceAccount + name: paymentservice + - kind: ServiceAccount + name: orderservice + - kind: ServiceAccount + name: checkoutservice +roleRef: + kind: Role + name: statefulset-reader + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: checkoutservice +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: paymentservice +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: orderservice \ No newline at end of file diff --git a/static/code-examples/shadow-mode/ecom-demo.yaml b/static/code-examples/shadow-mode/ecom-demo.yaml index 6c141a534..667e86005 100644 --- a/static/code-examples/shadow-mode/ecom-demo.yaml +++ b/static/code-examples/shadow-mode/ecom-demo.yaml @@ -539,7 +539,11 @@ spec: labels: app: checkoutservice spec: - serviceAccountName: default + serviceAccountName: checkoutservice + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:checkoutservice-latest' @@ -889,7 +893,11 @@ spec: labels: app: orderservice spec: - serviceAccountName: default + serviceAccountName: orderservice + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:orderservice-latest' @@ -953,8 +961,12 @@ spec: labels: app: paymentservice spec: - serviceAccountName: default + serviceAccountName: paymentservice terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-kafka + image: bitnami/kubectl + command: [ "kubectl", "rollout", "status", "-n", "otterize-ecom-demo", "statefulset/kafka" ] containers: - name: server image: 'otterize/lab:paymentservice-latest' @@ -1574,3 +1586,43 @@ spec: resources: requests: storage: "8Gi" +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: statefulset-reader +rules: + - apiGroups: ["apps"] + resources: ["statefulsets"] + verbs: ["get", "watch", "list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: read-statefulsets +subjects: + - kind: ServiceAccount + name: paymentservice + - kind: ServiceAccount + name: orderservice + - kind: ServiceAccount + name: checkoutservice +roleRef: + kind: Role + name: statefulset-reader + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: checkoutservice +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: paymentservice +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: orderservice \ No newline at end of file