User Guide
Welcome to the GetInfra user guide. This guide will help you set up and start using the GetInfra Kits efficiently, whether you're a developer, DevOps engineer, or general user.
🟢 What is the Basic Kit?
The Basic Kit provides a cloud-specific, production-ready Kubernetes setup with essential tools and services preconfigured. It includes Istio Ambient Mesh for secure service-to-service communication (mTLS out of the box), GitOps via Argo CD, certificate management, observability stack, and sample applications — everything you need to kickstart your infrastructure with best practices.
🟡 What is the Pro Kit?
The Pro Kit includes everything in the Basic Kit and adds advanced features for security, compliance, and data management. It comes with Kyverno baseline policies, network policies, object storage via MinIO, and backup capabilities with Velero. Ideal for teams deploying production workloads on a secure and auditable foundation.
🔴 What is the Premium Kit?
The Premium Kit includes all features from the Pro Kit, plus personalized onboarding and customization support. You get a 1-on-1 onboarding session, help tailoring the templates to your specific cloud environment or workflow, and priority support. Designed for teams and agencies who want to launch production-ready Kubernetes infrastructure with expert guidance.
Prerequisites
Before you begin, ensure you have the following:
- An active Cloud Provider account with necessary permissions.
Configuration
Before deploying, make sure to configure your environment as described in the Cloud Providers's configuration guide:
This includes:
- Defining provider credentials
- Setting up your Terraform backend
- Specifying domains, regions, and project settings in
.tfvars
- Specifying modules settings
- Initializing the Terraform project
Once configured, return to this guide to begin provisioning your cluster.
Getting Started with Usage
This guide walks you through deploying a production-grade Kubernetes cluster using the GetInfra Terraform kit. It outlines how to create a base cluster, enable GitOps, and progressively activate additional modules such as monitoring and sample applications.
Folder Structure
The project is structured according to Terraform best practices. Each major component resides in its own module folder, and configuration is centralized via a shared .tfvars
file. You can toggle specific features by enabling or disabling modules in the configuration.
Modules
The following modules are included in this package:
- ArgoCD – Enables GitOps deployment and continuous sync of cluster state with Git.
- Monitoring – Deploys Prometheus, Grafana, and Kiali for observability and traffic visualization.
- Samples – Installs REST and gRPC demo services for testing and validation.
- Kyverno (Pro) – Enforces security and compliance.
- MinIO (Pro) – Kubernetes object storage, S3 compatible.
- Velero (Pro) – Backup and restore tool.
Learn more about all supported modules.
Create a Cluster
First, define the initial module configuration in your .tfvars
file. This step provisions the Kubernetes cluster and installs OVH Managed Kubernetes Cluster
, Gateway API CDRs
, Istio
and cert-manager
:
project_modules = {
cert_manager = true
argocd = false
monitoring = false
samples = false
}
Assuming ./scripts/init.sh dev
was called and proper configuration was set in env/dev/vas.tfvars
file. if not refer to configuation.
Run:
chmod +x ./scripts/plan.sh
./scripts/plan.sh
chmod +x ./scripts/apply.sh
./scripts/apply.sh
Setup GitOps
Next, enable GitOps with Argo CD:
project_modules = {
cert_manager = true
argocd = true
monitoring = false
samples = false
}
Plan and Apply the changes:
./scripts/plan.sh
./scripts/apply.sh
ArgoCD module will install ArgoCD on the cluster and will create requered Gateway and HTTPRoute resources to expose it.
Add A Record to Access ArgoCD
Get the external IP of the Argo CD server:
kubectl get svc argo-cd-gateway-istio -n argocd
Now you need add A DNS record to map argocd's external ip with yor sub domain e.g argo.example.com → [external-ip]
It might take a while for DNS setting to change
Get Initial Admin Password
Retrieve the Argo CD admin password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
Use the password at https://argo.example.com
.
Setup the Rest
Now enable the full set of modules, including monitoring and demo apps:
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = true
}
Run:
terraform apply
Add A Record to Access Kiali
kubectl get svc -n istio-system kiali -o wide
kiali.example.com → [external-ip]
Add A Record to Access Grafana
kubectl get svc -n monitoring grafana -o wide
grafana.example.com → [external-ip]
Playing with Sample Apps
Sample REST and gRPC services are deployed under the samples
namespace.
Add A Record to Access REST API
kubectl get svc restapi -n samples -o wide
restapi.example.com → [external-ip]
Add A Record to Access gRPC Service
kubectl get svc grpc-service -n samples -o wide
grpc.example.com → [external-ip]
Use these domains to validate ingress setup, TLS certificates, and monitoring dashboards.
Thank you for choosing Basic Kit. Happy developing!