# Container Mom > Containers like mom used to make Container Mom is a Kubernetes operator that makes deploying and managing applications as easy as sharing your Git repository. It handles everything from source-to-image builds to certificate management, just like mom always took care of everything for you. ## Features - **One-Click Deployments**: Share your Git repo, and mom handles the rest - **Multi-Cluster Support**: Deploy across multiple clusters - **Automatic TLS**: Built-in certificate management with Let's Encrypt - **Custom Domains**: Use your domain or get a free *.container.mom subdomain - **Resource Management**: Smart resource allocation and quota enforcement - **Built-in Monitoring**: Health checks and automatic recovery - **Billing Integration**: Usage-based billing with different service tiers - **Web Portal**: Modern dashboard for managing deployments and billing ## Getting Started ### Prerequisites - Kubernetes 1.21+ - cert-manager v1.13+ - Nginx Ingress Controller ### Installation 1. Install cert-manager: ```bash kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml ``` 2. Deploy Container Mom: ```bash kubectl apply -k config/manager ``` ## Usage ### Basic Deployment Create a deployment: ```yaml apiVersion: containermom.io/v1alpha1 kind: ContainerMomDeployment metadata: name: my-app spec: source: gitUrl: "https://github.com/user/repo" buildConfig: builderImage: "nodejs-16" clusters: - us-east-1 domain: useWildcard: true resources: cpu: "1" memory: "1Gi" ``` ### Customer Configuration Set up a customer account: ```yaml apiVersion: containermom.io/v1alpha1 kind: Customer metadata: name: customer-123 spec: email: "user@example.com" billingTier: "pro" ``` ## Configuration ### Pricing Model Container Mom uses simple, transparent pricing: - **Base Price**: $1/month per deployment - **Resource Usage**: Charged based on actual consumption: - CPU: Per core/hour - Memory: Per GB/hour - Storage: Per GB/hour - Network: Per GB transferred - **High Availability**: Multi-cluster deployments charged per additional cluster Resource rates are defined per cluster and can be viewed in the billing dashboard. All charges are calculated hourly and billed monthly. ### Domain Options - **Wildcard Domain**: Automatic subdomain under container.mom - **Custom Domains**: Bring your own domain with TLS - **DNS Providers**: Support for Cloudflare, Route53 ## Web Portal ### Dashboard The web portal provides a modern interface for: - Deployment management - Resource monitoring - Health status tracking - Log viewing ### Billing Interface The billing section includes: - Real-time cost tracking - Resource usage visualization - Usage breakdown by service - Billing history - Cost optimization recommendations Access the portal at: `https://portal.container.mom` ## Development ### Project Structure ``` . ├── cmd/ │ └── mom/ # Main application ├── pkg/ │ ├── apis/ # API definitions │ ├── config/ # Configuration │ ├── controller/ # Controllers │ ├── domain/ # Domain management │ ├── operator/ # Core operator │ └── web/ # Web interface └── config/ # Kubernetes resources ├── crds/ ├── manager/ └── rbac/ ``` ### Building ```bash # Build the operator go build -o bin/container-mom cmd/mom/main.go # Run locally ./bin/container-mom --config config/manager/config.yaml ``` ### Testing ```bash go test ./... ``` ## Status - [x] Core operator framework - [x] CRD definitions - [x] Multi-cluster support - [x] Domain management - [x] TLS automation - [x] Web portal - [x] Billing interface - [ ] Source-to-image pipeline - [ ] Monitoring dashboard ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.