https://github.com/sbueringer/kubectl-openstack-plugin
kubectl plugin for OpenStack
https://github.com/sbueringer/kubectl-openstack-plugin
kubectl openstack plugin
Last synced: 2 months ago
JSON representation
kubectl plugin for OpenStack
- Host: GitHub
- URL: https://github.com/sbueringer/kubectl-openstack-plugin
- Owner: sbueringer
- License: apache-2.0
- Created: 2018-09-14T07:48:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-05-16T18:26:28.000Z (about 3 years ago)
- Last Synced: 2025-03-25T03:51:51.230Z (3 months ago)
- Topics: kubectl, openstack, plugin
- Language: Go
- Homepage:
- Size: 3.37 MB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kubectl Openstack Plugin
[](https://travis-ci.org/sbueringer/kubectl-openstack-plugin)[](https://codecov.io/gh/sbueringer/kubectl-openstack-plugin)[](https://www.codefactor.io/repository/github/sbueringer/kubectl-openstack-plugin)[](https://goreportcard.com/report/github.com/sbueringer/kubectl-openstack-plugin)[](https://github.com/sbueringer/kubectl-openstack-plugin/releases)
based on [k8s.io/sample-cli-plugin](https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/sample-cli-plugin)
# Installation
## Prerequisites
* Afaik kubectl plugins without plugin.yaml only work with kubectl >=1.12
## Installation via go get
Just execute the following and make sure `$GOPATH/bin` is in your `$PATH`:
````
GO111MODULE=on go get github.com/sbueringer/kubectl-openstack-plugin/cmd/[email protected]
````Note: this currently only works without GO111MODULE=on because a replace directive for gophercloud is used. (see also: https://github.com/golang/go/issues/30354)
## Installation via download
Download the binary from [Releases](https://github.com/sbueringer/kubectl-openstack-plugin/releases) and place it in a directory in your `PATH`.
# Configuration
To access OpenStack via this plugin the OpenStack credentials must be configured either via env variables or via [clouds.yaml](https://docs.openstack.org/python-openstackclient/pike/configuration/index.html) config file.
## Configuration via Environment Variables
The plugin can be configured by setting the following env variables:
* `OS_USERNAME`
* `OS_PASSWORD`
* `OS_PROJECT_NAME` or `OS_TENANT_NAME`
* `OS_AUTH_URL`## Configuration via config file
The location of the config file must be configured via `OPENSTACK_CONFIG_FILE` env var. An example `clouds.yaml`:
````
clouds:
i01p015:
auth:
auth_url: http://192.168.122.10:35357/
project_name: i01p015
username: demo
password: password
````*Note*: The cloud/project_name is automatically discovered from the current kube context. E.g. a kube context named `i01p015-cluster-admin` leads to a cloud/project_name of `i01p015`.
*Note*: The clouds.yaml file can be created from `.rc` files via the `import-config` sub command.# Usage
The kubectl OpenStack plugin currently has three commands, which are shown here.
## kubectl openstack server
The `server` command combines information about Kubernetes Nodes with OpenStack Server.
````
$ kubectl openstack server
NODE_NAME STATUS KUBELET_VERSION KUBEPROXY_VERSION RUNTIME_VERSION SERVER_ID STATE CPU RAM IP
i01p015-kube-master01 Ready v1.11.0 v1.11.0 docker://18.3.1 c11231ab-4315-4a77-b5fc-22f2a668d414 ACTIVE 2 15G 10.12.4.12
i01p015-kube-node01 Ready v1.11.0 v1.11.0 docker://18.3.1 04acf401-dcf4-4e7c-8796-69662768067a ACTIVE 2 8G 10.12.4.17
i01p015-kube-node02 Ready v1.11.0 v1.11.0 docker://18.3.1 cf03414f-f692-4766-a797-16f01b154d6e ACTIVE 2 8G 10.12.4.7
i01p015-kube-node03 Ready v1.11.0 v1.11.0 docker://18.3.1 fca70123-2db0-430a-a84e-5010cc1f0f71 ACTIVE 2 8G 10.12.4.15
````## kubectl openstack volumes
The `volumes` command combines information about Kubernetes Persistent Volumes & Nodes with OpenStack Volumes.
````
$ kubectl openstack volumes
CLAIM PV_NAME CINDER_ID SERVERS STATUS
default/cache pvc-15eb6f71-943a-11e8-9844-fa163e81bcc3 3c1e3f40-09ad-4a2a-b77e-8abc53f9d8d7 i01p015-kube-node02 in-use
monitoring/data-prometheus-0 pvc-02432937-93ed-11e8-9844-fa163e81bcc3 e47df157-e654-4491-a25d-ad42475d4822 i01p015-kube-node04 in-use
logging/data-elastic-0 pvc-c627c780-93ec-11e8-9844-fa163e81bcc3 69237173-6413-450b-9007-ec3bce8b3e39 i01p015-kube-node03 in-use
````## kubectl openstack lb
The `lb` command combines information about Kubernetes Services with OpenStack LoadBalancer resources.
````
$ kubectl openstack lb
NAME FLOATING_IPS VIP_ADDRESS PORTS SERVICES
external 59.1.0.15 10.12.4.6 8080 => [10.12.4.17 10.12.4.7 10.12.4.15]:30080 external/traefik
internal 59.1.0.14 10.12.4.5 443 => [10.12.4.17 10.12.4.7 10.12.4.15]:30443 internal/traefik
````# Roadmap
* enable output via go template like json path (from both openstack & kube object)
* unit tests