Skip to main content
Crusoe Support Help Center home page
Crusoe

How-To Fix CRUSOE_CLUSTER_ID Error for Self-Managed Clusters in Crusoe Load Balancer Controller

Tanaya Atmaram Kambli
Tanaya Atmaram Kambli
Updated

Last Updated: Dec 25, 2025

Introduction

When deploying the Crusoe Load Balancer Controller using Helm on self-managed Kubernetes clusters, you may encounter an error related to a missing secret key:

Error: couldn't find key CRUSOE_CLUSTER_ID in Secret crusoe-system/crusoe-secrets

This error occurs because self-managed clusters do not use CMK, and therefore do not have a CRUSOE_CLUSTER_ID. The Helm chart expects this key unless you provide an alternative: the CRUSOE_SUBNET_ID.

This guide explains how to resolve this issue and deploy the controller successfully.

Prerequisites

Before starting, make sure you have:

  • A running self-managed Kubernetes cluster

  • kubectl configured for your cluster

  • Helm 3+ installed

  • Access to your Crusoe API Keys and Project ID

  • Your Subnet ID from the Crusoe infrastructure

Step-by-Step Instructions

  1. Confirm the Error
    • After installing the Helm chart using the Crusoe Load Balancer Controller Helm Chart guide, check the pod status. It will show a CreateContainerConfigError error.

      $ kubectl get pods -n crusoe-system -l app=crusoe-lb-controller
      
      NAME                                                         READY   STATUS                       RESTARTS   AGE
      crusoe-lb-controller-crusoe-lb-controller-xxxxx   0/1     CreateContainerConfigError   0          28s
    • Describe the pod to check the specific error.

      $ kubectl describe pods crusoe-lb-controller-crusoe-lb-controller-xxxxx -n crusoe-system
    • You'll likely see the following error

      Warning  Failed   xx   kubelet  Error: couldn't find key CRUSOE_CLUSTER_ID in Secret crusoe-system/crusoe-secrets
  2. Modify values.yaml to Remove CRUSOE_CLUSTER_ID and Add CRUSOE_SUBNET_ID
    • Open values.yaml located at /crusoe-load-balancer-controller-helm-charts/charts/crusoe-lb-controller and make the following changes:

      crusoe:
       secrets:
         crusoeApiKeys:
           # The Crusoe LB Controller requires access to the Crusoe API in order to manage load balancer resources.
           # It is expected that the secret will contain two keys at accessKeyPath and secretKeyPath containing
           # the base64 encoded access key and secret key respectively.
           secretName: "crusoe-secrets"
           accessKeyPath: "CRUSOE_ACCESS_KEY"
           secretKeyPath: "CRUSOE_SECRET_KEY"
          # clusterIdPath: "CRUSOE_CLUSTER_ID"  ### COMMENT OR REMOVE THIS
           projectIdPath: "CRUSOE_PROJECT_ID"
      
      controller:
       namespace: crusoe-system
       image:
         repository: ghcr.io/crusoecloud/crusoe-load-balancer-controller
         tag: "latest"
         pullPolicy: Always
         imagePullSecrets: []
      
       env:
         CRUSOE_API_ENDPOINT: "https://api.crusoecloud.com/v1alpha5"
         # subnet_id is optional if using a cmk cluster but required for self-managed clusters
         CRUSOE_SUBNET_ID: "<subnet-id>"       ### ADD YOUR SUBNET ID HERE
    • NOTE: The CRUSOE_SUBNET_ID is mandatory for self-managed clusters and overrides the need for CRUSOE_CLUSTER_ID. In the  templates/controller.yaml file, you will observe that Cluster ID is only required when Subnet ID is not provided.
  3. Re-deploy the Controller
    • Upgrade the Helm release with your updated values

      $ helm upgrade --install crusoe-lb-controller ./crusoe-lb-controller --namespace crusoe-system
    • Now check the pod status again. It should be Running.

      $ kubectl get pods -n crusoe-system -l app=crusoe-lb-controller                                     
      
      NAME                                                        READY   STATUS    RESTARTS   AGE
      crusoe-lb-controller-crusoe-lb-controller-xxxxx  1/1     Running   0          12s
      

Example

Successful Pod Describe Output should show that the Pod and Container status is Running. 

$ kubectl describe pods crusoe-lb-controller-crusoe-lb-controller-xxxxx -n crusoe-system 

Status:           Running
....
....
Containers:
  crusoe-lb-controller:
    ....
    ....
    State:          Running
      Started:      Thu, 18 Sep 2025 10:45:27 -0700

You will also see the following under Environment:

CRUSOE_API_ENDPOINT: https://api.crusoecloud.com/v1alpha5
CRUSOE_SUBNET_ID:    <your-subnet-id>
CRUSOE_ACCESS_KEY:   <set to key in secret>
CRUSOE_SECRET_KEY:   <set to key in secret>
CRUSOE_PROJECT_ID:   <set to key in secret>
CRUSOE_CLUSTER_ID:   <empty>

Additional Resources

 

Related to

Was this article helpful?

0 out of 0 found this helpful

Still need help?

Our support team is ready to assist you with any questions.

Have more questions? Submit a request

Recently Viewed

Comments

0 comments

Article is closed for comments.