An open API service indexing awesome lists of open source software.

https://github.com/yaacov/kubectl-sql

kubectl-sql is a kubectl plugin that use SQL like language to query the Kubernetes cluster manager
https://github.com/yaacov/kubectl-sql

hacktoberfest k8s-client k8s-filtering k8s-search kubectl kubectl-plugin kubectl-sql kubernetes plugin query resources search sql

Last synced: 2 months ago
JSON representation

kubectl-sql is a kubectl plugin that use SQL like language to query the Kubernetes cluster manager

Awesome Lists containing this project

README

        

[![Go Report Card](https://goreportcard.com/badge/github.com/yaacov/kubectl-sql)](https://goreportcard.com/report/github.com/yaacov/kubectl-sql)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)


kubectl-sql Logo

# kubectl-sql

kubectl-sql is a [kubectl plugin](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) that use SQL like language to query the [Kubernetes](https://kubernetes.io/) cluster manager

- [Install](#install)
- [What can I do with it ?](#what-can-i-do-with-it-)
- [Alternatives](#alternatives)



## More docs

- [kubectl-sql's query language](https://github.com/yaacov/kubectl-sql/blob/master/README_language.md)
- [More kubectl-sql examples](https://github.com/yaacov/kubectl-sql/blob/master/README_examples.md)
- [Using the config file](https://github.com/yaacov/kubectl-sql/blob/master/README_config.md)

## Install

Using [krew](https://sigs.k8s.io/krew) plugin manager to install:

``` bash
# Available for linux-amd64
kubectl krew install sql
kubectl sql --help
```

Using Fedora Copr:

``` bash
# Available for F41 and F42 (linux-amd64)
dnf copr enable yaacov/kubesql
dnf install kubectl-sql
```

From source:

``` bash
# Clone code
git clone [email protected]:yaacov/kubectl-sql.git
cd kubectl-sql

# Build kubectl-sql
make

# Install into local machine PATH
sudo install ./kubectl-sql /usr/local/bin/
```





## What can I do with it ?

kubectl-sql let you select Kubernetes resources based on the value of one or more resource fields, using
human readable easy to use SQL like query language. It is also posible to find connected resources useing the
`join` command.

[More kubectl-sql examples](https://github.com/yaacov/kubectl-sql/blob/master/README_examples.md)

``` bash
# Get pods in namespace "openshift-multus" that hase name containing "cni"
# Select the fields name, status.phase as phase, status.podIP as ip
kubectl-sql "select name, status.phase as phase, status.podIP as ip \
from openshift-multus/pods \
where name ~= 'cni' and (ip ~= '5$' or phase = 'Running')"
KIND: Pod COUNT: 2
name phase ip
multus-additional-cni-plugins-7kcsd Running 10.130.10.85
multus-additional-cni-plugins-kc8sz Running 10.131.6.65
...
```

``` bash
# Get all persistant volume clames that are less then 20Gi, and output as json.
kubectl-sql -o json "select * from pvc where spec.resources.requests.storage < 20Gi"
...
```

``` bash
# Display non running pods by nodes for all namespaces.
kubectl-sql "select * from nodes join pods on \
nodes.status.addresses[1].address = pods.status.hostIP and not pods.phase ~= 'Running'" -A
...
```

``` bash
# Filter replica sets with less ready-replicas then replicas"
kubectl-sql --all-namespaces "select * from rs where status.readyReplicas < status.replicas"
```







#### Output formats:
| --output flag | Print format |
|----|---|
| table | Table |
| name | Names only |
| yaml | YAML |
| json | JSON |

## Alternatives

#### jq

`jq` is a lightweight and flexible command-line JSON processor. It is possible to
pipe the kubectl command output into the `jq` command to create complicated searches ( [Illustrated jq toturial](https://github.com/MoserMichael/jq-illustrated) )

https://stedolan.github.io/jq/manual/#select(boolean_expression)

#### kubectl --field-selector

Field selectors let you select Kubernetes resources based on the value of one or more resource fields. Here are some examples of field selector queries.

https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/