![Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility](https://cdn.sanity.io/images/cgdhsj6q/production/97774ea8c88cc8f4bed2766c31994ebc38116948-1664x1366.png?w=400&fit=max&auto=format)
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
kg_prometheusstack is a builder for KubraGen that deploys a Prometheus stack in Kubernetes.
The stack consist of Prometheus (required), Grafana, Kube-State-Metrics and Node Exporter.
KubraGen is a Kubernetes YAML generator library that makes it possible to generate configurations using the full power of the Python programming language.
from kg_prometheus import PrometheusConfigFile, PrometheusConfigFileOptions
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_prometheusstack import PrometheusStackBuilder, PrometheusStackOptions
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: prometheusstack
#
pstack_config = PrometheusStackBuilder(kubragen=kg, options=PrometheusStackOptions({
'namespace': OptionRoot('namespaces.mon'),
'basename': 'mypstack',
'config': {
'prometheus_annotation': True,
'prometheus_config': PrometheusConfigFile(options=PrometheusConfigFileOptions({
'scrape': {
'prometheus': {
'enabled': True,
}
},
}))
},
'kubernetes': {
'volumes': {
'prometheus-data': {
'persistentVolumeClaim': {
'claimName': 'prometheusstack-storage-claim'
}
}
},
},
}))
pstack_config.ensure_build_names(pstack_config.BUILD_ACCESSCONTROL, pstack_config.BUILD_CONFIG,
pstack_config.BUILD_SERVICE)
#
# OUTPUTFILE: prometheusstack-config.yaml
#
file = OutputFile_Kubernetes('prometheusstack-config.yaml')
out.append(file)
file.append(pstack_config.build(pstack_config.BUILD_ACCESSCONTROL, pstack_config.BUILD_CONFIG))
shell_script.append(OD_FileTemplate(f'kubectl apply -f ${{FILE_{file.fileid}}}'))
#
# OUTPUTFILE: prometheusstack.yaml
#
file = OutputFile_Kubernetes('prometheusstack.yaml')
out.append(file)
file.append(pstack_config.build(pstack_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-prometheusstack-config.yaml ********
apiVersion: v1
kind: ServiceAccount
metadata:
name: mypstack
namespace: app-monitoring
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: mypstack-prometheus
rules:
- apiGroups: ['']
<...more...>
****** END FILE: 002-prometheusstack-config.yaml ********
****** BEGIN FILE: 003-prometheusstack.yaml ********
kind: Service
apiVersion: v1
metadata:
name: mypstack-prometheus
namespace: app-monitoring
spec:
selector:
app: mypstack-prometheus
ports:
- protocol: TCP
port: 80
targetPort: 9090
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mypstack-prometheus
namespace: app-monitoring
<...more...>
****** END FILE: 003-prometheusstack.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-prometheusstack-config.yaml
kubectl apply -f 003-prometheusstack.yaml
****** END FILE: create_gke.sh ********
Rangel Reale (rangelreale@gmail.com)
FAQs
KubraGen Builder: Prometheus Stack
We found that kg-prometheusstack demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.