# Full Infrastructure Template This is a comprehensive infrastructure template with multiple server types and advanced configuration examples. ## What's Included - **Web servers** - 2 frontend web servers - **Database server** - Backend database with private networking - **Kubernetes control plane** - Control plane node - **Kubernetes workers** - 2 worker nodes - **Advanced settings** - SSH config, monitoring, backup options - **Comprehensive examples** - Multiple server roles and configurations ## Server Inventory | Hostname | Role | Network | Purpose | |----------|------|---------|---------| | web-01, web-02 | Web | Public + Private | Frontend application servers | | db-01 | Database | Private only | Backend database | | k8s-control-01 | K8s Control | Public + Private | Kubernetes control plane | | k8s-worker-01, k8s-worker-02 | K8s Worker | Public + Private | Kubernetes compute nodes | ## Quick Start ### 1. Load Required Modules ```bash cd infra/ # Load provider provisioning mod load providers . upcloud # Load taskservs provisioning mod load taskservs . kubernetes containerd cilium # Load cluster configurations (optional) provisioning mod load clusters . buildkit ``` ### 2. Customize Configuration Edit `servers.k`: **Provider-specific settings:** ```kcl # Uncomment and adjust for your provider plan = "2xCPU-4GB" # Server size storage_size = 50 # Disk size in GB ``` **Task services:** ```kcl # Uncomment after loading modules taskservs = [ { name = "kubernetes", profile = "control-plane" } { name = "containerd", profile = "default" } { name = "cilium", profile = "default" } ] ``` **Select servers to deploy:** ```kcl # Choose which server groups to deploy all_servers = web_servers + db_servers # Web + DB only # OR all_servers = k8s_control + k8s_workers # Kubernetes cluster only # OR all_servers = web_servers + db_servers + k8s_control + k8s_workers # Everything ``` ### 3. Deploy ```bash # Test configuration kcl run servers.k # Dry-run deployment (recommended) provisioning s create --infra --check # Deploy selected servers provisioning s create --infra # Or deploy specific server groups provisioning s create --infra --select web ``` ## Architecture Examples ### Web Application Stack Deploy web servers + database: ```kcl all_servers = web_servers + db_servers ``` ### Kubernetes Cluster Deploy control plane + workers: ```kcl all_servers = k8s_control + k8s_workers ``` ### Complete Infrastructure Deploy everything: ```kcl all_servers = web_servers + db_servers + k8s_control + k8s_workers ``` ## Advanced Configuration ### Network Segmentation - **Public servers**: web-01, web-02 (public + private networks) - **Private servers**: db-01 (private network only) - **Hybrid**: k8s nodes (public for API access, private for pod networking) ### Monitoring Monitoring is pre-configured in settings: ```kcl monitoring = { enabled = True metrics_port = 9100 log_aggregation = True } ``` ### SSH Configuration Advanced SSH settings are included: ```kcl ssh_config = { connect_timeout = 30 retry_attempts = 3 compression = True } ``` ## Next Steps 1. **Customize server specs** - Adjust CPU, memory, storage 2. **Configure networking** - Set up firewall rules, load balancers 3. **Add taskservs** - Uncomment and configure task services 4. **Set up clusters** - Deploy Kubernetes or container clusters 5. **Configure monitoring** - Set up metrics and logging 6. **Implement backup** - Configure backup policies ## Template Characteristics - **Complexity**: High - **Servers**: 6 examples (web, database, k8s) - **Pre-configured modules**: Examples for all major components - **Best for**: Production deployments, complex architectures, learning advanced patterns