π 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
Recommended Optional Toolsβ
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β
- Retrieve your kubeconfig from your Hikube administrator
- 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 - Verify the connection:
kubectl cluster-info
kubectl get pods
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β
- Create a YAML file for your Kubernetes cluster
- Customize the configuration according to your needs
- 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
- 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>
- k8s-api.example.com : Kubernetes API access point
- my-app.example.com : Domain for your applications via Ingress
- Replace
example.comwith 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
<name>: Replace with your tenant name (e.g.,mycompany)<clusterName>: Replace with your cluster name (e.g.,kubeaccording 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
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β
- FAQ β Answers to common questions
- Troubleshooting β Problem solutions
Supportβ
- Email: support@hidora.io
- Documentation: This platform
- Community: Forums and real-time chat
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