Skip to content

aKamrani/Argo-Workflow-Setup

Repository files navigation

Argo Workflows Logo

πŸš€ Argo Workflow Setup Guide

Optional: Postgres + Minio + Fluentbit & Graylog

Kubernetes Argo Workflows Fluent Bit License Maintenance

Welcome to the Argo Workflows setup repository! πŸŽ‰ This guide will walk you through installing Argo Workflows on your existing Kubernetes cluster and setting up authentication with the provided role bindings and service accounts.

πŸ—οΈ Architecture Overview

graph TB
    subgraph "Kubernetes Cluster"
        subgraph "Argo Namespace"
            AW[Argo Workflows]
            AC[Argo Controller]
            AS[Argo Server]
        end
        
        subgraph "PostgreSQL Namespace"
            PG[(PostgreSQL<br/>Workflow Persistence)]
        end
        
        subgraph "MinIO Namespace"
            MINIO[(MinIO<br/>Artifact Storage)]
        end
        
        subgraph "Ingress"
            ING[NGINX Ingress<br/>HTTPS/HTTP]
        end
        
        subgraph "Logging"
            FB[Fluent Bit<br/>Log Collection]
            GL[Graylog<br/>Centralized Logs]
        end
    end
    
    subgraph "External"
        USER[πŸ‘€ Users]
        REG[🐳 Docker Registry]
    end
    
    USER --> ING
    ING --> AS
    AS --> AC
    AC --> PG
    AC --> MINIO
    AC --> REG
    FB --> GL
    AW --> FB
    
    style AW fill:#e1f5fe
    style PG fill:#e8f5e8
    style MINIO fill:#fff3e0
    style GL fill:#f3e5f5
    style USER fill:#ffebee
Loading

🎯 What This Setup Provides

This comprehensive Argo Workflows setup includes:

  • πŸš€ Argo Workflows: Complete workflow orchestration with UI and API
  • πŸ—„οΈ PostgreSQL: High-availability database for workflow persistence
  • πŸͺ£ MinIO: S3-compatible object storage for artifacts and logs
  • πŸ”’ HTTPS Security: SSL/TLS encryption for secure access
  • πŸ“Š Centralized Logging: Fluent Bit integration with Graylog
  • πŸ” RBAC Authentication: Admin and read-only user access controls
  • πŸ“ Example Workflows: Ready-to-use CronWorkflow templates
  • βš™οΈ Production Ready: Scalable, secure, and maintainable configuration

πŸ“‹ Table of Contents

🎯 Prerequisites

Before you begin, ensure you have:

  • βœ… A running Kubernetes cluster (v1.21+)
  • βœ… kubectl configured and connected to your cluster
  • βœ… Cluster admin privileges
  • βœ… NGINX Ingress Controller (for HTTP access)

⚑ Quick Start

# 1. Set your desired Argo Workflows version
export ARGO_WORKFLOWS_VERSION="v3.7.2"  # or latest stable

# 2. Install Argo Workflows
kubectl create namespace argo
kubectl apply --server-side --kustomize "https://github.com/argoproj/argo-workflows/manifests/base/crds/full?ref=${ARGO_WORKFLOWS_VERSION}"
kubectl -n argo apply -f "https://github.com/argoproj/argo-workflows/releases/download/${ARGO_WORKFLOWS_VERSION}/install.yaml"

# 3. Set up PostgreSQL and MinIO (see sections below)
# 4. Configure workflow controller (see section below)
# 5. Apply authentication setup
kubectl apply -f argo-login-admin.yml
kubectl apply -f argo-login-user-readonly.yml
kubectl apply -f https-ingress/http-ingress-forTest.yml

# 6. Get your admin token
kubectl -n argo get secret argo-admin-token -o=jsonpath='{.data.token}' | base64 --decode

⚠️ Important: For a complete setup, you must configure PostgreSQL and MinIO before using Argo Workflows in production!

πŸ—„οΈ PostgreSQL Setup

Argo Workflows requires PostgreSQL for workflow persistence and state management. This setup uses CloudNativePG operator for high availability.

Prerequisites

# Install CloudNativePG operator
helm repo add cnpg https://cloudnative-pg.github.io/charts
helm repo update
kubectl create namespace postgres-operator
helm install cnpg cnpg/cloudnative-pg -n postgres-operator

Storage Class Setup

PostgreSQL uses the local-path storage class for persistent volumes. Install it if not already available:

# Install local-path storage provisioner
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

# Verify storage class is available
kubectl get storageclass

Storage Class Details:

  • Name: local-path
  • Type: Local storage provisioner
  • Use Case: Development and testing environments
  • Persistence: Data stored on local node filesystem
  • Performance: Good for single-node or small clusters
  • Backup: Requires manual backup procedures

⚠️ Production Note: For production environments, consider using cloud storage classes (e.g., gp2, gp3 for AWS, standard for GCP) or enterprise storage solutions for better durability and performance.

Deploy PostgreSQL Cluster

# Apply PostgreSQL configuration
kubectl apply -f postgres-cluster.yml

Verify PostgreSQL Deployment

# Check cluster status
kubectl get cluster -n argo-postgres

# Check pods
kubectl get pods -n argo-postgres

# Check services
kubectl get svc -n argo-postgres

Database and User Setup

If the database and user are not automatically created, connect to PostgreSQL and run these commands:

# Connect to PostgreSQL (replace with your actual pod name)
kubectl exec -it argo-postgres-1 -n argo-postgres -- psql -U argo-superuser -d postgres

# Run the following SQL commands:
CREATE USER "argoUser" WITH PASSWORD '9f8e7d6c5b4a3A2B1C0DQWErtyUIop';
GRANT ALL PRIVILEGES ON DATABASE argo_workflow TO "argoUser";
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "argoUser";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO "argoUser";
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO "argoUser";
GRANT USAGE ON SCHEMA public TO "argoUser";
GRANT CREATE ON SCHEMA public TO "argoUser";
ALTER DATABASE argo_workflow OWNER TO "argoUser";

PostgreSQL Configuration Details

  • Cluster Name: argo-postgres
  • Namespace: argo-postgres
  • Instances: 3 (for high availability)
  • Storage: 5Gi per instance
  • Database: argo_workflow
  • User: argoUser
  • Password: 9f8e7d6c5b4a3A2B1C0DQWErtyUIop

πŸͺ£ MinIO Setup

MinIO provides S3-compatible object storage for Argo Workflows artifacts and logs.

Prerequisites

# Install MinIO operator
helm repo add minio https://operator.min.io/
helm repo update
kubectl create namespace minio-operator
helm install minio-operator minio/operator -n minio-operator

Prepare Storage

For local storage setup, you need to create directories on your nodes and generate persistent volumes:

# Create storage directories on each node
sudo mkdir -p /var/argo-workflow-minio/disk1
sudo mkdir -p /var/argo-workflow-minio/disk2
sudo chmod 777 /var/argo-workflow-minio/disk1
sudo chmod 777 /var/argo-workflow-minio/disk2

# Generate persistent volumes (adjust nodes in script if needed)
cd minio-cluster/
chmod +x pvs-generator.sh
./pvs-generator.sh

Deploy MinIO Cluster

# Apply MinIO configuration using Kustomize
kubectl apply -k minio-cluster/

Verify MinIO Deployment

# Check tenant status
kubectl get tenant -n argo-minio

# Check pods
kubectl get pods -n argo-minio

# Check services
kubectl get svc -n argo-minio

Access MinIO

MinIO is exposed via NodePort services:

  • MinIO API: http://<node-ip>:32000
  • MinIO Console: http://<node-ip>:32443
  • Credentials:
    • Username: argoworkflow
    • Password: 9f8e7d6c5b4a3A2B1C0DQWErtyUIop

MinIO Configuration Details

  • Tenant Name: argo-minio
  • Namespace: argo-minio
  • Pools: 1 pool with 3 servers, 2 volumes each
  • Storage: 1Gi per volume (6Gi total)
  • Bucket: argo-artifacts (auto-created)
  • Storage Class: minio-local-storage

βš™οΈ Workflow Controller Configuration

Configure the Argo Workflows controller to use PostgreSQL for persistence and MinIO for artifacts.

Apply Configuration

# Update the workflow controller configmap
kubectl patch configmap workflow-controller-configmap -n argo --patch-file workflow-controller-configmap.yml

Configuration Details

The configuration includes:

Artifact Repository (MinIO):

  • Endpoint: argo-minio-hl.argo-minio.svc.cluster.local:9000
  • Bucket: argo-artifacts
  • Insecure: true (for internal cluster communication)
  • Credentials: Uses minio-creds-secret

Persistence (PostgreSQL):

  • Host: argo-postgres-rw.argo-postgres.svc.cluster.local
  • Port: 5432
  • Database: argo_workflow
  • Table: argo_workflow
  • Credentials: Uses argo-postgres-secret

πŸ“‹ Enable Workflow Log Storage in MinIO

To store workflow job logs in MinIO (S3-compatible storage), you need to uncomment the artifact repository configuration in the workflow controller configmap:

# Edit the workflow controller configmap
kubectl edit configmap workflow-controller-configmap -n argo

In the data.config section, uncomment these lines:

artifactRepository:
  archiveLogs: true
  s3:
    endpoint: "argo-minio-hl.argo-minio.svc.cluster.local:9000"
    bucket: argo-artifacts
    insecure: true
    accessKeySecret:
      name: minio-creds-secret
      key: accesskey
    secretKeySecret:
      name: minio-creds-secret
      key: secretkey

Benefits of enabling log archiving:

  • βœ… Workflow logs are stored in MinIO for long-term retention
  • βœ… Logs remain accessible even after pods are deleted
  • βœ… Centralized log storage for better monitoring and debugging
  • βœ… Reduced storage pressure on PostgreSQL database

Note: This is optional but recommended for production environments where you need to retain workflow execution logs for auditing and troubleshooting purposes.

Restart Controller

# Restart the workflow controller to apply new configuration
kubectl rollout restart deployment/workflow-controller -n argo

πŸ”§ Detailed Installation Steps

Step 0: 🏷️ Pick a Release Version

First, choose your Argo Workflows version from the GitHub releases page:

export ARGO_WORKFLOWS_VERSION="v3.7.2"   # Replace with your desired version

⚠️ Important: Always use a specific release version, never use 'latest' for production!

Step 1: πŸ—οΈ Namespace + CRDs Installation

Create the Argo namespace and install the Custom Resource Definitions:

# Create namespace
kubectl create namespace argo

# Install full CRDs using server-side apply (recommended for v3.7+)
kubectl apply --server-side --kustomize "https://github.com/argoproj/argo-workflows/manifests/base/crds/full?ref=${ARGO_WORKFLOWS_VERSION}"

# Install controller and server manifests
kubectl -n argo apply -f "https://github.com/argoproj/argo-workflows/releases/download/${ARGO_WORKFLOWS_VERSION}/install.yaml"

Step 2: πŸŽ›οΈ Choose Installation Mode

Argo Workflows supports three installation modes:

  • 🌐 Cluster Mode (default): Argo watches workflows cluster-wide
  • πŸ“¦ Namespace Mode: Argo only executes workflows in one namespace
  • 🎯 Managed Namespace: Controller/server in argo, executes in another namespace

The default installation uses Cluster Mode. For namespace isolation, modify the manifests accordingly.

Step 3: πŸš€ High Availability & Scaling

For production environments, consider these scaling recommendations:

# Scale controller (typically 1-2 replicas for HA)
kubectl -n argo scale deployment workflow-controller --replicas=2

# Scale argo-server (2-3 replicas recommended)
kubectl -n argo scale deployment argo-server --replicas=3

πŸ’‘ Tip: Use PodDisruptionBudgets and set resource requests/limits for stable scheduling.

Step 4: βœ… Post-Installation Verification

Verify your installation:

# Check pods are running
kubectl -n argo get pods

# Check deployments, services, and ingress
kubectl -n argo get deploy,svc,ingress

# Test connectivity (replace with your domain)
curl -i -k https://your-argo-domain.com/

πŸ” Authentication Setup

This repository provides two authentication configurations:

πŸ‘‘ Admin Access (argo-login-admin.yml)

Full administrative access to Argo Workflows:

# Apply admin configuration
kubectl apply -f argo-login-admin.yml

# Get admin token
kubectl -n argo get secret argo-admin-token -o=jsonpath='{.data.token}' | base64 --decode

Admin Permissions:

  • βœ… Full access to all Argo resources
  • βœ… Create, read, update, delete workflows
  • βœ… Manage workflow templates
  • βœ… Access all namespaces

πŸ‘€ User Access (argo-login-user-readonly.yml)

Read-only access for regular users:

# Apply user configuration
kubectl apply -f argo-login-user-readonly.yml

# Get user token
kubectl -n argo get secret argo-admin-token -o=jsonpath='{.data.token}' | base64 --decode

User Permissions:

  • βœ… Read-only access to Argo resources
  • βœ… View workflows and logs
  • βœ… Monitor workflow status
  • ❌ Cannot create or modify workflows

πŸ” Enhanced Admin Rules (argo-admin-rules-allPossibleValues.yml)

Comprehensive admin rules with all possible permissions for advanced use cases:

# Apply enhanced admin rules (optional - for advanced scenarios)
kubectl apply -f argo-admin-rules-allPossibleValues.yml

Enhanced Admin Permissions:

  • βœ… Full access to all Argo resources
  • βœ… Pod management (create, exec, logs)
  • βœ… ConfigMap access
  • βœ… PersistentVolumeClaim management
  • βœ… Workflow finalizers and task sets
  • βœ… CronWorkflow management
  • βœ… Event creation and patching
  • βœ… PodDisruptionBudget management

🌐 Accessing the UI

Step 1: πŸšͺ Apply Ingress Configuration

For HTTP access (testing/development):

kubectl apply -f https-ingress/http-ingress-forTest.yml

For HTTPS access (production):

kubectl apply -f https-ingress/https-ingress.yml

The HTTP ingress exposes the Argo Workflows UI on port 80, while the HTTPS ingress provides secure access with SSL certificates.

Step 2: πŸ”‘ Login with Bearer Token

  1. Get your token (admin or user):

    # For admin
    kubectl -n argo get secret argo-admin-token -o=jsonpath='{.data.token}' | base64 --decode
    
    # For user
    kubectl -n argo get secret argo-user-token -o=jsonpath='{.data.token}' | base64 --decode
  2. Access the UI:

    • Open your browser and navigate to your cluster's IP or domain
    • When prompted for authentication, select Bearer Token
    • Paste your token in the format: Bearer <your-token-here>

Step 3: πŸŽ‰ You're In!

You should now see the Argo Workflows UI with your assigned permissions.

πŸ”’ HTTPS Ingress Configuration

For production environments, secure HTTPS access is recommended. The repository includes HTTPS ingress configurations with SSL certificate support.

HTTPS Ingress Setup

# Apply HTTPS ingress with SSL certificates
kubectl apply -f https-ingress/https-ingress.yml

Configuration Details

HTTPS Ingress Features:

  • Domain: workflow-dev.eample.co (configurable)
  • SSL/TLS: Automatic SSL redirect and HTTPS backend
  • Certificate: Uses eample-co-tls secret
  • Security: Force SSL redirect enabled

HTTP Test Ingress:

  • Purpose: Development and testing
  • Protocol: HTTP only (no SSL)
  • Access: Available on all node IPs on port 80

SSL Certificate Management

To use HTTPS ingress, you need to create an SSL certificate secret:

# Create SSL certificate secret (replace with your certificate)
kubectl create secret tls eample-co-tls \
  --cert=path/to/your/certificate.crt \
  --key=path/to/your/private.key \
  -n argo

πŸ“Š Fluent Bit Logging

Fluent Bit is configured to collect and forward Argo Workflows logs to a centralized logging system (Graylog).

Deploy Fluent Bit

# Apply Fluent Bit configuration
kubectl apply -f fluent-bit.yml

Configuration Details

Fluent Bit Features:

  • Log Collection: Collects logs from all Argo Workflows pods
  • Output: Forwards logs to Graylog via GELF protocol
  • Target: 10.36.18.28:3333 (configurable)
  • Format: GELF format with structured logging
  • Scope: Only Argo-related logs (*_argo_*.log)

Log Processing:

  • Input: Container logs from /var/log/containers/*_argo_*.log
  • Parser: CRI format parser for container logs
  • Filter: Kubernetes metadata enrichment
  • Output: GELF format to Graylog server

Verify Fluent Bit Deployment

# Check Fluent Bit pods
kubectl get pods -n kube-system | grep fluent-bit

# Check Fluent Bit logs
kubectl logs -n kube-system daemonset/fluent-bit

# Check Fluent Bit configuration
kubectl get configmap fluent-bit-config -n kube-system -o yaml

πŸ“ Example Workflows

The repository includes example workflow templates and configurations to help you get started with Argo Workflows.

Example CronWorkflow

A comprehensive example showing how to create scheduled workflows:

# Apply example workflow
kubectl apply -f example-workflow/example-workflow-eample.yml

Example Configuration Files

API Configuration (api-config.yml):

  • Laravel application environment variables
  • Database connections (MySQL)
  • Redis configuration
  • Mail settings
  • External service integrations

OAuth Keys (oauth-private.yml, oauth-public.yml):

  • RSA private/public key pairs for OAuth authentication
  • Used for secure API authentication

Docker Registry Secret (bcr-eample-secret.yml):

  • Private Docker registry credentials
  • Required for pulling private container images

Workflow Features Demonstrated

CronWorkflow Configuration:

  • Schedule: Configurable cron expression (* * * * * for every minute)
  • Timezone: Asia/Tehran (configurable)
  • Concurrency: Allow multiple concurrent executions
  • History: Keeps 5 successful and 5 failed job histories
  • Deadline: 15-minute execution timeout

Container Configuration:

  • Image: Private registry image with authentication
  • Command: PHP artisan commands
  • Environment: Timezone and application variables
  • Volumes: ConfigMaps for configuration and secrets
  • Retry Strategy: 4 retries with exponential backoff

Logging Integration:

  • Labels: workflow-group and workflow-type for log identification
  • Context: log-context: argo-workflow-dev for Graylog filtering

Customizing Example Workflows

  1. Update Schedule: Modify the cron expression in spec.schedule
  2. Change Image: Update the container image in spec.workflowSpec.templates[].container.image
  3. Modify Commands: Update the command and args for your specific tasks
  4. Adjust Resources: Set appropriate resource limits and requests
  5. Update Labels: Change workflow labels for proper log categorization

πŸ” Troubleshooting

Common Issues:

πŸ› Pods not starting:

kubectl -n argo describe pods
kubectl -n argo logs deployment/workflow-controller
kubectl -n argo logs deployment/argo-server

πŸ”’ Authentication issues:

# Check if secrets exist
kubectl -n argo get secrets | grep argo

# Verify service accounts
kubectl -n argo get serviceaccounts | grep argo

# Check role bindings
kubectl get clusterrolebindings | grep argo

🌐 Ingress not working:

# Check ingress status
kubectl -n argo get ingress

# Verify NGINX ingress controller
kubectl get pods -n ingress-nginx

πŸ—„οΈ PostgreSQL issues:

# Check cluster status
kubectl get cluster -n argo-postgres

# Check PostgreSQL pods
kubectl get pods -n argo-postgres

# Check PostgreSQL logs
kubectl logs -n argo-postgres deployment/argo-postgres

# Test database connection
kubectl exec -it argo-postgres-1 -n argo-postgres -- psql -U argo-superuser -d postgres -c "\l"

πŸͺ£ MinIO issues:

# Check tenant status
kubectl get tenant -n argo-minio

# Check MinIO pods
kubectl get pods -n argo-minio

# Check MinIO logs
kubectl logs -n argo-minio deployment/argo-minio

# Check persistent volumes
kubectl get pv | grep minio

# Check storage directories on nodes
sudo ls -la /var/argo-workflow-minio/

βš™οΈ Workflow Controller issues:

# Check configmap
kubectl get configmap workflow-controller-configmap -n argo -o yaml

# Check controller logs
kubectl logs -n argo deployment/workflow-controller

# Verify secrets exist
kubectl get secret -n argo | grep -E "(minio|postgres)"

🌐 HTTPS Ingress issues:

# Check ingress status
kubectl -n argo get ingress

# Check SSL certificate secret
kubectl -n argo get secret eample-co-tls

# Verify NGINX ingress controller
kubectl get pods -n ingress-nginx

# Check ingress events
kubectl -n argo describe ingress argo-server-https

πŸ“Š Fluent Bit issues:

# Check Fluent Bit pods
kubectl get pods -n kube-system | grep fluent-bit

# Check Fluent Bit logs
kubectl logs -n kube-system daemonset/fluent-bit

# Verify Fluent Bit configuration
kubectl get configmap fluent-bit-config -n kube-system -o yaml

# Check if logs are being collected
kubectl logs -n kube-system daemonset/fluent-bit | grep "argo"

# Verify Graylog connectivity
kubectl exec -n kube-system daemonset/fluent-bit -- nc -zv 10.36.18.28 3333

πŸ“ Example Workflow issues:

# Check CronWorkflow status
kubectl -n argo get cronworkflows

# Check workflow executions
kubectl -n argo get workflows

# Check workflow logs
kubectl -n argo logs workflow/<workflow-name>

# Verify ConfigMaps and Secrets
kubectl -n argo get configmaps
kubectl -n argo get secrets

# Check image pull secrets
kubectl -n argo get secret bcr-eample-secret

πŸ”§ Useful Commands:

# Check Argo Workflows status
kubectl -n argo get all

# View workflow controller logs
kubectl -n argo logs -f deployment/workflow-controller

# View argo server logs
kubectl -n argo logs -f deployment/argo-server

# List all workflows
kubectl -n argo get workflows

# Get detailed workflow info
kubectl -n argo describe workflow <workflow-name>

πŸ“ File Structure

argo-workflow-setup/
β”œβ”€β”€ πŸ“„ README.md                                    # This comprehensive guide
β”œβ”€β”€ πŸ“„ .gitignore                                   # Git ignore file for sensitive data
β”œβ”€β”€ πŸ” argo-login-admin.yml                         # Admin authentication setup
β”œβ”€β”€ πŸ‘€ argo-login-user-readonly.yml                 # Read-only user authentication setup
β”œβ”€β”€ πŸ” argo-admin-rules-allPossibleValues.yml       # Enhanced admin rules with all permissions
β”œβ”€β”€ πŸ—„οΈ postgres-cluster.yml                         # PostgreSQL cluster configuration
β”œβ”€β”€ βš™οΈ workflow-controller-configmap.yml             # Workflow controller configuration
β”œβ”€β”€ πŸ“Š fluent-bit.yml                               # Fluent Bit logging configuration
β”œβ”€β”€ πŸ“ https-ingress/                               # HTTPS ingress configurations
β”‚   β”œβ”€β”€ 🌐 https-ingress.yml                        # Production HTTPS ingress with SSL
β”‚   └── 🌐 http-ingress-forTest.yml                 # Development HTTP ingress
β”œβ”€β”€ πŸ“ example-workflow/                            # Example workflow templates
β”‚   β”œβ”€β”€ πŸ“ example-workflow.yml                     # Example CronWorkflow template
β”‚   β”œβ”€β”€ πŸ“„ README.md                                # Example workflow documentation
└── πŸ“ minio-cluster/                               # MinIO cluster configuration
    β”œβ”€β”€ πŸ“„ kustomization.yml                        # Kustomize configuration
    β”œβ”€β”€ πŸ“„ namespace.yml                            # MinIO namespace
    β”œβ”€β”€ πŸ” secrets.yml                              # MinIO credentials
    β”œβ”€β”€ πŸͺ£ tenant.yml                               # MinIO tenant configuration
    β”œβ”€β”€ 🌐 services.yml                             # MinIO services (NodePort)
    β”œβ”€β”€ πŸ’Ύ storageclass.yml                         # Local storage class
    β”œβ”€β”€ πŸ“¦ pvs.yml                                  # Persistent volumes
    └── πŸ”§ pvs-generator.sh                         # PV generator script

Note: Files with .ignore extension (like *.yml.ignore) are excluded from version control and not shown in the file structure as they contain sensitive information or are used as templates.

File Descriptions:

Repository Management:

  • .gitignore: Excludes sensitive files, secrets, certificates, temporary files, and .ignore files from version control

Core Argo Workflows Files:

  • argo-login-admin.yml: Creates admin service account with full permissions
  • argo-login-user-readonly.yml: Creates user service account with read-only permissions
  • argo-admin-rules-allPossibleValues.yml: Enhanced admin rules with comprehensive permissions
  • workflow-controller-configmap.yml: Configures workflow controller with PostgreSQL and MinIO

HTTPS Ingress Files:

  • https-ingress/https-ingress.yml: Production HTTPS ingress with SSL certificates
  • https-ingress/http-ingress-forTest.yml: Development HTTP ingress for testing

Logging Files:

  • fluent-bit.yml: Fluent Bit configuration for centralized logging to Graylog

Example Workflow Files:

  • example-workflow/example-workflow.yml: Complete CronWorkflow example with retry strategies
  • example-workflow/README.md: Detailed documentation for example workflows

PostgreSQL Files:

  • postgres-cluster.yml: CloudNativePG cluster configuration with secrets and services

MinIO Files:

  • minio-cluster/kustomization.yml: Kustomize configuration for MinIO deployment
  • minio-cluster/namespace.yml: Creates argo-minio namespace
  • minio-cluster/secrets.yml: MinIO credentials for both argo-minio and argo namespaces
  • minio-cluster/tenant.yml: MinIO tenant with 3 servers, 2 volumes each
  • minio-cluster/services.yml: NodePort services for MinIO API (32000) and Console (32443)
  • minio-cluster/storageclass.yml: Local storage class for MinIO volumes
  • minio-cluster/pvs.yml: Persistent volumes for local storage (auto-generated)
  • minio-cluster/pvs-generator.sh: Script to generate persistent volumes for your nodes

🎯 Next Steps

After successful installation:

  1. πŸ§ͺ Test workflows: Create a simple workflow to verify functionality
  2. πŸ”§ Configure: Set up workflow templates and cron workflows
  3. πŸ“Š Monitor: Set up monitoring and alerting for your workflows
  4. πŸ”’ Security: Review and customize RBAC permissions as needed
  5. πŸ“š Learn: Explore the Argo Workflows documentation

πŸ“š Additional Resources


Happy Workflowing! πŸŽ‰βœ¨

πŸ’‘ Pro Tip: Bookmark this README for future reference and share it with your team members who need to set up Argo Workflows!

Releases

No releases published

Packages

 
 
 

Contributors

Languages