Argo CD Configuration
Guide for setting up GitHub App integration and applications in Argo CD.
GitHub App Setup
1. Create GitHub App
Go to https://github.com/settings/apps/new (or org settings for org repos)
Basic Info:
- App name:
ArgoCD-<your-name>(e.g.,ArgoCD-losol) - Homepage URL:
https://argo.app.domain.no - Webhook: Uncheck “Active” (not needed for polling)
Permissions:
- Repository permissions → Contents: Read-only
- Repository permissions → Metadata: Read-only
Installation:
- Where can this app be installed: Only on this account
Click Create GitHub App
2. Generate Private Key
After creation:
- Note the App ID (shown at top of page)
- Scroll down to “Private keys”
- Click Generate a private key
- Save the downloaded
.pemfile securely
3. Install the App
- Go to https://github.com/settings/apps
- Click on your app
- Click Install App in sidebar
- Select your account/org
- Choose Only select repositories → select
eventuras - Click Install
- Note the Installation ID from the URL:
https://github.com/settings/installations/<ID>
4. Connect in Argo CD
- Log in to Argo CD: https://argo.app.domain.no
- Go to Settings → Repositories → Connect Repo
- Choose VIA GITHUB APP
- Fill in:
- Repository URL:
https://github.com/losol/eventuras - GitHub App ID: (from step 2)
- GitHub App Installation ID: (from step 3)
- GitHub App Private Key: (paste contents of
.pemfile)
- Repository URL:
- Click Connect
Creating Applications
In Argo CD UI:
-
Applications → New App
-
Fill in:
- Application Name:
<app>-<env>(e.g.,myapp-dev) - Project:
default - Sync Policy: Automatic (dev/staging) or Manual (prod)
- ✓ Prune Resources
- ✓ Self Heal
- Auto-Create Namespace: ✓
- Application Name:
-
Source:
- Repository URL:
https://github.com/losol/eventuras - Revision:
HEAD - Path:
apps/<app>/chart
- Repository URL:
-
Destination:
- Cluster URL:
https://kubernetes.default.svc - Namespace:
<app>-<env>
- Cluster URL:
-
Helm section - add environment-specific parameters (see each app’s chart README)
-
Click Create
Application-specific Setup
See each application’s chart README for detailed setup instructions:
Secrets Setup
Before syncing applications, create required secrets in each namespace. See each application’s chart README for specific secret requirements:
Generic Pattern
# Create namespace
kubectl create namespace <app>-<env>
# Create secret with required values
kubectl create secret generic <app>-secrets -n <app>-<env> \
--from-literal=KEY1='value1' \
--from-literal=KEY2='value2'Updating Secrets
To update a single secret value:
# Patch a single key
kubectl patch secret <secret-name> -n <namespace> --type='json' \
-p='[{"op": "replace", "path": "/data/<KEY>", "value": "'$(echo -n 'new-value' | base64)'"}]'TLS Configuration
TLS is handled by a wildcard certificate (*.app.domain.no) in the traefik namespace.
- No per-app certificates needed
- No ReferenceGrants needed
- All HTTPRoutes use the
httpslistener automatically
See Kubernetes Setup for the infrastructure configuration.
Image Tagging Strategy
| Tag | Description | Used in |
|---|---|---|
edge | Every CI build from PR/branch | dev |
canary | CI build from main branch | staging |
v1.2.3 | Semantic version release | prod |
sha-abc123 | Specific commit | debugging |
Deployment Flow
- PR/branch push → CI builds and pushes
edgetag → dev auto-syncs - PR merged to main → CI builds and pushes
canarytag → staging auto-syncs - Release created → CI builds and pushes
v1.2.3tag → prod manual sync