dok8s: Output notes for a Kubernetes deployment.
Collect and export information about a Kubernetes deployment (such as components, resources and docker images/tags) in a table format.
Input: Deployment files (collection of YAML definitions).
Output: Pretty-print tabular data.
- Parse the following Kubernetes components:
ConfigMap
,Deployment
,Ingress
,PersistentVolumeClaim
,Secret
,Service
,StatefulSet
. - Collect relevant information:
kind
,metadata name
,data filenames
,(init) containers
,hosts / rules
,storage name / size
,ports
,cpu/memory requests/limits
- Production-ready code.
- Parsed Kubernetes components are included in the official python Kubernetes client
This project is based on a CLI interface.
YAML file: Cluster Autoscaler
Components
Component | Value | Details |
---|---|---|
ClusterRole | cluster-autoscaler | -- |
ClusterRoleBinding | cluster-autoscaler | -- |
Deployment | cluster-autoscaler | cluster-autoscaler |
Role | cluster-autoscaler | -- |
RoleBinding | cluster-autoscaler | -- |
ServiceAccount | cluster-autoscaler | -- |
Resources
Platform/Service | Name | Request | Limit Request | Notes |
---|---|---|---|---|
cluster-autoscaler | cluster-autoscaler | CPU:100m Memory:300Mi | CPU:100m Memory:300Mi | -- |
Docker images
Platform/Service | Name | Image | Version |
---|---|---|---|
cluster-autoscaler | cluster-autoscaler | k8s.gcr.io/cluster-autoscaler | v1.14.7 |
Behaviour of the application can be configured via Environment Variables.
Environment Variable | Description | Type | Default Value |
---|---|---|---|
DOK8S_LOG_LEVEL |
Level of logging - overrides verbose/quiet flag | string | - |
DOK8S_LOG_DIR |
Directory to save logs | string | - |
DOK8S_BIN_DIR |
Directory to save any output (bin) | string | bin |
- Clone repo on your local machine
- Install
conda
orminiconda
- Create your local project environment (based on
conda
,poetry
,pre-commit
):
$ make env
- (Optional) Update existing local project environment:
$ make env-update
On a terminal, run the following (execute on project's root directory):
- Activate project environment:
$ . ./scripts/helpers/environment.sh
- Run the CLI using
poetry
:
$ dok8s
[ Not Available ]
(part of CI/CD)
[ Work in progress... ]
To run the tests, open a terminal and run the following (execute on project's root directory):
- Activate project environment:
$ . ./scripts/helpers/environment.sh
- To run pytest:
$ make test
- To check test coverage:
$ make test-coverage
Increment the version number:
$ poetry version {bump rule}
where valid bump rules are:
- patch
- minor
- major
- prepatch
- preminor
- premajor
- prerelease
Use CHANGELOG.md
to track the evolution of this package.
The [UNRELEASED]
tag at the top of the file should always be there to log the work until a release occurs.
Work should be logged under one of the following subtitles:
- Added
- Changed
- Fixed
- Removed
On a release, a version of the following format should be added to all the current unreleased changes in the file.
## [major.minor.patch] - YYYY-MM-DD
On a terminal, run the following (execute on project's root directory):
- Activate project environment:
$ . ./scripts/helpers/environment.sh
- To build pip package:
$ make build-package
- To publish pip package (requires credentials to PyPi):
$ make publish-package
On a terminal, run the following (execute on project's root directory):
- Activate project environment:
$ . ./scripts/helpers/environment.sh
- To build docker image:
$ make build-docker
For production, a Docker image is used. This image is published publicly on docker hub.
- First pull image from docker hub:
$ docker pull nichelia/dok8s:{version}
- Execute CLI via docker run:
$ docker run --rm -it -v ~/dok8s_bin:/tmp/bin nichelia/dok8s:{version} {command} -d /tmp/bin -o {filename}
This command mounts the application's bin (outcome) to user's root directory under dok8s_bin folder. The Kubernetes YAML files you want to parse, should be included in this directory.
where version is the published application version