Commit graph

20 commits

Author SHA1 Message Date
Infrastructure Admin
f29a8833de Add Pomerium passthrough for git HTTP protocol and Forgejo API
Allows git push/pull and Docker registry token exchange to bypass
Pomerium browser auth - Forgejo handles authentication natively
for these endpoints.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:13:21 -04:00
Infrastructure Admin
0dee133377 Add Argo Workflows, mTLS container registry, and fix infrastructure
- Move Keycloak off Helm to plain Crossplane Object manifests (PostgreSQL + Keycloak deployment)
- Add Vaultwarden SSO/OIDC config with Keycloak, fix Recreate deployment strategy for RWO volumes
- Switch routing from Helm-based Pomerium to pomerium-allinone with all service routes
- Deploy Argo Workflows (controller, server, CRDs, RBAC) with KEDA queue-depth autoscaling
- Add Civo cluster autoscaler with pool-scaler for zero-to-one scale-up via Civo API
- Add node-labeler to auto-tag nodes by pool membership for nodeSelector scheduling
- Set up mTLS container registry at registry.nge6.com (Forgejo built-in, client cert required)
- Add internal registry route (registry-internal.nge6.com) for in-cluster image pulls
- Fix DNS records for new Emissary LB IP (212.2.241.28)
- Fix CoreDNS crash from invalid custom config
- Fix Emissary apiext expired webhook CA certificate

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:23:12 -04:00
Infrastructure Admin
0b60e24c4f Add external access to Keycloak admin console
- Created Ambassador Host: auth.nge6.com
- SSL certificate via Let's Encrypt
- External-DNS integration for automatic DNS records
- Direct access to Keycloak admin interface

Admin Access:
- URL: https://auth.nge6.com/admin
- Username: admin
- Password: thefi9paechooh

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 16:22:55 -04:00
Infrastructure Admin
9fbaf4d99f Add eemoore user with full admin access
- Created eemoore user in Keycloak with admin privileges
- Added to k8s-admins group for cluster admin access
- Added to users group for basic access
- User: eemoore@nge6.com (Eric Moore)

User will have full access to all services via Pomerium authentication.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 16:13:43 -04:00
Infrastructure Admin
a7ae41ee08 Complete GitOps infrastructure setup
Added to kustomization.yaml:
- namespaces.yaml: Centralized namespace management
- auth/: Keycloak authentication system
- keycloak-config.yaml: Identity provider configuration
- sealed-secrets.yaml: Secret encryption system

Fixed namespace conflicts:
- Removed duplicate pomerium-namespace from pomerium.yaml
- Removed duplicate external-dns-namespace from external-dns.yaml
- All namespaces now managed centrally via namespaces.yaml

Now managing 72 Kubernetes resources via GitOps:
 Infrastructure: Crossplane providers, external-dns
 Certificates: cert-manager, Let's Encrypt, Gandi webhook
 Authentication: Keycloak, RBAC configs
 Applications: Forgejo, Pomerium, Vaultwarden
 Security: Sealed secrets, proper RBAC

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 02:43:00 -04:00
Infrastructure Admin
b41e7c2c50 Add cert-manager to GitOps infrastructure
- Includes Gandi webhook for DNS-01 challenges
- ClusterIssuers for Let's Encrypt certificates
- RBAC configurations for cert-manager components

Second batch deployment - cert infrastructure now managed via GitOps.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 02:37:45 -04:00
Infrastructure Admin
e7c5a66bf6 Add core infrastructure to GitOps: providers, external-dns
- providers.yaml: Crossplane provider installations
- provider-configs.yaml: Provider authentication configs
- external-dns.yaml: Automatic DNS record management

Testing batch deployment before adding more components.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 13:00:23 -04:00
Infrastructure Admin
80bccbda8d Fix external-dns configuration for automatic DNS management
- Enable debug logging for troubleshooting
- External-DNS now successfully creates vault.nge6.com → 212.2.241.56
- DNS record creation working via Gandi API
- Requires external-dns.ambassador-service annotation on Ambassador Hosts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 12:41:47 -04:00
Infrastructure Admin
4af7193ee0 Add external-dns with Ambassador Host support and managed Gandi secret
- Add Crossplane-managed gandi-api-key secret for external-dns
- Configure external-dns to watch Ambassador Host resources
- Add RBAC permissions for getambassador.io resources
- Enable automatic DNS record creation for vault.nge6.com

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 11:13:49 -04:00
Infrastructure Admin
ba3ffa2568 Fix Vaultwarden configuration issues
- Remove invalid SQLite URL format
- Disable SMTP configuration to prevent startup errors
- Vaultwarden now running successfully

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 01:20:04 -04:00
Infrastructure Admin
5154306148 Add Vaultwarden configuration with Crossplane Objects
- Namespace, ConfigMap, PVC, Deployment, Service
- SSL certificate via cert-manager
- Ambassador Host and Mapping with Pomerium integration
- Uses SQLite for data persistence

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 00:05:33 -04:00
Infrastructure Admin
81a2e96de1 Add Vaultwarden to GitOps infrastructure
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 00:05:25 -04:00
Infrastructure Admin
ccbb55cada Simplify GitOps to test with just core files first 2025-09-26 08:59:17 -04:00
Infrastructure Admin
faa488f7a8 Simplify kustomization to avoid namespace conflicts 2025-09-26 08:32:21 -04:00
Infrastructure Admin
dbe4a33db2 Remove duplicate auth-system-namespace definition 2025-09-26 07:53:02 -04:00
Infrastructure Admin
faf8fadad5 Add kustomization.yaml files for subdirectories 2025-09-26 00:22:09 -04:00
Infrastructure Admin
b3647d71dd Fix kustomization.yaml with correct directory paths 2025-09-25 20:57:31 -04:00
Infrastructure Admin
11f3e9309c Add Kustomization config to exclude problematic directories from GitOps 2025-09-25 20:51:52 -04:00
Infrastructure Admin
5fd9934c3a Fix YAML syntax error in gitea secrets 2025-09-25 20:47:59 -04:00
Infrastructure Admin
d770504fa5 Initial infrastructure as code deployment
This commit includes the complete Kubernetes infrastructure deployment for NGE6:

- Crossplane setup with providers (Kubernetes, Helm, Civo)
- Ambassador/Emissary ingress controller with SSL termination
- Cert-manager with Let's Encrypt and Gandi webhook for DNS01 challenges
- ExternalDNS integration with Gandi for automatic DNS management
- Keycloak authentication server with PostgreSQL
- Pomerium identity-aware proxy with OIDC integration
- Forgejo Git server with persistent storage and authentication
- Spire/SPIFFE for secure service communication

All services are deployed using Infrastructure as Code principles with
Crossplane managing Kubernetes and Helm resources declaratively.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-23 08:43:06 -04:00