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!