#!/bin/bash set -e set -o pipefail # Source common utilities source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/wild-common.sh" # Initialize Wild-Cloud environment init_wild_env # Parse arguments SKIP_INSTALL=false while [[ $# -gt 0 ]]; do case $1 in --skip-install) SKIP_INSTALL=true shift ;; -h|--help) echo "Usage: $0 [options]" echo "" echo "Install Kubernetes cluster services (Phase 4)." echo "" echo "Options:" echo " --skip-install Generate service configs but skip installation" echo " -h, --help Show this help message" echo "" echo "This script will:" echo " - Generate cluster service configurations" echo " - Install core services (MetalLB, Traefik, cert-manager, etc.)" echo " - Each service will prompt for its required configuration" echo "" echo "Prerequisites:" echo " - Run 'wild-setup-scaffold' to initialize the cloud" echo " - Run 'wild-setup-cluster' to set up cluster infrastructure" echo " - Kubernetes cluster must be running and kubectl configured" exit 0 ;; -*) echo "Unknown option $1" echo "Usage: $0 [options]" echo "Use --help for full usage information" exit 1 ;; *) echo "Unexpected argument: $1" echo "Usage: $0 [options]" echo "Use --help for full usage information" exit 1 ;; esac done # Check if we're in a wild-cloud directory check_wild_directory # Check basic configuration check_basic_config # Check cluster configuration if [ -z "$(get_current_config "cluster.name")" ]; then print_error "Cluster configuration is missing" print_info "Run 'wild-setup-cluster' first to configure cluster settings" exit 1 fi print_header "Wild-Cloud Services Setup" print_info "Installing Kubernetes cluster services (Phase 4)" echo "" # ============================================================================= # Cluster Services Installation # ============================================================================= print_header "Cluster Services Installation" print_info "This phase installs core cluster services (MetalLB, Traefik, cert-manager, etc.)" print_info "Each service will prompt for any required configuration during installation" print_warning "Make sure your cluster is running and kubectl is configured!" # Generate cluster services setup files print_info "Generating cluster services setup files..." wild-cluster-services-generate --force if [ "${SKIP_INSTALL}" = false ]; then read -p "Do you want to install cluster services now? (y/N): " -r install_services if [[ $install_services =~ ^[Yy]$ ]]; then print_info "Installing cluster services..." wild-cluster-services-up SERVICES_INSTALLED=true else print_info "Skipping cluster services installation" print_info "You can install them later with: wild-cluster-services-up" SKIP_INSTALL=true fi else print_info "Skipping cluster services installation (--skip-install specified)" print_info "You can install them later with: wild-cluster-services-up" fi if [ "${SKIP_INSTALL}" = false ] && [ "${SERVICES_INSTALLED:-false}" = true ]; then print_success "Completed: Cluster services installation" else print_success "Completed: Cluster services configuration generated" fi echo "" # ============================================================================= # COMPLETION # ============================================================================= print_header "Wild-Cloud Services Setup Complete!" print_success "Cluster services setup completed!" echo "" print_info "Configuration files:" echo " - ${WC_HOME}/config.yaml" echo " - ${WC_HOME}/secrets.yaml" if [ -d "${WC_HOME}/setup/cluster" ]; then echo "" print_info "Generated service configurations:" echo " - ${WC_HOME}/setup/cluster/" fi echo "" if [ "${SKIP_INSTALL}" = false ] && [ "${SERVICES_INSTALLED:-false}" = true ]; then print_info "Cluster services have been installed!" echo "" if command -v kubectl >/dev/null 2>&1; then INTERNAL_DOMAIN=$(wild-config cloud.internalDomain 2>/dev/null || echo "your-internal-domain") echo "Next steps:" echo " 1. Access the dashboard at: https://dashboard.${INTERNAL_DOMAIN}" echo " 2. Get the dashboard token with: ./bin/dashboard-token" echo "" echo "To verify components, run:" echo " - kubectl get pods -n cert-manager" echo " - kubectl get pods -n externaldns" echo " - kubectl get pods -n kubernetes-dashboard" echo " - kubectl get clusterissuers" else echo "Next steps:" echo " 1. Verify your cluster services are running" echo " 2. Configure kubectl if not already done" echo " 3. Access your services via the configured ingress" fi else echo "Next steps:" echo " 1. Ensure your cluster is running and kubectl is configured" echo " 2. Install services with: wild-cluster-services-up" echo " 3. Verify components are running correctly" fi print_success "Wild-Cloud setup completed!"