https://github.com/linuxluigi/argocd-install-to-namespace
https://github.com/linuxluigi/argocd-install-to-namespace
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/linuxluigi/argocd-install-to-namespace
- Owner: linuxluigi
- License: other
- Created: 2025-08-26T08:45:12.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-08-26T14:37:24.000Z (9 months ago)
- Last Synced: 2025-09-08T20:54:41.371Z (9 months ago)
- Language: Makefile
- Size: 88.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Multi-Component Kubernetes Manifest Generator
This repository provides a modular approach to generating Kubernetes manifests for multiple components with proper namespace configuration. Each component is self-contained and can be built independently or as part of a complete deployment.
## ๐ Components
### 1. ArgoCD
- **Standard Installation**: Regular ArgoCD deployment
- **High Availability**: HA ArgoCD deployment with multiple replicas
- **Namespace**: `argocd` (configurable)
### 2. Hetzner Cloud Controller Manager (CCM)
- **Public Network**: Standard configuration for public network usage
- **Private Network**: Configuration with `networking.enabled=true` for internal networking
- **Helm-based**: Generated from official Hetzner Helm charts
- **Namespace**: `kube-system` (configurable)
### 3. Cilium CNI
- **With kube-proxy**: Standard Cilium deployment alongside existing kube-proxy
- **With kube-proxy + GatewayAPI**: Cilium with kube-proxy and Gateway API support
- **Talos-optimized**: Pre-configured for Talos Linux compatibility
- **Namespace**: `kube-system` (configurable)
## ๐ Project Structure
```text
.
โโโ components/
โ โโโ argocd/ # ArgoCD component
โ โ โโโ Makefile
โ โ โโโ README.md
โ โโโ hetzner-ccm/ # Hetzner CCM component
โ โ โโโ Makefile
โ โ โโโ README.md
โ โโโ cilium/ # Cilium CNI component
โ โโโ Makefile
โ โโโ README.md
โโโ manifest/ # Generated manifests
โโโ build/ # Build artifacts
โโโ Makefile # Main orchestrator
โโโ README.md
```
## ๐ ๏ธ Prerequisites
- [Kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) - For ArgoCD manifest customization
- [Helm 3.x](https://helm.sh/docs/intro/install/) - For Hetzner CCM chart templating
- `curl` - For downloading upstream manifests
### macOS Installation (via Homebrew)
```bash
brew install kustomize helm
```
## ๐ Quick Start
### Build All Components
```bash
make build
```
This generates:
- `manifest/argocd-namespaced-stable.yaml`
- `manifest/argocd-namespaced-ha.yaml`
- `manifest/hetzner-ccm-public.yaml`
- `manifest/hetzner-ccm-private.yaml`
### Build Individual Components
```bash
# Build only ArgoCD
make argocd
# Build both Hetzner CCM variants
make hetzner-ccm
# Build only Hetzner CCM public network variant
make hetzner-ccm-public
# Build only Hetzner CCM private network variant
make hetzner-ccm-private
# Build all Cilium variants
make cilium
# Build specific Cilium variants
make cilium-kube-proxy # With kube-proxy
make cilium-kube-proxy-gateway # With kube-proxy + GatewayAPI
```
### Custom Namespaces
```bash
# Build with custom namespaces
make build ARGOCD_NAMESPACE=my-argocd HETZNER_CCM_NAMESPACE=hetzner-system CILIUM_NAMESPACE=cilium-system
```
## ๐ฏ Usage Examples
### Deploy ArgoCD in Custom Namespace
```bash
make argocd ARGOCD_NAMESPACE=gitops
kubectl apply -f manifest/argocd-namespaced-stable.yaml
```
### Deploy Hetzner CCM
**Public Network (Default):**
```bash
make hetzner-ccm-public
kubectl apply -f manifest/hetzner-ccm-public.yaml
```
**Private Network (Internal Networking):**
```bash
make hetzner-ccm-private
kubectl apply -f manifest/hetzner-ccm-private.yaml
```
### Deploy Cilium CNI
**With kube-proxy (recommended for existing clusters):**
```bash
make cilium-kube-proxy
kubectl apply -f manifest/cilium-with-kube-proxy.yaml
```
**With kube-proxy and GatewayAPI support:**
```bash
make cilium-kube-proxy-gateway
kubectl apply -f manifest/cilium-with-kube-proxy-gateway.yaml
```
### Complete Multi-Component Deployment
```bash
# Build all components
make build
# Apply all manifests
kubectl apply -f manifest/
```
## ๐งน Cleanup
```bash
# Clean all generated files
make clean
```
## ๐ Component Documentation
Each component has its own README with detailed usage instructions:
- [ArgoCD Component](components/argocd/README.md)
- [Hetzner CCM Component](components/hetzner-ccm/README.md)
- [Cilium CNI Component](components/cilium/README.md)
## ๐ง Advanced Configuration
### ArgoCD Customization
The ArgoCD component supports both stable and HA deployments. You can build specific variants:
```bash
cd components/argocd
make build-stable # Standard deployment
make build-ha # High availability deployment
```
### Hetzner CCM Configuration
The Hetzner CCM component uses Helm templating. You can customize the release name:
```bash
cd components/hetzner-ccm
make build RELEASE_NAME=my-hccm NAMESPACE=custom-namespace
```
### Cilium Configuration
The Cilium component offers multiple deployment variants optimized for different use cases:
```bash
cd components/cilium
# Build specific variants
make build-kube-proxy # Standard with kube-proxy
make build-no-kube-proxy # Replace kube-proxy for performance
make build-kube-proxy-gateway # Standard + Gateway API
make build-no-kube-proxy-gateway # Performance + Gateway API
# Customize version and namespace
make build CILIUM_VERSION=1.18.0 NAMESPACE=cilium-system
```
## ๐ Help
```bash
make help
```
## ๐ License
This repository includes files generated from upstream projects:
- [ArgoCD](https://github.com/argoproj/argo-cd) - Apache License 2.0
- [Hetzner Cloud Controller Manager](https://github.com/hetznercloud/hcloud-cloud-controller-manager) - MIT License
See [LICENSE](LICENSE) for complete details.