すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:特定の名前空間へのワークフローの送信

最終更新日:Mar 27, 2026

デフォルトでは、Argo Workflows はすべてのワークフローを argo 名前空間に送信します。リソースと権限の隔離のために別の名前空間でワークフローを実行するには、ターゲット名前空間に対してロールベースのアクセス制御 (RBAC) を設定し、-n フラグを付けてワークフローを送信します。

一般的なユースケースとして、あるチームが CI/CD パイプラインを実行し、別のチームがデータ処理ジョブを実行する場合、argo 名前空間を共有するのではなく、各チームに独自の名前空間を割り当てます。

前提条件

開始する前に、以下のものが準備できていることを確認してください。

  • kubectl がインストールされ、ACK クラスターへのアクセスが設定されていること

  • Argo CLI (argo) がインストールされていること

名前空間への RBAC 権限の付与

ステップ 1:ターゲット名前空間の作成

kubectl create ns test

ステップ 2:権限付与ファイルの作成

以下の内容で role-rolebinding.yaml という名前のファイルを作成します。これにより、5 つのロールと 4 つの RoleBinding が定義され、すべてが default サービスアカウントにバインドされます。

警告

default サービスアカウントは共有アカウントであり、意図しない権限が他のワークロードによって追加される可能性があります。本番環境のワークロードでは、default を使用する代わりに、ワークフロー専用のサービスアカウントを作成してください。

お使いの Argo Workflows のバージョンが v3.2 以前の場合は、agent ロールのルールで workflowtasksets/statuspatch workflowtasksets に置き換えてください。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    workflows.argoproj.io/description: |
      これは、エージェント (HTTP またはプラグインテンプレートなど) を使用する場合に必要となる、推奨される最小限の権限です。

      v3.2 以前の場合は、`workflowtasksets/status` を `patch workflowtasksets` に置き換える必要があります。
  name: agent
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workflowtasksets
    verbs:
      - list
      - watch
  - apiGroups:
      - argoproj.io
    resources:
      - workflowtasksets/status
    verbs:
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    workflows.argoproj.io/description: |
      これは、アーティファクト GC を使用する場合に必要となる、推奨される最小限の権限です。
  name: artifactgc
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workflowartifactgctasks
    verbs:
        - list
        - watch
  - apiGroups:
      - argoproj.io
    resources:
      - workflowartifactgctasks/status
    verbs:
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    workflows.argoproj.io/description: |
      `emissary` エグゼキュータに推奨される最小限の権限。
  name: executor
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workflowtaskresults
    verbs:
      - create
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: submit-workflow-template
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workfloweventbindings
    verbs:
      - list
  - apiGroups:
      - argoproj.io
    resources:
      - workflowtemplates
    verbs:
      - get
  - apiGroups:
      - argoproj.io
    resources:
      - workflows
    verbs:
      - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    workflows.argoproj.io/description: |
      これは、リソーステンプレートを使用して他のワークフローを作成および管理する場合に必要となる権限の例です。同じパターンが、他のリソース (サービスなど) にも適しています。
  name: workflow-manager
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - workflows
    verbs:
      - create
      - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: agent-default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: agent
subjects:
  - kind: ServiceAccount
    name: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: artifactgc-default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: artifactgc
subjects:
  - kind: ServiceAccount
    name: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: executor-default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: executor
subjects:
  - kind: ServiceAccount
    name: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: workflow-manager-default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: workflow-manager
subjects:
  - kind: ServiceAccount
    name: default

ステップ 3:権限付与の適用

kubectl apply -f role-rolebinding.yaml -n test

期待される出力は次のとおりです。

role.rbac.authorization.k8s.io/agent created
role.rbac.authorization.k8s.io/artifactgc created
role.rbac.authorization.k8s.io/executor created
role.rbac.authorization.k8s.io/submit-workflow-template created
role.rbac.authorization.k8s.io/workflow-manager created
rolebinding.rbac.authorization.k8s.io/agent-default created
rolebinding.rbac.authorization.k8s.io/artifactgc-default created
rolebinding.rbac.authorization.k8s.io/executor-default created
rolebinding.rbac.authorization.k8s.io/workflow-manager-default created

名前空間へのワークフローの送信

ステップ 4:ワークフローファイルの作成

helloworld-workflow.yaml という名前のファイルを作成します。

apiVersion: argoproj.io/v1alpha1
kind: Workflow                # Argo Workflows のための新しい Kubernetes リソースタイプを定義します。
metadata:
  generateName: hello-world-  # ワークフロー名のプレフィックス。Kubernetes が一意のサフィックスを追加します。
spec:
  entrypoint: main            # 最初に実行するテンプレートを指定します。
  templates:
    - name: main              # テンプレートの名前。
      container:
        image: mirrors-ssl.aliyuncs.com/busybox:latest
        command: [ echo ]
        args: [ "hello world" ]

ステップ 5:ワークフローの送信

ワークフローを test 名前空間に送信します。

argo submit helloworld-workflow.yaml -n test