thoth-station.argo_workflows
Rol de Ansible: Argo Workflows
Este es un rol de Ansible para configurar Argo Workflows en un solo espacio de nombres.
Acerca de
Consulta el artículo en Medium para un recorrido detallado.
Requisitos
- Clúster de OpenShift con derechos de administrador del clúster.
¿Por qué se requiere acceso de administrador del clúster?
Argo crea un CRD, esta operación requiere (a menos que se configure de otra manera) privilegios de administrador del clúster.
- Dependencias instaladas para el módulo ansible de k8s
pip install kubernetes openshift
kubectl
instalado (ver https://kubernetes.io/docs/tasks/tools/install-kubectl/)
Instalar el rol desde Ansible Galaxy
ansible-galaxy install thoth-station.argo_workflows
Variables del rol
defaults:
# Espacio de nombres en el que Argo debe ser provisionado
namespace: argo
# Esto supone ciertos privilegios y modifica los recursos en consecuencia
# Por ejemplo, se supone que un desarrollador no podrá crear
# un CRD. Por lo tanto, se espera que estos recursos ya existan en el clúster.
role: cluster-admin # opciones: developer, cluster-admin
# Superposiciones personalizadas que se aplicarán a través de kustomize a la instalación base de argo.
# Las superposiciones deben estar presentes en la carpeta [/templates/overlays/](/templates/overlays/) y deben contener un `kustomization.yaml` válido
overlay: "" # opciones: openshift
# Executor del contenedor Argo
#
# Docker
#
# + soporta todos los ejemplos de flujo de trabajo
# + muy confiable y bien probado
# + muy escalable. se comunica con el demonio de docker para las operaciones pesadas
# - menos seguro. requiere que se monte docker.sock del host (a menudo rechazado por OPA)
#
# Kubelet
#
# + seguro. no puede escaparse de los privilegios de la cuenta de servicio del pod
# + escalabilidad media - la recuperación de logs y sondeo de contenedores se realiza contra kubelet
# - puede ser necesaria configuración adicional de kubelet
# - solo puede guardar parámetros/artifacts en volúmenes (p. ej., emptyDir), y no en la capa de imagen base (p. ej., /tmp)
#
# K8s API
#
# + seguro. no puede escaparse de los privilegios de la cuenta de servicio del pod
# + sin configuración adicional
# - menos escalable - la recuperación de logs y sondeo de contenedores se realiza contra el servidor API de k8s
# - solo puede guardar parámetros/artifacts en volúmenes (p. ej., emptyDir), y no en la capa de imagen base (p. ej., /tmp)
#
# PNS
#
# + seguro. no puede escaparse de los privilegios de la cuenta de servicio
# + la colección de artifacts se puede recoger desde la capa de imagen base
# + escalable - el sondeo de procesos se realiza sobre procfs y no sobre kubelet/k8s API
# - los procesos ya no se ejecutarán con pid 1
# - la colección de artifacts de la imagen base puede fallar para contenedores que completan demasiado rápido
# - no se puede capturar directorios de artifacts de la imagen base que tiene un volumen montado debajo
# - inmaduro
executor: docker # opciones: docker, kubelet, k8sapi, pns
# Si validar las plantillas de Kubernetes al enviar a través de kubectl
validate: true
# metricsConfig controla la ruta y el puerto para métricas de prometheus
metricsEnabled: true
metricsPath: /metrics
metricsPort: 8080
# telemetryConfig controla la ruta y el puerto para telemetría de prometheus
telemetryEnabled: true
telemetryPath: /telemetry
telemetryPort: 8080
# Artifacts
# ---------
# Tipo de repositorio de artifacts a configurar (si no está vacío)
# opciones:
# - "s3"
artifactRepository: ""
# archiveLogs archivará los logs del contenedor principal como un artifact
# solo aplicable si artifactRepository != ""
archiveLogs: {{ archiveLogs }}
# configuración del repositorio de artifacts s3
# solo aplicable si artifactRepository == "s3"
AWS_S3_BUCKET_PREFIX: "" # prefijo del bucket s3
AWS_S3_ARTIFACT_PATH: "" # ruta al directorio de artifacts en el prefijo
extra:
# Referencia de Argo a usar
# Puede ser una rama, etiqueta o un commit específico (predeterminado a la última versión)
- ref
# Permite sobreescribir las imágenes del executor y del controlador de flujo de trabajo
- executor_image
- workflow_controller_image
# Si se selecciona un repositorio de artifacts s3, se requieren un host (punto final) y credenciales
- AWS_S3_HOST
- AWS_S3_BUCKET_NAME
- AWS_S3_ACCESS_KEY_ID
- AWS_S3_SECRET_ACCESS_KEY
Ejemplo de Playbook
---
- name: "Un Play básico para provisionar Argo en un solo espacio de nombres."
hosts: localhost
connection: local
roles:
- role: thoth-station.argo_workflows
tags:
- argo
- argo-workflows
namespace: argo
ref: v2.4.0
El rol ofrece una opción para agregar superposiciones personalizadas a través de Kustomize, actualmente hay una superposición existente para el entorno de OpenShift. Úsalo así:
---
- name: "Un Play básico para provisionar Argo en un solo espacio de nombres."
hosts: localhost
connection: local
roles:
- role: thoth-station.argo_workflows
tags:
- argo
- argo-workflows
namespace: argo
# parchear la instalación base para que se ejecute en un espacio de nombres de OpenShift
# esto también agrega una Ruta para el argo-ui
overlay: openshift
Probado en minishift, OpenShift 3.11.
Licencia
MIT
Información del autor
Marek Cermak macermak@redhat.com
Instalar
ansible-galaxy install thoth-station.argo_workflows
Licencia
mit
Descargas
129
Propietario
Using Artificial Intelligence to analyse and recommend Software Stacks for the Python Ecosystem.