From 4a2c4dfc2803df40b765a8ace1dd1ea0d543a12a Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Mon, 22 May 2023 13:47:53 +0800 Subject: [PATCH] add role: bookinfo datadog-agent --- playbook/jobs/init_datadog_agent | 10 + playbook/roles/bookinfo/tasks/main.yml | 24 ++ playbook/roles/bookinfo/templates/.gitignore | 2 + .../roles/bookinfo/templates/apline-cli.yaml | 15 ++ .../bookinfo/templates/bookinfo-details.yaml | 52 ++++ .../bookinfo-productpage-python.yaml | 90 +++++++ .../bookinfo/templates/bookinfo-ratings.yaml | 84 ++++++ .../bookinfo/templates/bookinfo-reviews.yaml | 242 ++++++++++++++++++ playbook/roles/datadog-agent/files/setup.sh | 32 +++ playbook/roles/datadog-agent/meta/main.yml | 2 + playbook/roles/datadog-agent/tasks/main.yml | 3 + 11 files changed, 556 insertions(+) create mode 100644 playbook/jobs/init_datadog_agent create mode 100755 playbook/roles/bookinfo/tasks/main.yml create mode 100644 playbook/roles/bookinfo/templates/.gitignore create mode 100644 playbook/roles/bookinfo/templates/apline-cli.yaml create mode 100644 playbook/roles/bookinfo/templates/bookinfo-details.yaml create mode 100644 playbook/roles/bookinfo/templates/bookinfo-productpage-python.yaml create mode 100644 playbook/roles/bookinfo/templates/bookinfo-ratings.yaml create mode 100644 playbook/roles/bookinfo/templates/bookinfo-reviews.yaml create mode 100644 playbook/roles/datadog-agent/files/setup.sh create mode 100644 playbook/roles/datadog-agent/meta/main.yml create mode 100755 playbook/roles/datadog-agent/tasks/main.yml diff --git a/playbook/jobs/init_datadog_agent b/playbook/jobs/init_datadog_agent new file mode 100644 index 00000000..db851fa2 --- /dev/null +++ b/playbook/jobs/init_datadog_agent @@ -0,0 +1,10 @@ +- name: set datadog-agent with helm + hosts: all + user: root + become: yes + gather_facts: yes + tasks: + - include_role: + name: datadog-agent + vars: + group: master diff --git a/playbook/roles/bookinfo/tasks/main.yml b/playbook/roles/bookinfo/tasks/main.yml new file mode 100755 index 00000000..32fbc3e9 --- /dev/null +++ b/playbook/roles/bookinfo/tasks/main.yml @@ -0,0 +1,24 @@ +- name: Prep DIR + shell: "mkdir -pv /tmp/bookinfo/" + +- name: Prep NameSpace + shell: "kubectl create namespace default || echo true" + +- name: Sync bookinfo deploy yaml + template: src=templates/{{ item }} dest=/tmp/bookinfo/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes + with_items: + - apline-cli.yaml + - bookinfo-productpage-python.yaml + - bookinfo-reviews.yaml + - bookinfo-details.yaml + - bookinfo-ratings.yaml + +- name: Setup bookinfo + shell: "kubectl apply -f /tmp{{ item }}" + when: inventory_hostname in groups[group] + with_items: + - apline-cli.yaml + - bookinfo-productpage-python.yaml + - bookinfo-reviews.yaml + - bookinfo-details.yaml + - bookinfo-ratings.yaml diff --git a/playbook/roles/bookinfo/templates/.gitignore b/playbook/roles/bookinfo/templates/.gitignore new file mode 100644 index 00000000..a194b200 --- /dev/null +++ b/playbook/roles/bookinfo/templates/.gitignore @@ -0,0 +1,2 @@ +/clickhouse-keeper-k8s.iml +/.idea/ diff --git a/playbook/roles/bookinfo/templates/apline-cli.yaml b/playbook/roles/bookinfo/templates/apline-cli.yaml new file mode 100644 index 00000000..4119ff22 --- /dev/null +++ b/playbook/roles/bookinfo/templates/apline-cli.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: alpine + namespace: default +spec: + containers: + - image: alpine:3.13 + command: + - /bin/sh + - "-c" + - "sleep 600m" + imagePullPolicy: IfNotPresent + name: alpine + restartPolicy: Always diff --git a/playbook/roles/bookinfo/templates/bookinfo-details.yaml b/playbook/roles/bookinfo/templates/bookinfo-details.yaml new file mode 100644 index 00000000..29a4c4ee --- /dev/null +++ b/playbook/roles/bookinfo/templates/bookinfo-details.yaml @@ -0,0 +1,52 @@ +################################################################################################## +# Details service +################################################################################################## +apiVersion: v1 +kind: Service +metadata: + name: details + labels: + app: details + service: details +spec: + ports: + - port: 9080 + name: http + selector: + app: details +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: bookinfo-details + labels: + account: details +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: details-v1 + labels: + app: details + version: v1 +spec: + replicas: 1 + selector: + matchLabels: + app: details + version: v1 + template: + metadata: + labels: + app: details + version: v1 + spec: + serviceAccountName: bookinfo-details + containers: + - name: details + image: docker.io/istio/examples-bookinfo-details-v1:1.17.0 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 9080 + securityContext: + runAsUser: 1000 diff --git a/playbook/roles/bookinfo/templates/bookinfo-productpage-python.yaml b/playbook/roles/bookinfo/templates/bookinfo-productpage-python.yaml new file mode 100644 index 00000000..e11f3b61 --- /dev/null +++ b/playbook/roles/bookinfo/templates/bookinfo-productpage-python.yaml @@ -0,0 +1,90 @@ +################################################################################################## +# Productpage services +################################################################################################## +apiVersion: v1 +kind: Service +metadata: + name: productpage + labels: + app: productpage + service: productpage +spec: + ports: + - port: 9080 + name: http + selector: + app: productpage +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: bookinfo-productpage + labels: + account: productpage +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: productpage-v1 + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "productpage" + tags.datadoghq.com/version: "v1" + app: productpage + version: v1 +spec: + replicas: 1 + selector: + matchLabels: + app: productpage + version: v1 + template: + metadata: + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "productpage" + tags.datadoghq.com/version: "v1" + admission.datadoghq.com/enabled: "true" + app: productpage + version: v1 + annotations: + admission.datadoghq.com/python-lib.version: v1.12.0 + spec: + serviceAccountName: bookinfo-productpage + containers: + - name: productpage + image: docker.io/istio/examples-bookinfo-productpage-v1:1.17.0 + imagePullPolicy: IfNotPresent + env: + - name: DATADOG_HOST + value: datadog-agent + - name: DD_LOGS_INJECTION + value: "true" + - name: DD_AGENT_HOST + value: datadog-agent + - name: DD_TRACE_AGENT_PORT + value: "8126" + - name: DD_TRACE_SAMPLE_RATE + value: "1" + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] + ports: + - containerPort: 9080 + volumeMounts: + - name: tmp + mountPath: /tmp + securityContext: + runAsUser: 1000 + volumes: + - name: tmp + emptyDir: {} diff --git a/playbook/roles/bookinfo/templates/bookinfo-ratings.yaml b/playbook/roles/bookinfo/templates/bookinfo-ratings.yaml new file mode 100644 index 00000000..4b8f3401 --- /dev/null +++ b/playbook/roles/bookinfo/templates/bookinfo-ratings.yaml @@ -0,0 +1,84 @@ +################################################################################################## +# Ratings service +################################################################################################## +apiVersion: v1 +kind: Service +metadata: + name: ratings + labels: + app: ratings + service: ratings +spec: + ports: + - port: 9080 + name: http + selector: + app: ratings +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: bookinfo-ratings + labels: + account: ratings +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ratings-v1 + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "ratings" + tags.datadoghq.com/version: "v1" + app: ratings + version: v1 +spec: + replicas: 1 + selector: + matchLabels: + app: ratings + version: v1 + template: + metadata: + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "ratings" + tags.datadoghq.com/version: "v1" + admission.datadoghq.com/enabled: "true" + app: ratings + version: v1 + annotations: + admission.datadoghq.com/js-lib.version: v3.17.1 + spec: + serviceAccountName: bookinfo-ratings + containers: + - name: ratings + image: docker.io/istio/examples-bookinfo-ratings-v1:1.17.0 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 9080 + securityContext: + runAsUser: 1000 + env: + - name: DD_LOGS_INJECTION + value: "true" + - name: DD_AGENT_HOST + value: datadog-agent + - name: DD_TRACE_AGENT_PORT + value: "8126" + - name: DD_TRACE_SAMPLE_RATE + value: "1" + - name: DATADOG_HOST + value: datadog-agent + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] diff --git a/playbook/roles/bookinfo/templates/bookinfo-reviews.yaml b/playbook/roles/bookinfo/templates/bookinfo-reviews.yaml new file mode 100644 index 00000000..86a4b206 --- /dev/null +++ b/playbook/roles/bookinfo/templates/bookinfo-reviews.yaml @@ -0,0 +1,242 @@ +################################################################################################## +# Reviews service +################################################################################################## +apiVersion: v1 +kind: Service +metadata: + name: reviews + labels: + app: reviews + service: reviews +spec: + ports: + - port: 9080 + name: http + selector: + app: reviews +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: bookinfo-reviews + labels: + account: reviews +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: reviews-v1 + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v1" + app: reviews + version: v1 +spec: + replicas: 1 + selector: + matchLabels: + app: reviews + version: v1 + template: + metadata: + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v1" + admission.datadoghq.com/enabled: "true" + app: reviews + version: v1 + annotations: + admission.datadoghq.com/java-lib.version: v1.12.1 + spec: + serviceAccountName: bookinfo-reviews + containers: + - name: reviews + image: docker.io/istio/examples-bookinfo-reviews-v1:1.17.0 + imagePullPolicy: IfNotPresent + env: + - name: LOG_DIR + value: "/tmp/logs" + - name: DD_LOGS_INJECTION + value: "true" + - name: DD_AGENT_HOST + value: datadog-agent + - name: DD_TRACE_AGENT_PORT + value: "8126" + - name: DD_TRACE_SAMPLE_RATE + value: "1" + - name: DATADOG_HOST + value: datadog-agent + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] + ports: + - containerPort: 9080 + volumeMounts: + - name: tmp + mountPath: /tmp + - name: wlp-output + mountPath: /opt/ibm/wlp/output + securityContext: + runAsUser: 1000 + volumes: + - name: wlp-output + emptyDir: {} + - name: tmp + emptyDir: {} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: reviews-v2 + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v2" + app: reviews + version: v2 +spec: + replicas: 1 + selector: + matchLabels: + app: reviews + version: v2 + template: + metadata: + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v2" + admission.datadoghq.com/enabled: "true" + app: reviews + version: v2 + annotations: + admission.datadoghq.com/java-lib.version: v1.12.1 + spec: + serviceAccountName: bookinfo-reviews + containers: + - name: reviews + image: docker.io/istio/examples-bookinfo-reviews-v2:1.17.0 + imagePullPolicy: IfNotPresent + env: + - name: DD_LOGS_INJECTION + value: "true" + - name: LOG_DIR + value: "/tmp/logs" + - name: DD_AGENT_HOST + value: datadog-agent + - name: DD_TRACE_AGENT_PORT + value: "8126" + - name: DD_TRACE_SAMPLE_RATE + value: "1" + - name: DATADOG_HOST + value: datadog-agent + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] + ports: + - containerPort: 9080 + volumeMounts: + - name: tmp + mountPath: /tmp + - name: wlp-output + mountPath: /opt/ibm/wlp/output + securityContext: + runAsUser: 1000 + volumes: + - name: wlp-output + emptyDir: {} + - name: tmp + emptyDir: {} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: reviews-v3 + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v3" + app: reviews + version: v3 +spec: + replicas: 1 + selector: + matchLabels: + app: reviews + version: v3 + template: + metadata: + labels: + tags.datadoghq.com/env: "dev" + tags.datadoghq.com/service: "reviews" + tags.datadoghq.com/version: "v3" + admission.datadoghq.com/enabled: "true" + app: reviews + version: v3 + annotations: + admission.datadoghq.com/java-lib.version: v1.12.1 + spec: + serviceAccountName: bookinfo-reviews + containers: + - name: reviews + image: docker.io/istio/examples-bookinfo-reviews-v3:1.17.0 + imagePullPolicy: IfNotPresent + env: + - name: DD_LOGS_INJECTION + value: "true" + - name: LOG_DIR + value: "/tmp/logs" + - name: DD_AGENT_HOST + value: datadog-agent + - name: DD_TRACE_AGENT_PORT + value: "8126" + - name: DATADOG_HOST + value: datadog-agent + - name: DD_TRACE_SAMPLE_RATE + value: "1" + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] + ports: + - containerPort: 9080 + volumeMounts: + - name: tmp + mountPath: /tmp + - name: wlp-output + mountPath: /opt/ibm/wlp/output + securityContext: + runAsUser: 1000 + volumes: + - name: wlp-output + emptyDir: {} + - name: tmp + emptyDir: {} diff --git a/playbook/roles/datadog-agent/files/setup.sh b/playbook/roles/datadog-agent/files/setup.sh new file mode 100644 index 00000000..f729bd27 --- /dev/null +++ b/playbook/roles/datadog-agent/files/setup.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +export token=$1 + +helm repo add datadog https://helm.datadoghq.com +helm repo update +cat > datadog-values.yaml << EOF +targetSystem: "linux" +registry: artifact.onwalk.net/public/datadog +clusterAgent: + enabled: true + admissionController: + enabled: true + mutateUnlabelled: true +datadog: + site: 'datadoghq.eu' + apiKeyExistingSecret: datadog-agent + logs: + enabled: true + containerCollectAll: true + apm: + portEnabled: true + networkMonitoring: + enabled: true + env: + - name: DD_APM_FEATURES + value: 'enale_cid_stats' +EOF +kubectl create namespace datadog || echo true +kubectl delete secret datadog-agent --namespace=datadog || echo true +kubectl create secret generic datadog-agent --from-literal api-key=$token --namespace=datadog +helm upgrade --install datadog-agent -n datadog --create-namespace -f datadog-values.yaml datadog/datadog diff --git a/playbook/roles/datadog-agent/meta/main.yml b/playbook/roles/datadog-agent/meta/main.yml new file mode 100644 index 00000000..9711b330 --- /dev/null +++ b/playbook/roles/datadog-agent/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - role: common diff --git a/playbook/roles/datadog-agent/tasks/main.yml b/playbook/roles/datadog-agent/tasks/main.yml new file mode 100755 index 00000000..2e80f381 --- /dev/null +++ b/playbook/roles/datadog-agent/tasks/main.yml @@ -0,0 +1,3 @@ +- name: Setup Datadog Agent + script: files/setup.sh {{ datadog_token }} + when: inventory_hostname in groups[group]