コンテンツにスキップ

リソース定義@Argo Workflows

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. Workflow

.spec.entrypoint

▼ entrypointとは

一番最初に使用するテンプレート名を設定する。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  namespace: argocd
  generateName: foo-workflow
spec:
  entrypoint: foo-template


.spec.templates

▼ templatesとは

パイプラインの処理を設定する。

WorkflowTemplateとして切り分けても良い。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  namespace: argocd
  generateName: foo-workflow
spec:
  entrypoint: foo-template
  templates:
    - name: foo-template
      script:
        - image: alpline:1.0.0
          command:
            - /bin/bash
            - -c
          source: |
            echo "Hello World"


.spec.workflowTemplateRef

▼ workflowTemplateRefとは

切り分けたWorkflowTemplateの名前を設定する。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  namespace: argocd
  generateName: foo-workflow
spec:
  workflowTemplateRef:
    name: foo-workflow


02. WorkflowTemplate

.spec.templates

▼ templatesとは

パイプラインの処理を設定する。

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  namespace: argocd
  name: foo-workflow
spec:
  templates:
    - name: foo-template
      script:
        - image: alpline:1.0.0
          cource: |
            echo "Hello World"

▼ script

コンテナをプルし、コンテナ内でスクリプトを実行する。

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  namespace: argocd
  name: foo-workflow
spec:
  templates:
    - name: foo-template
      script:
        - image: alpline:1.0.0
          command:
            - /bin/bash
            - -c
          source: |
            echo "Hello World"

▼ steps


ConfigMap

▼ data.trigger

通知条件を設定する。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: argocd
  name: argocd-notification-cm
  labels:
    app.kubernetes.io/part-of: argocd
data:
  trigger.on-sync-status-unknown: |
    - when: app.status.sync.status == 'Unknown'
      send: [app-sync-status, github-commit-status]
  trigger.sync-operation-change: |
    - when: app.status.operationState.phase in ['Error', 'Failed']
      send: [app-sync-failed, github-commit-status]
  trigger.on-deployed: |
    - when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'
      oncePer: app.status.sync.revision
      send: [app-sync-succeeded]

▼ data.service

通知先のURLを設定する。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: argocd
  name: argocd-notifications-cm
  labels:
    app.kubernetes.io/part-of: argocd
data:
  service.slack: |
    token: *****

▼ data.template

通知内容を設定する。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: argocd
  name: argocd-notifications-cm
  labels:
    app.kubernetes.io/part-of: argocd
data:
  context: |
    env: prd

  template.a-slack-template-with-context: |
    message: "ArgoCD sync in {{ .context.env }}"