Fix Slow Namespace Switching in Kubie

Kubie makes it easy to switch across k8s contexts and namespaces. kubie works seamlessly with kubectl and removes the need to specify a namespace or context with each invocation of kubectl sub-command.

I’ve been using kubie for almost a year and recommend it whole heartedly. The only issue I’ve encountered is that switching namespaces in large k8s clusters is quite slow. Initally, it took a few seconds to switch namespaces, but my most recent attempt took 30 seconds !!. That was the last straw and I decided to look for a solution.

Validate Namespaces

kubie ensures a namespaces exists before entering it by default. As part of validating whether a namespaces exists, kubie ends up listing all namespaces in a cluster.

To avoid the latency that comes with listing all namespaces in a large cluster, simply toggle the behavior.validate_namespaces setting to false.

Step 1

Open kubie’s config file

> kubie edit-config

Step 2

Append this section to your kubie config file.

behavior:
    # Make sure the namespace exists with `kubectl get namespaces` when switching
    # namespaces. If you do not have the right to list namespaces, disable this.
    # Default: true
    validate_namespaces: false

Once kubie picks up the new setting, switching namespaces should be near instantaneous.

The Correctness vs Speed Tradeoff

validate_namespaces defaults to true for a good reason, it makes error states impossible. kubie ns non-existent-namespace will return an error.

Setting validate_namespaces to false improves the latency for switching namespaces at the cost of correctness. kubie ns non-existent-namespace will no longer return an error and in fact, the command will appear to succeed.

Choose wisely :)