ArgoCD Deployment Guide for Genesis¶
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:
4. Verify Deployment¶
- Log in to your ArgoCD web interface
- Navigate to the Applications tab
- Find the "genesis" application
- Check the sync status and health status
- 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:
- Check the ArgoCD application logs for error messages
- Verify that all placeholder values have been replaced with valid information
- Ensure your Kubernetes cluster has sufficient resources
- Confirm that your authentication provider is properly configured
- Validate that your license key is active and valid
Additional Resources¶
For further assistance, contact Juno Support.