Victoria Metrics Operator
- Install the follow packages:
git
,kubectl
,helm
,helm-docs
. See this tutorial. - PV support on underlying infrastructure.
During release an issue with helm CRD was discovered. So for upgrade from version less then 0.1.3 you have to two options:
- use helm management for CRD, enabled by default.
- use own management system, need to add variable: --set createCRD=false.
If you choose helm management, following steps must be done before upgrade:
- define namespace and helm release name variables
export NAMESPACE=default
export RELEASE_NAME=operator
execute kubectl commands:
kubectl get crd | grep victoriametrics.com | awk '{print $1 }' | xargs -i kubectl label crd {} app.kubernetes.io/managed-by=Helm --overwrite
kubectl get crd | grep victoriametrics.com | awk '{print $1 }' | xargs -i kubectl annotate crd {} meta.helm.sh/release-namespace="$NAMESPACE" meta.helm.sh/release-name="$RELEASE_NAME" --overwrite
run helm upgrade command.
This chart will do the following:
- Rollout victoria metrics operator
Access a Kubernetes cluster.
Add a chart helm repository with follow commands:
helm repo add vm https://victoriametrics.github.io/helm-charts/
helm repo update
List versions of vm/victoria-metrics-operator
chart available to installation:
helm search repo vm/victoria-metrics-operator -l
Export default values of victoria-metrics-operator
chart to file values.yaml
:
helm show values vm/victoria-metrics-operator > values.yaml
Change the values according to the need of the environment in values.yaml
file.
Test the installation with command:
helm install vmoperator vm/victoria-metrics-operator -f values.yaml -n NAMESPACE --debug --dry-run
Install chart with command:
helm install vmoperator vm/victoria-metrics-operator -f values.yaml -n NAMESPACE
Get the pods lists by running this commands:
kubectl get pods -A | grep 'operator'
Get the application by running this command:
helm list -f vmoperator -n NAMESPACE
See the history of versions of vmoperator
application with command.
helm history vmoperator -n NAMESPACE
Remove application with command.
helm uninstall vmoperator -n NAMESPACE
Its possible to use validation of created resources with operator. For now, you need cert-manager to easily certificate management https://cert-manager.io/docs/
admissionWebhooks:
enabled: true
# what to do in case, when operator not available to validate request.
certManager:
# enables cert creation and injection by cert-manager
enabled: true
Install helm-docs
following the instructions on this tutorial.
Generate docs with helm-docs
command.
cd charts/victoria-metrics-operator
helm-docs
The markdown generation is entirely go template driven. The tool parses metadata from charts and generates a number of sub-templates that can be referenced in a template file (by default README.md.gotmpl
). If no template file is provided, the tool has a default internal template that will generate a reasonably formatted README.
The following tables lists the configurable parameters of the chart and their default values.
Change the values according to the need of the environment in victoria-metrics-operator/values.yaml
file.
Key | Type | Default | Description |
---|---|---|---|
admissionWebhooks | object | {"caBundle":"","certManager":{"enabled":false,"issuer":{}},"enabled":false,"enabledCRDValidation":{"vmagent":true,"vmalert":true,"vmalertmanager":true,"vmalertmanagerConfig":true,"vmauth":true,"vmcluster":true,"vmrule":true,"vmsingle":true,"vmuser":true},"policy":"Fail"} |
Configures resource validation |
admissionWebhooks.caBundle | string | "" |
with keys: tls.key, tls.crt, ca.crt |
admissionWebhooks.certManager.enabled | bool | false |
Enables cert creation and injection by cert-manager. |
admissionWebhooks.certManager.issuer | object | {} |
If needed, provide own issuer. Operator will create self-signed if empty. |
admissionWebhooks.enabled | bool | false |
Enables validation webhook. |
admissionWebhooks.policy | string | "Fail" |
What to do in case, when operator not available to validate request. |
affinity | object | {} |
Pod affinity |
annotations | object | {} |
Annotations to be added to the all resources |
cleanupCRD | bool | false |
Tells helm to clean up all the vm resources under this release's namespace when uninstalling |
cleanupImage.pullPolicy | string | "IfNotPresent" |
|
cleanupImage.repository | string | "gcr.io/google_containers/hyperkube" |
|
cleanupImage.tag | string | "v1.18.0" |
|
createCRD | bool | true |
with this option, if you remove this chart, all crd resources will be deleted with it. |
env | list | [] |
extra settings for the operator deployment. full list Ref: https://github.com/VictoriaMetrics/operator/blob/master/vars.MD |
envFrom | list | [] |
|
extraArgs | object | {} |
operator container additional commandline arguments |
extraContainers | list | [] |
|
extraHostPathMounts | list | [] |
Additional hostPath mounts |
extraLabels | object | {} |
Labels to be added to the all resources |
extraObjects | list | [] |
Add extra specs dynamically to this chart |
extraVolumeMounts | list | [] |
Extra Volume Mounts for the container |
extraVolumes | list | [] |
Extra Volumes for the pod |
fullnameOverride | string | "" |
Overrides the full name of server component |
image.pullPolicy | string | "IfNotPresent" |
Image pull policy |
image.repository | string | "victoriametrics/operator" |
Image repository |
image.tag | string | "v0.43.3" |
Image tag |
imagePullSecrets | list | [] |
Secret to pull images |
logLevel | string | "info" |
possible values: info and error. |
nameOverride | string | "" |
VM operatror deployment name override |
nodeSelector | object | {} |
Pod's node selector. Ref: [https://kubernetes.io/docs/user-guide/node-selection/](https://kubernetes.io/docs/user-guide/node-selection/ |
operator.disable_prometheus_converter | bool | false |
By default, operator converts prometheus-operator objects. |
operator.enable_converter_ownership | bool | false |
Enables ownership reference for converted prometheus-operator objects, it will remove corresponding victoria-metrics objects in case of deletion prometheus one. |
operator.prometheus_converter_add_argocd_ignore_annotations | bool | false |
Compare-options and sync-options for prometheus objects converted by operator for properly use with ArgoCD |
operator.psp_auto_creation_enabled | bool | false |
By default, operator doesn't create psp for its objects. |
operator.useCustomConfigReloader | bool | false |
Enables custom config-reloader, bundled with operator. It should reduce vmagent and vmauth config sync-time and make it predictable. |
podDisruptionBudget.enabled | bool | false |
|
podDisruptionBudget.labels | object | {} |
|
podLabels | object | {} |
|
podSecurityContext | object | {} |
|
rbac.create | bool | true |
Specifies whether the RBAC resources should be created |
rbac.pspEnabled | bool | true |
|
replicaCount | int | 1 |
|
resources | object | {} |
Resource object |
securityContext | object | {} |
|
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 |
serviceMonitor | object | {"annotations":{},"enabled":false,"extraLabels":{},"relabelings":[]} |
configures monitoring with serviceScrape. VMServiceScrape must be pre-installed |
tolerations | list | [] |
Array of tolerations object. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ |
topologySpreadConstraints | list | [] |
Pod Topology Spread Constraints. Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/ |
watchNamespace | string | "" |