Kubernetes development workflow made easy
Project description
kubedev
DevOps command line tool that standardizes workflows for Microservices in Kubernetes for teams: Build, Develop, CI/CD.
It builds on:
kubedev Principles
kubedev
wants to help you quickly and easily build microservices that are independent, but at the same time follow a common pattern in regards to building, documenting and deploying. This makes it easier to add new services, and to onboard new developers.kubedev
aims to be a thin wrapper around the commands it builds on, and just wants to make it easier for teams to call them appropriately.kubedev
always prints the commands that it executes, so that you know what is going on.kubedev
heavily relies on environment variables for service configuration.
Current state of development
kubedev
is in early development. Currently, the following commands are implemented:
- None yet
Synopsis
kubedev
commands are based on the definitions found in kubedev.json
, which include the minimum necessary information that is required to execute common cloud-dev related tasks.
A kubedev.json describes an "App", which in turn can contain "Sub-Apps" that may be deployments, daemonsets or cronjobs.
Schema of kubedev.json:
{
"name": "myservice",
"ci-provider": "gitlab",
"deployments": {
"mydeploy": { # A Sub-App `mydeploy' of type deployment
"used-frameworks": ["python", "pipenv", "npm", "vue"], # used-frameworks are used to e.g. fill in Tiltfile live_update, ignore, etc.
"dev-only": true, # default: false. Specifies whether this service must only be deployed on local development machines
"port": 5000,
"dev-port": 8081, # The port that tilt up forwards
"required-envs": {
"MYDEPLOY_FLASK_ENV": {
"documentation": "...",
"encoding": "base64"
}
}
}
},
"daemonsets": {
…
},
"cronjobs": {
"mycronjob": { # A Sub-App mycronjob of type cronjobs
… # Includes necessary definitions for CronJobs
}
}
}
kubedev init [deployment:name, …][cronjob:name, …] [daemonset:name, …]
NOT IMPLEMENTED, YET
Creates:
- Directories for each deployment, daemonset or cronjob
- Empty Dockerfiles in these directories
- A template kubedev.json
- A README.md template
kubedev generate [--overwrite]
NOT IMPLEMENTED, YET
Creates a helm-chart (with Deployment/DaemonSet/CronJob and optionally Services), Tiltfile and .gitlab-ci.yml from the definitions in ./kubedev.json. If ./kubedev.json does not exist, instructions are printed (referencing the "kubedev init" command).
kubedev generate helm-chart <template>
NOT IMPLEMENTED, YET
Creates a helm-chart for this service, according to kubedev.json, consisting of:
- A Chart.yaml
- A deployment, daemonset or a cronjob, depending on "type".
- For deployments and daemonsets: Adds a Service (type ClusterIP).
kubedev generate Tiltfile <template>
NOT IMPLEMENTED, YET
Creates a Tiltfile with some sensible defaults.
kubedev generate gitlab-ci
NOT IMPLEMENTED, YET
Creates a .gitlab-ci.yml file containing the build-push
and deploy
states:
- build-push: Runs
kubedev
build and thenkubedev push
- deploy: Runs
kubedev deploy
It uses the latest stable dev-baseimage.
kubedev check
NOT IMPLEMENTED, YET
Reads kubedev.json and checks whether all environment variables from the configuration is set in the current environment. It prints missing variables, including it's documentation.
For used-frameworks "pipenv", it runs bandit
.
For used-frameworks "npm", it runs npm audit
.
kubedev print env-doc
NOT IMPLEMENTED, YET
Prints out a Markdown table with all environment variables declared in kubedev.json and their documentation.
kubedev up [--clean]
NOT IMPLEMENTED, YET
Checks the current environment and runs tilt up
when the configuration is OK.
For "used-frameworks" "vue", it runs npm run build -- --watch --mode development
in parallel.
The --clean switch runs tilt down
before running tilt up.
kubedev down
NOT IMPLEMENTED, YET
Runs tilt down
.
kubedev test-ci <job>
NOT IMPLEMENTED, YET
Creates a temporary branch, commits all local changes and uncommited files to this branch, then runs gitlab-runner exec shell <job>
and then restores the previous git state.
kubedev build <sub-app>
NOT IMPLEMENTED, YET
Runs docker build
with all docker build args as defined in kubedev.json and tags it with a temporary, unique development tag.
The docker image name is deducted from the git repository name, thus this command must be run in a git working copy.
Is used inside the CI/CD build jobs.
kubedev push <sub-app>
NOT IMPLEMENTED, YET
When kubedev build
has been run before, it runs docker push
with the last successful build's unique development tag.
The docker image name is deducted from the git repository name, thus this command must be run in a git working copy.
Is used inside the CI/CD build jobs.
kubedev run-local [args…]
NOT IMPLEMENTED, YET
Runs kubedev build
and runs the new docker image with all envs set and ports forwarded, optionally with [args…].
kubedev deploy
NOT IMPLEMENTED, YET
Reads the .kube/conf
from an environment variable, auto-increases the helm-chart/Chart.yaml
's version and then runs helm install
with appropriate arguments and env vars from kubedev.json
.
Is used inside the CI/CD build jobs.
kubedev template
NOT IMPLEMENTED, YET
Basically runs helm template
with appropriate arguments and env vars from kubedev.json
.
Is used inside the Tiltfile.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kubedev-0.5.690168653.tar.gz
.
File metadata
- Download URL: kubedev-0.5.690168653.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d996fafeb1bc1a457e0b6816629cefaf6348f132209f555246b8a7a31a794f0 |
|
MD5 | e922ba30cc3f8ec220fd440fc9556c95 |
|
BLAKE2b-256 | 85838b50bfc69d8f9477a3029ef6e77e2363b6a6dd669bfa96f87beb5513f771 |
File details
Details for the file kubedev-0.5.690168653-py3-none-any.whl
.
File metadata
- Download URL: kubedev-0.5.690168653-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3140fc7ba1c3af542d6553539ae342570e53d5aff97a8bf1aaa2160b98928894 |
|
MD5 | 44d7513adf08d9d1c5702f439ac689fb |
|
BLAKE2b-256 | 2841252d8f2eb9e939ee93c30617ddc4bc554073c7efc15858a7ce94b4e781fa |