Skip to main content

Overview

Bring Your Own Kubernetes (BYOK) allows you to connect any Kubernetes cluster to Qovery. You maintain control over your cluster infrastructure while Qovery manages application deployments.

Supported Kubernetes

Cloud Managed

  • AWS EKS
  • Google GKE
  • Azure AKS
  • Scaleway Kapsule
  • DigitalOcean DOKS

Self-Managed

  • Vanilla Kubernetes
  • Rancher
  • OpenShift
  • k3s/k3d
  • Tanzu

On-Premise

  • EKS Anywhere
  • Bare metal Kubernetes
  • VMware vSphere
  • Private cloud

Requirements

Kubernetes 1.24 or higher
kubectl access with cluster-admin permissions
LoadBalancer support (cloud or MetalLB for on-premise)
Storage class for persistent volumes
Ingress controller (Nginx or similar)
Metrics server installed

Quick Start

1

Install Qovery CLI

Download and install the Qovery CLI (or update to the latest version):
To download and install Qovery CLI on any Linux distribution:
curl -s https://get.qovery.com | bash
2

Install Qovery on your cluster

Run the following command from your terminal and follow the instructions:
qovery cluster install
This interactive command will guide you through the installation process and configure the Qovery agent on your cluster.
3

Verify Qovery Pods

Check that all Qovery pods are running in your cluster:
kubectl get pods -n qovery
4

Verify in Qovery Console

Your cluster should now show as “Running” in the Qovery Console.

What Qovery Installs

Core Components:
  • Qovery Agent (deployment manager)
  • Qovery Shell Agent (for terminal access)
Optional Components (if not present):
  • Nginx Ingress Controller
  • Cert-Manager (SSL certificates)
  • External-DNS (domain management)
  • Metrics Server

Networking Requirements

Inbound

  • Port 443: HTTPS traffic to applications
  • Port 80: HTTP traffic (redirects to 443)

Outbound

  • Qovery API: https://api.qovery.com
  • Container Registries: ECR, Docker Hub, GCR, etc.
  • Git Providers: GitHub, GitLab, Bitbucket

Load Balancer

Automatically provisioned by cloud provider:
  • AWS: ALB/NLB
  • GCP: Google Cloud Load Balancer
  • Azure: Azure Load Balancer

Storage Configuration

Ensure default storage class exists:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/gce-pd  # Change based on your provider
parameters:
  type: pd-standard
For on-premise, consider:
  • NFS: Network File System
  • Ceph: Distributed storage
  • Local Path: Local storage (not recommended for production)

Best Practices

Dedicated Namespace

Use dedicated qovery namespace for Qovery components

Resource Quotas

Set resource quotas per namespace to prevent resource exhaustion

Network Policies

Implement network policies for namespace isolation

Regular Updates

Keep Kubernetes and Qovery agent updated regularly

Troubleshooting

Check:
  • Agent pods running: kubectl get pods -n qovery
  • Agent logs: kubectl logs -n qovery -l app=qovery-agent
  • Outbound internet access from cluster
  • API token is correct
For Cloud: Check cloud provider quotas and permissionsFor On-Premise: Install MetalLB and configure IP pool
Check:
  • Storage class exists: kubectl get sc
  • Default storage class set
  • Provisioner is working
  • Sufficient storage capacity

Platform-Specific Guides