Help us shape the future of Go! Take the 2026 Go Developer Survey

kubectl-co

command module
v0.26.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

README

= Kubectl-co

image:https://img.shields.io/badge/License-Apache%202.0-blue.svg[link="http://www.apache.org/licenses/LICENSE-2.0"]
image:https://github.com/steffakasid/kubectl-co/actions/workflows/codeql-analysis.yml/badge.svg[link:https://github.com/steffakasid/kubectl-co/actions/workflows/codeql-analysis.yml]
image:https://github.com/steffakasid/kubectl-co/actions/workflows/release.yml/badge.svg[link:https://github.com/steffakasid/kubectl-co/actions/workflows/release.yml]
image:https://github.com/steffakasid/kubectl-co/actions/workflows/go-test.yml/badge.svg[link:https://github.com/steffakasid/kubectl-co/actions/workflows/go-test.yml]

This tool aims to make it easy to manage multiple config files. I know there are alternatives around e.g. `kubectl krew info config-registry` but for me I didn't like the deep structure of the commands. I want something as short as possible. Before I created this tool I used some shell functions to basically do the same: 

[source,bash]
----
setKubeCtx() {
    export KUBECONFIG=$1
    unlink ~/.kube/config
    ln -s $1 ~/.kube/config
    kubectx $2
}

k8s() {
  if [ -z ${1} ]; then
    echo $KUBECONFIG
    ll ~/.kube/config
  else
    if [ $1 = "prod" ]; then
      setKubeCtx ~/.kube/eks-prod.yml eks-prod
    elif [ $1 = "dev" ]; then
      setKubeCtx ~/.kube/eks-dev.yml eks-dev
    elif [ $1 = "poc" ]; then
      setKubeCtx ~/.kube/eks-poc.yml eks-poc
    elif [ $1 = "nextcloud" ]; then
      setKubeCtx ~/.kube/config-nextcloud.yml microk8s
    elif [ $1 = "berlin" ]; then
      setKubeCtx ~/.kube/config-berlin.yml default/berlin/steffenrumpf
      oc project &> /dev/null || oc login | tail -n 2 | head -n 1 | sed -e 's/You must obtain an API token by visiting //g' | xargs open
    elif [ $1 = "madrid" ]; then
      setKubeCtx ~/.kube/config-madrid.yml default/madrid/steffenrumpf
      oc project &> /dev/null || oc login | tail -n 2 | head -n 1 | sed -e 's/You must obtain an API token by visiting //g' | xargs open
    else
      setKubeCtx ~/.kube/eks-test.yml eks-test
    fi
  fi
}
----

Unfortunately this was a bit limited so I decided to write a little go tool and integrate it as plugin into kubectl.

NOTE: If you set the KUBECONFIG environment var this will always take precedence before the config file.

== Usage

[source,sh]
----
  kubectl co [flags]
  kubectl-co [flags]
----

== Preqrequisites

kubectl should be installed (even if the application would also run for it own as `kubectl-co`)

== Examples

[source, sh]
----
  kubectl co --add new-config ~/.kube/config    - adds your current kubeconfig to be used by co with the name 'new-config'
  kubectl co --add completly-new                - adds a plain new config file which must be inialised afterwards
  kubectl co --list                             - list all available configs
  kubectl co --delete new-config                - delete config with name 'new-config'
  kubectl co new-config                         - switch to 'new-config' this will overwrite ~/.kube/config with a symbolic link
  kubectl co                                    - switch to previous config and set current config to previous
----

== Flags:
  -a, --add:: Add a new given config providing the path and the name. Usage: `kubectl co --add  [configname] [configpath]`
  --debug:: Turn on debug output
  -d, --delete:: Delete the config with the given name. Usage: `kubectl co --delete [configname]`
  -l, --list:: List all available config files

== Environment variables

[source,sh]
----
# Prefix all config keys with KUBECTL_CO_
export KUBECTL_CO_DEBUG=true
export KUBECTL_CO_DELETE=true
----

== Shell completion

.Manually enable shell completion
[source,sh]
----
# bash
source <(kubectl-co completion bash)

# zsh (use bash completion)
source <(kubectl-co completion zsh)
----

.Or add to your shell rc file:
[source,sh]
----
# ~/.bashrc
echo 'source <(kubectl-co completion bash)' >> ~/.bashrc

# ~/.zshrc
echo 'source <(kubectl-co completion zsh)' >> ~/.zshrc
----

Documentation

Overview

Copyright © 2022 steffakasid

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL