# Kubesurveyor
Good enough Kubernetes namespace visualization tool.
No provisioning to a cluster required, only Kubernetes API is scrapped.
<img src='https://github.com/viralpoetry/kubesurveyor/raw/main/kubesurveyor.jpg'/>
## Installation
```
sudo apt-get install graphviz
pip install kubesurveyor
```
## Usage
Export path to a custom certification authority, if you use one for your Kubernetes cluster API
```
export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
```
Alternatively, ignore K8S API certificate errors using `--insecure` or `-k`
```
kubesurveyor <namespace> --insecure
```
Show `<namespace>` namespace as a `dot` language graph, using currently active K8S config context
```
kubesurveyor <namespace>
```
Specify context to be used, if there are multiple in the K8S config file
```
kubesurveyor <namespace> --context <context>
```
Dump crawled namespace data to a `YAML` format for later processing
```
kubesurveyor <namespace> --context <context> --save > namespace.yaml
```
Load from `YAML` file, show as `dot` language graph
```
cat namespace.yaml | kubesurveyor <namespace> --load
```
Load from `YAML` file and render as `png` visualization to a current working directory
```
cat namespace.yaml | kubesurveyor <namespace> --load --out png
```
If you want to generate architecture image from `dot` definition by hand, use `dot` directly
```
dot -Tpng k8s.dot > k8s.png
```
Limitations:
- unconnected pods, services are not shown
- could have problems with deployments created by Tiller
- number of replicas is not tracked
Raw data
{
"_id": null,
"home_page": "https://github.com/viralpoetry/kubesurveyor",
"name": "kubesurveyor",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "kubernetes, graphviz, visualisation",
"author": "Peter Gasper",
"author_email": "peter@gasper.cc",
"download_url": "https://files.pythonhosted.org/packages/9f/ab/3eee69e562eea305ad1c69d55e6700f55bdaf3765d842724f83648be21fc/kubesurveyor-2.0.0.tar.gz",
"platform": null,
"description": "# Kubesurveyor \n\nGood enough Kubernetes namespace visualization tool. \nNo provisioning to a cluster required, only Kubernetes API is scrapped. \n\n<img src='https://github.com/viralpoetry/kubesurveyor/raw/main/kubesurveyor.jpg'/>\n\n## Installation \n```\nsudo apt-get install graphviz\npip install kubesurveyor\n```\n\n## Usage\n\nExport path to a custom certification authority, if you use one for your Kubernetes cluster API\n```\nexport REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt\n```\n\nAlternatively, ignore K8S API certificate errors using `--insecure` or `-k`\n```\nkubesurveyor <namespace> --insecure\n```\n\nShow `<namespace>` namespace as a `dot` language graph, using currently active K8S config context \n```\nkubesurveyor <namespace>\n```\n\nSpecify context to be used, if there are multiple in the K8S config file \n```\nkubesurveyor <namespace> --context <context>\n```\n\nDump crawled namespace data to a `YAML` format for later processing\n```\nkubesurveyor <namespace> --context <context> --save > namespace.yaml\n```\n\nLoad from `YAML` file, show as `dot` language graph\n```\ncat namespace.yaml | kubesurveyor <namespace> --load\n```\n\nLoad from `YAML` file and render as `png` visualization to a current working directory\n```\ncat namespace.yaml | kubesurveyor <namespace> --load --out png\n```\n\nIf you want to generate architecture image from `dot` definition by hand, use `dot` directly\n```\ndot -Tpng k8s.dot > k8s.png\n```\n\nLimitations: \n - unconnected pods, services are not shown \n - could have problems with deployments created by Tiller \n - number of replicas is not tracked \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Good enough Kubernetes namespace visualization tool",
"version": "2.0.0",
"project_urls": {
"Homepage": "https://github.com/viralpoetry/kubesurveyor",
"Repository": "https://github.com/viralpoetry/kubesurveyor"
},
"split_keywords": [
"kubernetes",
" graphviz",
" visualisation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4ad6b99303716c0ec0eb4fab41c0ceb2c50c2f50963b3090c2b4ae1508092748",
"md5": "88651a107d1a2b3b6dd8d9e74bed2359",
"sha256": "7a32dec5f1d9904f5d2d0ea6b7582195ca1f392c8c613bb067d3b6194f1b66f7"
},
"downloads": -1,
"filename": "kubesurveyor-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "88651a107d1a2b3b6dd8d9e74bed2359",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 6873,
"upload_time": "2024-09-06T13:09:10",
"upload_time_iso_8601": "2024-09-06T13:09:10.169221Z",
"url": "https://files.pythonhosted.org/packages/4a/d6/b99303716c0ec0eb4fab41c0ceb2c50c2f50963b3090c2b4ae1508092748/kubesurveyor-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9fab3eee69e562eea305ad1c69d55e6700f55bdaf3765d842724f83648be21fc",
"md5": "eaf968089e5b0d045f455bb05cb97515",
"sha256": "cf28003d720343ae2c7f393693198f29e17314811402eadc24c16e6b3317d7c3"
},
"downloads": -1,
"filename": "kubesurveyor-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "eaf968089e5b0d045f455bb05cb97515",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 6001,
"upload_time": "2024-09-06T13:09:11",
"upload_time_iso_8601": "2024-09-06T13:09:11.968038Z",
"url": "https://files.pythonhosted.org/packages/9f/ab/3eee69e562eea305ad1c69d55e6700f55bdaf3765d842724f83648be21fc/kubesurveyor-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-06 13:09:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "viralpoetry",
"github_project": "kubesurveyor",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "kubesurveyor"
}