This commit is contained in:
@@ -18,7 +18,7 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra
|
||||
destination:
|
||||
|
||||
@@ -89,21 +89,21 @@ If you do need cluster access, install:
|
||||
|
||||
You'll need read/write access to these repositories:
|
||||
|
||||
1. **sturdy-adventure** (Config repo)
|
||||
1. **launchpad** (Config repo)
|
||||
```bash
|
||||
git clone https://github.com/fortedigital/sturdy-adventure.git
|
||||
cd sturdy-adventure
|
||||
git clone https://git.forteapps.net/Forte/launchpad.git
|
||||
cd launchpad
|
||||
```
|
||||
|
||||
2. **helm-values** (Values repo)
|
||||
```bash
|
||||
git clone git@github.com:fortedigital/helm-values.git
|
||||
git clone https://git.forteapps.net/Forte/helm-prod-values.git
|
||||
cd helm-values
|
||||
```
|
||||
|
||||
3. **forte-helm** (Chart repo - read-only for most developers)
|
||||
```bash
|
||||
git clone https://github.com/fortedigital/forte-helm.git
|
||||
git clone https://git.forteapps.net/Forte/forte-helm.git
|
||||
cd forte-helm
|
||||
```
|
||||
|
||||
@@ -132,9 +132,9 @@ mkdir -p ~/dev/k8s
|
||||
cd ~/dev/k8s
|
||||
|
||||
# Clone repositories
|
||||
git clone https://github.com/fortedigital/sturdy-adventure.git launchpad
|
||||
git clone git@github.com:fortedigital/helm-values.git helm-prod-values
|
||||
git clone https://github.com/fortedigital/forte-helm.git forte-helm
|
||||
git clone https://git.forteapps.net/Forte/launchpad.git launchpad
|
||||
git clone https://git.forteapps.net/Forte/helm-prod-values helm-prod-values
|
||||
git clone https://git.forteapps.net/Forte/forte-helm forte-helm
|
||||
|
||||
# Your folder structure:
|
||||
# ~/dev/k8s/
|
||||
@@ -201,7 +201,7 @@ Our setup uses three repositories:
|
||||
|------------|---------|-----------|-----------|
|
||||
| **forte-helm** | Helm chart templates (generic, reusable) | Platform engineers | ❌ Rarely |
|
||||
| **helm-values** | Application configuration (image tag, env vars) | Developers / CI pipelines | ✅ Sometimes |
|
||||
| **sturdy-adventure** | ArgoCD Applications (what gets deployed) | Platform / DevOps engineers | ✅ Per new app |
|
||||
| **launchpad** | ArgoCD Applications (what gets deployed) | Platform / DevOps engineers | ✅ Per new app |
|
||||
|
||||
### Example: Deploying "myapp"
|
||||
|
||||
@@ -236,7 +236,7 @@ app:
|
||||
value: https://api.example.com
|
||||
```
|
||||
|
||||
#### Repository: `sturdy-adventure` (ArgoCD Application)
|
||||
#### Repository: `launchpad` (ArgoCD Application)
|
||||
```yaml
|
||||
# apps/myapp.yaml
|
||||
# Tells ArgoCD to deploy your app
|
||||
@@ -386,7 +386,7 @@ git push
|
||||
|
||||
### Step 3: Create ArgoCD Application Manifest
|
||||
|
||||
In the `sturdy-adventure` repository, create `apps/hello-world.yaml`:
|
||||
In the `launchpad` repository, create `apps/hello-world.yaml`:
|
||||
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
|
||||
@@ -53,8 +53,8 @@ This Kubernetes cluster uses a **GitOps approach** powered by **ArgoCD**, where
|
||||
┌────────────────────────────────┐
|
||||
│ Config Repository │
|
||||
│ (ArgoCD Applications) │
|
||||
│ github.com/fortedigital/ │
|
||||
│ sturdy-adventure │
|
||||
│ git.forteapps.net/Forte/ │
|
||||
│ launchpad │
|
||||
└────────────────────────────────┘
|
||||
│
|
||||
│
|
||||
@@ -109,12 +109,12 @@ This Kubernetes cluster uses a **GitOps approach** powered by **ArgoCD**, where
|
||||
## Repository Structure
|
||||
|
||||
### 1. **Config Repository** (Current Repo)
|
||||
**Repository**: `https://github.com/fortedigital/sturdy-adventure.git`
|
||||
**Repository**: `https://git.forteapps.net/Forte/launchpad`
|
||||
**Purpose**: GitOps configuration - ArgoCD Applications and cluster resources
|
||||
**Location**: `C:\dev\k8s\launchpad`
|
||||
|
||||
```
|
||||
sturdy-adventure/
|
||||
launchpad/
|
||||
├── bootstrap.sh # Cluster initialization script
|
||||
├── _app-of-apps.yaml # Root ArgoCD Application (App-of-Apps pattern)
|
||||
│
|
||||
@@ -405,7 +405,7 @@ jobs:
|
||||
|
||||
1. **Config Repo Change**:
|
||||
- Developer updates `apps/myapp.yaml`
|
||||
- Pushes to `sturdy-adventure` repo
|
||||
- Pushes to `launchpad` repo
|
||||
- ArgoCD detects change (60s reconciliation)
|
||||
- Syncs application to cluster
|
||||
|
||||
@@ -561,7 +561,7 @@ Notifications include:
|
||||
|
||||
**Rebuild Process**:
|
||||
1. Provision new Kubernetes cluster
|
||||
2. Clone `sturdy-adventure` repository
|
||||
2. Clone `launchpad` repository
|
||||
3. Run `./bootstrap.sh`
|
||||
4. ArgoCD installs and syncs all applications
|
||||
5. Manually recreate unsealed secrets and seal them
|
||||
|
||||
@@ -51,8 +51,8 @@ kubectl get nodes
|
||||
|
||||
```bash
|
||||
# 1. Clone config repository
|
||||
git clone https://github.com/fortedigital/sturdy-adventure.git
|
||||
cd sturdy-adventure
|
||||
git clone https://git.forteapps.net/Forte/launchpad
|
||||
cd launchpad
|
||||
|
||||
# 2. Set cluster name (optional)
|
||||
export CLUSTER_NAME="prod-cluster-01"
|
||||
@@ -130,10 +130,10 @@ Generate a dedicated SSH key for ArgoCD without a passphrase (required for autom
|
||||
|
||||
```bash
|
||||
# Generate ED25519 key (recommended - smaller and more secure)
|
||||
ssh-keygen -t ed25519 -C "argocd-deploy-key-sturdy-adventure" -f argocd-deploy-key -N ""
|
||||
ssh-keygen -t ed25519 -C "argocd-deploy-key-launchpad" -f argocd-deploy-key -N ""
|
||||
|
||||
# Or RSA key if ED25519 is not supported
|
||||
ssh-keygen -t rsa -b 4096 -C "argocd-deploy-key-sturdy-adventure" -f argocd-deploy-key -N ""
|
||||
ssh-keygen -t rsa -b 4096 -C "argocd-deploy-key-launchpad" -f argocd-deploy-key -N ""
|
||||
```
|
||||
|
||||
This creates two files:
|
||||
@@ -148,7 +148,7 @@ This creates two files:
|
||||
```
|
||||
|
||||
2. Go to GitHub repository settings:
|
||||
- Navigate to: `https://github.com/fortedigital/sturdy-adventure/settings/keys`
|
||||
- Navigate to: `https://git.forteapps.net/Forte/launchpad/settings/keys`
|
||||
- Or: Repository → Settings → Deploy keys
|
||||
|
||||
3. Click **"Add deploy key"**
|
||||
@@ -227,7 +227,7 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: main
|
||||
path: cluster-resources
|
||||
destination:
|
||||
@@ -273,7 +273,7 @@ rm /tmp/test-repo-access.yaml
|
||||
# Add new public key to GitHub (keep old key for now)
|
||||
|
||||
# Update Kubernetes secret
|
||||
kubectl create secret generic repo-sturdy-adventure \
|
||||
kubectl create secret generic repo-launchpad \
|
||||
--from-file=sshPrivateKey=argocd-new-key \
|
||||
--namespace=argocd \
|
||||
--dry-run=client -o yaml | kubectl apply -f -
|
||||
@@ -290,7 +290,7 @@ rm /tmp/test-repo-access.yaml
|
||||
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=repository
|
||||
|
||||
# Review deploy keys in GitHub
|
||||
# Visit: https://github.com/fortedigital/sturdy-adventure/settings/keys
|
||||
# Visit: https://git.forteapps.net/Forte/launchpad/settings/keys
|
||||
```
|
||||
|
||||
4. **Use Different Keys per Repository**
|
||||
@@ -304,16 +304,16 @@ rm /tmp/test-repo-access.yaml
|
||||
|
||||
```bash
|
||||
# Check if secret exists
|
||||
kubectl get secret repo-sturdy-adventure -n argocd
|
||||
kubectl get secret repo-launchpad -n argocd
|
||||
|
||||
# Verify secret has correct label
|
||||
kubectl get secret repo-sturdy-adventure -n argocd -o yaml | grep argocd.argoproj.io/secret-type
|
||||
kubectl get secret repo-launchpad -n argocd -o yaml | grep argocd.argoproj.io/secret-type
|
||||
|
||||
# Check ArgoCD application controller logs
|
||||
kubectl logs -n argocd deployment/argocd-application-controller | grep -i "permission denied"
|
||||
|
||||
# Verify deploy key is added to GitHub
|
||||
# Visit: https://github.com/fortedigital/sturdy-adventure/settings/keys
|
||||
# Visit: https://git.forteapps.net/Forte/launchpad/settings/keys
|
||||
```
|
||||
|
||||
**Issue: "Host key verification failed"**
|
||||
@@ -324,7 +324,7 @@ kubectl exec -n argocd deployment/argocd-repo-server -- \
|
||||
ssh-keyscan github.com >> ~/.ssh/known_hosts
|
||||
|
||||
# Or disable strict host key checking (less secure)
|
||||
kubectl patch secret repo-sturdy-adventure -n argocd \
|
||||
kubectl patch secret repo-launchpad -n argocd \
|
||||
--type merge \
|
||||
-p '{"stringData":{"insecure":"true"}}'
|
||||
```
|
||||
@@ -336,7 +336,7 @@ kubectl patch secret repo-sturdy-adventure -n argocd \
|
||||
kubectl logs -n argocd deployment/argocd-repo-server
|
||||
|
||||
# Refresh repository connection
|
||||
kubectl delete secret repo-sturdy-adventure -n argocd
|
||||
kubectl delete secret repo-launchpad -n argocd
|
||||
# Recreate secret (see Step 3 above)
|
||||
|
||||
# Restart ArgoCD components
|
||||
@@ -346,12 +346,12 @@ kubectl rollout restart deployment argocd-application-controller -n argocd
|
||||
|
||||
#### Multiple Repository Setup
|
||||
|
||||
For the three-repository pattern (sturdy-adventure, forte-helm, helm-values):
|
||||
For the three-repository pattern (launchpad, forte-helm, helm-values):
|
||||
|
||||
```bash
|
||||
# 1. sturdy-adventure (main config repo)
|
||||
ssh-keygen -t ed25519 -C "argocd-sturdy-adventure" -f key-sturdy -N ""
|
||||
# Add key-sturdy.pub to: https://github.com/fortedigital/sturdy-adventure/settings/keys
|
||||
# 1. launchpad (main config repo)
|
||||
ssh-keygen -t ed25519 -C "argocd-launchpad" -f key-sturdy -N ""
|
||||
# Add key-sturdy.pub to: https://git.forteapps.net/Forte/launchpad/settings/keys
|
||||
|
||||
# 2. helm-values (private values repo)
|
||||
ssh-keygen -t ed25519 -C "argocd-helm-values" -f key-helm-values -N ""
|
||||
@@ -360,7 +360,7 @@ ssh-keygen -t ed25519 -C "argocd-helm-values" -f key-helm-values -N ""
|
||||
# 3. forte-helm (private helm charts repo)
|
||||
|
||||
# Create secrets
|
||||
kubectl create secret generic repo-sturdy-adventure \
|
||||
kubectl create secret generic repo-launchpad \
|
||||
--from-file=sshPrivateKey=key-sturdy \
|
||||
--namespace=argocd --dry-run=client -o yaml | \
|
||||
kubectl label --local -f - argocd.argoproj.io/secret-type=repository --dry-run=client -o yaml | \
|
||||
@@ -385,9 +385,9 @@ If you're currently using HTTPS and want to switch to SSH:
|
||||
|
||||
# 2. Update all Application manifests
|
||||
# Change from:
|
||||
# repoURL: https://github.com/fortedigital/sturdy-adventure.git
|
||||
# repoURL: https://git.forteapps.net/Forte/launchpad
|
||||
# To:
|
||||
# repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
# repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
|
||||
# 3. Update and commit
|
||||
find . -name "*.yaml" -type f -exec sed -i 's|https://github.com/fortedigital/|git@github.com:fortedigital/|g' {} +
|
||||
|
||||
@@ -62,14 +62,14 @@ Internet
|
||||
|
||||
## Repository Reference
|
||||
|
||||
### Config Repository: `sturdy-adventure`
|
||||
### Config Repository: `launchpad`
|
||||
|
||||
**URL**: `https://github.com/fortedigital/sturdy-adventure.git`
|
||||
**URL**: `https://git.forteapps.net/Forte/launchpad`
|
||||
|
||||
#### Directory Structure
|
||||
|
||||
```
|
||||
sturdy-adventure/
|
||||
launchpad/
|
||||
├── bootstrap.sh # Cluster initialization script
|
||||
├── _app-of-apps.yaml # Root ArgoCD Application
|
||||
│
|
||||
@@ -171,7 +171,7 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
path: infra
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
|
||||
@@ -15,7 +15,7 @@ spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: cluster-resources
|
||||
directory:
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/fluent-bit-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/gitea-actions-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/gitea-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/dashboards
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/grafana-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/keycloak-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: cluster-resources/policies
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/loki-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: cluster-resources/network
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/opencost-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/prometheus-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
path: secrets
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
valueFiles:
|
||||
- $values/infra/values/tempo-values.yaml
|
||||
|
||||
- repoURL: git@github.com:fortedigital/sturdy-adventure.git
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
|
||||
28
mkdocs.yml
28
mkdocs.yml
@@ -1,7 +1,7 @@
|
||||
site_name: K8s Launchpad
|
||||
site_description: Documentation for the GitOps-managed Kubernetes cluster
|
||||
repo_url: https://github.com/fortedigital/sturdy-adventure
|
||||
repo_name: fortedigital/sturdy-adventure
|
||||
repo_url: https://git.forteapps.net/Forte/launchpad
|
||||
repo_name: Forte/launchpad
|
||||
|
||||
theme:
|
||||
name: material
|
||||
@@ -24,20 +24,20 @@ theme:
|
||||
- content.code.copy
|
||||
|
||||
nav:
|
||||
- Home: README.md
|
||||
- GitOps Architecture: GITOPS-ARCHITECTURE.md
|
||||
- Developer Guide: DEVELOPER-GUIDE.md
|
||||
- Operations Runbook: OPERATIONS-RUNBOOK.md
|
||||
- Technical Reference: REFERENCE.md
|
||||
- Home: README.md
|
||||
- GitOps Architecture: GITOPS-ARCHITECTURE.md
|
||||
- Developer Guide: DEVELOPER-GUIDE.md
|
||||
- Operations Runbook: OPERATIONS-RUNBOOK.md
|
||||
- Technical Reference: REFERENCE.md
|
||||
|
||||
markdown_extensions:
|
||||
- tables
|
||||
- toc:
|
||||
- tables
|
||||
- toc:
|
||||
permalink: true
|
||||
- pymdownx.highlight:
|
||||
- pymdownx.highlight:
|
||||
anchor_linenums: true
|
||||
- pymdownx.superfences
|
||||
- pymdownx.tabbed:
|
||||
- pymdownx.superfences
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
- admonition
|
||||
- pymdownx.details
|
||||
- admonition
|
||||
- pymdownx.details
|
||||
|
||||
Reference in New Issue
Block a user