The Generic provider for Managed Kubernetes allows Linux-based servers to act as worker nodes of a Kubernetes cluster, irrespective of their deployment in public clouds (such as AWS, Azure, GCP, Hetzner, etc.) or in private cloud or on-premises environments. Once integrated, these servers join a Kubernetes cluster as worker nodes, enabling the deployment of Kubernetes workloads through the Kubernetes API.Documentation Index
Fetch the complete documentation index at: https://controlplanecorporation-eric-mk8s-updates.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Supported Add-Ons
- Headlamp: Provides a Kubernetes dashboard UI for the cluster.
- AWS Workload Identity: Allows your pods to assume AWS IAM Roles.
- AWS ECR: Allows pulling images from private ECR registries.
- Local Path Storage: Creates PVCs backed by local volumes.
- Logs: Enables logging for pods and cluster auditing.
Step 1 - Server Setup
- Prepare the servers: Create at least one server that meets the following server requirements:
- Server requirements:
- Linux kernel version 5.x.x or higher
- Minimum CPU: 1 core
- Minimum RAM: 512 MB
- Servers require internet egress access.
- Ensure you have SSH access to the servers.
- Server requirements:
Step 2 - Create a Managed Kubernetes Cluster with a Manifest
- Optionally update the manifest below and save it as
generic-mk8s-template.yaml.
YAML
- Add-ons: Includes Headlamp, Local Path Storage, and AWS Workload Identity.
- Location: The cluster’s Kubernetes control plane will be managed in the
gcp-us-east1location. Placing worker nodes close to the control plane is recommended for optimal performance. - Kubernetes API Firewall: Uses the
defaultrule, allowing public access to the Kubernetes API. It is advisable to restrict API access to a known IP range for security purposes. - Kubernetes Version: 1.35.3.
- Node Pool: A single
generalnode pool.
-
Create the Cluster: Deploy the
generic-mk8s-examplecluster by applying the manifest.- CLI: Execute
cpln apply -f generic-mk8s-template.yaml --org YOUR_ORG_HERE. - Console: Apply the
generic-mk8s-template.yamlfile using the>_ applyoption in the upper right corner.
- CLI: Execute
Step 3 - Connect the Servers
-
Obtain the Join Script:
-
Using the CLI:
a. Save the Join Script to a file: Execute the command
cpln mk8s join generic-mk8s-example --type join-script --options nodePoolName=general > join_general.sh. -
Using the UI:
a. Navigate to the Control Plane Console: Visit the Control Plane Console.
b. Access the Dashboard: In the Control Plane Console, navigate to
Kubernetesin the left sidebar panel, click on thegeneric-mk8s-examplecluster, and go toNode Pools. Click onMoreon the right side of thegeneralNode Pool and selectGenerate Join Script.
-
Using the CLI:
a. Save the Join Script to a file: Execute the command
-
Copy and Execute the Script on the Server: Connect to the remote server and execute the join script. After the execution, the server should be joined to the cluster as a node under the
generalnode pool. Repeat these steps for all necessary servers.
Step 4 - Accessing the Cluster
1. Using the Terminal
- Obtain the cluster’s kubeconfig file: Execute the command
cpln mk8s kubeconfig generic-mk8s-example -f /tmp/generic-mk8s-example-conf. - Access the cluster with
kubectl: Use the obtained kubeconfig file by runningexport KUBECONFIG=/tmp/generic-mk8s-example-conffor the current shell session.
2. Using Headlamp
- Navigate to the Control Plane Console: Visit the Control Plane Console.
- Open Headlamp: In the Control Plane Console, navigate to
Kubernetesin the left sidebar panel and click onHeadlampunderDashboardfor the clustergeneric-mk8s-example.