在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):qlkube/qlkube开源软件地址(OpenSource Url):https://github.com/qlkube/qlkube开源编程语言(OpenSource Language):JavaScript 97.7%开源软件介绍(OpenSource Introduction):qlkubeqlkube is a graphql api for kubernetes, allowing you to interact with all the features of the Kubernetes api using graphql. qlkube's graphql schema is dynamically built from the openapi/swagger api specification exposed by the Kubernetes cluster it is running in - qlkube should therefore:
In addition to the directly mapped operations from the openapi spec, qlkube provides an 'all' query type that gives a more natural 'kubectl' influenced interface into the api. qlkube ships with the Apollo GraphQL Playground, so you can play around with the api straight away. Example QueriesThe 'all' resource is the easiest query type to use for querying kubernetes resources of all types (services, pods, deployments etc). qlkube also exposes all the low-level resources autogenerated from the Kubernetes openapi/swagger api - these types are named exactly as the 'operationId' in the openapi spec, they can therefore seem quite 'low-level' and sometimes unintuitive in comparison. Get all pods in all namespacesThis query returns the names and namespaces of all the pods in the cluster.
(here we use the more friendly 'all' type - you can perform a similar query using query getAllPodsInAllNamespaces {
all {
pods {
items {
metadata {
name
namespace
}
}
}
}
} Output: {
"data": {
"all": {
"pods": {
"items": [
{
"metadata": {
"name": "alpha-7c766f4fc7-2bh8m",
"namespace": "default"
}
},
{
"metadata": {
"name": "alpha-7c766f4fc7-hx8ml",
"namespace": "default"
}
},
{
"metadata": {
"name": "alpha-7c766f4fc7-ztpph",
"namespace": "default"
}
},
{
"metadata": {
"name": "beta-v1-597679f796-k5gn4",
"namespace": "default"
}
},
{
"metadata": {
"name": "beta-v1-597679f796-x7hsl",
"namespace": "default"
}
},
{
"metadata": {
"name": "gamma-79bc488b5b-srmxm",
"namespace": "default"
}
},
...etc Get all pods in a specific namespaceThis query returns the names, namespaces, creation times and labels of all the pods in the 'default' namespace
(here we use the more friendly 'all' type - you can perform a similar query using query getAllPodsInDefaultNamespace {
all(namespace: "default") {
pods {
items {
metadata {
name
namespace
creationTimestamp
labels
}
}
}
}
} Output: {
"data": {
"all": {
"pods": {
"items": [
{
"metadata": {
"name": "alpha-7c766f4fc7-2bh8m",
"namespace": "default",
"creationTimestamp": "2019-06-03T15:07:17Z",
"labels": {
"app": "alpha",
"appKubernetesIoManagedBy": "skaffold-v0.29.0",
"appId": "github.expedia.biz_hotels_alpha",
"podTemplateHash": "7c766f4fc7",
"skaffoldDevBuilder": "local",
"skaffoldDevCleanup": "true",
"skaffoldDevDeployer": "kubectl",
"skaffoldDevDockerApiVersion": "1.39",
"skaffoldDevTagPolicy": "git-commit",
"skaffoldDevTail": "true",
"version": "v1"
}
}
},
...etc Get all kubernetes resources with a specific labelThis query gets the names of all kubernetes resources (services, deployments, pods etc) that are labelled with label 'app=alpha'
(roughly equivalent to query allResourcesOfApp {
all(labelSelector:"app=alpha") {
services {
items {
metadata {
name
}
}
}
deployments {
items {
metadata {
name
}
}
}
pods {
items {
metadata {
name
}
}
}
daemonSets {
items {
metadata {
name
}
}
}
replicaSets {
items {
metadata {
name
}
}
}
statefulSets {
items {
metadata {
name
}
}
}
jobs {
items {
metadata {
name
}
}
}
cronJobs {
items {
metadata {
name
}
}
}
namespaces {
items {
metadata {
name
}
}
}
}
} Output: {
"data": {
"all": {
"services": {
"items": [
{
"metadata": {
"name": "alpha"
}
}
]
},
"deployments": {
"items": [
{
"metadata": {
"name": "alpha"
}
}
]
},
"pods": {
"items": [
{
"metadata": {
"name": "alpha-7c766f4fc7-2bh8m"
}
},
...etc Example MutationsCreate namespaceThis mutation creates a new 'bar' namespace. The input json is the escaped version of the following: {
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"name": "bar"
}
} We output the creation timestamp for the new namesapce. mutation createNamespace {
createCoreV1Namespace(input: "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"name\":\"bar\"}}") {
metadata {
creationTimestamp
}
}
} Output: {
"data": {
"createCoreV1Namespace": {
"metadata": {
"creationTimestamp": "2019-06-03T22:37:02Z"
}
}
}
} RunningQuickstartqlkube is designed to be run inside the kubernetes cluster. The included quickstart.yaml manifest should get you started:
Navigate to http://localhost:8080/ in your browser - this will launch the GraphQL Playground which you can use to interact with the kubernetes api. SkaffoldThe included skaffold.yaml can be used to build and deploy from source
(note that in production you may want to restrict the permissive RBAC settings in
Navigate to http://localhost:8080/ in your browser - this will launch the GraphQL Playground which you can use to interact with the kubernetes api. Out of cluster (dev mode)For playing around locally you can run qlkube from source outside of the cluster. To do this you must first proxy the Kubernetes api server to http://localhost:8001:
You can then run qlkube locally, which will connect to the proxied Kubernetes api:
Navigate to http://localhost:8080/ in your browser - this will launch the GraphQL Playground which you can use to interact with the kubernetes api. SchemaThe generated graphql schema is served at /schema |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论