Skip to main content
Version: 2.0.2

πŸš€ Quick Start with Hikube

Welcome! This guide will walk you through creating your first project on Hikube. By the end of this tutorial, you will have deployed your first application in a completely secure environment.


Prerequisites​

Platform Access​

If you don't have a Hikube account yet, contact our team at sales@hidora.io to get your access.

Required Tools Installation​

kubectl (required)​

macOS

# Homebrew
brew install kubectl

Linux

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y kubectl

# RHEL/CentOS/Fedora
sudo dnf install kubectl
# or for older versions
sudo yum install kubectl

# Alpine Linux
sudo apk add kubectl

Windows

# Chocolatey
choco install kubernetes-cli

# winget
winget install Kubernetes.kubectl

πŸ“– Official documentation : Install kubectl

kubelogin (required for OIDC authentication)​

macOS

# Homebrew
brew install Azure/kubelogin/kubelogin

Linux

# Manual installation (all distributions)
curl -LO "https://github.com/Azure/kubelogin/releases/latest/download/kubelogin-linux-amd64.zip"
unzip kubelogin-linux-amd64.zip && sudo mv bin/linux_amd64/kubelogin /usr/local/bin/
rm -rf kubelogin-linux-amd64.zip bin/

Windows

# Chocolatey
choco install kubelogin

# winget
winget install Microsoft.Azure.Kubelogin

For a better Kubernetes management experience:

  • Lens - Modern graphical interface for Kubernetes
  • K9s - Interactive terminal interface for Kubernetes
  • Helm - Package manager for Kubernetes
  • kubectx + kubens - Tools to quickly switch context and namespace

Step 1: Access Your Tenant​

kubectl Configuration​

  1. Retrieve your kubeconfig from your Hikube administrator
  2. Configure kubectl with your configuration file:
    # Option 1: Environment variable
    export KUBECONFIG=/path/to/your/hikube-kubeconfig.yaml

    # Option 2: Copy to default directory
    cp hikube-kubeconfig.yaml ~/.kube/config
  3. Verify the connection:
    kubectl cluster-info
    kubectl get pods
Multiple Configuration

You can manage multiple clusters with kubectl config get-contexts and kubectl config use-context <context-name>

Tenant Verification​

Your tenant is your isolated workspace. Verify that you are in the correct namespace:

kubectl config current-context
kubectl get namespaces

Step 2: Create Your First Kubernetes Cluster​

Deployment via kubectl​

  1. Create a YAML file for your Kubernetes cluster
  2. Customize the configuration according to your needs
  3. Deploy with kubectl:
apiVersion: apps.cozystack.io/v1alpha1
kind: Kubernetes
metadata:
name: kube
spec:
addons:
certManager:
enabled: true
valuesOverride: {}
fluxcd:
enabled: false
valuesOverride: {}
ingressNginx:
enabled: true
hosts:
- my-app.example.com
valuesOverride: {}
monitoringAgents:
enabled: false
valuesOverride: {}
verticalPodAutoscaler:
valuesOverride: {}
controlPlane:
replicas: 3
host: k8s-api.example.com
kamajiControlPlane:
addons:
konnectivity:
server:
resources: {}
resourcesPreset: small
apiServer:
resources: {}
resourcesPreset: small
controllerManager:
resources: {}
resourcesPreset: small
scheduler:
resources: {}
resourcesPreset: small
nodeGroups:
md0:
ephemeralStorage: 30Gi
instanceType: u1.large
maxReplicas: 6
minReplicas: 3
resources:
cpu: ""
memory: ""
roles:
- ingress-nginx
storageClass: replicated

  1. Deploy the cluster:
    # Save the configuration in a file
    kubectl apply -f my-kubernetes-cluster.yaml

⏳ Deployment Monitoring​

  • The cluster will be ready in 1-3 minutes
  • Monitor the status with kubectl:
    kubectl get kubernetes
    kubectl describe kubernetes kube
  • Status "Ready" = Cluster operational βœ…

DNS Configuration​

Required DNS Records​

For your cluster to be accessible, you must create the following DNS records with your DNS provider:

# Retrieve the public IP of your cluster
kubectl get kubernetes kube -o jsonpath='{.status.controlPlaneEndpoint}'

# Create DNS records (with your provider):
# Type A: k8s-api.example.com β†’ <CLUSTER_IP>
# Type A: my-app.example.com β†’ <CLUSTER_IP>
DNS Configuration
  • k8s-api.example.com : Kubernetes API access point
  • my-app.example.com : Domain for your applications via Ingress
  • Replace example.com with your actual DNS zone

Step 3: Retrieve the Kubeconfig​

Cluster Kubeconfig Extraction​

Once your cluster is deployed and ready, retrieve its credentials with this command:

# Retrieve the kubeconfig of the created cluster (adjust the names)
kubectl get secret -n tenant-<name> kubernetes-<clusterName>-admin-kubeconfig \
-o go-template='{{ printf "%s\n" (index .data "admin.conf" | base64decode) }}' > admin.conf

# Concrete example:
kubectl get secret -n tenant-mycompany kubernetes-kube-admin-kubeconfig \
-o go-template='{{ printf "%s\n" (index .data "admin.conf" | base64decode) }}' > admin.conf
Variables to Customize
  • <name> : Replace with your tenant name (e.g., mycompany)
  • <clusterName> : Replace with your cluster name (e.g., kube according to the YAML config)

Local Configuration​

# Use the new cluster's kubeconfig
export KUBECONFIG=./admin.conf

# Verify connection to the created cluster
kubectl get nodes

# Expected result:
# NAME STATUS ROLES AGE VERSION
# cluster-node-1 Ready control-plane 2m v1.28.x
# cluster-node-2 Ready worker 2m v1.28.x
# cluster-node-3 Ready worker 2m v1.28.x
Congratulations!

Your Kubernetes cluster is now operational with native high availability!


βœ… Result: You Have Created...​

A high-availability Kubernetes cluster A completely secure environment (network isolation)
Resilient storage (automatic replication)​

Need Help?​

Documentation​

Support​

  • Email: support@hidora.io
  • Documentation: This platform
  • Community: Forums and real-time chat
Well Done! 🎊

You've just taken your first steps on Hikube. Your infrastructure is now ready to host all your most ambitious projects!


Recommended next step: πŸ“– Key Concepts β†’ Master Hikube fundamentals