Skip to content

Latest commit

 

History

History
152 lines (104 loc) · 5.06 KB

README.md

File metadata and controls

152 lines (104 loc) · 5.06 KB

kubectl-karbon - Quickly connect to your Karbon cluster!

This kubectl extension allows to quickly connect to an existing karbon cluster without the need to connect to Prism UI. It uses the Karbon API to get kubeconfig file and install it on your local system.

Demo

kubectl-karbon.mp4

Go Report Card Maintainability CI Release

release License Proudly written in Golang Releases


Installation

There are several installation options:

  • As kubectl Krew plugins
  • As Homebrew or Linuxbrew package
  • Manual installation

After installing, the tools will be available as kubectl karbon.

Kubectl Plugins

You can install and use Krew kubectl plugin manager to get the karbon plugin .

kubectl krew install karbon

Keep up-to-date with kubectl krew upgrade karbon (or kubectl krew upgrade to upgrade everything)

Homebrew Package

You can install with Homebrew for macOS or LinuxBrew for Linux

brew install nutanix/tap/kubectl-karbon

Keep up-to-date with brew upgrade kubectl-karbon (or brew upgrade to upgrade everything)

Manual

  • Download your corresponding release
  • Install the binary somewhere in your PATH (/usr/local/bin for example)
  • use it with kubectl karbon

MacOS X notes for security error

Depending of your OS settings when you install you binary manually we must launch the following command: xattr -r -d com.apple.quarantine /usr/local/bin/kubectl-karbon

Usage

  • kubectl karbon help Help about any command
  • kubectl karbon list Get the list of k8s clusters
  • kubectl karbon login Authenticate user with Nutanix Prism Central, create kubeconfig file, get ssh key/cert, ...
  • kubectl karbon logout Remove kubeconfig file, remove ssh key/cert file, clean ssh-agent ...
  • kubectl karbon version Print the version of the plugin

Config file

You can specify a config file to define your seetings. The default is $HOME/.kubectl-karbon.yaml and you can use another one with the --config flag.

server: servername
port: 9440
cluster: karbon_cluster_name
user: admin
insecure: true
verbose: false
force: false
kubie: false
keyring: false
#ssh-agent: false
#ssh-file: false
#kubie-path: ~/.kube/.kubie/
#kubeconfig: /path/.kube/config

config file example

All entries are optional, you can define only what you need to enforce.

Env variables

you can also use the following environement variable

KARBON_SERVER
KARBON_PORT
KARBON_CLUSTER
KARBON_USER
KARBON_INSECURE
KARBON_VERBOSE
KARBON_FORCE
KARBON_PASSWORD
KARBON_KUBIE
KARBON_KUBIE_PATH
KARBON_SSH_AGENT
KARBON_SSH_FILE
KARBON_KEYRING KUBECONFIG

precedence is

FLAGS => ENV => CONFIG FILE => DEFAULT

File overwrite

You can use the --force option to overwrite any existing file(s) like kubeconfig or ssh key/cert.

Password

By default this tools never stored the password.
You can use the KARBON_PASSWORD env variable.
You can also use the --keyring option to save and retrieve your password from the system keyring. It supports OS X, Linux/BSD (dbus) and Windows.
In all other cases password should be provided in an interactive way.

SSH option

During login, allow SSH key and cert retrieval.
The key and cert can be added to the running ssh-agent (--ssh-agent) or saved in file inside the ~/.ssh/ directory (--ssh-file).

Kubie mode

Allows full integration with the excellent Kubie tool who has support for split configuration files, meaning it can load Kubernetes contexts from multiple files.
When this mode is active (--kubie) each kubeconfig file is stored as an independent file in the kubie-path directoy (default ~/.kube/kubie/cluster_name.yaml)

Building From Source

kubectl-karbon is currently using go v1.16 or above. In order to build kubectl-karbon from source you must:

  1. Clone the repo

  2. Build and run the executable

    make build && make install