{"id":13723889,"url":"https://github.com/CATechnologiesTest/kubeiql","last_synced_at":"2025-05-07T17:32:00.167Z","repository":{"id":97076316,"uuid":"140890129","full_name":"CATechnologiesTest/kubeiql","owner":"CATechnologiesTest","description":"A GraphQL interface for Kubernetes.","archived":false,"fork":false,"pushed_at":"2019-01-25T16:29:36.000Z","size":118,"stargazers_count":111,"open_issues_count":2,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-04T01:23:05.424Z","etag":null,"topics":["graphql","kubernetes-api","kubernetes-cluster","yipeeio"],"latest_commit_sha":null,"homepage":"https://kubeiql.io/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CATechnologiesTest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-07-13T20:26:28.000Z","updated_at":"2023-04-14T18:12:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"907ed422-3471-4596-8f16-88c56b0f81b9","html_url":"https://github.com/CATechnologiesTest/kubeiql","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CATechnologiesTest%2Fkubeiql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CATechnologiesTest%2Fkubeiql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CATechnologiesTest%2Fkubeiql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CATechnologiesTest%2Fkubeiql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CATechnologiesTest","download_url":"https://codeload.github.com/CATechnologiesTest/kubeiql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224628193,"owners_count":17343288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphql","kubernetes-api","kubernetes-cluster","yipeeio"],"created_at":"2024-08-03T01:01:46.799Z","updated_at":"2024-11-14T13:31:14.696Z","avatar_url":"https://github.com/CATechnologiesTest.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Repository Status\n**This repository exists here for historical purposes.  The active repo is now hosted at: https://github.com/yipeeio/kubeiql**\n# Kubeiql\nA GraphQL interface for Kubernetes.\n\nThe goal of this project is to provide an alternative GraphQL\ninterface to a Kubernetes cluster. It is not intended to entirely replace the\nReST APIs as some of them (particularly the watch APIs) don't map well\nonto GraphQL.\n\nYipee.io is a CA, Inc. Accelerator project.\n\n## Current Status\n\npre-alpha\n\n* Queries are currently supported against Pods, Deployments,\nReplicaSets, StatefulSets, and DaemonSets.\n* No mutations are yet implemented.\n* The retrieval of data from the cluster is accomplished via watchers\non the kubernetes API. By default, we expect to access the API at\nlocalhost port 8080 (run \"kubectl proxy --port=8080\")\n  * to access a kubernetes API without using the proxy, you can set\n    environment variables:\n    * API_HOST: host/port of API, e.g., https://kubernetes.default.svc\n      from inside a cluster\n    * API_SECRET_PATH: directory containing files 'ca.crt' and\n      'token', e.g. /var/run/secrets/kubernetes.io/serviceaccount from\n      a pod inside a cluster\n* Tests are lacking\n* See https://hub.docker.com/r/yipeeio/kubeiql/ for a docker image\n\n\n## Getting Started\nTo experiment with the API:\n\n1. Download the code\n2. Type \u003ccode\u003esh gobuild.sh\u003c/code\u003e\n3. Start a proxy for the kubernetes API on port 8080 (e.g., kubectl\n   proxy --port=8080)\n4. Run ./kubeiql\n\nThe server runs at port 8128. You can use curl to play with it as\nshown in the examples below via the /query endpoint, or point your\nbrowser at 'localhost:8128/' and experiment with the GraphiQL tool\n(much more user-friendly).\n\n## Build an image\nIf you're running on a non-linux machine, use the _elf-build.sh_\nscript to build an image suitable for use in a docker container.  Then\njust build in the usual way:\n```\ndocker build -t your-image-name .\n```\n## Running inside a Kubernetes cluster\nTo run kubeiql inside a cluster, simply apply the _k8sdeploy.yaml_\nfile:\n```\nkubectl apply -f k8sdeploy.yaml\n```\n\n## Examples\n\nThe query:\n\n``` json\n{\n  daemonSetByName(namespace: \"kube-system\", name: \"kube-proxy\") {\n    metadata {name namespace labels {name value}}\n  }\n}\n```\n\n\u003ccode\u003e\ncurl -X POST -H\"Content-Type: application/json\"\nhttp://localhost:8128/query -d\n'{ \"query\": \"{daemonSetByName(namespace: \\\"kube-system\\\", name: \\\"kube-proxy\\\") {    metadata {name namespace labels {name value}} pods {metadata {name}}}}\"}'\n\u003c/code\u003e\n\n\nreturns:\n\n```json\n{\n  \"data\": {\n    \"daemonSetByName\": {\n      \"metadata\": {\n        \"name\": \"kube-proxy\",\n        \"namespace\": \"kube-system\",\n        \"labels\": [\n          {\n            \"name\": \"k8s-app\",\n            \"value\": \"kube-proxy\"\n          }\n        ]\n      },\n      \"pods\": [\n        {\n          \"metadata\": {\n            \"name\": \"kube-proxy-7vhx5\"\n          }\n        }\n      ]\n    }\n  }\n}\n\n```\n\nand the query:\n\n``` json\n{\n  allPods() {\n    owner {kind metadata {name}}\n    rootOwner { kind metadata { name namespace }\n      ... on StatefulSet {\n        metadata { name }\n      }\n      ... on Deployment {\n        replicaSets {\n            metadata { name }\n          pods { metadata { name } } }\n      }\n    }\n  }\n}\n```\n\n\u003ccode\u003e\ncurl -X POST -H\"Content-Type: application/json\"\nhttp://localhost:8128/query -d '{\"query\": \"{allPods() {owner {kind\nmetadata {name}} rootOwner { kind metadata { name namespace } ... on\nStatefulSet { metadata { name } } ... on Deployment { replicaSets {\nmetadata { name } pods { metadata { name } } } } } } }\" }'\n\u003c/code\u003e\n\n\nreturns:\n\n```json\n{\n  \"data\": {\n    \"allPods\": [\n      {\n        \"owner\": {\n          \"kind\": \"ReplicaSet\",\n          \"metadata\": {\n            \"name\": \"backend-549447ccf\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Deployment\",\n          \"metadata\": {\n            \"name\": \"backend\",\n            \"namespace\": \"default\"\n          },\n          \"replicaSets\": [\n            {\n              \"metadata\": {\n                \"name\": \"backend-549447ccf\"\n              },\n              \"pods\": [\n                {\n                  \"metadata\": {\n                    \"name\": \"backend-549447ccf-4zphf\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-joomla-5d4ddc985d-fpddz\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-mariadb-0\"\n                  }\n                }\n                // ...\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"ReplicaSet\",\n          \"metadata\": {\n            \"name\": \"clunky-sabertooth-joomla-5d4ddc985d\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Deployment\",\n          \"metadata\": {\n            \"name\": \"clunky-sabertooth-joomla\",\n            \"namespace\": \"default\"\n          },\n          \"replicaSets\": [\n            {\n              \"metadata\": {\n                \"name\": \"backend-549447ccf\"\n              },\n              \"pods\": [\n                {\n                  \"metadata\": {\n                    \"name\": \"backend-549447ccf-4zphf\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-joomla-5d4ddc985d-fpddz\"\n                  }\n                }\n                //...\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"StatefulSet\",\n          \"metadata\": {\n            \"name\": \"clunky-sabertooth-mariadb\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"StatefulSet\",\n          \"metadata\": {\n            \"name\": \"clunky-sabertooth-mariadb\",\n            \"namespace\": \"default\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"ReplicaSet\",\n          \"metadata\": {\n            \"name\": \"ui-9c6c8d79\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Deployment\",\n          \"metadata\": {\n            \"name\": \"ui\",\n            \"namespace\": \"default\"\n          },\n          \"replicaSets\": [\n            {\n              \"metadata\": {\n                \"name\": \"backend-549447ccf\"\n              },\n              \"pods\": [\n                {\n                  \"metadata\": {\n                    \"name\": \"backend-549447ccf-4zphf\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-joomla-5d4ddc985d-fpddz\"\n                  }\n                }\n                // ...\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"ReplicaSet\",\n          \"metadata\": {\n            \"name\": \"ui-9c6c8d79\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Deployment\",\n          \"metadata\": {\n            \"name\": \"ui\",\n            \"namespace\": \"default\"\n          },\n          \"replicaSets\": [\n            {\n              \"metadata\": {\n                \"name\": \"backend-549447ccf\"\n              },\n              \"pods\": [\n                {\n                  \"metadata\": {\n                    \"name\": \"backend-549447ccf-4zphf\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-joomla-5d4ddc985d-fpddz\"\n                  }\n                }\n                // ...\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"etcd-minikube\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"etcd-minikube\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-addon-manager-minikube\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-addon-manager-minikube\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-apiserver-minikube\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-apiserver-minikube\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-controller-manager-minikube\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-controller-manager-minikube\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"ReplicaSet\",\n          \"metadata\": {\n            \"name\": \"kube-dns-86f4d74b45\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Deployment\",\n          \"metadata\": {\n            \"name\": \"kube-dns\",\n            \"namespace\": \"kube-system\"\n          },\n          \"replicaSets\": [\n            {\n              \"metadata\": {\n                \"name\": \"backend-549447ccf\"\n              },\n              \"pods\": [\n                {\n                  \"metadata\": {\n                    \"name\": \"backend-549447ccf-4zphf\"\n                  }\n                },\n                {\n                  \"metadata\": {\n                    \"name\": \"clunky-sabertooth-joomla-5d4ddc985d-fpddz\"\n                  }\n                }\n                // ...\n              ]\n            }\n          ]\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"DaemonSet\",\n          \"metadata\": {\n            \"name\": \"kube-proxy\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"DaemonSet\",\n          \"metadata\": {\n            \"name\": \"kube-proxy\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      },\n      {\n        \"owner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-scheduler-minikube\"\n          }\n        },\n        \"rootOwner\": {\n          \"kind\": \"Pod\",\n          \"metadata\": {\n            \"name\": \"kube-scheduler-minikube\",\n            \"namespace\": \"kube-system\"\n          }\n        }\n      }\n      // ...\n    ]\n  }\n}\n\n```\n## License\n\nThe work done has been licensed under Apache License 2.0. The license file can be found [here](LICENSE). You can find\nout more about the license at [www.apache.org/licenses/LICENSE-2.0](//www.apache.org/licenses/LICENSE-2.0).\n\n## Questions?\n\nFeel free to [contact us](mailto:support@yipee.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCATechnologiesTest%2Fkubeiql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCATechnologiesTest%2Fkubeiql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCATechnologiesTest%2Fkubeiql/lists"}