Last active
February 12, 2018 16:43
-
-
Save radu-matei/02c994d7c4d6b9774673152562b34944 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kube-toolkit | |
------------- | |
Intro | |
----- | |
- toolkit for creating gRPC-based CLI and web tools for Kubernetes, and it should be used as a starting point in new awesome tools for Kubernetes | |
- CLI tooks: kubectl, helm draft | |
- web tools: Kubernetes UI Dashboard, Monocular | |
(similar architecture with Helm, Draft) | |
- client - local CLI client that deploys the server and the dashboard to your Kubernetes cluster and interacts through gRPC with the server via a Kuberentes tunnels to localhost | |
- server - gRPC server that is deployed on your Kubernetes cluster and responds to requests coming from the clients | |
- dashboard - web application that communicates with the server through a gRPC-gateway | |
- uses Kubernetes API to create authenticated tunnels back to the cluster, using gRPC as the underlying communication protocol | |
Get started | |
----------- | |
- (make or) download client binary it has no local dependencies | |
bin/ktk init --server-image radumatei/kube-toolkit:latest --dashboard-image radumatei/kube-toolkit-dashboard:v0.4.3 | |
(real life: <you-tool> init - versions for testing, faster iteration) | |
- this creates a deployment in your cluster with the server and dashboard | |
bin/ktk version | |
bin/ktk stream | |
bin/ktk proxy | |
Extending | |
--------- | |
- just a starting point, needs to be extended with your functionality | |
service GRPC { | |
rpc GetVersion(google.protobuf.Empty) returns (Version){ | |
option (google.api.http) = { | |
get: "/api/version" | |
}; | |
} | |
rpc ServerStream(google.protobuf.Empty) returns(stream Message){} | |
} | |
- make rpc | |
- protoc | |
- swagger-codegen-cli | |
- make client | |
- make server | |
Work in progress | |
---------------- | |
- integrate with Draft for fast iteration | |
- Helm pack? | |
- state management with etcd (WIP) (or config maps?) | |
- RBAC | |
- SSL | |
- feedback, ideas :D |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment