From f29910d2feb8931cb990794899bea275d47ab7b2 Mon Sep 17 00:00:00 2001 From: odubajDT <93584209+odubajDT@users.noreply.github.com> Date: Thu, 20 Oct 2022 14:32:40 +0200 Subject: [PATCH] chore: Introduce failing observability example for podtatohead (#204) Signed-off-by: odubajDT --- examples/observability/Makefile | 22 +++++++++++++++++++ .../app.yaml | 6 +++-- .../keptnevaluationprovider.yaml | 2 +- .../manifest.yaml | 4 ++-- .../keptnevaluationdefinition1.yaml | 12 ++++++++++ .../keptnevaluationdefinition2.yaml | 12 ++++++++++ .../keptnevaluationdefinition3.yaml} | 10 ++++----- .../keptnevaluationdefinition4.yaml | 12 ++++++++++ 8 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml create mode 100644 examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition2.yaml rename examples/observability/assets/{podtatohead-deployment-evaluation/keptnevaluationdefinition.yaml => podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml} (58%) create mode 100644 examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition4.yaml diff --git a/examples/observability/Makefile b/examples/observability/Makefile index 53abbbbb71..9c3ddffbad 100644 --- a/examples/observability/Makefile +++ b/examples/observability/Makefile @@ -113,6 +113,28 @@ deploy-podtatohead: kubectl create namespace "$(PODTATO_NAMESPACE)" --dry-run=client -o yaml | kubectl apply -f - kubectl annotate namespace "$(PODTATO_NAMESPACE)" keptn.sh/lifecycle-controller=enabled --overwrite kubectl apply -f ./assets/podtatohead-deployment-evaluation/. + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition2.yaml + kubectl wait --for=condition=available deployment/podtato-head-entry -n podtato-kubectl --timeout=120s + @echo "Watch Workload Deployment Progress: kubectl get keptnworkloadinstances -n podtato-kubectl -w" + +.PHONY: deploy-podtatohead-failed-post +deploy-podtatohead-failed-post: + kubectl create namespace "$(PODTATO_NAMESPACE)" --dry-run=client -o yaml | kubectl apply -f - + kubectl annotate namespace "$(PODTATO_NAMESPACE)" keptn.sh/lifecycle-controller=enabled --overwrite + kubectl apply -f ./assets/podtatohead-deployment-evaluation/. + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml + kubectl wait --for=condition=available deployment/podtato-head-entry -n podtato-kubectl --timeout=120s + @echo "Watch Workload Deployment Progress: kubectl get keptnworkloadinstances -n podtato-kubectl -w" + +.PHONY: deploy-podtatohead-failed-pre +deploy-podtatohead-failed-pre: + kubectl create namespace "$(PODTATO_NAMESPACE)" --dry-run=client -o yaml | kubectl apply -f - + kubectl annotate namespace "$(PODTATO_NAMESPACE)" keptn.sh/lifecycle-controller=enabled --overwrite + kubectl apply -f ./assets/podtatohead-deployment-evaluation/. + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml + kubectl apply -f ./assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition4.yaml kubectl wait --for=condition=available deployment/podtato-head-entry -n podtato-kubectl --timeout=120s @echo "Watch Workload Deployment Progress: kubectl get keptnworkloadinstances -n podtato-kubectl -w" diff --git a/examples/observability/assets/podtatohead-deployment-evaluation/app.yaml b/examples/observability/assets/podtatohead-deployment-evaluation/app.yaml index 0911bdcdb7..ce1a0ac850 100644 --- a/examples/observability/assets/podtatohead-deployment-evaluation/app.yaml +++ b/examples/observability/assets/podtatohead-deployment-evaluation/app.yaml @@ -20,5 +20,7 @@ spec: version: 0.1.0 postDeploymentTasks: - post-deployment-hello - preDeploymentEvaluations: #Comment out this two lines if you do not have a prometheus installation - - my-prometheus-definition + preDeploymentEvaluations: #Comment out this four lines if you do not have a prometheus installation + - my-prometheus-definition1 + postDeploymentEvaluations: + - my-prometheus-definition2 diff --git a/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationprovider.yaml b/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationprovider.yaml index 4e1e32d394..c0f1490183 100644 --- a/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationprovider.yaml +++ b/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationprovider.yaml @@ -4,4 +4,4 @@ metadata: name: prometheus namespace: podtato-kubectl spec: - targetServer: "http://prometheus-k8s.monitoring.svc.cluster.local:9090" #string \ No newline at end of file + targetServer: "http://prometheus-k8s.monitoring.svc.cluster.local:9090" \ No newline at end of file diff --git a/examples/observability/assets/podtatohead-deployment-evaluation/manifest.yaml b/examples/observability/assets/podtatohead-deployment-evaluation/manifest.yaml index 8aefc20927..f4e84ad172 100644 --- a/examples/observability/assets/podtatohead-deployment-evaluation/manifest.yaml +++ b/examples/observability/assets/podtatohead-deployment-evaluation/manifest.yaml @@ -76,8 +76,8 @@ spec: labels: component: podtato-head-hat keptn.sh/pre-deployment-tasks: check-entry-service - keptn.sh/pre-deployment-evaluations: my-prometheus-definition - keptn.sh/post-deployment-evaluations: my-prometheus-definition + keptn.sh/pre-deployment-evaluations: my-prometheus-definition1 + keptn.sh/post-deployment-evaluations: my-prometheus-definition1 annotations: keptn.sh/app: podtato-head keptn.sh/workload: podtato-head-hat diff --git a/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml new file mode 100644 index 0000000000..a55109c385 --- /dev/null +++ b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition1.yaml @@ -0,0 +1,12 @@ +apiVersion: lifecycle.keptn.sh/v1alpha1 +kind: KeptnEvaluationDefinition +metadata: + name: my-prometheus-definition1 + namespace: podtato-kubectl +spec: + source: prometheus + objectives: + - name: available-cpus ## this query should pass + query: "sum(kube_pod_container_resource_limits{resource='cpu'}) - sum(kube_node_status_capacity{resource='cpu'})" + evaluationTarget: "<1" + diff --git a/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition2.yaml b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition2.yaml new file mode 100644 index 0000000000..1e2e787d98 --- /dev/null +++ b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition2.yaml @@ -0,0 +1,12 @@ +apiVersion: lifecycle.keptn.sh/v1alpha1 +kind: KeptnEvaluationDefinition +metadata: + name: my-prometheus-definition2 + namespace: podtato-kubectl +spec: + source: prometheus + objectives: + - name: consumed-memory ## this query should pass + query: "sum(kube_node_status_capacity{resource='memory'})" + evaluationTarget: "<1000000000000" + diff --git a/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationdefinition.yaml b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml similarity index 58% rename from examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationdefinition.yaml rename to examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml index 8c736b8f4b..20233078c3 100644 --- a/examples/observability/assets/podtatohead-deployment-evaluation/keptnevaluationdefinition.yaml +++ b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition3.yaml @@ -1,15 +1,15 @@ apiVersion: lifecycle.keptn.sh/v1alpha1 kind: KeptnEvaluationDefinition metadata: - name: my-prometheus-definition + name: my-prometheus-definition2 namespace: podtato-kubectl spec: source: prometheus objectives: - - name: available-cpus + - name: available-cpus ## this query should fail query: "sum(kube_pod_container_resource_limits{resource='cpu'}) - sum(kube_node_status_capacity{resource='cpu'})" - evaluationTarget: ">1" #string: can only be starting with < or > - - name: consumed-memory + evaluationTarget: ">1" + - name: consumed-memory ## this query should pass query: "sum(kube_node_status_capacity{resource='memory'})" - evaluationTarget: "<1000000000000" #string: can only be starting with < or > + evaluationTarget: "<1000000000000" diff --git a/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition4.yaml b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition4.yaml new file mode 100644 index 0000000000..8bd6a64385 --- /dev/null +++ b/examples/observability/assets/podtatohead-evaluationdefinitions/keptnevaluationdefinition4.yaml @@ -0,0 +1,12 @@ +apiVersion: lifecycle.keptn.sh/v1alpha1 +kind: KeptnEvaluationDefinition +metadata: + name: my-prometheus-definition1 + namespace: podtato-kubectl +spec: + source: prometheus + objectives: + - name: available-cpus ## this query should fail + query: "sum(kube_pod_container_resource_limits{resource='cpu'}) - sum(kube_node_status_capacity{resource='cpu'})" + evaluationTarget: ">1000" +