Skip to content

ArgoCD Deployment Guide for Genesis

orion.png

Overview

This guide explains how to deploy Genesis using ArgoCD, which helps prevent configuration drift and enhances security through GitOps practices. ArgoCD continuously monitors your Kubernetes cluster and automatically applies the desired state from Git.

Prerequisites

  • Access to a Kubernetes cluster
  • ArgoCD installed on your cluster
  • kubectl CLI configured to access your cluster
  • A valid Juno license key
  • Authentication service credentials (Google OAuth or AWS Cognito)

Deployment Steps

1. Create the ArgoCD Application Configuration

Create a file named genesis-argocd.yaml with the following content:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: genesis
  namespace: argocd
  annotations:
    argocd.argoproj.io/sync-wave: "1"
spec:
  project: default
  destination:
    server: https://kubernetes.default.svc
    namespace: argocd
  sources:
    # Genesis Helm Chart Repository
    - repoURL: "https://github.com/juno-fx/Genesis-Deployment.git"  # Replace with your repository URL
      path: .
      targetRevision: "v1.1"  # Specify branch, commit hash, or tag
      helm:
        parameters:
          # Titan Owner Configuration
          - name: "titan.owner"
            value: "your-username"  # Your administrator username
          - name: "titan.email"
            value: "admin@example.com"  # Administrator email
          - name: "titan.uid"
            value: "your-user-id"  # Your user ID in the system

          # Application Hostname Configuration
          - name: "host"
            value: "my-genesis.example.com"  # Your Genesis instance hostname
          - name: "env.NEXTAUTH_URL"
            value: "https://my-genesis.example.com/api/auth"  # Authentication endpoint URL

          # Container Registry Configuration
          - name: "registry"
            value: "registry.example.com/juno"  # Registry where Juno images are stored

          # Authentication Configuration (Choose ONE auth method)
          # Option 1: Google OAuth
          - name: "env.GOOGLE_CLIENT_ID"
            value: "your-google-client-id"
          - name: "env.GOOGLE_CLIENT_SECRET"
            value: "your-google-client-secret"

          # Option 2: AWS Cognito (Comment out if using Google OAuth)
          - name: "env.COGNITO_CLIENT_ID"
            value: "your-cognito-client-id"
          - name: "env.COGNITO_CLIENT_SECRET"
            value: "your-cognito-client-secret"
          - name: "env.COGNITO_ISSUER"
            value: "https://cognito-idp.region.amazonaws.com/your-user-pool-id"

          # Licensing
          - name: "license_key"
            value: "your-juno-license-key"

  # Sync Policy Configuration
  syncPolicy:
    automated:
      prune: true      # Automatically delete resources that are no longer defined in Git
      selfHeal: true   # Automatically sync when cluster state deviates from Git state
      allowEmpty: true # Allow empty resources during sync
    syncOptions:
      - CreateNamespace=true  # Automatically create namespace if it doesn't exist

2. Replace Placeholder Values

Before deploying, replace all <UPDATE ME> or example values with your actual configuration:

Parameter Description Example
repoURL Git repository URL for the Genesis Helm chart https://github.com/juno-fx/Genesis-Deployment.git
targetRevision Git branch, tag, or commit to use v1.1, main, or a commit hash
titan.owner Administrator username admin
titan.email Administrator email address admin@example.com
titan.uid Administrator user ID 123456
host Fully qualified domain name for Genesis my-genesis.example.com
env.NEXTAUTH_URL Authentication endpoint URL https://my-genesis.example.com/api/auth
registry Container registry for Juno images registry.example.com/juno
Auth credentials Credentials for your chosen auth provider See authentication section below
license_key Your Juno license key Contact Juno support for a valid key

3. Deploy the Application

Apply the configuration to your Kubernetes cluster:

kubectl apply -f genesis-argocd.yaml

4. Verify Deployment

  1. Log in to your ArgoCD web interface
  2. Navigate to the Applications tab
  3. Find the "genesis" application
  4. Check the sync status and health status
  5. Click on the application to view deployment details

The application should show "Synced" and "Healthy" status after a few minutes.

Accessing Your Genesis Instance

After successfully deploying Genesis, you can access it through:

  • Your configured domain: https://my-genesis.example.com
  • Or through the node IP and ingress port: http://<node-ip>:<ingress-port>/

Authentication Configuration

Genesis supports multiple authentication providers. For detailed authentication setup instructions, refer to the authentication guide.

Troubleshooting

If your deployment encounters issues:

  1. Check the ArgoCD application logs for error messages
  2. Verify that all placeholder values have been replaced with valid information
  3. Ensure your Kubernetes cluster has sufficient resources
  4. Confirm that your authentication provider is properly configured
  5. Validate that your license key is active and valid

Additional Resources

For further assistance, contact Juno Support.