KubraGen Builder: Kube Resource Report
Project description
KubraGen Builder: Kube Resource Report
kg_kuberesourcereport is a builder for KubraGen that deploys a Kube Resource Report service in Kubernetes.
KubraGen is a Kubernetes YAML generator library that makes it possible to generate configurations using the full power of the Python programming language.
- Website: https://github.com/RangelReale/kg_kuberesourcereport
- Repository: https://github.com/RangelReale/kg_kuberesourcereport.git
- Documentation: https://kg_kuberesourcereport.readthedocs.org/
- PyPI: https://pypi.python.org/pypi/kg_kuberesourcereport
Example
from kubragen import KubraGen
from kubragen.consts import PROVIDER_GOOGLE, PROVIDERSVC_GOOGLE_GKE
from kubragen.object import Object
from kubragen.option import OptionRoot
from kubragen.options import Options
from kubragen.output import OutputProject, OD_FileTemplate, OutputFile_ShellScript, OutputFile_Kubernetes, \
OutputDriver_Print
from kubragen.provider import Provider
from kg_kuberesourcereport import KubeResourceReportBuilder, KubeResourceReportOptions, \
KubeResourceReportOptions_Default_Resources_Deployment, KubeResourceReportOptions_Default_Resources_DeploymentNGINX
kg = KubraGen(provider=Provider(PROVIDER_GOOGLE, PROVIDERSVC_GOOGLE_GKE), options=Options({
'namespaces': {
'mon': 'app-monitoring',
},
}))
out = OutputProject(kg)
shell_script = OutputFile_ShellScript('create_gke.sh')
out.append(shell_script)
shell_script.append('set -e')
#
# OUTPUTFILE: app-namespace.yaml
#
file = OutputFile_Kubernetes('app-namespace.yaml')
file.append([
Object({
'apiVersion': 'v1',
'kind': 'Namespace',
'metadata': {
'name': 'app-monitoring',
},
}, name='ns-monitoring', source='app', instance='app')
])
out.append(file)
shell_script.append(OD_FileTemplate(f'kubectl apply -f ${{FILE_{file.fileid}}}'))
shell_script.append(f'kubectl config set-context --current --namespace=app-monitoring')
#
# SETUP: kube-resource-report
#
ksm_config = KubeResourceReportBuilder(kubragen=kg, options=KubeResourceReportOptions({
'namespace': OptionRoot('namespaces.mon'),
'basename': 'myksm',
'config': {
},
'kubernetes': {
'resources': {
'deployment': KubeResourceReportOptions_Default_Resources_Deployment(),
'deployment-nginx': KubeResourceReportOptions_Default_Resources_DeploymentNGINX(),
},
}
}))
ksm_config.ensure_build_names(ksm_config.BUILD_ACCESSCONTROL, ksm_config.BUILD_SERVICE)
#
# OUTPUTFILE: KubeResourceReport-config.yaml
#
file = OutputFile_Kubernetes('kuberesourcereport-config.yaml')
out.append(file)
file.append(ksm_config.build(ksm_config.BUILD_ACCESSCONTROL))
shell_script.append(OD_FileTemplate(f'kubectl apply -f ${{FILE_{file.fileid}}}'))
#
# OUTPUTFILE: KubeResourceReport.yaml
#
file = OutputFile_Kubernetes('KubeResourceReport.yaml')
out.append(file)
file.append(ksm_config.build(ksm_config.BUILD_SERVICE))
shell_script.append(OD_FileTemplate(f'kubectl apply -f ${{FILE_{file.fileid}}}'))
#
# Write files
#
out.output(OutputDriver_Print())
# out.output(OutputDriver_Directory('/tmp/build-gke'))
Output:
****** BEGIN FILE: 001-app-namespace.yaml ********
apiVersion: v1
kind: Namespace
metadata:
name: app-monitoring
****** END FILE: 001-app-namespace.yaml ********
****** BEGIN FILE: 002-kuberesourcereport-config.yaml ********
apiVersion: v1
kind: ServiceAccount
metadata:
name: myksm
namespace: app-monitoring
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: myksm
rules:
- apiGroups: ['']
resources: [nodes, pods, namespaces, services]
verbs: [get, list]
<...more...>
****** END FILE: 002-kuberesourcereport-config.yaml ********
****** BEGIN FILE: 003-KubeResourceReport.yaml ********
apiVersion: apps/v1
kind: Deployment
metadata:
name: myksm
namespace: app-monitoring
labels:
app: myksm
spec:
replicas: 1
selector:
matchLabels:
app: myksm
template:
metadata:
labels:
app: myksm
spec:
serviceAccountName: myksm
containers:
- name: kube-resource-report
image: hjacobs/kube-resource-report:20.10.0
args: [--update-interval-minutes=1, --additional-cost-per-cluster=30.0, /output]
<...more...>
****** END FILE: 003-KubeResourceReport.yaml ********
****** BEGIN FILE: create_gke.sh ********
#!/bin/bash
set -e
kubectl apply -f 001-app-namespace.yaml
kubectl config set-context --current --namespace=app-monitoring
kubectl apply -f 002-kuberesourcereport-config.yaml
kubectl apply -f 003-KubeResourceReport.yaml
****** END FILE: create_gke.sh ********
Credits
based on
codeberg.org/hjacobs/kube-resource-report
Author
Rangel Reale (rangelspam@gmail.com)
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
Close
Hashes for kg_kuberesourcereport-0.7.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a0ab5d3f345986ff45b6c9f38a066ff232aad3fc6dccf8d41958cdeede7ea46 |
|
MD5 | ff86943a18a808600919ea516cddbf5c |
|
BLAKE2b-256 | 3458f62d601ddb671e993797744c5b9d8301796cf3df5c9c570f848b55f2071f |
Close
Hashes for kg_kuberesourcereport-0.7.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3a7181b78dba121b9bc99c87f79ff1aea9c346488c47cb23ad0bb48de4566a5 |
|
MD5 | 949c8635f0a2d83d83c905e03f637399 |
|
BLAKE2b-256 | 9dfd8d89d9f50d121470c08c249688ebc452b54d2ac2adbf78c86683ba3dc68d |