HaroldMua / kubernetes-client-go

Golang client for Kubernetes-based systems using JSON styles

Home Page:https://www.yuque.com/kubesys/kubernetes-client/overview

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

client-go

We expect to provide a go client:

  • Flexibility. It can support all Kubernetes-based systems with minimized extra development, such as Openshift, istio, etc.
  • Usability. Developers just need to learn to write json/yaml(kubernetes native style) from Kubernetes documentation.
  • Integration. It can work with the other Kubernetes clients, such as official.

Comparison

official cdk8s this project
Compatibility for kubernetes-native kinds for crd kinds for both
Support customized Kubernetes resources a lot of development a lot of development zero-deployment
Works with the other SDKs complex complex simple

Architecture

avatar

Installation

git clone --recursive https://github.com/kubesys/client-go

Maven users

Usage

Creating a client

The easiest way to create a client is:

KubernetesClient client = new KubernetesClient(url, token);
client.Init()

Here, the token can be created and get by following commands:

  1. create token
kubectl create -f https://raw.githubusercontent.com/kubesys/client-go/master/account.yaml
  1. get token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-client | awk '{print $1}') | grep "token:" | awk -F":" '{print$2}' | sed 's/ //g'

simple-example

Assume you have a json:

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "name": "busybox",
    "namespace": "default",
    "labels": {
      "test": "test"
    }
  }
}

List resources:

client.ListResources("Pod")

Create a resource:

client.CreateResource(json);

Get a resource:

client.GetResource("Pod", "default", "busybox");

Delete a resource::

client.DeleteResource("Pod", "default", "busybox")

get-all-kinds

fmt.Println(client.GetKinds());

for developer

go mod init client-go
go mod tidy

RoadMap

  • 1.0.x: product ready
    • 1.0.0: using gojson

About

Golang client for Kubernetes-based systems using JSON styles

https://www.yuque.com/kubesys/kubernetes-client/overview

License:Apache License 2.0


Languages

Language:Go 100.0%