在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):CATechnologiesTest/kubeiql开源软件地址(OpenSource Url):https://github.com/CATechnologiesTest/kubeiql开源编程语言(OpenSource Language):Go 99.2%开源软件介绍(OpenSource Introduction):Repository StatusThis repository exists here for historical purposes. The active repo is now hosted at: https://github.com/yipeeio/kubeiql KubeiqlA GraphQL interface for Kubernetes. The goal of this project is to provide an alternative GraphQL interface to a Kubernetes cluster. It is not intended to entirely replace the ReST APIs as some of them (particularly the watch APIs) don't map well onto GraphQL. Yipee.io is a CA, Inc. Accelerator project. Current Statuspre-alpha
Getting StartedTo experiment with the API:
The server runs at port 8128. You can use curl to play with it as shown in the examples below via the /query endpoint, or point your browser at 'localhost:8128/' and experiment with the GraphiQL tool (much more user-friendly). Build an imageIf you're running on a non-linux machine, use the elf-build.sh script to build an image suitable for use in a docker container. Then just build in the usual way:
Running inside a Kubernetes clusterTo run kubeiql inside a cluster, simply apply the k8sdeploy.yaml file:
ExamplesThe query: {
daemonSetByName(namespace: "kube-system", name: "kube-proxy") {
metadata {name namespace labels {name value}}
}
}
curl -X POST -H"Content-Type: application/json"
http://localhost:8128/query -d
'{ "query": "{daemonSetByName(namespace: \"kube-system\", name: \"kube-proxy\") { metadata {name namespace labels {name value}} pods {metadata {name}}}}"}'
returns: {
"data": {
"daemonSetByName": {
"metadata": {
"name": "kube-proxy",
"namespace": "kube-system",
"labels": [
{
"name": "k8s-app",
"value": "kube-proxy"
}
]
},
"pods": [
{
"metadata": {
"name": "kube-proxy-7vhx5"
}
}
]
}
}
}
and the query: {
allPods() {
owner {kind metadata {name}}
rootOwner { kind metadata { name namespace }
... on StatefulSet {
metadata { name }
}
... on Deployment {
replicaSets {
metadata { name }
pods { metadata { name } } }
}
}
}
}
curl -X POST -H"Content-Type: application/json"
http://localhost:8128/query -d '{"query": "{allPods() {owner {kind
metadata {name}} rootOwner { kind metadata { name namespace } ... on
StatefulSet { metadata { name } } ... on Deployment { replicaSets {
metadata { name } pods { metadata { name } } } } } } }" }'
returns: {
"data": {
"allPods": [
{
"owner": {
"kind": "ReplicaSet",
"metadata": {
"name": "backend-549447ccf"
}
},
"rootOwner": {
"kind": "Deployment",
"metadata": {
"name": "backend",
"namespace": "default"
},
"replicaSets": [
{
"metadata": {
"name": "backend-549447ccf"
},
"pods": [
{
"metadata": {
"name": "backend-549447ccf-4zphf"
}
},
{
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz"
}
},
{
"metadata": {
"name": "clunky-sabertooth-mariadb-0"
}
}
// ...
]
}
]
}
},
{
"owner": {
"kind": "ReplicaSet",
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d"
}
},
"rootOwner": {
"kind": "Deployment",
"metadata": {
"name": "clunky-sabertooth-joomla",
"namespace": "default"
},
"replicaSets": [
{
"metadata": {
"name": "backend-549447ccf"
},
"pods": [
{
"metadata": {
"name": "backend-549447ccf-4zphf"
}
},
{
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz"
}
}
//...
]
}
]
}
},
{
"owner": {
"kind": "StatefulSet",
"metadata": {
"name": "clunky-sabertooth-mariadb"
}
},
"rootOwner": {
"kind": "StatefulSet",
"metadata": {
"name": "clunky-sabertooth-mariadb",
"namespace": "default"
}
}
},
{
"owner": {
"kind": "ReplicaSet",
"metadata": {
"name": "ui-9c6c8d79"
}
},
"rootOwner": {
"kind": "Deployment",
"metadata": {
"name": "ui",
"namespace": "default"
},
"replicaSets": [
{
"metadata": {
"name": "backend-549447ccf"
},
"pods": [
{
"metadata": {
"name": "backend-549447ccf-4zphf"
}
},
{
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz"
}
}
// ...
]
}
]
}
},
{
"owner": {
"kind": "ReplicaSet",
"metadata": {
"name": "ui-9c6c8d79"
}
},
"rootOwner": {
"kind": "Deployment",
"metadata": {
"name": "ui",
"namespace": "default"
},
"replicaSets": [
{
"metadata": {
"name": "backend-549447ccf"
},
"pods": [
{
"metadata": {
"name": "backend-549447ccf-4zphf"
}
},
{
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz"
}
}
// ...
]
}
]
}
},
{
"owner": {
"kind": "Pod",
"metadata": {
"name": "etcd-minikube"
}
},
"rootOwner": {
"kind": "Pod",
"metadata": {
"name": "etcd-minikube",
"namespace": "kube-system"
}
}
},
{
"owner": {
"kind": "Pod",
"metadata": {
"name": "kube-addon-manager-minikube"
}
},
"rootOwner": {
"kind": "Pod",
"metadata": {
"name": "kube-addon-manager-minikube",
"namespace": "kube-system"
}
}
},
{
"owner": {
"kind": "Pod",
"metadata": {
"name": "kube-apiserver-minikube"
}
},
"rootOwner": {
"kind": "Pod",
"metadata": {
"name": "kube-apiserver-minikube",
"namespace": "kube-system"
}
}
},
{
"owner": {
"kind": "Pod",
"metadata": {
"name": "kube-controller-manager-minikube"
}
},
"rootOwner": {
"kind": "Pod",
"metadata": {
"name": "kube-controller-manager-minikube",
"namespace": "kube-system"
}
}
},
{
"owner": {
"kind": "ReplicaSet",
"metadata": {
"name": "kube-dns-86f4d74b45"
}
},
"rootOwner": {
"kind": "Deployment",
"metadata": {
"name": "kube-dns",
"namespace": "kube-system"
},
"replicaSets": [
{
"metadata": {
"name": "backend-549447ccf"
},
"pods": [
{
"metadata": {
"name": "backend-549447ccf-4zphf"
}
},
{
"metadata": {
"name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz"
}
}
// ...
]
}
]
}
},
{
"owner": {
"kind": "DaemonSet",
"metadata": {
"name": "kube-proxy"
}
},
"rootOwner": {
"kind": "DaemonSet",
"metadata": {
"name": "kube-proxy",
"namespace": "kube-system"
}
}
},
{
"owner": {
"kind": "Pod",
"metadata": {
"name": "kube-scheduler-minikube"
}
},
"rootOwner": {
"kind": "Pod",
"metadata": {
"name": "kube-scheduler-minikube",
"namespace": "kube-system"
}
}
}
// ...
]
}
}
LicenseThe work done has been licensed under Apache License 2.0. The license file can be found here. You can find out more about the license at www.apache.org/licenses/LICENSE-2.0. Questions?Feel free to contact us. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论