ktools
A.k.a. kt or 'kate'.
It's a CLI program that helps interacting with Kubernetes clusters from a developer perspective.
Originally it was a group of separated Bash scripts, but due to the increasing complexity and Shell incompatibility issues, I've decided to rewrite everything as a single Ruby program.
It features:
- Support for Staging and Production environments.
- Management of different cluster credential connections.
- Management of K8s application Docker image registry secrets.
- Management of K8s application
configMaps. - Management of K8s application NGINX
ingresses. - Removing (pruning) an entire application.
- Application force deployment.
- Application Bash login.
- Application logs reading/live-streaming.
- Impress your dog.
- Impress your cat.
See our CHANGELOG.
Requirements
Before going any forward, you need to have:
kubectlinstalled- Ruby. (I'm using
v2.5.1. But I guess any>= 2.0will work*)
* Only tested with Ruby v2.5.1. I recommend using asdf to install it.
Important Note A: You will also need to place your .yaml DO K8s credential files into your ~/.kube path. (Create this directory if don't exist). If you don't have them, ask your cluster admin for one. It shall be one for Staging and other for Production (It also contains your token for accessing the K8s dashboard).
Important Note B: A updated secrets repository is also needed. If you don't have one, check the folder secrets-sample in this repository, it's a sample on how to setup one for your company. If you are a Foxbox developer, ask the cluster admin how to get access to it. If you already have access, just clone it to your machine.
Important Note C: In this document, whenever you see the word appslug, it means you must replace it by the application slug you are operating in. Like my-awesome-project. And whenever you see the word environment, you must replace by the cluster environment you are operating in. Like staging or production.
Installation
$ gem install k-toolsThis will add the $ kt (kate) executable to your system.
Usage
$ kt Setup/Init
After installing, start the init by:
$ ktIt will ask for your secrets repository path.
Enter it and then you're done.
Note: If you want to re-run the init and reconfigure your secrets repository path, just run:
$ kt setup
swap tool
This command enables you to list and to connect to different K8s clusters. In our case we will use it for switching between Staging and Production connections, but you can use it to manage how many credentials you want.
You can use it from any path in your terminal.
Listing Kubernetes clusters/connections
$ kt swap
- foxbox-production-admin
- fs-orc
- st-orc
-> foxbox-staging-devops
- foxbox-staging-admin
- orc-admin
- foxbox-production-devopsCheck the -> pointing to the current connected cluster account. In my case I have a bunch of accounts/clusters. To edit their names just change the name of the .yaml files at your ~/.kube/ path.
You may have one foxbox-staging.yaml and other foxbox-production.yaml file, so in this case, $ kt swap will show:
$ kt swap
- foxbox-production
- foxbox-stagingIt's pointing to none. That means you haven't connected yet. To do so, simply:
$ kt swap foxbox-staging
Swapped to foxbox-staging.And now your kubectl is connected to the Staging cluster/account.
You can check with:
$ kt swap
- foxbox-production
-> foxbox-stagingIn terminals with such support, the connected cluster/account will be displayed with a yellowish color.
Important Note: That's what dictates on what environment your commands will take place. Be aware! Kate will ask you confirmation for some commands, but your attention is crucial, especially if you have access to Production environments.
spy tool
That's the tool which interacts with your secrets repository copy. It will help you managing configMap, ingress, registry secrets and removing entire applications from a cluster.
You can run those commands from anywhere in your system.
Deleting a Docker registry K8s secret
Just:
$ kt spy drop registry appslugCreating a Docker registry K8s secret
Remember that it will use the state described inside the files of your secrets repository copy. Check this section if you are confused. (Foxbox developers only)
Find them at: environment/appslug/registry.json. (Of your secrets repository)
Once you edited the changes, just:
$ kt spy create registry appslug environmentWarning: Note you are not updating, you are creating!
Deleting a K8s application configMap
Just:
$ kt spy drop config appslugUpdating/Creating a K8s application configMap
The same principle of the Docker registry files applies to the configMaps at your secrets repository.
Find them at: environment/appslug/config_map.yml.
And to update/create, just:
$ kt spy apply config appslug environmentDeleting a K8s application ingress
Just:
$ kt spy drop ingress appslugUpdating/Creating a K8s application ingress
Same principle here too.
Find them at: environment/appslug/ingress.yml.
To update/create, just:
$ kt spy apply ingress appslug environmentDeleting a entire K8s application
WARNING: This will destroy everything related to the given app at the current connected cluster.
Just:
$ kt spy drop all appslug
deliver tool
This tool helps with debugging a running application.
deliver commands must be executed inside the application's path.
Important Note: This tool requires your application to have a copy of the kdeliver executable at its root path. You can find it here at this repo too. (Make sure to set permissions to run)
Forcing deployment of a application
$ kt deliver force deployEntering a running application pod's Bash
$ kt deliver get bash appslugDownloading running application logs
$ kt deliver get logs appslugWatching the log-stream of running application
$ kt deliver get logs appslug --tailReporting Bugs
Just open a issue.
If you know how to fix and works at Foxbox, please open a PR.
License
The gem is available as open source under the terms of the MIT License.