ckotzbauer_helm-charts/charts/chekr
Christian Kotzbauer 26213b4863 update to chekr@0.5.1 2021-12-10 11:22:50 +01:00
..
ci fix: use RWO for testing 2021-10-09 10:17:50 +02:00
templates fix: use RWO for testing 2021-10-09 10:17:50 +02:00
.helmignore feat: first version of chekr chart 2021-10-08 19:04:41 +02:00
Chart.yaml update to chekr@0.5.1 2021-12-10 11:22:50 +01:00
README.md update to chekr@0.5.1 2021-12-10 11:22:50 +01:00
values.yaml fix: spaces 2021-10-09 09:31:10 +02:00

README.md

Chekr

A inspection utility for the maintenance of Kubernetes clusters.

Learn more: https://github.com/ckotzbauer/chekr

TL;DR;

$ helm install ckotzbauer/chekr

Prerequisites

  • Kubernetes 1.17+ (Helm chart)

Installing the Chart

To install the chart with the release name my-release:

$ helm install --name my-release ckotzbauer/chekr

The command deploys the nginx-pod of this chart on the Kubernetes cluster using the default configuration. The configuration section lists the parameters that can be configured during installation.

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following table lists the configurable parameters of the Chekr chart and their default values.

Parameter Description Default
imagePullSecrets Pull-Secrets to use for each pod []
nameOverride Name-Override ""
fullnameOverride FullName-Override ""
webserver.image.repository container image repository nginxinc/nginx-unprivileged
webserver.image.tag container image tag mainline-alpine
webserver.image.pullPolicy container image pull policy IfNotPresent
webserver.service.type type of the webserver-service ClusterIP
webserver.service.port port of the webserver-service 8080
webserver.ingress.enabled whether to create an Ingress false
webserver.ingress.className name of the IngressClass ""
webserver.ingress.annotations Annotations for the Ingress {}
webserver.ingress.hosts List of host-objects for the Ingress []
webserver.ingress.tls List of TLS-configs for the Ingress []
webserver.resources webserver-pod resource requests & limits See values.yaml
webserver.nodeSelector node labels for webserver-pod assignment {}
webserver.tolerations node tolerations for webserver-pod assignment []
webserver.affinity node affinity for webserver-pod assignment {}
job.image.repository container image repository ghcr.io/ckotzbauer/chekr
job.image.tag container image tag 0.5.1
job.image.pullPolicy container image pull policy IfNotPresent
job.schedule cron-schedule for the job 0 22 * * *
job.commands Array of commands and output-files to process [] See values.yaml
job.config Global config-values for chekr-config-file {} See values.yaml
job.env List of environment-variables [] See values.yaml
job.resources job-pod resource requests & limits See values.yaml
job.nodeSelector node labels for job-pod assignment {}
job.tolerations node tolerations for job-pod assignment []
job.affinity node affinity for job-pod assignment {}
job.serviceAccount.create Should we create a ServiceAccount for the Job true
job.serviceAccount.name Name of the ServiceAccount to use null
podSecurityContext securityContext to add to each pod See values.yaml
securityContext securityContext to add to each container See values.yaml
podAnnotations annotations to add to each pod {}
persistence.storageClass storage class of the PVC (RWX is required) -
persistence.size size of the PVC (RWX is required) 256Mi

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install --name my-release \
    --set key_1=value_1,key_2=value_2 \
    ckotzbauer/chekr

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

# example for staging
$ helm install --name my-release -f values.yaml ckotzbauer/chekr

Example

webserver:
  ingress:
    enabled: true
    className: "nginx"
    hosts:
      - host: chekr.myorg.com
        paths:
          - path: /
            pathType: ImplementationSpecific
    tls:
      - secretName: ""
        hosts:
          - chekr.myorg.com

job:
  commands:
    - command: "deprecation list -o html"
      outputFile: "deprecation.html"
    - command: "resources -n flux-system --limits-threshold 20 -o json"
      outputFile: "flux-system-resources.json"
    - command: "resources -n infrastructure -o html"
      outputFile: "infrastructure-resources.html"

  config:
    prometheus-url: monitoring/k8s-prometheus:9090

This will deploy the nginx-webserver pod under the Domain "chekr.myorg.com". The CronJob will be executed each night (default schedule) and will execute the following commands on each run:

chekr deprecation list -o html --output-file deprecation.html
chekr resources -n flux-system --limits-threshold 20 -o json --output-file flux-system-resources.json
chekr resources -n infrastructure -o html --output-file infrastructure-resources.html

The output-files are served from the webserver:

https://chekr.myorg.com/deprecation.html
https://chekr.myorg.com/flux-system-resources.json
https://chekr.myorg.com/infrastructure-resources.html

Chekr will use the in-cluster Service k8s-prometheus in the monitoring namespace at port 9090 to query prometheus for the resources subcommand.

Tip: You can use the default values.yaml