//! PostgreSQL Cluster Deployment Example //! //! This example shows how to deploy a PostgreSQL cluster using the //! KubernetesManager convenience methods. use sal_kubernetes::KubernetesManager; use std::collections::HashMap; #[tokio::main] async fn main() -> Result<(), Box> { // Create Kubernetes manager for the database namespace let km = KubernetesManager::new("database").await?; // Configure PostgreSQL-specific labels let mut labels = HashMap::new(); labels.insert("app".to_string(), "postgres-cluster".to_string()); labels.insert("type".to_string(), "database".to_string()); labels.insert("engine".to_string(), "postgresql".to_string()); // Deploy the PostgreSQL cluster using the convenience method println!("Deploying PostgreSQL cluster..."); km.deploy_application( "postgres-cluster", // name "postgres:15", // image 2, // replicas (1 master + 1 replica) 5432, // port Some(labels), // labels ) .await?; println!("āœ… PostgreSQL cluster deployed successfully!"); // Check deployment status let deployments = km.deployments_list().await?; let postgres_deployment = deployments .iter() .find(|d| d.metadata.name.as_ref() == Some(&"postgres-cluster".to_string())); if let Some(deployment) = postgres_deployment { let total_replicas = deployment .spec .as_ref() .and_then(|s| s.replicas) .unwrap_or(0); let ready_replicas = deployment .status .as_ref() .and_then(|s| s.ready_replicas) .unwrap_or(0); println!( "Deployment status: {}/{} replicas ready", ready_replicas, total_replicas ); } println!("\nšŸ“‹ Connection Information:"); println!(" Host: postgres-cluster.database.svc.cluster.local"); println!(" Port: 5432"); println!(" Database: postgres (default)"); println!(" Username: postgres (default)"); println!(" Password: Set POSTGRES_PASSWORD environment variable"); println!("\nšŸ”§ To connect from another pod:"); println!(" psql -h postgres-cluster.database.svc.cluster.local -U postgres"); println!("\nšŸ’” Next steps:"); println!(" • Set environment variables for database credentials"); println!(" • Add persistent volume claims for data storage"); println!(" • Configure backup and monitoring"); Ok(()) }