User Guide
General
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.
System Requirements
- Terraform >= 1.5
- kubectl >= 1.25
- yq
- CLI (depending on the cloud provider)
- Access to domain/DNS control panel
- Linux/macOS/WSL with Bash
- Internet access to fetch modules and charts
Prerequisites
Before you begin, ensure you have the following:
- An active Cloud Provider account with necessary permissions.
- Check Could Provider's documnetation for additional requirements.
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 in
state.config
- Specifying domains, regions, and project settings in
env.tfvars
- Specifying modules settings
- Initializing the Terraform project
Once configured, return to this guide to begin provisioning your cluster.
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.
Folder | Purpose |
---|---|
env | Contains environment-specific configurations (e.g., dev, stage, prod). Each subfolder typically includes variable files (*.tfvars, *.config), overrides, and references to reusable modules tailored for that environment. |
modules | Hosts self-contained, reusable Terraform or Helm modules. These modules define common infrastructure components (e.g., argocd, cert-manager, istio, monitoring) that can be composed and reused across different environments. |
repo | Contains Kubernetes manifests or GitOps structure (e.g., ArgoCD Applications, Kustomize overlays). Used to bootstrap or manage cluster resources declaratively from a GitOps tool like ArgoCD |
scripts | Includes helper scripts (e.g., Bash, PS) used for provisioning, setup, teardown, or automation tasks. Examples: running terraform init, plan, apply, or destroy. |
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.
1. Create a Cluster
First, define the initial module configuration in your .tfvars
file. This step provisions the Kubernetes cluster and installs 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/var.tfvars
file. if not refer to Cloud Provider configuration.
Run:
chmod +x ./scripts/plan.sh
./scripts/plan.sh
chmod +x ./scripts/apply.sh
./scripts/apply.sh
๐งช Validation Checklist
โ Check cluster is alive and essentials are installed:
export KUBECONFIG=kubeconfig.yaml
kubectl get all -n istio-system
2. 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://argocd.example.com
.
๐งช Validation Checklist
โ Check ArgoCD is reachable โ Certs are issued (kubectl get certificate)
kubectl get certificate
3. Setup Monitoring
Module will install Promethues, Kiali and Grafana applications and expose them via ingress.
To enable monitoring modules:
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = false
}
Run:
./scripts/plan.sh
./scripts/apply.sh
Add A Record to Access Kiali
In order to access Kiali dashboards you will need to add A record pointing to cluster's external IP e.g kiali.example.com โ external-ip
kubectl get svc -n istio-system kiali -o wide
Add A Record to Access Grafana
In order to access Grafana dashboards you will need to add A record pointing to cluster's external IP e.g grafana.example.com โ external-ip
kubectl get svc -n monitoring grafana -o wide
4. Sample Apps
To enable samples:
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = true
}
Run:
./scripts/plan.sh
./scripts/apply.sh
Sample REST and gRPC services are deployed under the samples
namespace.
Add A Record to Access REST API
Enter your domain control panel in order to add an A
record, e.g restapi.example.com โ external-ip. Note: the domain name should be the same you defined in configuration.
kubectl get svc restapi -n samples -o wide
Add A Record to Access gRPC Service
Enter your domain control panel in order to add an A
record, e.g grpc.example.com โ external-ip. Note: the domain name should be the same you defined in configuration.
kubectl get svc grpc-service -n samples -o wide
Use these domains to validate ingress setup, TLS certificates, and monitoring dashboards. Read more about samples
5. Kyverno (Pro)
Kyverno will be installed togather with Kyverno baseline pod security.
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = true
kyverno = true
}
6. MinIO (Pro)
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = true
kyverno = true
minio = true
}
7. Velero (Pro)
project_modules = {
cert_manager = true
argocd = true
monitoring = true
samples = true
kyverno = true
minio = true
velero = true
}
Thank you for choosing GetInfra. Happy developing!