Todos los productos
Search
Centro de documentos

Container Compute Service:Envíe un flujo de trabajo a un namespace

Última actualización: Sep 09, 2026

De forma predeterminada, los flujos de trabajo se envían al namespace argo. Para enviar flujos de trabajo a un namespace distinto y aislar recursos con control de acceso entre equipos o proyectos, primero otorgue los permisos obligatorios de control de acceso basado en roles (RBAC) al ServiceAccount del namespace.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Una instalación de Argo Workflows en ejecución dentro de su clúster.

  • Acceso mediante kubectl con permisos para crear namespaces y recursos RBAC.

  • El CLI argo instalado.

Otorgue permisos y envíe un flujo de trabajo

Paso 1: Cree el namespace de destino

kubectl create ns test

Paso 2: Cree el archivo de autorización RBAC

Cree un archivo llamado role-rolebinding.yaml con a continuación contenido.

Este ejemplo otorga permisos al ServiceAccount default. Si su flujo de trabajo especifica un ServiceAccount distinto, otorgue los permisos a ese ServiceAccount. Los RoleBindings tienen alcance de namespace, por lo que los permisos aplican únicamente dentro del namespace donde se crean. Por esta razón, en el paso 3 se aplica este archivo al namespace test.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    workflows.argoproj.io/description: |
      This is the minimum recommended permissions needed if you want to use the agent, e.g. for HTTP or plugin templates.

      If <= v3.2 you must replace `workflowtasksets/status` with `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: |
      This is the minimum recommended permissions needed if you want to use artifact 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: |
      Recommended minimum permissions for the `emissary` executor.
  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: |
      This is an example of the permissions you would need if you wanted to use a resource template to create and manage
      other workflows. The same pattern would be suitable for other resurces, e.g. a service
  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

El archivo define cinco Roles y cuatro RoleBindings. Comience con el rol executor, ya que es el mínimo obligatorio para ejecutar cualquier flujo de trabajo. Agregue los roles restantes solo para las funciones que utilice:

Rol

Obligatorio para

Recursos

executor

Mínimo para el ejecutor emissary

workflowtaskresults (create, patch)

agent

Plantillas HTTP y plantillas de plugin

workflowtasksets (list, watch); workflowtasksets/status (patch)

artifactgc

Recolección de basura de artefactos

workflowartifactgctasks (list, watch); workflowartifactgctasks/status (patch)

submit-workflow-template

Envío de flujos de trabajo desde WorkflowTemplates

workfloweventbindings (list); workflowtemplates (get); workflows (create)

workflow-manager

Creación y gestión de flujos de trabajo desde plantillas de recursos

workflows (create, get)

Paso 3: Aplique el archivo de autorización

Aplique el archivo al namespace test para crear ahí los Roles y RoleBindings:

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

La salida esperada es la siguiente:

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

Paso 4: Cree una definición de flujo de trabajo

Cree un archivo llamado helloworld-workflow.yaml:

apiVersion: argoproj.io/v1alpha1
kind: Workflow                  # new type of k8s spec.
metadata:
  generateName: hello-world-    # name of the workflow spec.
spec:
  entrypoint: main          # invoke the main template.
  templates:
    - name: main              # name of the template.
      container:
        image: mirrors-ssl.aliyuncs.com/busybox:latest
        command: [ echo ]
        args: [ "hello world" ]

Paso 5: Envíe el flujo de trabajo al namespace de destino

argo submit helloworld-workflow.yaml -n test

El flujo de trabajo se ejecuta en el namespace test con los permisos otorgados en el paso 3.