2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DatadogAdvent Calendar 2022

Day 20

ArgoCDでデプロイしたときにDatadogのSyntheticsテストを自動実行する

Posted at

何の話?

DatadogのSyhtheticsテスト(APIテスト、ブラウザテスト)をCIやCD内で自動実行したいってことがあると思います。
ArgoCDでアプリケーションをデプロイ後に自動実行する方法をまとめておきます。

Syntheticsテストの自動実行

DatadogのSyntheticsテストは、CI/CDの中で自動実行することができます。
curlでAPI叩くだけで実行できます。

実行に必要な情報は

  • API Key
  • APP Key
  • 実施したいSyntheticsテストのPublic ID
    になります。

Public IDはDatadogの画面の ↓の部分(XXX-XXX-XXX)で分かります。
image.png

API Key、APP Keyは別途作成してください。

ArgoCDでの自動実行

ArgoCDではResource Hooksという機能があり、Sync実行前や後にKubernetesのJobを実行させる機能があります。
https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/

Syntheticsテストを実行するJobを作成し、Sync成功後に実行させればデプロイ完了後にSyntheticsテストを自動実行できます。

やり方は簡単で、Jobのannotationに下記を追加して、

metadata:
  annotations:
    argocd.argoproj.io/hook: PostSync
    argocd.argoproj.io/hook-delete-policy: HookSucceeded

自動実行させたいArgoCD Application内にこのJobを置くだけです。

Jobのコンテナイメージはビルドしておいてもいいですし、これくらいならcurlのイメージ使ってcommandで実行してもいいかと思います。
curlのイメージ使ったときのJobはこんな感じになります。(Secretは別途作成してください)

apiVersion: batch/v1
kind: Job
metadata:
  name: datadog-browser-test
  annotations:
    argocd.argoproj.io/hook: PostSync
    argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
  template:
    spec:
      containers:
      - name: curl
        image: curlimages/curl
        env:
          - name: api_key
            valueFrom:
              secretKeyRef:
                name: dd-test
                key: api_key
          - name: app_key
            valueFrom:
              secretKeyRef:
                name: dd-test
                key: app_key
          - name: public_id
            valueFrom:
              secretKeyRef:
                name: dd-test
                key: public_id
        command:
        - curl
        - -X
        - POST
        - -H
        - 'Content-Type: application/json'
        - -H
        - "DD-API-KEY: $(api_key)"
        - -H
        - "DD-APPLICATION-KEY: $(app_key)"
        - -d
        - "{\"tests\": [{\"public_id\": \"$(public_id)\", \"locations\": [\"aws:ap-northeast-1\"]}]}"
        - "https://api.datadoghq.com/api/v1/synthetics/tests/trigger/ci"
      restartPolicy: Never
  backoffLimit: 2

ArgoCDはテストをキックするだけで、実行結果はわからないので、Datadog上で確認するとか、アラートを飛ばすとかしてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?