Skip to content

Getting started

Get started using Claudie

Prerequisites

Before you begin, please make sure you have the following prerequisites installed and set up:

  1. Claudie needs to be installed on an existing Kubernetes cluster, which it uses to manage the clusters it provisions. For testing, you can use ephemeral clusters like Minikube or Kind. However, for production environments, we recommend using a more resilient solution since Claudie maintains the state of the infrastructure it creates.

  2. Claudie requires the installation of cert-manager in your Kubernetes cluster. To install cert-manager, use the following command:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml
    

Supported providers

Supported Provider Node Pools DNS
AWS ✔ ✔
Azure ✔ ✔
GCP ✔ ✔
OCI ✔ ✔
Hetzner ✔ ✔
Cloudflare N/A ✔

For adding support for other cloud providers, open an issue or propose a PR.

Install Claudie

  1. Download and extract Claudie manifests from our release page:

    wget https://github.com/berops/claudie/releases/latest/download/claudie.zip && unzip claudie.zip -d claudie
    

  2. Deploy Claudie into your management Kubernetes cluster:

    kubectl apply -k claudie
    

Deploy your cluster

  1. Deploy input manifest secret which Claudie uses to create infrastructure across various hyperscalers:
    kubectl create secret generic input-manifest --from-file=input-manifest.yaml -n claudie
    

Check the supported providers for input manifest examples. For an input manifest spanning all supported hyperscalers checkout out this example.

  1. Label the input-manifest secret created in the previous step to enable the Claudie frontend service to recognize it as part of Claudie and initiate the creation of the specified infrastructure.

    kubectl label secret input-manifest claudie.io/input-manifest=claudie-testing -n claudie
    

  2. If you wish to adjust your already created input manifest you can do so without deleting or replacing the secret itself:

    kubectl create secret generic input-manifest --from-file=input-manifest.yaml -n claudie -oyaml --dry-run=client | kubectl
    apply -f -
    

    Deleting existing secret deletes provisioned infrastructure!

Connect to your cluster

Claudie outputs base64 encoded kubeconfig secret <cluster-name>-<cluster-hash>-kubeconfig in the namespace where it is deployed:

  1. Recover kubeconfig of your cluster by running:
    kubectl get secrets -n claudie -l claudie.io/output=kubeconfig -o jsonpath='{.items[0].data.kubeconfig}' | base64 -d > your_kubeconfig.yaml
    
  2. Use your new kubeconfig:
    kubectl get pods -A --kubeconfig=your_kubeconfig.yaml
    

Cleanup

  1. To remove your cluster and its associated infrastructure, delete the cluster definition block from the input-manifest and update the secret:
    kubectl create secret generic input-manifest --from-file=input-manifest.yaml -n claudie -oyaml --dry-run=client | kubectl apply -f -
    
  2. To delete all clusters defined in the input manifest, delete the secret. This triggers the deletion process, removing the infrastructure and all data associated with the manifest.
    kubectl delete secret input-manifest -n claudie