リソース定義@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 }}"