diff --git a/.github/config/labeler.yml b/.github/config/labeler.yaml similarity index 97% rename from .github/config/labeler.yml rename to .github/config/labeler.yaml index 9adde9e8..8ab1831c 100644 --- a/.github/config/labeler.yml +++ b/.github/config/labeler.yaml @@ -7,6 +7,9 @@ ci-cd: ansible-semaphore: - changed-files: - any-glob-to-any-file: 'charts/ansible-semaphore/*' +argocd-metrics-server: +- changed-files: + - any-glob-to-any-file: 'charts/argocd-metrics-server/*' baserow: - changed-files: - any-glob-to-any-file: 'charts/baserow/*' diff --git a/.github/workflows/chart-releaser.yaml b/.github/workflows/chart-releaser.yml similarity index 100% rename from .github/workflows/chart-releaser.yaml rename to .github/workflows/chart-releaser.yml diff --git a/.github/workflows/chart-testing.yml b/.github/workflows/chart-testing.yml index 3e05d45f..0b2b5e7f 100644 --- a/.github/workflows/chart-testing.yml +++ b/.github/workflows/chart-testing.yml @@ -43,7 +43,7 @@ jobs: run : helm lint charts/* chart-testing: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: checkout git repository uses: actions/checkout@v4 diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 6b6ff15c..bca5de9a 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -13,4 +13,4 @@ jobs: - uses: actions/labeler@v5 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" - configuration-path: ".github/config/labeler.yml" + configuration-path: ".github/config/labeler.yaml" diff --git a/.github/workflows/prepare.yml b/.github/workflows/prepare.yml index 31c99d93..de34c23c 100644 --- a/.github/workflows/prepare.yml +++ b/.github/workflows/prepare.yml @@ -11,7 +11,7 @@ on: jobs: pre-commit: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 diff --git a/README.md b/README.md index d686d9ac..3bacb22b 100644 --- a/README.md +++ b/README.md @@ -24,32 +24,33 @@ You can then run `helm search repo christianhuth` to see the charts. ## List of available Charts -| Chart name | Image source | Description | -|-------------------------------------------------------------|---------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [baserow](./charts/baserow) | [baserow/backend](https://hub.docker.com/r/baserow/backend), [baserow/web-frontend](https://hub.docker.com/r/baserow/web-frontend) | [Baserow is an open source no-code database and Airtable alternative.](https://baserow.io) | -| [cluster-api-visualizer](./charts/cluster-api-visualizer) | [jont828/cluster-api-visualizer](https://ghcr.io/jont828/cluster-api-visualizer) | [Multicluster resource visualization tool for Cluster API.](https://github.com/Jont828/cluster-api-visualizer) | -| [etcd-defrag](./charts/etcd-defrag) | [bitnami/etcd](https://hub.docker.com/r/bitnami/etcd) | [Runs a defragmentation CronJob for ETCD](https://etcd.io/docs/latest/op-guide/maintenance/#defragmentation) | -| [headwind-mdm](./charts/headwind-mdm) | [headwindmdm/hmdm](https://hub.docker.com/r/headwindmdm/hmdm) | [Headwind MDM is an open source mobile device management software for Android](https://h-mdm.com) | -| [kube-ops-view](./charts/kube-ops-view) | [hjacobs/kube-ops-view](https://hub.docker.com/r/hjacobs/kube-ops-view) | [Kubernetes Operational View is a read-only system dashboard for multiple K8s clusters](https://codeberg.org/hjacobs/kube-ops-view) | -| [kubedoom](./charts/kubedoom) | [storax/kubedoom](https://ghcr.io/storax/kubedoom) | [Kill pods inside your Kubernetes cluster by shooting them in Doom!](https://github.com/storax/kubedoom) | -| [kubenav](./charts/kubenav) | none | [Bootstraps RBAC rules for kubenav](https://github.com/kubenav/kubenav) | -| [kutt](./charts/kutt) | [kutt/kutt](https://hub.docker.com/r/kutt/kutt) | [Kutt is a free modern URL shortener](https://kutt.it) | -| [maildev](./charts/maildev) | [maildev/maildev](https://hub.docker.com/r/maildev/maildev) | [SMTP server & web interface for viewing and testing emails during development.](https://maildev.github.io/maildev/) | -| [netcupscp-exporter](./charts/netcupscp-exporter) | [mrueg/netcupscp-exporter](https://ghcr.io/mrueg/netcupscp-exporter) | [Prometheus Exporter for Netcup Server Control Panel (SCP)](https://github.com/mrueg/netcupscp-exporter) | -| [node-access](./charts/node-access) | [busybox](https://hub.docker.com/_/busybox) | Deploy workload to gain direct access to the host of the Kubernetes cluster | -| [passbolt-ha](./charts/passbolt-ha) | [see Chart.yaml](./charts/passbolt-ha/Chart.yaml) | Passbolt with MySQL and ProxySQL for HA | -| [polr](./charts/polr) | [ajanvier/polr](https://hub.docker.com/r/ajanvier/polr) | [Polr is a quick, modern, and open-source link shortener](https://polrproject.org) | -| [popeye](./charts/popeye) | [derailed/popeye](https://hub.docker.com/r/derailed/popeye) | [A Kubernetes Cluster Sanitizer](https://popeyecli.io) | -| [priority-classes](./charts/priority-classes) | none | A Helm chart for creating Priority Classes. Already comes with some bundled classes. | -| [prometheus-pve-exporter](./charts/prometheus-pve-exporter) | [prompve/prometheus-pve-exporter](https://hub.docker.com/r/prompve/prometheus-pve-exporter) | [Prometheus Exporter for Proxmox VE](https://github.com/prometheus-pve/prometheus-pve-exporter) | -| [promlens](./charts/promlens) | [prom/promlens](https://hub.docker.com/r/prom/promlens) | [PromLens is a tool that makes learning and using PromQL easier and more productive](https://promlens.com) | -| [proxysql](./charts/proxysql) | [proxysql/proxysql](https://hub.docker.com/r/proxysql/proxysql) | [ProxySQL is a high performance, high availability, protocol aware proxy for MySQL and forks (like Percona Server and MariaDB)](https://www.proxysql.com) | -| [proxyweb](./charts/proxyweb) | [proxyweb/proxyweb](https://hub.docker.com/r/proxyweb/proxyweb) | [Open Source Web Interface for ProxySQL](https://github.com/edmodo/proxyweb) | -| [shlink-backend](./charts/shlink-backend) | [shlinkio/shlink](https://hub.docker.com/r/shlinkio/shlink) | [A self-hosted and PHP-based URL shortener application with CLI and REST interfaces](https://shlink.io) | -| [shlink-web](./charts/shlink-web) | [shlinkio/shlink-web-client](https://hub.docker.com/r/shlinkio/shlink-web-client) | [A ReactJS-based progressive web application for Shlink.](https://app.shlink.io) | -| [skooner](./charts/skooner) | [skooner-k8s/skooner](https://ghcr.io/skooner-k8s/skooner) | [Simple Kubernetes real-time dashboard and management](https://skooner.io) | -| [sloop](./charts/sloop) | [salesforce/sloop](https://ghcr.io/salesforce/sloop) | [Kubernetes History Visualization](https://github.com/salesforce/sloop) | -| [syncserver](./charts/syncserver) | [mozilla/syncserver](https://hub.docker.com/r/mozilla/syncserver) | [Firefox Sync Server](https://github.com/mozilla-services/syncserver) | -| [tenant-namespace](./charts/tenant-namespace) | none | Bootstraps a Namespace in a Multi-Tenancy setup | -| [typo3](./charts/typo3) | [martinhelmich/typo3](https://hub.docker.com/r/martinhelmich/typo3) | [TYPO3 is a Professional, Flexible Content Management System](https://typo3.org) | -| [umami](./charts/umami) | [umami-software/umami](https://ghcr.io/umami-software/umami) | [Umami is a simple, fast, privacy-focused alternative to Google Analytics.](https://umami.is) | +| Chart name | Image source | Description | +|---------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [argocd-metrics-server](./charts/argocd-metrics-server) | [argoprojlabs/argocd-extension-metrics](https://quay.io/argoprojlabs/argocd-extension-metrics) | [The ArgoCD Metrics Server connects to Prometheus and displays Metrics in the ArgoCD UI.](https://github.com/argoproj-labs/argocd-extension-metrics) | +| [baserow](./charts/baserow) | [baserow/backend](https://hub.docker.com/r/baserow/backend), [baserow/web-frontend](https://hub.docker.com/r/baserow/web-frontend) | [Baserow is an open source no-code database and Airtable alternative.](https://baserow.io) | +| [cluster-api-visualizer](./charts/cluster-api-visualizer) | [jont828/cluster-api-visualizer](https://ghcr.io/jont828/cluster-api-visualizer) | [Multicluster resource visualization tool for Cluster API.](https://github.com/Jont828/cluster-api-visualizer) | +| [etcd-defrag](./charts/etcd-defrag) | [bitnami/etcd](https://hub.docker.com/r/bitnami/etcd) | [Runs a defragmentation CronJob for ETCD](https://etcd.io/docs/latest/op-guide/maintenance/#defragmentation) | +| [headwind-mdm](./charts/headwind-mdm) | [headwindmdm/hmdm](https://hub.docker.com/r/headwindmdm/hmdm) | [Headwind MDM is an open source mobile device management software for Android](https://h-mdm.com) | +| [kube-ops-view](./charts/kube-ops-view) | [hjacobs/kube-ops-view](https://hub.docker.com/r/hjacobs/kube-ops-view) | [Kubernetes Operational View is a read-only system dashboard for multiple K8s clusters](https://codeberg.org/hjacobs/kube-ops-view) | +| [kubedoom](./charts/kubedoom) | [storax/kubedoom](https://ghcr.io/storax/kubedoom) | [Kill pods inside your Kubernetes cluster by shooting them in Doom!](https://github.com/storax/kubedoom) | +| [kubenav](./charts/kubenav) | none | [Bootstraps RBAC rules for kubenav](https://github.com/kubenav/kubenav) | +| [kutt](./charts/kutt) | [kutt/kutt](https://hub.docker.com/r/kutt/kutt) | [Kutt is a free modern URL shortener](https://kutt.it) | +| [maildev](./charts/maildev) | [maildev/maildev](https://hub.docker.com/r/maildev/maildev) | [SMTP server & web interface for viewing and testing emails during development.](https://maildev.github.io/maildev/) | +| [netcupscp-exporter](./charts/netcupscp-exporter) | [mrueg/netcupscp-exporter](https://ghcr.io/mrueg/netcupscp-exporter) | [Prometheus Exporter for Netcup Server Control Panel (SCP)](https://github.com/mrueg/netcupscp-exporter) | +| [node-access](./charts/node-access) | [busybox](https://hub.docker.com/_/busybox) | Deploy workload to gain direct access to the host of the Kubernetes cluster | +| [passbolt-ha](./charts/passbolt-ha) | [see Chart.yaml](./charts/passbolt-ha/Chart.yaml) | Passbolt with MySQL and ProxySQL for HA | +| [polr](./charts/polr) | [ajanvier/polr](https://hub.docker.com/r/ajanvier/polr) | [Polr is a quick, modern, and open-source link shortener](https://polrproject.org) | +| [popeye](./charts/popeye) | [derailed/popeye](https://hub.docker.com/r/derailed/popeye) | [A Kubernetes Cluster Sanitizer](https://popeyecli.io) | +| [priority-classes](./charts/priority-classes) | none | A Helm chart for creating Priority Classes. Already comes with some bundled classes. | +| [prometheus-pve-exporter](./charts/prometheus-pve-exporter) | [prompve/prometheus-pve-exporter](https://hub.docker.com/r/prompve/prometheus-pve-exporter) | [Prometheus Exporter for Proxmox VE](https://github.com/prometheus-pve/prometheus-pve-exporter) | +| [promlens](./charts/promlens) | [prom/promlens](https://hub.docker.com/r/prom/promlens) | [PromLens is a tool that makes learning and using PromQL easier and more productive](https://promlens.com) | +| [proxysql](./charts/proxysql) | [proxysql/proxysql](https://hub.docker.com/r/proxysql/proxysql) | [ProxySQL is a high performance, high availability, protocol aware proxy for MySQL and forks (like Percona Server and MariaDB)](https://www.proxysql.com) | +| [proxyweb](./charts/proxyweb) | [proxyweb/proxyweb](https://hub.docker.com/r/proxyweb/proxyweb) | [Open Source Web Interface for ProxySQL](https://github.com/edmodo/proxyweb) | +| [shlink-backend](./charts/shlink-backend) | [shlinkio/shlink](https://hub.docker.com/r/shlinkio/shlink) | [A self-hosted and PHP-based URL shortener application with CLI and REST interfaces](https://shlink.io) | +| [shlink-web](./charts/shlink-web) | [shlinkio/shlink-web-client](https://hub.docker.com/r/shlinkio/shlink-web-client) | [A ReactJS-based progressive web application for Shlink.](https://app.shlink.io) | +| [skooner](./charts/skooner) | [skooner-k8s/skooner](https://ghcr.io/skooner-k8s/skooner) | [Simple Kubernetes real-time dashboard and management](https://skooner.io) | +| [sloop](./charts/sloop) | [salesforce/sloop](https://ghcr.io/salesforce/sloop) | [Kubernetes History Visualization](https://github.com/salesforce/sloop) | +| [syncserver](./charts/syncserver) | [mozilla/syncserver](https://hub.docker.com/r/mozilla/syncserver) | [Firefox Sync Server](https://github.com/mozilla-services/syncserver) | +| [tenant-namespace](./charts/tenant-namespace) | none | Bootstraps a Namespace in a Multi-Tenancy setup | +| [typo3](./charts/typo3) | [martinhelmich/typo3](https://hub.docker.com/r/martinhelmich/typo3) | [TYPO3 is a Professional, Flexible Content Management System](https://typo3.org) | +| [umami](./charts/umami) | [umami-software/umami](https://ghcr.io/umami-software/umami) | [Umami is a simple, fast, privacy-focused alternative to Google Analytics.](https://umami.is) | diff --git a/charts/argocd-metrics-server/.helmignore b/charts/argocd-metrics-server/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/argocd-metrics-server/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/argocd-metrics-server/Chart.yaml b/charts/argocd-metrics-server/Chart.yaml new file mode 100644 index 00000000..6b01b8bd --- /dev/null +++ b/charts/argocd-metrics-server/Chart.yaml @@ -0,0 +1,20 @@ +apiVersion: v2 +name: argocd-metrics-server +description: A Helm chart for installing the Argo CD Metrics Server, which connects to Prometheus and can be used to display Metrics in the Argo CD UI +type: application +version: 1.0.0 +appVersion: "v1.0.3" +home: https://github.com/christianhuth/helm-charts +icon: https://icon.icepanel.io/Technology/svg/Argo-CD.svg +maintainers: + - name: christianhuth + email: christian@knell.it +sources: + - https://github.com/argoproj-labs/argocd-extension-metrics +annotations: + artifacthub.io/changes: | + - kind: added + description: Initial Commit + artifacthub.io/signKey: | + fingerprint: EE24F8BB6D099E78FD704F83B5ECDBCDDD485D0E + url: https://charts.christianhuth.de/public.key diff --git a/charts/argocd-metrics-server/README.md b/charts/argocd-metrics-server/README.md new file mode 100644 index 00000000..4a7d1735 --- /dev/null +++ b/charts/argocd-metrics-server/README.md @@ -0,0 +1,130 @@ +# argocd-metrics-server + +A Helm chart for installing the Argo CD Metrics Server, which connects to Prometheus and can be used to display Metrics in the Argo CD UI + +## TL;DR; + +```console +helm repo add christianhuth https://charts.christianhuth.de +helm repo update +helm install my-release christianhuth/argocd-metrics-server +``` + +## Introduction + +This chart bootstraps the [ArgoCD Metrics Server](https://github.com/argoproj-labs/argocd-extension-metrics) on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.19+ +- Argo CD version 2.6+ +- Prometheus + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm repo add christianhuth https://charts.christianhuth.de +helm repo update +helm install my-release christianhuth/argocd-metrics-server +``` + +These commands deploy the ArgoCD Metrics Server on the Kubernetes cluster in the default configuration. The [Values](#values) section lists the values that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall the `my-release` deployment: + +```console +helm uninstall my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Values + +| Key | Type | Default | Description | +| -------------------------------------- | ------ | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| affinity | object | `{}` | Affinity settings for pod assignment | +| extraEnv | list | `[]` | additional environment variables to be added to the pods | +| fullnameOverride | string | `""` | String to fully override `"argocd-extension-metrics.fullname"` | +| image.pullPolicy | string | `"Always"` | image pull policy | +| image.registry | string | `"quay.io"` | image registory | +| image.repository | string | `"argoprojlabs/argocd-extension-metrics"` | image repository | +| image.tag | string | `"v1.0.3"` | Overrides the image tag | +| imagePullSecrets | list | `[]` | If defined, uses a Secret to pull an image from a private Docker registry or repository. | +| nameOverride | string | `""` | Provide a name in place of `argocd-extension-metrics` | +| networkPolicy.additionalAnnotations | object | `{}` | Annotations to be added to the NetworkPolicies | +| networkPolicy.additionalLabels | object | `{}` | Labels to be added to the NetworkPolicies | +| networkPolicy.argocd.enabled | bool | `true` | - allow incoming traffic from Argo CD | +| networkPolicy.argocd.namespaceSelector | object | `{}` | The labels of the namespace where Argo CD is running | +| networkPolicy.argocd.podSelector | object | `{}` | The labels of the Argo CD Pods | +| networkPolicy.dns.enabled | bool | `true` | allow outgoing traffic to the Kubernetes DNS | +| networkPolicy.dns.namespaceSelector | object | `{"kubernetes.io/metadata.name":"kube-system"}` | The labels of the namespace where the Kubernetes DNS is running | +| networkPolicy.dns.podSelector | object | `{"k8s-app":"kube-dns"}` | The labels of the Kubernetes DNS Pods | +| networkPolicy.enabled | bool | `false` | - create a NetworkPolicy resource to limit the allowed traffic | +| networkPolicy.prometheus.enabled | bool | `true` | - allow outgoing traffic to Prometheus | +| networkPolicy.prometheus.podSelector | object | `{"app.kubernetes.io/name":"prometheus"}` | The labels of the Prometheus Pods | +| nodeSelector | object | `{}` | Node labels for pod assignment | +| podSecurityContext | object | `{}` | pod-level security context | +| prometheus.namespace | string | `"monitoring"` | The namespace where Prometheus is running | +| prometheus.port | int | `9090` | The port on which the Prometheus service is listening for traffic | +| prometheus.service | string | `"prometheus-operated"` | The name of the Prometheus service | +| replicaCount | int | `1` | Number of replicas | +| resources | object | `{"requests":{"cpu":"100m","memory":"100Mi"}}` | Resource limits and requests for the controller pods. | +| revisionHistoryLimit | int | `0` | The number of old ReplicaSets to retain | +| securityContext | object | `{}` | container-level security context | +| service.port | int | `9003` | Kubernetes port where service is exposed | +| service.type | string | `"ClusterIP"` | Kubernetes service type | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| tolerations | list | `[]` | Toleration labels for pod assignment | + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```console +helm install my-release -f values.yaml christianhuth/argocd-metrics-server +``` + +# Configuring Argo CD + +After a successful installation of the Argo CD Metrics Server you need to configure Argo CD to display Metrics in the UI. + +Assuming you are using the official Argo CD Helm Chart, this can be achieved with the following values: + +```yaml +configs: + # this part configures the UI extension to use the Argo CD Metrics Server + # make sure to adjust the URL to your installation + cm: + extension.config: |- + extensions: + - name: metrics + backend: + services: + - url: http://argocd-metrics-server.argo.svc:9003 + # this part enables the proxy extension feature of Argo CD + params: + server.enable.proxy.extension: true + # this part authorizes users to use the Metrics extension + rbac: + policy.csv: | + p, role:readonly, extensions, invoke, metrics, allow +server: + # this part downloads the UI extension and integrates it into the Argo CD UI + extensions: + enabled: true + extensionList: + - name: extension-metrics + env: + - name: EXTENSION_URL + value: https://github.com/argoproj-labs/argocd-extension-metrics/releases/download/v1.0.3/extension.tar.gz + - name: EXTENSION_CHECKSUM_URL + value: https://github.com/argoproj-labs/argocd-extension-metrics/releases/download/v1.0.3/extension_checksums.txt +``` diff --git a/charts/argocd-metrics-server/README.md.gotmpl b/charts/argocd-metrics-server/README.md.gotmpl new file mode 100644 index 00000000..530d9b87 --- /dev/null +++ b/charts/argocd-metrics-server/README.md.gotmpl @@ -0,0 +1,91 @@ +{{ template "chart.header" . }} +{{ template "chart.description" . }} + +## TL;DR; + +```console +helm repo add christianhuth https://charts.christianhuth.de +helm repo update +helm install my-release christianhuth/argocd-metrics-server +``` + +## Introduction + +This chart bootstraps the [ArgoCD Metrics Server](https://github.com/argoproj-labs/argocd-extension-metrics) on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.19+ +- Argo CD version 2.6+ +- Prometheus + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm repo add christianhuth https://charts.christianhuth.de +helm repo update +helm install my-release christianhuth/argocd-metrics-server +``` + +These commands deploy the ArgoCD Metrics Server on the Kubernetes cluster in the default configuration. The [Values](#values) section lists the values that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall the `my-release` deployment: + +```console +helm uninstall my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +{{ template "chart.valuesSection" . }} + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```console +helm install my-release -f values.yaml christianhuth/argocd-metrics-server +``` + +# Configuring Argo CD + +After a successful installation of the Argo CD Metrics Server you need to configure Argo CD to display Metrics in the UI. + +Assuming you are using the official Argo CD Helm Chart, this can be achieved with the following values: + +```yaml +configs: + # this part configures the UI extension to use the Argo CD Metrics Server + # make sure to adjust the URL to your installation + cm: + extension.config: |- + extensions: + - name: metrics + backend: + services: + - url: http://argocd-metrics-server.argo.svc:9003 + # this part enables the proxy extension feature of Argo CD + params: + server.enable.proxy.extension: true + # this part authorizes users to use the Metrics extension + rbac: + policy.csv: | + p, role:readonly, extensions, invoke, metrics, allow +server: + # this part downloads the UI extension and integrates it into the Argo CD UI + extensions: + enabled: true + extensionList: + - name: extension-metrics + env: + - name: EXTENSION_URL + value: https://github.com/argoproj-labs/argocd-extension-metrics/releases/download/v1.0.3/extension.tar.gz + - name: EXTENSION_CHECKSUM_URL + value: https://github.com/argoproj-labs/argocd-extension-metrics/releases/download/v1.0.3/extension_checksums.txt +``` diff --git a/charts/argocd-metrics-server/templates/_helpers.tpl b/charts/argocd-metrics-server/templates/_helpers.tpl new file mode 100644 index 00000000..a88dbc3e --- /dev/null +++ b/charts/argocd-metrics-server/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "argocd-metrics-server.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "argocd-metrics-server.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "argocd-metrics-server.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "argocd-metrics-server.labels" -}} +helm.sh/chart: {{ include "argocd-metrics-server.chart" . }} +{{ include "argocd-metrics-server.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "argocd-metrics-server.selectorLabels" -}} +app.kubernetes.io/name: {{ include "argocd-metrics-server.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "argocd-metrics-server.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "argocd-metrics-server.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/argocd-metrics-server/templates/configmap.yaml b/charts/argocd-metrics-server/templates/configmap.yaml new file mode 100644 index 00000000..b3bafda4 --- /dev/null +++ b/charts/argocd-metrics-server/templates/configmap.yaml @@ -0,0 +1,308 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + {{- include "argocd-metrics-server.labels" . | nindent 4 }} + name: {{ include "argocd-metrics-server.fullname" . }} + namespace: {{ .Release.Namespace }} +data: + config.json: | + { + "prometheus": { + "applications": [ + { + "name": "default", + "default": true, + "dashboards": [ + { + "groupKind": "pod", + "tabs": ["Golden Signal"], + "rows": [ + { + "name": "pod", + "title": "Pods", + "tab": "Golden Signal", + "graphs": [ + { + "name": "pod_cpu_line", + "title": "CPU", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_cpu_pie", + "title": "CPU Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_line", + "title": "Memory", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_pie", + "title": "Mem Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + } + ] + }, + { + "name": "container", + "title": "Containers", + "tab": "Golden Signal", + "graphs": [ + { + "name": "container_cpu_line", + "title": "CPU", + "description": "", + "graphType": "line", + "metricName": "container", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" + }, + { + "name": "container_cpu_pie", + "title": "CPU Avg", + "description": "", + "graphType": "pie", + "metricName": "container", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\",container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" + }, + { + "name": "container_memory_line", + "title": "Memory", + "description": "", + "graphType": "line", + "metricName": "container", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" + }, + { + "name": "container_memory_pie", + "title": "Mem Avg", + "description": "", + "graphType": "pie", + "metricName": "container", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" + } + ] + } + ] + }, + { + "groupKind": "deployment", + "tabs": ["Golden Signal"], + "rows": [ + { + "name": "httplatency", + "title": "HTTP Latency", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_200_latency", + "title": "Latency", + "description": "", + "graphType": "line", + "metricName": "pod_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"200\"} [1m])) by (pod_template_hash)" + } + ] + }, + { + "name": "httperrortate", + "title": "HTTP Error Rate", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_error_rate_500", + "title": "HTTP Error 500", + "description": "", + "graphType": "line", + "metricName": "pod_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"500\"} [1m])) by (pod_template_hash)" + }, + { + "name": "http_error_rate_400", + "title": "HTTP Error 400", + "description": "", + "graphType": "line", + "metricName": "pod_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"404\"} [1m])) by (pod_template_hash)" + } + ] + }, + { + "name": "httptraffic", + "title": "HTTP Traffic", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_traffic", + "title": "Traffic", + "description": "", + "graphType": "line", + "metricName": "pod_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\"} [1m])) by (pod_template_hash)" + } + ] + }, + { + "name": "pod", + "title": "Pods", + "tab": "Golden Signal", + "graphs": [ + { + "name": "pod_cpu_line", + "title": "CPU", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_cpu_pie", + "title": "CPU Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_line", + "title": "Memory", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_pie", + "title": "Mem Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + } + ] + } + ] + }, + { + "groupKind": "rollout", + "tabs": ["Golden Signal"], + "rows": [ + { + "name": "httplatency", + "title": "HTTP Latency", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_200_latency", + "title": "Latency", + "description": "", + "graphType": "line", + "metricName": "rollout_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"200\"} [1m])) by (rollout_template_hash)" + } + ] + }, + { + "name": "httperrortate", + "title": "HTTP Error Rate", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_error_rate_500", + "title": "HTTP Error 500", + "description": "", + "graphType": "line", + "metricName": "rollout_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"500\"} [1m])) by (rollout_template_hash)" + }, + { + "name": "http_error_rate_400", + "title": "HTTP Error 400", + "description": "", + "graphType": "line", + "metricName": "rollout_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\", status=\"404\"} [1m])) by (rollout_template_hash)" + } + ] + }, + { + "name": "httptraffic", + "title": "HTTP Traffic", + "tab": "Golden Signal", + "graphs": [ + { + "name": "http_traffic", + "title": "Traffic", + "description": "", + "graphType": "line", + "metricName": "rollout_template_hash", + "queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{"{{"}}.namespace{{"}}"}}\"} [1m])) by (rollout_template_hash)" + } + ] + }, + { + "name": "pod", + "title": "Pods", + "tab": "Golden Signal", + "graphs": [ + { + "name": "pod_cpu_line", + "title": "CPU", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_cpu_pie", + "title": "CPU Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_line", + "title": "Memory", + "description": "", + "graphType": "line", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + }, + { + "name": "pod_memory_pie", + "title": "Mem Avg", + "description": "", + "graphType": "pie", + "metricName": "pod", + "queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{"{{"}}.name{{"}}"}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" + } + ] + } + ] + } + ] + } + ], + "provider": + { + "Name": "default", + "default": true, + "address": "http://{{ .Values.prometheus.service }}.{{ .Values.prometheus.namespace }}.svc.cluster.local:{{ .Values.prometheus.port }}" + } + } + } diff --git a/charts/argocd-metrics-server/templates/deployment.yaml b/charts/argocd-metrics-server/templates/deployment.yaml new file mode 100644 index 00000000..269a1607 --- /dev/null +++ b/charts/argocd-metrics-server/templates/deployment.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + {{- include "argocd-metrics-server.labels" . | nindent 4 }} + name: {{ include "argocd-metrics-server.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + selector: + matchLabels: + {{- include "argocd-metrics-server.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "argocd-metrics-server.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "argocd-metrics-server.serviceAccountName" . }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + args: + - '-enableTLS=false' + ports: + - containerPort: 9003 + name: metrics + protocol: TCP + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - name: config-volume + mountPath: /app/config.json + subPath: config.json + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: config-volume + configMap: + name: {{ include "argocd-metrics-server.fullname" . }} diff --git a/charts/argocd-metrics-server/templates/networkpolicy.yaml b/charts/argocd-metrics-server/templates/networkpolicy.yaml new file mode 100644 index 00000000..06cf0a03 --- /dev/null +++ b/charts/argocd-metrics-server/templates/networkpolicy.yaml @@ -0,0 +1,61 @@ +{{- if .Values.networkPolicy.enabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + labels: + {{- include "argocd-metrics-server.labels" . | nindent 4 }} + name: {{ include "argocd-metrics-server.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + {{- include "argocd-metrics-server.selectorLabels" . | nindent 6 }} + policyTypes: + {{- if or (.Values.networkPolicy.dns.enabled) (.Values.networkPolicy.prometheus.enabled) }} + - Egress + {{- end }} + {{- if .Values.networkPolicy.argocd.enabled }} + - Ingress + {{- end }} + {{- if or (.Values.networkPolicy.dns.enabled) (.Values.networkPolicy.prometheus.enabled) }} + egress: + {{- if .Values.networkPolicy.dns.enabled }} + - to: + {{- if .Values.networkPolicy.dns.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- toYaml .Values.networkPolicy.dns.namespaceSelector | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.dns.podSelector }} + {{- if not .Values.networkPolicy.dns.namespaceSelector }} + - podSelector: + {{- else }} + podSelector: + {{- end }} + matchLabels: + {{- toYaml .Values.networkPolicy.dns.podSelector | nindent 14 }} + {{- end }} + ports: + - protocol: UDP + port: 53 + {{- end }} + {{- if .Values.networkPolicy.prometheus.enabled }} + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: {{ .Values.prometheus.namespace | quote }} + {{- if .Values.networkPolicy.prometheus.podSelector }} + podSelector: + matchLabels: + {{- toYaml .Values.networkPolicy.prometheus.podSelector | nindent 14 }} + {{- end }} + ports: + - protocol: TCP + port: {{ .Values.prometheus.port | int }} + {{- end }} + {{- end }} + {{- if .Values.networkPolicy.argocd.enabled }} + ingress: + - from: + {{- end }} +{{- end }} diff --git a/charts/argocd-metrics-server/templates/service.yaml b/charts/argocd-metrics-server/templates/service.yaml new file mode 100644 index 00000000..43df46d2 --- /dev/null +++ b/charts/argocd-metrics-server/templates/service.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: Service +metadata: + labels: + {{- include "argocd-metrics-server.labels" . | nindent 4 }} + name: {{ include "argocd-metrics-server.fullname" . }} + namespace: {{ .Release.Namespace }} +spec: + type: {{ .Values.service.type }} + ports: + - name: metrics + port: {{ .Values.service.port }} + targetPort: metrics + selector: + {{- include "argocd-metrics-server.selectorLabels" . | nindent 4 }} diff --git a/charts/argocd-metrics-server/templates/serviceaccount.yaml b/charts/argocd-metrics-server/templates/serviceaccount.yaml new file mode 100644 index 00000000..19b1c1d8 --- /dev/null +++ b/charts/argocd-metrics-server/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "argocd-metrics-server.labels" . | nindent 4 }} + name: {{ include "argocd-metrics-server.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/charts/argocd-metrics-server/values.schema.json b/charts/argocd-metrics-server/values.schema.json new file mode 100644 index 00000000..6549d9f0 --- /dev/null +++ b/charts/argocd-metrics-server/values.schema.json @@ -0,0 +1,179 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "affinity": { + "type": "object" + }, + "extraEnv": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string" + }, + "registry": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "imagePullSecrets": { + "type": "array" + }, + "nameOverride": { + "type": "string" + }, + "networkPolicy": { + "type": "object", + "properties": { + "additionalAnnotations": { + "type": "object" + }, + "additionalLabels": { + "type": "object" + }, + "argocd": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "namespaceSelector": { + "type": "object" + }, + "podSelector": { + "type": "object" + } + } + }, + "dns": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "namespaceSelector": { + "type": "object", + "properties": { + "kubernetes.io/metadata.name": { + "type": "string" + } + } + }, + "podSelector": { + "type": "object", + "properties": { + "k8s-app": { + "type": "string" + } + } + } + } + }, + "enabled": { + "type": "boolean" + }, + "prometheus": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "podSelector": { + "type": "object", + "properties": { + "app.kubernetes.io/name": { + "type": "string" + } + } + } + } + } + } + }, + "nodeSelector": { + "type": "object" + }, + "podSecurityContext": { + "type": "object" + }, + "prometheus": { + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "service": { + "type": "string" + } + } + }, + "replicaCount": { + "type": "integer" + }, + "resources": { + "type": "object", + "properties": { + "requests": { + "type": "object", + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + } + } + } + }, + "revisionHistoryLimit": { + "type": "integer" + }, + "securityContext": { + "type": "object" + }, + "service": { + "type": "object", + "properties": { + "port": { + "type": "integer" + }, + "type": { + "type": "string" + } + } + }, + "serviceAccount": { + "type": "object", + "properties": { + "annotations": { + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + } + }, + "tolerations": { + "type": "array" + } + } +} diff --git a/charts/argocd-metrics-server/values.yaml b/charts/argocd-metrics-server/values.yaml new file mode 100644 index 00000000..8d5a6a16 --- /dev/null +++ b/charts/argocd-metrics-server/values.yaml @@ -0,0 +1,121 @@ +# -- Provide a name in place of `argocd-extension-metrics` +nameOverride: "" + +# -- String to fully override `"argocd-extension-metrics.fullname"` +fullnameOverride: "" + +image: + # -- image registory + registry: quay.io + # -- image repository + repository: argoprojlabs/argocd-extension-metrics + # -- image pull policy + pullPolicy: Always + # -- Overrides the image tag + tag: "v1.0.3" + +# -- If defined, uses a Secret to pull an image from a private Docker registry or repository. +imagePullSecrets: [] + +# -- Number of replicas +replicaCount: 1 + +# -- The number of old ReplicaSets to retain +revisionHistoryLimit: 0 + +# -- pod-level security context +podSecurityContext: {} + # if you are using direct host access to the certificates you probably need to run the pod as root + # fsGroup: 0 + # runAsGroup: 0 + # runAsUser: 0 + +# -- Resource limits and requests for the controller pods. +resources: + requests: + cpu: 100m + memory: 100Mi + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# -- container-level security context +securityContext: {} + # capabilities:nodeSelector: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + # -- Kubernetes service type + type: ClusterIP + # -- Kubernetes port where service is exposed + port: 9003 + +serviceAccount: + # -- Specifies whether a service account should be created + create: true + # -- Annotations to add to the service account + annotations: {} + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# -- Node labels for pod assignment +nodeSelector: {} + +# -- Toleration labels for pod assignment +tolerations: [] + +# -- Affinity settings for pod assignment +affinity: {} + +# -- additional environment variables to be added to the pods +extraEnv: [] + +networkPolicy: + # --- create a NetworkPolicy resource to limit the allowed traffic + enabled: false + # -- Annotations to be added to the NetworkPolicies + additionalAnnotations: {} + # -- Labels to be added to the NetworkPolicies + additionalLabels: {} + argocd: + # --- allow incoming traffic from Argo CD + enabled: true + # -- The labels of the namespace where Argo CD is running + namespaceSelector: {} + # -- The labels of the Argo CD Pods + podSelector: {} + dns: + # -- allow outgoing traffic to the Kubernetes DNS + enabled: true + # -- The labels of the namespace where the Kubernetes DNS is running + namespaceSelector: + kubernetes.io/metadata.name: kube-system + # -- The labels of the Kubernetes DNS Pods + podSelector: + k8s-app: kube-dns + prometheus: + # --- allow outgoing traffic to Prometheus + enabled: true + # -- The labels of the Prometheus Pods + podSelector: + app.kubernetes.io/name: prometheus + +prometheus: + # -- The namespace where Prometheus is running + namespace: monitoring + # -- The port on which the Prometheus service is listening for traffic + port: 9090 + # -- The name of the Prometheus service + service: prometheus-operated