First let’s have a look at fzf, a super fast command line fuzzy finder. It’s mostly written in golang and there are so many ways to use it. In this note, I’ll just use it to select a value from a list in a terminal and then return it to next command.
When working with kubernetes, I open need to switch between namespaces in a cluster. The raw kubectl
command for this is:
kubectl config set-context --current --namespace='my-namespace'
But I don’t remember every namespace, do I? If auto-completion of kubectl
is available I can double-tab and then get a list of namespaces like this:
This is not quite convenient, not at all. So I created this simple bash function using fzf to speed this up.
#select k8s namespace function kns() { kubectl config set-context --current --namespace=$(kubectl get namespaces --output=jsonpath='{range .items[*]}{.metadata.name}{"\n"}'|fzf) }
The kubectl get...
command in the sub shell above simple output a list of available kubernetes namespaces and then pipe to fzf
to make an interactive auto-completion. And then the selected namespace will be passed back to kubectl config ...
command to actually set the namespace to current context. The result looks like this:
PS. I’ve put this and other handy shorthand functions here.