π 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)β
kubelogin is a kubectl plugin for OpenID Connect (OIDC) authentication.
macOS / Linux (Homebrew)
brew install kubelogin
Krew (macOS, Linux, Windows)
kubectl krew install oidc-login
Windows (Chocolatey)
choco install kubelogin
π Official documentation: int128/kubelogin
Do not use the Azure kubelogin (Azure/kubelogin). Hikube uses standard OIDC authentication and requires the int128/kubelogin plugin.
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 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 context:
kubectl config current-context
The -A (--all-namespaces) flag performs a cluster-scoped request, which is forbidden for tenant users. Always run commands without -A: your kubeconfig already targets your namespace.
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
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 via Ingresses
kubectl get ingress
Expected output:
NAME CLASS HOSTS ADDRESS PORTS AGE
kubernetes-kube tenant-myco k8s-api.example.com 91.x.x.x 80 2m
kubernetes-kube-ingress-nginx tenant-myco my-app.example.com 91.x.x.x 80 2m
Create the DNS records with your DNS provider:
Type A: k8s-api.example.com β <ADDRESS>
Type A: my-app.example.com β <ADDRESS>
- 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 cluster name)
kubectl get secret kubernetes-<clusterName>-admin-kubeconfig \
-o go-template='{{ printf "%s\n" (index .data "admin.conf" | base64decode) }}' > admin.conf
# Concrete example with the "kube" cluster:
kubectl get secret kubernetes-kube-admin-kubeconfig \
-o go-template='{{ printf "%s\n" (index .data "admin.conf" | base64decode) }}' > admin.conf
<clusterName>: Replace with your cluster name (e.g.,kubeaccording to the YAML manifest)
Local Configurationβ
# Use the new cluster's kubeconfig
export KUBECONFIG=./admin.conf
# Verify connection to the created cluster
kubectl get nodes
This command will only work after you have configured the DNS records (previous section). Worker nodes may take a few additional minutes to appear.
Your Kubernetes cluster is now operational with native high availability!
Summaryβ
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