diff --git a/README.md b/README.md index 8249fc85..5cda7fc4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [Helm](https://helm.sh/) is a package manager for Kubernetes. You can use Helm for installing Wavefront packages in your Kubernetes cluster. Available Wavefront packages: -- [Wavefront Collector for Kubernetes](./wavefront/) - [Wavefront HPA Adapter for Kubernetes](./wavefront-hpa-adapter/) - [Wavefront Storage Adapter for Prometheus](./prometheus-storage-adapter/) - [Wavefront Adapter for Istio](./wavefront-adapter-for-istio/) diff --git a/ci.Jenkinsfile b/ci.Jenkinsfile deleted file mode 100644 index cc87fe5d..00000000 --- a/ci.Jenkinsfile +++ /dev/null @@ -1,81 +0,0 @@ -pipeline { - agent any - - tools { - go 'Go 1.17' - } - - environment { - GCP_CREDS = credentials("GCP_CREDS") - } - - stages { - stage("Setup Tools") { - steps { - withEnv(["PATH+GCLOUD=${HOME}/google-cloud-sdk/bin"]) { - sh './wavefront/release/setup-for-integration-test.sh' - } - } - } - stage("Run Tests on GKE") { - environment { - GCP_PROJECT = "wavefront-gcp-dev" - GKE_CLUSTER_NAME = "k8po-jenkins-ci-zone-a" - WAVEFRONT_TOKEN = credentials('WAVEFRONT_TOKEN_NIMBA') - } - steps { - withEnv(["PATH+EXTRA=${PWD}/node-v16.14.0-linux-x64/bin", "PATH+GCLOUD=${HOME}/google-cloud-sdk/bin"]) { - lock("integration-test-gke") { - sh 'gcloud container clusters get-credentials ${GKE_CLUSTER_NAME} --zone us-central1-a --project ${GCP_PROJECT}' - script { - env.PREV_CHART_VERSION = sh(returnStdout: true, script: "curl -s -X 'GET' 'https://artifacthub.io/api/v1/packages/helm/wavefront/wavefront' -H 'accept: application/json' | jq -r '.available_versions[0].version'").trim() - } - sh './wavefront/release/run-e2e-tests.sh -t ${WAVEFRONT_TOKEN} -p ${PREV_CHART_VERSION}' - } - } - } - } -// stage("Run Tests on EKS") { -// environment { -// AWS_SHARED_CREDENTIALS_FILE = credentials("k8po-ci-aws-creds") -// AWS_CONFIG_FILE = credentials("k8po-ci-aws-profile") -// AWS_REGION = "us-west-2" -// AWS_PROFILE = "wavefront-dev" -// ECR_ENDPOINT = "095415062695.dkr.ecr.us-west-2.amazonaws.com" -// WAVEFRONT_TOKEN = credentials('WAVEFRONT_TOKEN_NIMBA') -// } -// steps { -// withEnv(["PATH+EXTRA=${PWD}/node-v16.14.0-linux-x64/bin", "PATH+GCLOUD=${HOME}/google-cloud-sdk/bin"]) { -// lock("integration-test-eks") { -// sh 'aws ecr get-login-password --region $AWS_REGION --profile $AWS_PROFILE | docker login --username AWS --password-stdin $ECR_ENDPOINT' -// sh 'aws eks --region $AWS_REGION update-kubeconfig --name k8s-saas-team-dev --profile $AWS_PROFILE' -// script { -// env.PREV_CHART_VERSION = sh(returnStdout: true, script: "curl -s -X 'GET' 'https://artifacthub.io/api/v1/packages/helm/wavefront/wavefront' -H 'accept: application/json' | jq -r '.available_versions[0].version'").trim() -// } -// sh './wavefront/release/run-e2e-tests.sh -t ${WAVEFRONT_TOKEN} -p ${PREV_CHART_VERSION}' -// } -// } -// } -// } - } - - post { - // Notify only on null->failure or success->failure or failure->success - failure { - script { - if(currentBuild.previousBuild == null) { - slackSend (channel: '#tobs-k8po-team', color: '#FF0000', message: "CI TEST FAILED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - } - } - regression { - slackSend (channel: '#tobs-k8po-team', color: '#FF0000', message: "CI TEST FAILED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - fixed { - slackSend (channel: '#tobs-k8po-team', color: '#008000', message: "CI TEST FIXED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - always { - cleanWs() - } - } -} diff --git a/release.Jenkinsfile b/release.Jenkinsfile deleted file mode 100644 index c29193e9..00000000 --- a/release.Jenkinsfile +++ /dev/null @@ -1,60 +0,0 @@ -pipeline { - agent any - - tools { - go 'Go 1.17' - } - - environment { - NEW_APP_VERSION = "${params.NEW_APP_VERSION}" - NEW_CHART_VERSION = "${params.NEW_CHART_VERSION}" - GIT_CREDENTIAL_ID = 'wf-jenkins-github' - TOKEN = credentials('GITHUB_TOKEN') - GITHUB_CREDS_PSW = credentials("GITHUB_TOKEN") - WAVEFRONT_TOKEN = credentials('WAVEFRONT_TOKEN_NIMBA') - } - - stages { - stage("Setup Tools") { - steps { - sh './wavefront/release/setup-for-release.sh' - } - } - stage("Create Bump Version PR") { - steps { - sh 'git config --global user.email "svc.wf-jenkins@vmware.com"' - sh 'git config --global user.name "svc.wf-jenkins"' - sh 'git remote set-url origin https://${TOKEN}@github.com/wavefronthq/helm.git' - sh './wavefront/release/bump-version.sh' - } - } - stage("Create GitHub Pages PR") { - steps { - sh 'git config --global user.email "svc.wf-jenkins@vmware.com"' - sh 'git config --global user.name "svc.wf-jenkins"' - sh 'git remote set-url origin https://${TOKEN}@github.com/wavefronthq/helm.git' - sh './wavefront/release/create-release-pr.sh' - } - } - } - - post { - // Notify only on null->failure or success->failure or failure->success - failure { - script { - if(currentBuild.previousBuild == null) { - slackSend (channel: '#tobs-k8po-team', color: '#FF0000', message: "RELEASE BUILD FAILED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - } - } - regression { - slackSend (channel: '#tobs-k8po-team', color: '#FF0000', message: "RELEASE BUILD FAILED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - fixed { - slackSend (channel: '#tobs-k8po-team', color: '#008000', message: "RELEASE BUILD FIXED: <${env.BUILD_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]>") - } - always { - cleanWs() - } - } -} \ No newline at end of file diff --git a/wavefront-v2beta/.helmignore b/wavefront-v2beta/.helmignore deleted file mode 100644 index 0e8a0eb3..00000000 --- a/wavefront-v2beta/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# 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/wavefront-v2beta/Chart.yaml b/wavefront-v2beta/Chart.yaml deleted file mode 100644 index fb83d618..00000000 --- a/wavefront-v2beta/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -name: wavefront-v2beta -description: Operator for deploying Wavefront Collector for Kubernetes and Wavefront Proxy -type: application -version: 2.0.0-beta-3 -appVersion: "2.0.0-beta-3" -keywords: -- metric -- monitoring -- observability -- alerting -home: https://www.wavefront.com -sources: -- https://github.com/wavefrontHQ/wavefront-operator-for-kubernetes -maintainers: -- name: akodali18 - email: akodali@vmware.com -- name: johncornish - email: jcornish@vmware.com -- name: josephgee - email: jgee@vmware.com -- name: helen-shao - email: shaoh@vmware.com -- name: mceldeen - email: matthewco@vmware.com -- name: mmichael - email: mamichael@vmware.com -- name: priyaselvaganesan - email: pselvaganesa@vmware.com -- name: Jyuqi - email: jyuqi@vmware.com \ No newline at end of file diff --git a/wavefront-v2beta/README.md b/wavefront-v2beta/README.md deleted file mode 100644 index 70e5a54f..00000000 --- a/wavefront-v2beta/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Wavefront Operator for Kubernetes (Deprecated) - -The Wavefront Operator for Kubernetes helm chart was deprecated please see the manual installation instructions in the [Wavefront Operator for Kubernetes](https://github.com/wavefrontHQ/wavefront-operator-for-kubernetes/tree/main) repository. \ No newline at end of file diff --git a/wavefront-v2beta/examples/wavefront-basic.yaml b/wavefront-v2beta/examples/wavefront-basic.yaml deleted file mode 100644 index b0751024..00000000 --- a/wavefront-v2beta/examples/wavefront-basic.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Need to change YOUR_CLUSTER_NAME, YOUR_WAVEFRONT_URL accordingly -apiVersion: wavefront.com/v1alpha1 -kind: Wavefront -metadata: - name: wavefront - namespace: wavefront -spec: - clusterName: YOUR_CLUSTER_NAME - wavefrontUrl: YOUR_WAVEFRONT_URL - dataCollection: - metrics: - enable: true - dataExport: - wavefrontProxy: - enable: true \ No newline at end of file diff --git a/wavefront-v2beta/examples/wavefront-logging.yaml b/wavefront-v2beta/examples/wavefront-logging.yaml deleted file mode 100644 index 5d0f06bd..00000000 --- a/wavefront-v2beta/examples/wavefront-logging.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Need to change YOUR_CLUSTER_NAME, YOUR_WAVEFRONT_URL accordingly -apiVersion: wavefront.com/v1alpha1 -kind: Wavefront -metadata: - name: wavefront - namespace: wavefront -spec: - clusterName: YOUR_CLUSTER_NAME - wavefrontUrl: YOUR_WAVEFRONT_URL - dataCollection: - metrics: - enable: true - logging: - enable: true - dataExport: - wavefrontProxy: - enable: true \ No newline at end of file diff --git a/wavefront-v2beta/templates/_helpers.tpl b/wavefront-v2beta/templates/_helpers.tpl deleted file mode 100644 index 322505be..00000000 --- a/wavefront-v2beta/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "wavefront-v2beta.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 "wavefront-v2beta.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 "wavefront-v2beta.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "wavefront-v2beta.labels" -}} -helm.sh/chart: {{ include "wavefront-v2beta.chart" . }} -{{ include "wavefront-v2beta.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "wavefront-v2beta.selectorLabels" -}} -app.kubernetes.io/name: {{ include "wavefront-v2beta.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "wavefront-v2beta.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "wavefront-v2beta.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/wavefront-v2beta/templates/wavefront-operator.yaml b/wavefront-v2beta/templates/wavefront-operator.yaml deleted file mode 100644 index 1d945859..00000000 --- a/wavefront-v2beta/templates/wavefront-operator.yaml +++ /dev/null @@ -1,828 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.8.0 - creationTimestamp: null - name: wavefronts.wavefront.com -spec: - group: wavefront.com - names: - kind: Wavefront - listKind: WavefrontList - plural: wavefronts - singular: wavefront - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.status - name: status - type: string - - jsonPath: .status.componentStatuses[?(@.name=='wavefront-proxy')].status - name: proxy - type: string - - jsonPath: .status.componentStatuses[?(@.name=='wavefront-cluster-collector')].status - name: cluster-collector - type: string - - jsonPath: .status.componentStatuses[?(@.name=='wavefront-node-collector')].status - name: node-collector - type: string - - jsonPath: .status.componentStatuses[?(@.name=='wavefront-logging')].status - name: logging - type: string - - jsonPath: .metadata.creationTimestamp - name: age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Wavefront is the Schema for the wavefronts API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: WavefrontSpec defines the desired state of Wavefront - properties: - clusterName: - description: ClusterName is a unique name for the Kubernetes cluster - to be identified via a metric tag on Wavefront (Required). - minLength: 3 - type: string - dataCollection: - description: DataCollection options - properties: - logging: - description: Enable and configure wavefront logging - properties: - enable: - default: false - description: Enable is whether to enable the wavefront logging. - Defaults to false. - type: boolean - filters: - description: Filters to apply towards all logs collected by - wavefront-logging. - properties: - tagAllowList: - additionalProperties: - items: - type: string - type: array - description: List of log tag patterns to allow - type: object - tagDenyList: - additionalProperties: - items: - type: string - type: array - description: List of log tag patterns to deny - type: object - type: object - type: object - metrics: - description: Metrics has resource configuration for node- and - cluster-deployed collectors - properties: - clusterCollector: - default: - resources: - limits: - cpu: 400m - ephemeral-storage: 1Gi - memory: 512Mi - requests: - cpu: 200m - ephemeral-storage: 20Mi - memory: 10Mi - description: ClusterCollector is for resource configuration - for the cluster collector. - properties: - resources: - description: Resources Compute resources required by the - Collector containers. - properties: - limits: - description: Limits CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - requests: - description: Requests CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - type: object - type: object - customConfig: - description: CustomConfig is the custom ConfigMap name for - the collector. Leave blank to use defaults. - type: string - defaultCollectionInterval: - default: 60s - description: Default metrics collection interval. Defaults - to 60s. - type: string - enable: - default: true - description: Enable is whether to enable the metrics. Defaults - to true. - type: boolean - enableDiscovery: - default: true - description: Rules based and Prometheus endpoints auto-discovery. - Defaults to true. - type: boolean - filters: - default: - denyList: - - kubernetes.sys_container.* - - kubernetes.collector.runtime.* - - kubernetes.*.network.rx_rate - - kubernetes.*.network.rx_errors_rate - - kubernetes.*.network.tx_rate - - kubernetes.*.network.tx_errors_rate - - kubernetes.*.memory.page_faults - - kubernetes.*.memory.page_faults_rate - - kubernetes.*.memory.major_page_faults - - kubernetes.*.memory.major_page_faults_rate - - kubernetes.*.filesystem.inodes - - kubernetes.*.filesystem.inodes_free - - kubernetes.*.ephemeral_storage.request - - kubernetes.*.ephemeral_storage.limit - description: Filters to apply towards all metrics collected - by the collector. - properties: - allowList: - description: List of metric patterns to allow - items: - type: string - type: array - denyList: - default: - - kubernetes.sys_container.* - - kubernetes.collector.runtime.* - - kubernetes.*.network.rx_rate - - kubernetes.*.network.rx_errors_rate - - kubernetes.*.network.tx_rate - - kubernetes.*.network.tx_errors_rate - - kubernetes.*.memory.page_faults - - kubernetes.*.memory.page_faults_rate - - kubernetes.*.memory.major_page_faults - - kubernetes.*.memory.major_page_faults_rate - - kubernetes.*.filesystem.inodes - - kubernetes.*.filesystem.inodes_free - - kubernetes.*.ephemeral_storage.request - - kubernetes.*.ephemeral_storage.limit - description: List of metric patterns to deny - items: - type: string - type: array - type: object - nodeCollector: - default: - resources: - limits: - cpu: 200m - ephemeral-storage: 512Mi - memory: 256Mi - requests: - cpu: 200m - ephemeral-storage: 20Mi - memory: 10Mi - description: NodeCollector is for resource configuration for - the node collector. - properties: - resources: - description: Resources Compute resources required by the - Collector containers. - properties: - limits: - description: Limits CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - requests: - description: Requests CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - type: object - type: object - type: object - type: object - dataExport: - description: DataExport options - properties: - externalWavefrontProxy: - description: External Wavefront WavefrontProxy configuration - properties: - url: - description: Url is the proxy URL that the collector sends - metrics to. - minLength: 10 - pattern: ^http* - type: string - required: - - url - type: object - wavefrontProxy: - description: WavefrontProxy configuration options - properties: - args: - description: Args is additional Wavefront proxy properties - to be passed as command line arguments in the -- - format. Multiple properties can be specified. - pattern: --.* .* - type: string - deltaCounterPort: - description: DeltaCounterPort accumulates 1-minute delta counters - on Wavefront data format (usually 50000) - type: integer - enable: - default: true - description: Enable is whether to enable the wavefront proxy. - Defaults to true. - type: boolean - histogram: - description: Histogram distribution configuration - properties: - dayPort: - description: DayPort to accumulate 1-day based histograms - on Wavefront data format (usually 40003) - type: integer - hourPort: - description: HourPort to accumulate 1-hour based histograms - on Wavefront data format (usually 40002) - type: integer - minutePort: - description: MinutePort to accumulate 1-minute based histograms - on Wavefront data format (usually 40001) - type: integer - port: - description: Port for histogram distribution format data - (usually 40000) - type: integer - type: object - httpProxy: - description: HttpProxy configuration - properties: - secret: - default: http-proxy-secret - description: Name of the secret containing the HttpProxy - configuration. - maxLength: 253 - pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ - type: string - type: object - metricPort: - default: 2878 - description: MetricPort is the primary port for Wavefront - data format metrics. Defaults to 2878. - type: integer - preprocessor: - description: Preprocessor is the name of the configmap containing - a rules.yaml key with proxy preprocessing rules - maxLength: 253 - pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ - type: string - resources: - default: - limits: - cpu: 1000m - ephemeral-storage: 8Gi - memory: 4Gi - requests: - cpu: 100m - ephemeral-storage: 2Gi - memory: 1Gi - description: Resources Compute resources required by the Proxy - containers. - properties: - limits: - description: Limits CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - requests: - description: Requests CPU and Memory requirements - properties: - cpu: - description: CPU is for specifying CPU requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - ephemeral-storage: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - memory: - description: Memory is for specifying Memory requirements - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - type: string - type: object - type: object - tracing: - description: Distributed tracing configuration - properties: - jaeger: - description: Jaeger distributed tracing configurations - properties: - applicationName: - description: ApplicationName Custom application name - for traces received on Jaeger's Http or Gprc port. - minLength: 3 - type: string - grpcPort: - description: GrpcPort for Jaeger GRPC format data - (usually 14250) - type: integer - httpPort: - description: HttpPort for Jaeger Thrift format data - (usually 30080) - type: integer - port: - description: Port for Jaeger format distributed tracing - data (usually 30001) - type: integer - type: object - wavefront: - description: Wavefront distributed tracing configurations - properties: - port: - default: 30000 - description: Port for distributed tracing data (usually - 30000) - type: integer - samplingDuration: - description: SamplingDuration When set to greater - than 0, spans that exceed this duration will force - trace to be sampled (ms) - type: integer - samplingRate: - description: SamplingRate Distributed tracing data - sampling rate (0 to 1) - pattern: ^(0+\.?|0*\.\d+|0*1(\.0*)?)$ - type: string - type: object - zipkin: - description: Zipkin distributed tracing configurations - properties: - applicationName: - description: ApplicationName Custom application name - for traces received on Zipkin's port. - minLength: 3 - type: string - port: - default: 9411 - description: Port for Zipkin format distributed tracing - data (usually 9411) - type: integer - type: object - type: object - type: object - type: object - wavefrontTokenSecret: - default: wavefront-secret - description: WavefrontTokenSecret is the name of the secret that contains - a wavefront API Token. - maxLength: 253 - pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ - type: string - wavefrontUrl: - description: Wavefront URL for your cluster - pattern: ^https:\/\/.*.wavefront.com - type: string - required: - - clusterName - - wavefrontUrl - type: object - status: - description: WavefrontStatus defines the observed state of Wavefront - properties: - componentStatuses: - items: - properties: - message: - description: Human readable message indicating details of the - component. - type: string - name: - description: Name of the resource - type: string - status: - description: Computed running status. (available / desired ) - type: string - type: object - type: array - message: - description: Human readable message indicating details about the deployment - status. - type: string - status: - description: Human readable message indicating details about the deployment - status. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: wavefront-controller-manager - namespace: wavefront ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - name: wavefront-manager-role - namespace: wavefront -rules: - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - delete - - get - - patch - - update - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - serviceaccounts - verbs: - - create - - delete - - get - - patch - - update - - apiGroups: - - "" - resources: - - services - verbs: - - create - - delete - - get - - patch - - update - - apiGroups: - - apps - resources: - - daemonsets - verbs: - - create - - delete - - get - - patch - - update - - apiGroups: - - apps - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - wavefront.com - resources: - - wavefronts - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - wavefront.com - resources: - - wavefronts/finalizers - verbs: - - update - - apiGroups: - - wavefront.com - resources: - - wavefronts/status - verbs: - - get - - patch - - update ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - annotations: - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - kubernetes.io/bootstrapping: rbac-defaults - name: wavefront-wavefront-collector - namespace: wavefront -rules: - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - update - - create - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - annotations: - rbac.authorization.kubernetes.io/autoupdate: "true" - creationTimestamp: null - labels: - kubernetes.io/bootstrapping: rbac-defaults - name: wavefront-wavefront-collector -rules: - - apiGroups: - - "" - resources: - - events - - namespaces - - nodes - - nodes/proxy - - nodes/stats - - nodes/metrics - - pods - - services - - replicationcontrollers - verbs: - - get - - list - - watch - - apiGroups: - - apps - resources: - - daemonsets - - deployments - - statefulsets - - replicasets - verbs: - - get - - list - - watch - - apiGroups: - - batch - resources: - - jobs - - cronjobs - verbs: - - get - - list - - watch - - apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch - - nonResourceURLs: - - /metrics - verbs: - - get ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: wavefront-wavefront-logging -rules: - - apiGroups: - - "" - resources: - - namespaces - - pods - - deployments - - events - verbs: - - list - - get - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: wavefront-manager-rolebinding - namespace: wavefront -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: wavefront-manager-role -subjects: - - kind: ServiceAccount - name: wavefront-controller-manager - namespace: wavefront ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: wavefront-wavefront-collector - namespace: wavefront -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: wavefront-wavefront-collector -subjects: - - kind: ServiceAccount - name: wavefront-collector - namespace: wavefront ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: wavefront-wavefront-collector -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: wavefront-wavefront-collector -subjects: - - kind: ServiceAccount - name: wavefront-collector - namespace: wavefront ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: wavefront-wavefront-logging -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: wavefront-wavefront-logging -subjects: - - kind: ServiceAccount - name: wavefront-logging - namespace: wavefront ---- -apiVersion: v1 -data: - controller_manager_config.yaml: | - apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 - kind: ControllerManagerConfig - health: - healthProbeBindAddress: :8081 -kind: ConfigMap -metadata: - name: wavefront-manager-config - namespace: wavefront ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - control-plane: controller-manager - name: wavefront-controller-manager - namespace: wavefront -spec: - replicas: 1 - selector: - matchLabels: - control-plane: controller-manager - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: - control-plane: controller-manager - spec: - containers: - - command: - - /manager - image: projects.registry.vmware.com/tanzu_observability/kubernetes-operator:2.0.0-beta-3 - imagePullPolicy: Always - livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - name: manager - readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 500m - ephemeral-storage: 256Mi - memory: 128Mi - requests: - cpu: 10m - ephemeral-storage: 128Mi - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - securityContext: - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - serviceAccountName: wavefront-controller-manager - terminationGracePeriodSeconds: 10 diff --git a/wavefront/.helmignore b/wavefront/.helmignore deleted file mode 100644 index 46fd8996..00000000 --- a/wavefront/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# 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 -*~ -# Various IDEs -.project -.idea/ -*.tmproj -# OWNERS file for Kubernetes -OWNERS diff --git a/wavefront/Chart.lock b/wavefront/Chart.lock deleted file mode 100644 index c8246185..00000000 --- a/wavefront/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: kube-state-metrics - repository: https://prometheus-community.github.io/helm-charts - version: 4.32.0 -digest: sha256:83d5df3c66958572487f2dd37817ef741a22ff610f0b1dbe8be5f886f8338a06 -generated: "2023-04-14T10:34:43.545449-07:00" diff --git a/wavefront/Chart.yaml b/wavefront/Chart.yaml deleted file mode 100644 index f0f5d76c..00000000 --- a/wavefront/Chart.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: v2 -name: wavefront -description: Wavefront Collector for Kubernetes -appVersion: 1.16.0 -version: 1.16.2 -keywords: -- metric -- monitoring -- observability -- alerting -home: https://www.wavefront.com -sources: -- https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes -- https://github.com/wavefrontHQ/wavefront-proxy -maintainers: - - name: akodali18 - email: akodali@vmware.com - - name: ginwoopak - email: pginwoo@vmware.com - - name: iplay88keys - email: jalvis@vmware.com - - name: jerrybelmonte - email: bjerry@vmware.com - - name: johncornish - email: jcornish@vmware.com - - name: josephgee - email: jgee@vmware.com - - name: jyuqi - email: jyuqi@vmware.com - - name: m25n - email: matthewco@vmware.com - - name: mmichael - email: mamichael@vmware.com - - name: priyaselvaganesan - email: pselvaganesa@vmware.com -dependencies: - - name: kube-state-metrics - version: ^4.16.0 - repository: https://prometheus-community.github.io/helm-charts - condition: kubeStateMetrics.enabled diff --git a/wavefront/OWNERS b/wavefront/OWNERS deleted file mode 100644 index 22cfb4ac..00000000 --- a/wavefront/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ -approvers: -- josephgee -reviewers: -- josephgee diff --git a/wavefront/README.md b/wavefront/README.md deleted file mode 100644 index 91a3444e..00000000 --- a/wavefront/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# Wavefront Collector for Kubernetes - -**Note:** We deprecated the Helm installed Wavefront Collector for Kubernetes and Wavefront proxy on Feb 28, 2023. -Our new Kubernetes Operator replaces the Helm installed Wavefront Collector for Kubernetes and Wavefront proxy for all -Kubernetes Distributions except for OpenShift Container Platform. For migration instructions and more information, see [Obsolescence -and Remediation](https://docs.wavefront.com/wavefront_obsolescence_policy.html#kubernetes-integration). - -[Wavefront](https://wavefront.com) is a cloud-native monitoring and analytics platform that provides -three dimensional microservices observability with metrics, histograms and OpenTracing-compatible distributed tracing. - -## Introduction - -This chart will deploy the Wavefront Collector for Kubernetes and Wavefront Proxy to your -Kubernetes cluster. You can use this chart to install multiple Wavefront Proxy releases, -though only one Wavefront Collector for Kubernetes per cluster should be used. - -You can learn more about the Wavefront and Kubernetes integration [here](https://docs.wavefront.com/wavefront_kubernetes.html) - -## Installation - -**Helm 3+** - -_If not already done, create a namespace to install this chart_ -``` -helm repo add wavefront https://wavefronthq.github.io/helm/ - -helm repo update - -kubectl create namespace wavefront - -helm install wavefront wavefront/wavefront --namespace wavefront \ - --set clusterName= \ - --set wavefront.url=https://.wavefront.com \ - --set wavefront.token= -``` - -**Helm 2** -``` -helm install wavefront/wavefront --name wavefront --namespace wavefront \ - --set clusterName= \ - --set wavefront.url=https://.wavefront.com \ - --set wavefront.token= -``` - -## Configuration - -The [values.yaml](./values.yaml) file contains information about all configuration -options for this chart. - -The **requried** options are `clusterName`, `wavefront.url` and `wavefront.token`. -You will need to provide values for those options for a successful installation of the chart. - -## Parameters - -The following tables lists the configurable parameters of the Wavefront chart and their default values. - -| Parameter | Description | Default | -|---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| -| `clusterName` | Unique name for the Kubernetes cluster | `KUBERNETES_CLUSTER_NAME` | -| `wavefront.url` | Wavefront URL for your cluster | `https://YOUR_CLUSTER.wavefront.com` | -| `wavefront.token` | Wavefront API Token | `YOUR_API_TOKEN` | -| `collector.enabled` | Setup and enable the Wavefront collector to gather metrics | `true` | -| `collector.image.repository` | Wavefront collector image registry and name | `projects.registry.vmware.com/tanzu_observability/kubernetes-collector` | -| `collector.image.tag` | Wavefront collector image tag | `{TAG_NAME}` | -| `collector.image.pullPolicy` | Wavefront collector image pull policy | `IfNotPresent` | -| `collector.image.updateStrategy` | Wavefront collector updateStrategy | `nil` | -| `collector.useDaemonset` | Use Wavefront collector in Daemonset mode | `true` | -| `collector.maxProx` | Max number of CPU cores that can be used (< 1 for default) | `0` | -| `collector.logLevel` | Min logging level (info, debug, trace) | `info` | -| `collector.interval` | Default metrics collection interval | `60s` | -| `collector.flushInterval` | How often to force a metrics flush | `10s` | -| `collector.sinkDelay` | Timout for exporting data | `10s` | -| `collector.useReadOnlyPort` | Use un-authenticated port for kubelet | `false` | -| `collector.useProxy` | Use a Wavefront Proxy to send metrics through | `true` | -| `collector.proxyAddress` | Non-default Wavefront Proxy address to use, should only be set when `proxy.enabled` is false | `nil` | -| `collector.apiServerMetrics` | Collect metrics about Kubernetes API server | `false` | -| `collector.controlplane.enabled` | Enable control plane metrics [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/metrics.md#control-plane-metrics) | `true` | -| `collector.controlplane.collection.interval`| The collection interval for the control plane metrics | `120s` | -| `collector.kubernetesState` | Collect metrics about Kubernetes resource states [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/metrics.md#kubernetes-state-source) | `true` | -| `collector.cadvisor.enabled` | Enable cAdvisor prometheus endpoint. See the [cAdvisor docs](https://github.com/google/cadvisor/blob/main/docs/storage/prometheus.md) for details on what metrics are available. | `false` | -| `collector.filters` | Filters to apply towards all collected metrics | See values.yaml | -| `collector.tags` | Map of tags (key/value) to add to all metrics collected | `nil` | -| `collector.discovery.enabled` | Rules based and Prometheus endpoints auto-discovery | `true` | -| `collector.discovery.annotationPrefix` | Replaces `prometheus.io` as prefix for annotations of auto-discovered Prometheus endpoints | `prometheus.io` | -| `collector.discovery.enableRuntimeConfigs` | Enable runtime discovery rules [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md#runtime-configurations) | `true` | -| `collector.discovery.annotationExcludes` | Exclude resources from annotation based auto-discovery [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md) | `nil` | -| `collector.discovery.config` | Configuration for rules based auto-discovery [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md) | `nil` | -| `collector.resources` | CPU/Memory resource requests/limits | CPU: `200m`/`200m`, Memory: `10Mi`/`256Mi` | -| `imagePullSecrets` | Enable Wavefront proxy and collector to pull from private image repositories. **Note:** secret must exist in namespace that will be used for the installation. | `nil` | -| `proxy.enabled` | Setup and enable Wavefront proxy to send metrics through | `true` | -| `proxy.image.repository` | Wavefront proxy image registry and name | `projects.registry.vmware.com/tanzu_observability/proxy` | -| `proxy.image.tag` | Wavefront proxy image tag | `{TAG_NAME}` | -| `proxy.image.pullPolicy` | Wavefront proxy image pull policy | `IfNotPresent` | -| `proxy.replicas` | Replicas to deploy for Wavefront proxy (usually 1) | `1` | -| `proxy.port` | Primary port for Wavefront data format metrics | `2878` | -| `proxy.httpProxyHost` | HTTP proxy host to be used in configurations when direct HTTP connections to Wavefront servers are not possible. Must be used with httpProxyPort. | `nil` | -| `proxy.httpProxyPort` | HTTP proxy port to be used in configurations when direct HTTP connections to Wavefront servers are not possible. Must be used with httpProxyHost. | `nil` | -| `proxy.useHttpProxyCAcert` | Enable HTTP proxy with CA cert. Must be used with httpProxyHost and httpProxyPort if set to true [see more](#ca-cert-configuration). | `false` | -| `proxy.httpProxyUser` | When used with httpProxyPassword, sets credentials to use with the HTTP proxy if the proxy requires authentication. | `nil` | -| `proxy.httpProxyPassword` | When used with httpProxyUser, sets credentials to use with the HTTP proxy if the proxy requires authentication. | `nil` | -| `proxy.tracePort` | Port for distributed tracing data (usually 30000) | `nil` | -| `proxy.jaegerPort` | Port for Jaeger format distributed tracing data (usually 30001) | `nil` | -| `proxy.traceJaegerHttpListenerPort` | Port for Jaeger Thrift format data (usually 30080) | `nil` | -| `proxy.traceJaegerGrpcListenerPort` | Port for Jaeger GRPC format data (usually 14250) | `nil` | -| `proxy.zipkinPort` | Port for Zipkin format distribued tracing data (usually 9411) | `nil` | -| `proxy.traceSamplingRate` | Distributed tracing data sampling rate (0 to 1) | `nil` | -| `proxy.traceSamplingDuration` | When set to greater than 0, spans that exceed this duration will force trace to be sampled (ms) | `nil` | -| `proxy.traceJaegerApplicationName` | Custom application name for traces received on Jaeger's traceJaegerListenerPorts or traceJaegerHttpListenerPorts. | `nil` | -| `proxy.traceZipkinApplicationName` | Custom application name for traces received on Zipkin's traceZipkinListenerPorts. | `nil` | -| `proxy.histogramPort` | Port for histogram distribution format data (usually 40000) | `nil` | -| `proxy.histogramMinutePort` | Port to accumulate 1-minute based histograms on Wavefront data format (usually 40001) | `nil` | -| `proxy.histogramHourPort` | Port to accumulate 1-hour based histograms on Wavefront data format (usually 40002) | `nil` | -| `proxy.histogramDayPort` | Port to accumulate 1-day based histograms on Wavefront data format (usually 40003) | `nil` | -| `proxy.deltaCounterPort` | Port to accumulate 1-minute delta counters on Wavefront data format (usually 50000) | `nil` | -| `proxy.args` | Additional Wavefront proxy properties to be passed as command line arguments in the `-- ` format. Multiple properties can be specified. [See more](https://docs.wavefront.com/proxies_configuring.html) | `nil` | -| `proxy.heap` | Wavefront proxy Java heap maximum usage (java -Xmx command line option) | `nil` | -| `proxy.preprocessor.rules.yaml` | YAML configuraiton for Wavefront proxy preprocessor rules. [See more](https://docs.wavefront.com/proxies_preprocessor_rules.html) | `nil` | -| `rbac.create` | Create RBAC resources | `true` | -| `serviceAccount.create` | Create Wavefront service account | `true` | -| `serviceAccount.name` | Name of Wavefront service account | `nil` | -| `kubeStateMetrics.enabled` | Setup and enable Kube State Metrics for collection | `false` | -| `vspheretanzu.enabled` | Enable and create role binding for vSphere with Tanzu kubernetes cluster | `false` | - -## Custom configuration - -### CA cert configuration - -To enable the HTTP proxy with CA cert, you will need to create a Kubernetes secret with your CA cert file: - -```kubectl create secret generic http-proxy-secret -n wavefront --from-file=tls-root-ca-bundle=``` - -You would also need to configure `proxy.httpProxyHost` and `proxy.httpProxyPort` to use your HTTP proxy host and port, -and set `proxy.useHttpProxyCAcert` to `true`. diff --git a/wavefront/examples/discovery-config-values.yaml b/wavefront/examples/discovery-config-values.yaml deleted file mode 100644 index 2f9231bf..00000000 --- a/wavefront/examples/discovery-config-values.yaml +++ /dev/null @@ -1,196 +0,0 @@ -## Discovery configuration examples -## Use the sections below in your values file to enable auto-discovery -## Some of these will require you to sepcify some details specific to your environment such as user/passwords - -## Ensure you include the following object structure (collector.discovery.config), -## then copy / paste the appropriate snippets you need below -collector: - discovery: - config: - - - # activemq - - name: activemq - type: telegraf/activemq - selectors: - images: - - "*activemq*" - port: 8161 - conf: | - server = "${host}" - port = ${port} - username = "admin" - password = "admin" - webadmin = "admin" - - # apache httpd - - name: apache - type: telegraf/apache - selectors: - images: - - 'httpd*' - - '*httpd*' - port: 80 - conf: | - urls = ["http://${host}:${port}/server-status?auto"] - - # consul - - name: consul - type: telegraf/consul - selectors: - images: - - 'consul*' - port: 8500 - conf: | - address = "${host}:${port}" - scheme = "http" - - # couchbase - - name: couchbase - type: telegraf/couchbase - selectors: - images: - - 'couchbase/server:enterprise-6.0.1' - port: 8091 - conf: | - servers = ["http://Administrator:password@${host}:${port}"] - - # couchdb - - name: couchdb - type: telegraf/couchdb - selectors: - images: - - '*couchdb*' - port: 5984 - conf: | - hosts = ["http://admin:password@${host}:${port}/_node/_local/_stats"] - - # elasticsearch - - name: elasticsearch - type: telegraf/elasticsearch - selectors: - images: - - '*elastic*' - port: 9200 - conf: | - servers = ["http://${host}:${port}"] - local = false - cluster_health = true - cluster_stats = true - - # haProxy - - name: haproxy - type: telegraf/haproxy - selectors: - images: - - "*haproxy*" - port: 8181 - conf: | - servers = ["http://username:password@${host}:${port}/haproxy?stats"] - - # memcached - - name: memcached - type: telegraf/memcached - selectors: - images: - - 'memcached:*' - port: 11211 - conf: | - servers = ["${host}:${port}"] - - # mongodb - - name: mongodb - type: telegraf/mongodb - selectors: - images: - - 'mongo*' - port: 27017 - conf: | - servers = ["mongodb://main_admin:abc123@${host}:${port}"] - - # mysql - - name: mysql - type: telegraf/mysql - selectors: - images: - - "mysql*" - collection: - interval: "180s" - port: 3306 - conf: | - servers = ["root:password@tcp(${host}:${port})/?tls=false"] - perf_events_statements_digest_text_limit = 120 - perf_events_statements_limit = 250 - perf_events_statements_time_limit = 86400 - table_schema_databases = [] - gather_process_list = true - gather_table_io_waits = true - gather_table_lock_waits = true - gather_index_io_waits = true - gather_event_waits = true - gather_file_events_stats = true - interval_slow = "30m" - - # nginx - - name: nginx - type: telegraf/nginx - selectors: - images: - - 'nginx*' - port: 80 - conf: | - urls = ["http://${host}:${port}/metrics"] - - # nginx_plus - - name: nginx_plus - type: telegraf/nginx_plus - selectors: - images: - - 'nginxplus*' - conf: | - urls = ["http://${host}/api"] - - # rabbitmq - - name: rabbitmq - type: telegraf/rabbitmq - selectors: - images: - - 'rabbitmq*' - port: 15672 - conf: | - url = "http://${host}:${port}" - username = "guest" - password = "guest" - - # redis master and slaves - - name: redis - type: telegraf/redis - selectors: - images: - - 'redis:*' - - '*redis*' - port: 6379 - scheme: "tcp" - conf: | - servers = ["${server}"] - - # riak - - name: riak - type: telegraf/riak - selectors: - images: - - 'riak-kv:*' - - '*riak-kv:*' - port: 8098 - conf: | - servers = ["http://${host}:${port}"] - - # zookeeper - - name: zookeeper - type: telegraf/zookeeper - selectors: - images: - - '*zookeeper' - port: 2181 - conf: | - servers = ["${host}:${port}"] diff --git a/wavefront/openshift/Chart.yaml b/wavefront/openshift/Chart.yaml deleted file mode 100644 index d945eb85..00000000 --- a/wavefront/openshift/Chart.yaml +++ /dev/null @@ -1,4 +0,0 @@ -annotations: - charts.openshift.io/name: wavefront -kubeVersion: ">= 1.19" -version: 1.13.1 diff --git a/wavefront/openshift/README.md b/wavefront/openshift/README.md deleted file mode 100644 index 619f024c..00000000 --- a/wavefront/openshift/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# Wavefront Collector for Kubernetes - -[Wavefront](https://wavefront.com) is a cloud-native monitoring and analytics platform that provides -three dimensional microservices observability with metrics, histograms and OpenTracing-compatible distributed tracing. - -## Introduction - -This chart will deploy the Wavefront Collector for Kubernetes and Wavefront Proxy to your -OpenShift cluster. You can use this chart to install multiple Wavefront Proxy releases, -though only one Wavefront Collector for OpenShift per cluster should be used. - -You can learn more about the Wavefront and OpenShift integration [here](https://docs.wavefront.com/wavefront_kubernetes.html) - -## Installation - -``` -helm repo add openshift-helm-charts https://charts.openshift.io/ -``` - -``` -helm repo update -``` - -``` -oc new-project wavefront -``` - -``` -helm install wavefront openshift-helm-charts/wavefronthq-wavefront \ - --set wavefront.url=https://YOUR_CLUSTER.wavefront.com \ - --set wavefront.token=YOUR_API_TOKEN \ - --set clusterName= \ - --namespace wavefront -``` - -## Configuration - -The [values.yaml](./values.yaml) file contains information about all configuration -options for this chart. - -The **required** options are `clusterName`, `wavefront.url` and `wavefront.token`. -You will need to provide values for those options for a successful installation of the chart. - -## Parameters - -The following tables lists the configurable parameters of the Wavefront chart and their default values. - -| Parameter | Description | Default | -|---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| -| `clusterName` | Unique name for the OpenShift cluster | `KUBERNETES_CLUSTER_NAME` | -| `wavefront.url` | Wavefront URL for your cluster | `https://YOUR_CLUSTER.wavefront.com` | -| `wavefront.token` | Wavefront API Token | `YOUR_API_TOKEN` | -| `collector.enabled` | Setup and enable the Wavefront collector to gather metrics | `true` | -| `collector.image.repository` | Wavefront collector image registry and name | `registry.connect.redhat.com/wavefronthq/wavefront-kubernetes-collector` | -| `collector.image.tag` | Wavefront collector image tag | `{TAG_NAME}` | -| `collector.image.pullPolicy` | Wavefront collector image pull policy | `IfNotPresent` | -| `collector.image.updateStrategy` | Wavefront collector updateStrategy | `nil` | -| `collector.useDaemonset` | Use Wavefront collector in Daemonset mode | `true` | -| `collector.maxProx` | Max number of CPU cores that can be used (< 1 for default) | `0` | -| `collector.logLevel` | Min logging level (info, debug, trace) | `info` | -| `collector.interval` | Default metrics collection interval | `60s` | -| `collector.flushInterval` | How often to force a metrics flush | `10s` | -| `collector.sinkDelay` | Timout for exporting data | `10s` | -| `collector.useReadOnlyPort` | Use un-authenticated port for kubelet | `false` | -| `collector.useProxy` | Use a Wavefront Proxy to send metrics through | `true` | -| `collector.proxyAddress` | Non-default Wavefront Proxy address to use, should only be set when `proxy.enabled` is false | `nil` | -| `collector.apiServerMetrics` | Collect metrics about OpenShift API server | `false` | -| `collector.controlplane.enabled` | Enable control plane metrics [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/metrics.md#control-plane-metrics) | `true` | -| `collector.controlplane.collection.interval`| The collection interval for the control plane metrics | `120s` | -| `collector.kubernetesState` | Collect metrics about OpenShift resource states [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/metrics.md#kubernetes-state-source) | `true` | -| `collector.cadvisor.enabled` | Enable cAdvisor prometheus endpoint. See the [cAdvisor docs](https://github.com/google/cadvisor/blob/main/docs/storage/prometheus.md) for details on what metrics are available. | `false` | -| `collector.filters` | Filters to apply towards all collected metrics | See values.yaml | -| `collector.tags` | Map of tags (key/value) to add to all metrics collected | `nil` | -| `collector.discovery.enabled` | Rules based and Prometheus endpoints auto-discovery | `true` | -| `collector.discovery.annotationPrefix` | Replaces `prometheus.io` as prefix for annotations of auto-discovered Prometheus endpoints | `prometheus.io` | -| `collector.discovery.enableRuntimeConfigs` | Enable runtime discovery rules [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md#runtime-configurations) | `true` | -| `collector.discovery.annotationExcludes` | Exclude resources from annotation based auto-discovery [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md) | `nil` | -| `collector.discovery.config` | Configuration for rules based auto-discovery [see more](https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md) | `nil` | -| `collector.resources` | CPU/Memory resource requests/limits | CPU: `200m`/`200m`, Memory: `10Mi`/`256Mi` | -| `imagePullSecrets` | Enable Wavefront proxy and collector to pull from private image repositories. **Note:** secret must exist in namespace that will be used for the installation. | `nil` | -| `proxy.enabled` | Setup and enable Wavefront proxy to send metrics through | `true` | -| `proxy.image.repository` | Wavefront proxy image registry and name | `registry.connect.redhat.com/wavefronthq/proxy` | -| `proxy.image.tag` | Wavefront proxy image tag | `{TAG_NAME}` | -| `proxy.image.pullPolicy` | Wavefront proxy image pull policy | `IfNotPresent` | -| `proxy.replicas` | Replicas to deploy for Wavefront proxy (usually 1) | `1` | -| `proxy.port` | Primary port for Wavefront data format metrics | `2878` | -| `proxy.httpProxyHost` | HTTP proxy host to be used in configurations when direct HTTP connections to Wavefront servers are not possible. Must be used with httpProxyPort. | `nil` | -| `proxy.httpProxyPort` | HTTP proxy port to be used in configurations when direct HTTP connections to Wavefront servers are not possible. Must be used with httpProxyHost. | `nil` | -| `proxy.useHttpProxyCAcert` | Enable HTTP proxy with CA cert. Must be used with httpProxyHost and httpProxyPort if set to true [see more](#ca-cert-configuration). | `false` | -| `proxy.httpProxyUser` | When used with httpProxyPassword, sets credentials to use with the HTTP proxy if the proxy requires authentication. | `nil` | -| `proxy.httpProxyPassword` | When used with httpProxyUser, sets credentials to use with the HTTP proxy if the proxy requires authentication. | `nil` | -| `proxy.tracePort` | Port for distributed tracing data (usually 30000) | `nil` | -| `proxy.jaegerPort` | Port for Jaeger format distributed tracing data (usually 30001) | `nil` | -| `proxy.traceJaegerHttpListenerPort` | Port for Jaeger Thrift format data (usually 30080) | `nil` | -| `proxy.traceJaegerGrpcListenerPort` | Port for Jaeger GRPC format data (usually 14250) | `nil` | -| `proxy.zipkinPort` | Port for Zipkin format distribued tracing data (usually 9411) | `nil` | -| `proxy.traceSamplingRate` | Distributed tracing data sampling rate (0 to 1) | `nil` | -| `proxy.traceSamplingDuration` | When set to greater than 0, spans that exceed this duration will force trace to be sampled (ms) | `nil` | -| `proxy.traceJaegerApplicationName` | Custom application name for traces received on Jaeger's traceJaegerListenerPorts or traceJaegerHttpListenerPorts. | `nil` | -| `proxy.traceZipkinApplicationName` | Custom application name for traces received on Zipkin's traceZipkinListenerPorts. | `nil` | -| `proxy.histogramPort` | Port for histogram distribution format data (usually 40000) | `nil` | -| `proxy.histogramMinutePort` | Port to accumulate 1-minute based histograms on Wavefront data format (usually 40001) | `nil` | -| `proxy.histogramHourPort` | Port to accumulate 1-hour based histograms on Wavefront data format (usually 40002) | `nil` | -| `proxy.histogramDayPort` | Port to accumulate 1-day based histograms on Wavefront data format (usually 40003) | `nil` | -| `proxy.deltaCounterPort` | Port to accumulate 1-minute delta counters on Wavefront data format (usually 50000) | `nil` | -| `proxy.args` | Additional Wavefront proxy properties to be passed as command line arguments in the `-- ` format. Multiple properties can be specified. [See more](https://docs.wavefront.com/proxies_configuring.html) | `nil` | -| `proxy.heap` | Wavefront proxy Java heap maximum usage (java -Xmx command line option) | `nil` | -| `proxy.preprocessor.rules.yaml` | YAML configuraiton for Wavefront proxy preprocessor rules. [See more](https://docs.wavefront.com/proxies_preprocessor_rules.html) | `nil` | -| `rbac.create` | Create RBAC resources | `true` | -| `serviceAccount.create` | Create Wavefront service account | `true` | -| `serviceAccount.name` | Name of Wavefront service account | `nil` | -| `kubeStateMetrics.enabled` | Setup and enable Kube State Metrics for collection | `false` | - -## Custom configuration - -### CA cert configuration - -To enable the HTTP proxy with CA cert, you will need to create a Kubernetes secret with your CA cert file: - -```kubectl create secret generic http-proxy-secret -n wavefront --from-file=tls-root-ca-bundle=``` - -You would also need to configure `proxy.httpProxyHost` and `proxy.httpProxyPort` to use your HTTP proxy host and port, -and set `proxy.useHttpProxyCAcert` to `true`. diff --git a/wavefront/openshift/VERSION b/wavefront/openshift/VERSION deleted file mode 100644 index 45191849..00000000 --- a/wavefront/openshift/VERSION +++ /dev/null @@ -1,2 +0,0 @@ -APP_VERSION="1.13.0" -CHART_VERSION="1.13.1" \ No newline at end of file diff --git a/wavefront/openshift/bump-version.sh b/wavefront/openshift/bump-version.sh deleted file mode 100755 index 60088b01..00000000 --- a/wavefront/openshift/bump-version.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -e - -cd "$(dirname "$0")" -source ./VERSION - -OLD_APP_VERSION=$APP_VERSION -OLD_CHART_VERSION=$CHART_VERSION - -# Create a branch with the new chart version name -GIT_BRANCH="wavefront-bump-openshift-${NEW_CHART_VERSION}" -git checkout -b $GIT_BRANCH - -# Update VERSION file with new versions -sed -i "s/APP_VERSION=\"${OLD_APP_VERSION}\"/APP_VERSION=\"${NEW_APP_VERSION}\"/g" VERSION -sed -i "s/CHART_VERSION=\"${OLD_CHART_VERSION}\"/CHART_VERSION=\"${NEW_CHART_VERSION}\"/g" VERSION - -# Bump app version -sed -i "s/appVersion: ${OLD_APP_VERSION}/appVersion: ${NEW_APP_VERSION}/g" Chart.yaml -sed -i "s/${OLD_APP_VERSION}/${NEW_APP_VERSION}/g" values.yaml - -## Bump chart version -sed -i "s/version: ${OLD_CHART_VERSION}/version: ${NEW_CHART_VERSION}/g" Chart.yaml -sed -i "s/${OLD_CHART_VERSION}/${NEW_CHART_VERSION}/g" ../release/run-chart-verifier-generate-report.sh - -git commit -am "Bump OpenShift helm chart version to $NEW_CHART_VERSION" - -git push --set-upstream origin $GIT_BRANCH - -PR_URL=$(curl \ - -X POST \ - -H "Authorization: token ${GITHUB_CREDS_PSW}" \ - -d "{\"head\":\"${GIT_BRANCH}\",\"base\":\"master\",\"title\":\"Bump Openshift helm chart version to ${NEW_CHART_VERSION}\",\"body\":\" ## Review checklist: \n - [ ] Verify modifications to wavefront/openshift/values.yaml are reflected in wavefront/values.schema.json \n - [ ] Verify any wavefront/README.md changes have made it to wavefront/openshift/README.md \n **Note**: Openshift does not support the option vspheretanzu.enabled so that will always be missing from the wavefront/openshift/README.md \"}" \ - https://api.github.com/repos/wavefrontHQ/helm/pulls | - jq -r '.html_url') - -echo "Next Human Steps :: Please verify and merge PR - ${PR_URL}" - diff --git a/wavefront/openshift/openshift-build-report.sh b/wavefront/openshift/openshift-build-report.sh deleted file mode 100755 index 381c04bb..00000000 --- a/wavefront/openshift/openshift-build-report.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -ex - -# Runs the chart-verifier test -# TODO: Revisit if we should send password (install other tools like sshpass?) -# TODO-cont: or setup ssh keys in the VM instead -# TODO-cont: or use a Jenkins plugin - -#sudo yum install sshpass -sshpass -p "${OPENSHIFT_VM_PSW}" ssh -o StrictHostKeyChecking=no root@${OPENSHIFT_VM_IP} 'bash -s' < wavefront/openshift/test-and-generate-report.sh ${WAVEFRONT_TOKEN} - diff --git a/wavefront/openshift/openshift-release.sh b/wavefront/openshift/openshift-release.sh deleted file mode 100755 index 57da9110..00000000 --- a/wavefront/openshift/openshift-release.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -ex - -REPO_ROOT=$(git rev-parse --show-toplevel) -source ${REPO_ROOT}/wavefront/openshift/VERSION -# 1st time only - Create a fork for openshift-helm-charts/charts repo via jenkins. -#sh ''' -# PR_URL=$(curl \ -# -X POST \ -# -u "svc.wf-jenkins:${TOKEN}" \ -# "https://api.github.com/repos/openshift-helm-charts/charts/forks") -#''' -# - -git clone https://github.com/wf-jenkins/charts.git -cd charts -git config --global user.email "svc.wf-jenkins@vmware.com" -git config --global user.name "svc.wf-jenkins" -git remote set-url origin https://${GITHUB_CREDS_PSW}@github.com/wf-jenkins/charts.git - -# Reset main branch on forked repo with upstream -git remote add upstream https://github.com/openshift-helm-charts/charts -git fetch upstream -git checkout main -git reset --hard upstream/main -git push origin main --force - -# Update fork with the new chart version. -GIT_BRANCH=main -echo ${CHART_VERSION} -mkdir charts/partners/wavefronthq/wavefront/${CHART_VERSION} -echo "downloading tgz" -sshpass -p "${OPENSHIFT_VM_PSW}" scp root@${OPENSHIFT_VM_IP}:/root/workspace/helm/_build/wavefront-${CHART_VERSION}.tgz charts/partners/wavefronthq/wavefront/${CHART_VERSION} -echo "downloading report" -sshpass -p "${OPENSHIFT_VM_PSW}" scp root@${OPENSHIFT_VM_IP}:/root/workspace/helm/_build/report.yaml charts/partners/wavefronthq/wavefront/${CHART_VERSION} - -# Commit and push the change to your forked version -# Create a new PR against https://github.com/openshift-helm-charts/charts and this should trigger the openshift pipeline - -git add . && git commit -am "Build openshift wavefront chart release : ${CHART_VERSION}" -git push origin $GIT_BRANCH - -PR_URL=$(curl \ - -X POST \ - -H "Authorization: token ${GITHUB_CREDS_PSW}" \ - -d "{\"head\":\"wf-jenkins:${GIT_BRANCH}\",\"base\":\"main\",\"title\":\"Build openshift wavefront chart release ${CHART_VERSION}\"}" \ - https://api.github.com/repos/openshift-helm-charts/charts/pulls | - jq -r '.html_url') - -echo "Next Human Steps :: Please monitor openshift pipeline for PR - ${PR_URL}" - - - diff --git a/wavefront/openshift/test-and-generate-report.sh b/wavefront/openshift/test-and-generate-report.sh deleted file mode 100755 index 98394f76..00000000 --- a/wavefront/openshift/test-and-generate-report.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -ex - -WAVEFRONT_TOKEN=$1 - -if ! [ -x "$(command -v yq)" ]; then - curl -H "Authorization: token ${GITHUB_CREDS_PSW}" -L "https://github.com/mikefarah/yq/releases/download/v4.27.3/yq_linux_amd64" > ./yq - chmod +x ./yq - sudo mv ./yq /usr/local/bin -fi - -cd ~/workspace/helm -git clean -dfx -git checkout master -# Also make sure you are in a clean state -git checkout . -git pull -rm -rf _build/* -# Update Chart.yaml and values.yaml template values for OpenShift -yq ea '. as $item ireduce ({}; . * $item )' wavefront/Chart.yaml wavefront/openshift/Chart.yaml > merged-Chart.yaml -mv merged-Chart.yaml wavefront/Chart.yaml -yq ea '. as $item ireduce ({}; . * $item )' wavefront/values.yaml wavefront/openshift/values.yaml > merged-values.yaml -mv merged-values.yaml wavefront/values.yaml -cp wavefront/openshift/README.md wavefront/README.md - -oc project wavefront -helm uninstall wavefront || true -cd wavefront -helm dependency update -cd .. -./release.sh wavefront - -export FRESH_INSTALL_CLUSTER_NAME="openshift-helm-test-$(date +%Y%m%d%H%M%S)" -helm install wavefront ./wavefront --namespace wavefront \ ---set clusterName=$FRESH_INSTALL_CLUSTER_NAME \ ---set wavefront.url=https://nimba.wavefront.com \ ---set wavefront.token=${WAVEFRONT_TOKEN} - -# Ensure that collector/proxy are at the correct version and the metrics are getting to nimba, then -# TODO: Future (upgrade and downgrade test) -REPO_ROOT=$(git rev-parse --show-toplevel) -${REPO_ROOT}/wavefront/openshift/test-wavefront-metrics.sh -t ${WAVEFRONT_TOKEN} -n ${FRESH_INSTALL_CLUSTER_NAME} - -helm uninstall wavefront || true - -# Run ./wavefront/release/run-chart-verifier-generate-report.sh to generate report.yaml under _build directory. -./wavefront/release/run-chart-verifier-generate-report.sh - -cat _build/report.yaml - -# Ensure that all checks pass! -# sort _build/report.yaml | uniq -c | grep 'outcome: PASS' -if grep -q "outcome: FAIL" "_build/report.yaml" ; then - echo 'ERROR :: Chart verification failed ' ; - exit 1 -else - echo 'Chart verifier - All checks passed' ; -fi - -exit \ No newline at end of file diff --git a/wavefront/openshift/test-wavefront-metrics.sh b/wavefront/openshift/test-wavefront-metrics.sh deleted file mode 100755 index 872acb04..00000000 --- a/wavefront/openshift/test-wavefront-metrics.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/bash -ex - -REPO_ROOT=$(git rev-parse --show-toplevel) -source ${REPO_ROOT}/wavefront/openshift/VERSION - -function curl_query_to_wf_dashboard() { - local query=$1 - # NOTE: any output inside this function is concatenated and used as the return value; - # otherwise we would love to put a log such as this in here to give us more information: - # echo "=============== Querying '$WF_CLUSTER' for query '${query}'" - curl -s -X GET --header "Accept: application/json" \ - --header "Authorization: Bearer $WAVEFRONT_TOKEN" \ - "https://$WF_CLUSTER.wavefront.com/api/v2/chart/api?q=${query}&queryType=WQL&s=$AFTER_UNIX_TS&g=s&view=METRIC&sorted=false&cached=true&useRawQK=false" | - jq '.timeseries[0].data[0][1]' -} - -function wait_for_query_match_exact() { - local query_match_exact=$1 - local expected=$2 - local actual - local loop_count=0 - while [[ $loop_count -lt $MAX_QUERY_TIMES ]]; do - loop_count=$((loop_count + 1)) - echo "===============BEGIN checking wavefront dashboard metrics for '$query_match_exact' - attempt $loop_count/$MAX_QUERY_TIMES" - actual=$(curl_query_to_wf_dashboard "${query_match_exact}" | awk '{printf "%.3f", $1}') - echo "Actual is: '$actual'" - echo "Expected is '${expected}'" - echo "===============END checking wavefront dashboard metrics for $query_match_exact" - - if echo "$actual $expected" | awk '{exit ($1 > $2 || $1 < $2)}'; then - return 0 - fi - - sleep $CURL_WAIT - done - - return 1 -} - -function wait_for_query_non_zero() { - local query_non_zero=$1 - local actual=0 - local loop_count=0 - printf "Querying for non-zero..." - while true; do - loop_count=$((loop_count + 1)) - actual=$(curl_query_to_wf_dashboard "${query_non_zero}") - printf "." - if [[ $actual != null && $actual != 0 ]] || [[ $loop_count -eq $MAX_QUERY_TIMES ]]; then - break - fi - sleep $CURL_WAIT - done - echo "done." - - if [[ $actual == null || $actual == 0 ]]; then - echo "Checking wavefront dashboard metrics for $query_non_zero failed after attempting $MAX_QUERY_TIMES times." - echo "Actual is '$actual'" - echo "Expected non zero" - return 1 - fi -} - -function print_usage_and_exit() { - echo "Failure: $1" - echo "Usage: $0 [flags] [options]" - echo -e "\t-c wavefront instance name (default: 'nimba')" - echo -e "\t-t wavefront token (required)" - echo -e "\t-n config cluster name for metric grouping (default: \$(whoami)--release-test)" - echo -e "\t-v collector version (default: load from 'openshift/VERSION')" - exit 1 -} - -function exit_on_fail() { - # shellcheck disable=SC2068 - $@ # run all arguments as a command - local exit_code=$? - if [[ $exit_code != 0 ]]; then - # shellcheck disable=SC2145 - echo "Command '$@' exited with exit code '$exit_code'" - exit $exit_code - fi -} - -function wait_for_cluster_ready_openshift() { - echo "Waiting for all Pods to be 'Ready'" - # The below kubectl command queries the wavefront namespace because openshift considers - # it as the configured ns when we run "oc project wavefront" - while ! kubectl wait --for=condition=Ready pod --all -l exclude-me!=true &> /dev/null; do - echo "Waiting for all Pods to be 'Ready'" - sleep 5 - done - echo "All Pods are Ready" -} - -function main() { - cd "$(dirname "$0")" # hack/kustomize - - local AFTER_UNIX_TS="$(date '+%s')000" - local MAX_QUERY_TIMES=30 - local CURL_WAIT=15 - - # REQUIRED - local WAVEFRONT_TOKEN= - - local WF_CLUSTER=nimba - local EXPECTED_VERSION=${APP_VERSION} - - while getopts ":c:t:n:v:" opt; do - case $opt in - c) - WF_CLUSTER="$OPTARG" - ;; - t) - WAVEFRONT_TOKEN="$OPTARG" - ;; - n) - CONFIG_CLUSTER_NAME="$OPTARG" - ;; - v) - EXPECTED_VERSION="$OPTARG" - ;; - \?) - print_usage_and_exit "Invalid option: -$OPTARG" - ;; - esac - done - - if [[ -z ${WAVEFRONT_TOKEN} ]]; then - print_msg_and_exit "wavefront token required" - fi - - if [[ -z ${CONFIG_CLUSTER_NAME} ]]; then - print_msg_and_exit "config cluster name required" - fi - - local VERSION_IN_DECIMAL="${EXPECTED_VERSION%.*}" - local VERSION_IN_DECIMAL+="$(echo "${EXPECTED_VERSION}" | cut -d '.' -f3)" - local VERSION_IN_DECIMAL="$(echo "${VERSION_IN_DECIMAL}" | sed 's/0$//')" - - wait_for_cluster_ready_openshift - - exit_on_fail wait_for_query_match_exact "ts(kubernetes.collector.version%2C%20cluster%3D%22${CONFIG_CLUSTER_NAME}%22%20AND%20installation_method%3D%22openshift-helm%22)" "${VERSION_IN_DECIMAL}" - exit_on_fail wait_for_query_non_zero "ts(kubernetes.cluster.pod.count%2C%20cluster%3D%22${CONFIG_CLUSTER_NAME}%22)" -} - -main $@ diff --git a/wavefront/openshift/values.yaml b/wavefront/openshift/values.yaml deleted file mode 100644 index b42ffd96..00000000 --- a/wavefront/openshift/values.yaml +++ /dev/null @@ -1,26 +0,0 @@ -installationMethod: openshift-helm - -collector: - enabled: true - image: - repository: registry.connect.redhat.com/wavefronthq/wavefront-kubernetes-collector - tag: "1.13.0" - pullPolicy: IfNotPresent - discovery: - # Exclude resources from annotation-based discovery - annotationExcludes: - - resourceType: "service" - # namespaces to filter resources by. Provided as a list of glob pattern strings. - namespaces: - - "openshift-*" -proxy: - enabled: true - image: - repository: registry.connect.redhat.com/wavefronthq/proxy - tag: "12.3" - pullPolicy: IfNotPresent - -openshift: - enabled: true - -testCollectorImage: registry.connect.redhat.com/seldonio/kubectl diff --git a/wavefront/release/VERSION b/wavefront/release/VERSION deleted file mode 100644 index ddee6f5c..00000000 --- a/wavefront/release/VERSION +++ /dev/null @@ -1,2 +0,0 @@ -APP_VERSION="1.16.0" -CHART_VERSION="1.16.2" \ No newline at end of file diff --git a/wavefront/release/bump-version.sh b/wavefront/release/bump-version.sh deleted file mode 100755 index 3564a9b7..00000000 --- a/wavefront/release/bump-version.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -e - -cd "$(dirname "$0")" -source ./VERSION - -OLD_APP_VERSION=$APP_VERSION -OLD_CHART_VERSION=$CHART_VERSION - -# Create a branch with the new chart version name -GIT_BRANCH="wavefront-bump-${NEW_CHART_VERSION}" -git checkout -b $GIT_BRANCH - -# Update VERSION file with new versions -sed -i "s/APP_VERSION=\"${OLD_APP_VERSION}\"/APP_VERSION=\"${NEW_APP_VERSION}\"/g" VERSION -sed -i "s/CHART_VERSION=\"${OLD_CHART_VERSION}\"/CHART_VERSION=\"${NEW_CHART_VERSION}\"/g" VERSION - -# Bump app version -sed -i "s/appVersion: ${OLD_APP_VERSION}/appVersion: ${NEW_APP_VERSION}/g" ../Chart.yaml -sed -i "s/${OLD_APP_VERSION}/${NEW_APP_VERSION}/g" ../values.yaml - -## Bump chart version -sed -i "s/version: ${OLD_CHART_VERSION}/version: ${NEW_CHART_VERSION}/g" ../Chart.yaml - -git commit -am "Bump helm chart version to $NEW_CHART_VERSION" - -git push --set-upstream origin $GIT_BRANCH - -PR_URL=$(curl \ - -X POST \ - -H "Authorization: token ${TOKEN}" \ - -d "{\"head\":\"${GIT_BRANCH}\",\"base\":\"master\",\"title\":\"Bump helm chart version to ${NEW_CHART_VERSION}\"}" \ - https://api.github.com/repos/wavefrontHQ/helm/pulls | - jq -r '.html_url') - -echo "Next Human Steps :: Please verify and merge PR - ${PR_URL}" \ No newline at end of file diff --git a/wavefront/release/create-release-pr.sh b/wavefront/release/create-release-pr.sh deleted file mode 100755 index b7781400..00000000 --- a/wavefront/release/create-release-pr.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -e - -cd "$(dirname "$0")" - -helm repo add stable https://charts.helm.sh/stable - -source ./VERSION - -cd .. # ./wavefront -helm dependency update - -cd .. # ./ -./release.sh wavefront - -GIT_BRANCH="gh-pages-${NEW_CHART_VERSION}" - -git fetch -git checkout -b $GIT_BRANCH origin/gh-pages -mv ./_build/* . -git add . && git commit -am "Build github pages release for ${NEW_CHART_VERSION}" -git push --set-upstream origin $GIT_BRANCH - -PR_URL=$(curl \ - -X POST \ - -H "Authorization: token ${TOKEN}" \ - -d "{\"head\":\"${GIT_BRANCH}\",\"base\":\"gh-pages\",\"title\":\"Build github pages release for ${NEW_CHART_VERSION}\"}" \ - https://api.github.com/repos/wavefrontHQ/helm/pulls | - jq -r '.html_url') - -echo "PR URL: ${PR_URL}" \ No newline at end of file diff --git a/wavefront/release/k8s-utils.sh b/wavefront/release/k8s-utils.sh deleted file mode 100644 index c8c05617..00000000 --- a/wavefront/release/k8s-utils.sh +++ /dev/null @@ -1,35 +0,0 @@ -function green() { - echo -e $'\e[32m'$1$'\e[0m' -} - -function red() { - echo -e $'\e[31m'$1$'\e[0m' -} - -function yellow() { - echo -e $'\e[1;33m'$1$'\e[0m' -} - -function print_msg_and_exit() { - red "$1" - exit 1 -} - -function pushd_check() { - local d=$1 - pushd ${d} || print_msg_and_exit "Entering directory '${d}' with 'pushd' failed!" -} - -function popd_check() { - local d=$1 - popd || print_msg_and_exit "Leaving '${d}' with 'popd' failed!" -} - -function wait_for_cluster_ready() { - echo "Waiting for all Pods to be 'Ready'" - while ! kubectl wait --for=condition=Ready pod --all -l exclude-me!=true --all-namespaces &> /dev/null; do - echo "Waiting for all Pods to be 'Ready'" - sleep 5 - done - echo "All Pods are Ready" -} diff --git a/wavefront/release/npm-env.sh b/wavefront/release/npm-env.sh deleted file mode 100644 index 37b13c24..00000000 --- a/wavefront/release/npm-env.sh +++ /dev/null @@ -1 +0,0 @@ -PATH=$PATH:${PWD}/node-v16.14.0-linux-x64/bin diff --git a/wavefront/release/run-chart-verifier-generate-report.sh b/wavefront/release/run-chart-verifier-generate-report.sh deleted file mode 100755 index d2436f71..00000000 --- a/wavefront/release/run-chart-verifier-generate-report.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -ex - -REPO_ROOT=$(git rev-parse --show-toplevel) -source "$REPO_ROOT"/wavefront/release/k8s-utils.sh - -cd "$REPO_ROOT" - -yellow "NOTE: Ensure that your current kube config is targeting a clean environment with an IP accessible from the docker container" -yellow "NOTE: Typical usage would be to set your context to a GKE or EKS cluster" - -pushd "$REPO_ROOT/wavefront" -helm dependency update -popd - -${REPO_ROOT}/release.sh wavefront - -if [[ -z "${KUBECONFIG}" ]]; then - KUBE_CONFIG_PATH="~/.kube/config" -else - KUBE_CONFIG_PATH="${KUBECONFIG}" -fi - -VERIFY_YAML=$(podman run --rm --net=host \ - -v "$REPO_ROOT":/charts:z \ - -v "${KUBE_CONFIG_PATH}":/etc/kubernetes/config:z \ - -e KUBECONFIG=/etc/kubernetes/config \ - quay.io/redhat-certification/chart-verifier verify \ - --set chart-testing.namespace=wavefront \ - --openshift-version 4.9 \ - --output yaml \ - --chart-set clusterName=test,wavefront.url=test,wavefront.token=test \ - "/charts/_build/wavefront-1.13.1.tgz" 2>&1) - -echo "${VERIFY_YAML}" >"${REPO_ROOT}/_build/report.yaml" - -kubectl delete serviceaccount test-collector -n wavefront &>/dev/null || true -kubectl delete rolebinding test-collector -n wavefront &>/dev/null || true -kubectl delete role test-collector -n wavefront &>/dev/null || true diff --git a/wavefront/release/run-chart-verifier-test.sh b/wavefront/release/run-chart-verifier-test.sh deleted file mode 100755 index c97a7ef2..00000000 --- a/wavefront/release/run-chart-verifier-test.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash -set -e - -REPO_ROOT=$(git rev-parse --show-toplevel) -source "$REPO_ROOT"/wavefront/release/k8s-utils.sh - -cd "$REPO_ROOT" - -yellow "NOTE: Ensure that your current kube config is targeting a clean environment with an IP accessible from the docker container" -yellow "NOTE: Typical usage would be to set your context to a GKE or EKS cluster" - -pushd "$REPO_ROOT/wavefront" - helm dependency update -popd - -${REPO_ROOT}/release.sh wavefront - -VERIFY_JSON=$(docker run --rm \ - -v "$REPO_ROOT":/charts \ - -v ~/.kube/config:/etc/kubernetes/config -e KUBECONFIG=/etc/kubernetes/config \ - quay.io/redhat-certification/chart-verifier verify \ - --set chart-testing.namespace=wavefront \ - --openshift-version 4.9 \ - --output json \ - --chart-set clusterName=test,wavefront.url=test,wavefront.token=test \ - /charts/wavefront 2>&1 ) - -REPORTER_QUERY=$(cat <<-'EOF' - .results[] | - [ if .outcome == "PASS" - then ("\u001b[32m " + .outcome + "\u001b[0m") - else ("\u001b[31m " + .outcome + "\u001b[0m") - end - , .reason + " (" + .check + ")" - ] | @tsv -EOF -) - -echo "$VERIFY_JSON" | jq -r "$REPORTER_QUERY" - -PASSED=$(echo "$VERIFY_JSON" | jq -r '[.results[] | select(.outcome == "PASS")] | length') -TOTAL=$(echo "$VERIFY_JSON" | jq -r '.results | length') - -echo "$PASSED / $TOTAL passed" - -kubectl delete serviceaccount test-collector -n wavefront &>/dev/null || true -kubectl delete rolebinding test-collector -n wavefront &>/dev/null || true -kubectl delete role test-collector -n wavefront &>/dev/null || true - -[ "$PASSED" -eq "$TOTAL" ] || (exit 1) \ No newline at end of file diff --git a/wavefront/release/run-e2e-tests.sh b/wavefront/release/run-e2e-tests.sh deleted file mode 100755 index 4322324d..00000000 --- a/wavefront/release/run-e2e-tests.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/bash -e - -REPO_ROOT=$(git rev-parse --show-toplevel) -source ${REPO_ROOT}/wavefront/release/k8s-utils.sh -source ${REPO_ROOT}/wavefront/release/VERSION - -function print_usage_and_exit() { - echo "Failure: $1" - echo "Usage: $0 [flags] [options]" - echo -e "\t-c wavefront instance name (default: 'nimba')" - echo -e "\t-t wavefront token (required)" - echo -e "\t-v latest chart version (default: CHART_VERSION in ./wavefront/release/VERSION)" - echo -e "\t-n config cluster name for metric grouping (default: \$(whoami)--release-test)" - echo -e "\t-p previously released chart version to test upgrading and downgrading with (required)" - exit 1 -} - -function main() { - - # REQUIRED - local WAVEFRONT_TOKEN= - - local WF_CLUSTER=nimba - local VERSION=${CHART_VERSION} - local CONFIG_CLUSTER_NAME=$(whoami)-${VERSION}-release-test - - while getopts ":c:t:v:n:p:" opt; do - case $opt in - c) - WF_CLUSTER="$OPTARG" - ;; - t) - WAVEFRONT_TOKEN="$OPTARG" - ;; - v) - VERSION="$OPTARG" - ;; - n) - CONFIG_CLUSTER_NAME="$OPTARG" - ;; - p) - PREVIOUSLY_RELEASED_CHART_VERSION="$OPTARG" - ;; - \?) - print_usage_and_exit "Invalid option: -$OPTARG" - ;; - esac - done - - if [[ -z ${WAVEFRONT_TOKEN} ]]; then - print_usage_and_exit "wavefront token required" - fi - - if [[ -z ${PREVIOUSLY_RELEASED_CHART_VERSION} ]]; then - print_usage_and_exit "previously released chart version required" - fi - - cd $REPO_ROOT - helm repo add stable https://charts.helm.sh/stable - helm lint wavefront - rm -rf _build - pushd wavefront - helm dependency update - popd - - ./release.sh wavefront - helm repo update - - kubectl delete clusterrolebinding wavefront-collector &>/dev/null || true - kubectl delete clusterrole wavefront-collector &>/dev/null || true - - helm uninstall wavefront --namespace wavefront &>/dev/null || true - - kubectl create namespace wavefront &>/dev/null || true - - echo "Testing fresh install of v${VERSION}" - local FRESH_INSTALL_CLUSTER_NAME="${CONFIG_CLUSTER_NAME}-$(date +%Y%m%d%H%M%S)" - helm install wavefront ${REPO_ROOT}/wavefront --namespace wavefront \ - --set clusterName=${FRESH_INSTALL_CLUSTER_NAME} \ - --set wavefront.url=https://${WF_CLUSTER}.wavefront.com \ - --set wavefront.token=${WAVEFRONT_TOKEN} \ - --set collector.cadvisor.enabled=true > /dev/null - - helm test wavefront -n wavefront --timeout 60s - - echo "Running test-wavefront-metrics" - - ${REPO_ROOT}/wavefront/release/test-wavefront-metrics.sh -t ${WAVEFRONT_TOKEN} -n ${FRESH_INSTALL_CLUSTER_NAME} - - echo "Testing upgrading from v${PREVIOUSLY_RELEASED_CHART_VERSION} to v${VERSION}" - helm uninstall wavefront --namespace wavefront > /dev/null - - local UPGRADE_CLUSTER_NAME=$(whoami)-${PREVIOUSLY_RELEASED_CHART_VERSION}-release-test-upgrade-$(date +%Y%m%d%H%M%S) - - helm install wavefront https://wavefronthq.github.io/helm/wavefront-${PREVIOUSLY_RELEASED_CHART_VERSION}.tgz --namespace wavefront \ - --set clusterName=${UPGRADE_CLUSTER_NAME} \ - --set wavefront.url=https://${WF_CLUSTER}.wavefront.com \ - --set wavefront.token=${WAVEFRONT_TOKEN} \ - --set collector.cadvisor.enabled=true > /dev/null - - helm upgrade wavefront ${REPO_ROOT}/wavefront --namespace wavefront \ - --set clusterName=${UPGRADE_CLUSTER_NAME} \ - --set wavefront.url=https://${WF_CLUSTER}.wavefront.com \ - --set wavefront.token=${WAVEFRONT_TOKEN} \ - --set collector.cadvisor.enabled=true > /dev/null - - ${REPO_ROOT}/wavefront/release/test-wavefront-metrics.sh -t ${WAVEFRONT_TOKEN} -n ${UPGRADE_CLUSTER_NAME} - - echo "Testing downgrading from v${VERSION} to v${PREVIOUSLY_RELEASED_CHART_VERSION}" - local DOWNGRADE_CLUSTER_NAME=$(whoami)-${PREVIOUSLY_RELEASED_CHART_VERSION}-release-test-downgrade-$(date +%Y%m%d%H%M%S) - - helm upgrade wavefront https://wavefronthq.github.io/helm/wavefront-${PREVIOUSLY_RELEASED_CHART_VERSION}.tgz --namespace wavefront \ - --set clusterName=${DOWNGRADE_CLUSTER_NAME} \ - --set wavefront.url=https://${WF_CLUSTER}.wavefront.com \ - --set wavefront.token=${WAVEFRONT_TOKEN} \ - --set collector.cadvisor.enabled=true > /dev/null - - local DOWNGRADE_COLLECTOR_VERSION=$(curl -s -X 'GET' "https://artifacthub.io/api/v1/packages/helm/wavefront/wavefront/${PREVIOUSLY_RELEASED_CHART_VERSION}" -H 'accept: application/json' | jq -r '.app_version') - ${REPO_ROOT}/wavefront/release/test-wavefront-metrics.sh -t ${WAVEFRONT_TOKEN} -n ${DOWNGRADE_CLUSTER_NAME} -v ${DOWNGRADE_COLLECTOR_VERSION} - - green "Success!" -} - -main "$@" diff --git a/wavefront/release/setup-for-integration-test.sh b/wavefront/release/setup-for-integration-test.sh deleted file mode 100755 index 3a58992c..00000000 --- a/wavefront/release/setup-for-integration-test.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -e - -# -# gcloud -# -if ! [ -x "$(command -v gcloud)" ]; then - curl https://sdk.cloud.google.com > install.sh - chmod +x ./install.sh - sudo PREFIX=$HOME ./install.sh --disable-prompts >/dev/null; - sudo /home/worker/google-cloud-sdk/bin/gcloud components install gke-gcloud-auth-plugin >/dev/null -fi - -gcloud auth activate-service-account --key-file "$GCP_CREDS" -gcloud config set project wavefront-gcp-dev - -# -# aws -# -if ! [ -x "$(command -v aws)" ]; then - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - unzip awscliv2.zip - sudo ./aws/install >/dev/null; -fi - -# -# docker-credential-gcr -# -curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v2.0.0/docker-credential-gcr_linux_amd64-2.0.0.tar.gz" \ - | tar xz --to-stdout ./docker-credential-gcr | sudo tee /usr/local/bin/docker-credential-gcr >/dev/null -sudo chmod +x /usr/local/bin/docker-credential-gcr -docker-credential-gcr config --token-source="gcloud" -docker-credential-gcr configure-docker --registries="us.gcr.io" -(echo "https://us.gcr.io" | docker-credential-gcr get >/dev/null) \ - || (echo "docker credentials not configured properly"; exit 1) - -# -# kubectl -# -#curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" -curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectl" -chmod +x ./kubectl -sudo mv ./kubectl /usr/local/bin/kubectl - -# -# jq -# -if ! [ -x "$(command -v jq)" ]; then - curl -H "Authorization: token ${GITHUB_CREDS_PSW}" -L "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64" > ./jq - chmod +x ./jq - sudo mv ./jq /usr/local/bin -fi - -# -# helm -# -curl https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz | tar xz --to-stdout linux-amd64/helm | sudo tee /usr/local/bin/helm >/dev/null -sudo chmod +x /usr/local/bin/helm - -# -# kustomize -# -if ! [ -x "$(command -v kustomize)" ]; then - curl -H "Authorization: token ${GITHUB_CREDS_PSW}" -L -s "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.4.0/kustomize_v4.4.0_linux_amd64.tar.gz" \ - | tar xz --to-stdout \ - | sudo tee /usr/local/bin/kustomize >/dev/null - sudo chmod +x /usr/local/bin/kustomize -fi diff --git a/wavefront/release/setup-for-release.sh b/wavefront/release/setup-for-release.sh deleted file mode 100755 index aa30cd2c..00000000 --- a/wavefront/release/setup-for-release.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -ex - -# -# jq -# -if ! [ -x "$(command -v jq)" ]; then - curl -H "Authorization: token ${GITHUB_CREDS_PSW}" -L "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64" > ./jq - chmod +x ./jq - sudo mv ./jq /usr/local/bin -fi - -# -# yq -# -if ! [ -x "$(command -v yq)" ]; then - curl -H "Authorization: token ${GITHUB_CREDS_PSW}" -L "https://github.com/mikefarah/yq/releases/download/v4.27.3/yq_linux_amd64" > ./yq - chmod +x ./yq - sudo mv ./yq /usr/local/bin -fi - -# -# helm -# -curl https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz | tar xz --to-stdout linux-amd64/helm | sudo tee /usr/local/bin/helm >/dev/null -sudo chmod +x /usr/local/bin/helm \ No newline at end of file diff --git a/wavefront/release/test-wavefront-metrics.sh b/wavefront/release/test-wavefront-metrics.sh deleted file mode 100755 index 9228794c..00000000 --- a/wavefront/release/test-wavefront-metrics.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash -e - -REPO_ROOT=$(git rev-parse --show-toplevel) -source ${REPO_ROOT}/wavefront/release/k8s-utils.sh -source ${REPO_ROOT}/wavefront/release/VERSION - -function curl_query_to_wf_dashboard() { - local query=$1 - # NOTE: any output inside this function is concatenated and used as the return value; - # otherwise we would love to put a log such as this in here to give us more information: - # echo "=============== Querying '$WF_CLUSTER' for query '${query}'" - curl -s -X GET --header "Accept: application/json" \ - --header "Authorization: Bearer $WAVEFRONT_TOKEN" \ - "https://$WF_CLUSTER.wavefront.com/api/v2/chart/api?q=${query}&queryType=WQL&s=$AFTER_UNIX_TS&g=s&view=METRIC&sorted=false&cached=true&useRawQK=false" | - jq '.timeseries[0].data[0][1]' -} - -function wait_for_query_match_exact() { - local query_match_exact=$1 - local expected=$2 - local actual - local loop_count=0 - while [[ $loop_count -lt $MAX_QUERY_TIMES ]]; do - loop_count=$((loop_count + 1)) - echo "===============BEGIN checking wavefront dashboard metrics for '$query_match_exact' - attempt $loop_count/$MAX_QUERY_TIMES" - actual=$(curl_query_to_wf_dashboard "${query_match_exact}" | awk '{printf "%.3f", $1}') - echo "Actual is: '$actual'" - echo "Expected is '${expected}'" - echo "===============END checking wavefront dashboard metrics for $query_match_exact" - - if echo "$actual $expected" | awk '{exit ($1 > $2 || $1 < $2)}'; then - return 0 - fi - - sleep $CURL_WAIT - done - - return 1 -} - -function wait_for_query_non_zero() { - local query_non_zero=$1 - local actual=0 - local loop_count=0 - printf "Querying for non-zero..." - while true; do - loop_count=$((loop_count + 1)) - actual=$(curl_query_to_wf_dashboard "${query_non_zero}") - printf "." - if [[ $actual != null && $actual != 0 ]] || [[ $loop_count -eq $MAX_QUERY_TIMES ]]; then - break - fi - sleep $CURL_WAIT - done - echo "done." - - if [[ $actual == null || $actual == 0 ]]; then - echo "Checking wavefront dashboard metrics for $query_non_zero failed after attempting $MAX_QUERY_TIMES times." - echo "Actual is '$actual'" - echo "Expected non zero" - return 1 - fi -} - -function print_usage_and_exit() { - echo "Failure: $1" - echo "Usage: $0 [flags] [options]" - echo -e "\t-c wavefront instance name (default: 'nimba')" - echo -e "\t-t wavefront token (required)" - echo -e "\t-n config cluster name for metric grouping (default: \$(whoami)--release-test)" - echo -e "\t-v collector version (default: load from 'release/VERSION')" - exit 1 -} - -function exit_on_fail() { - # shellcheck disable=SC2068 - $@ # run all arguments as a command - local exit_code=$? - if [[ $exit_code != 0 ]]; then - # shellcheck disable=SC2145 - echo "Command '$@' exited with exit code '$exit_code'" - exit $exit_code - fi -} - -function main() { - cd "$(dirname "$0")" # hack/kustomize - - local AFTER_UNIX_TS="$(date '+%s')000" - local MAX_QUERY_TIMES=30 - local CURL_WAIT=15 - - # REQUIRED - local WAVEFRONT_TOKEN= - - local WF_CLUSTER=nimba - local EXPECTED_VERSION=${APP_VERSION} - - while getopts ":c:t:n:v:" opt; do - case $opt in - c) - WF_CLUSTER="$OPTARG" - ;; - t) - WAVEFRONT_TOKEN="$OPTARG" - ;; - n) - CONFIG_CLUSTER_NAME="$OPTARG" - ;; - v) - EXPECTED_VERSION="$OPTARG" - ;; - \?) - print_usage_and_exit "Invalid option: -$OPTARG" - ;; - esac - done - - if [[ -z ${WAVEFRONT_TOKEN} ]]; then - print_msg_and_exit "wavefront token required" - fi - - if [[ -z ${CONFIG_CLUSTER_NAME} ]]; then - print_msg_and_exit "config cluster name required" - fi - - local VERSION_IN_DECIMAL="${EXPECTED_VERSION%.*}" - local VERSION_IN_DECIMAL+="$(echo "${EXPECTED_VERSION}" | cut -d '.' -f3)" - local VERSION_IN_DECIMAL="$(echo "${VERSION_IN_DECIMAL}" | sed 's/0$//')" - - wait_for_cluster_ready - - exit_on_fail wait_for_query_match_exact "ts(kubernetes.collector.version%2C%20cluster%3D%22${CONFIG_CLUSTER_NAME}%22%20AND%20installation_method%3D%22helm%22)" "${VERSION_IN_DECIMAL}" - exit_on_fail wait_for_query_non_zero "ts(kubernetes.cluster.pod.count%2C%20cluster%3D%22${CONFIG_CLUSTER_NAME}%22)" -} - -main $@ diff --git a/wavefront/templates/NOTES.txt b/wavefront/templates/NOTES.txt deleted file mode 100644 index 248856aa..00000000 --- a/wavefront/templates/NOTES.txt +++ /dev/null @@ -1,55 +0,0 @@ -{{- $validClusterName := and (.Values.clusterName) (ne .Values.clusterName "KUBERNETES_CLUSTER_NAME") -}} -{{- $validUrl := and (.Values.wavefront.url) (ne .Values.wavefront.url "https://YOUR_CLUSTER.wavefront.com") -}} -{{- $validToken := and (.Values.wavefront.token) (ne .Values.wavefront.token "YOUR_API_TOKEN") -}} - -{{- if not $validClusterName }} - -##### ERROR: -You must set the value for 'clusterName' to uniquely identify this Kubernetes cluster in Wavefront. -##### -{{- end }} - -{{- if .Values.collector.useProxy }} - {{- if and (not .Values.proxy.enabled) (not .Values.collector.proxyAddress) }} - -##### ERROR: -Collector is set to use proxy but `proxy.enabled` is not true and `collector.proxyAddress` is not provided. -##### - {{- end }} -{{- else }} - {{- if or (not $validUrl) (not $validToken) }} - -##### ERROR: -Collector is set to use direct ingestion API but `wavefront.url` or `wavefront.token` are not specified. -##### - {{- end }} -{{- end }} - -{{- if .Values.proxy.enabled }} - {{- if or (not $validUrl) (not $validToken) }} - -##### ERROR: -Proxy is enabled but `wavefront.url` or `wavefront.token` are not specified. -##### - {{- end }} -{{- end }} - - -{{- if or (not $validUrl) (not $validToken) }} - -You did not specify a valid URL or Token for Wavefront. -If you do not have a Wavefront instance you can get a free trial here - -https://www.wavefront.com/sign-up - -If you already have access to Wavefront please specify your URL and Token then try again. -{{- end }} - - -Wavefront is setup and configured to collect metrics from your Kubernetes cluster. You -should see metrics flowing within a few minutes. - -You can visit this dashboard in Wavefront to see your Kubernetes metrics: - -{{ .Values.wavefront.url }}/dashboard/integration-kubernetes-summary - diff --git a/wavefront/templates/_helpers.tpl b/wavefront/templates/_helpers.tpl deleted file mode 100644 index 5bb6ab48..00000000 --- a/wavefront/templates/_helpers.tpl +++ /dev/null @@ -1,61 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "wavefront.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "wavefront.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | 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 "wavefront.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 a name for Wavefront Collector -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "wavefront.collector.fullname" -}} -{{- printf "%s-collector" (include "wavefront.fullname" .) | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a name for Wavefront Proxy -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "wavefront.proxy.fullname" -}} -{{- printf "%s-proxy" (include "wavefront.fullname" .) | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "wavefront.collector.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "wavefront.collector.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - - diff --git a/wavefront/templates/api-token-secret.yaml b/wavefront/templates/api-token-secret.yaml deleted file mode 100644 index f15534d6..00000000 --- a/wavefront/templates/api-token-secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.wavefront.token }} -apiVersion: v1 -kind: Secret -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.fullname" . }} -type: Opaque -data: - api-token: {{ .Values.wavefront.token | b64enc | quote }} -{{- end }} diff --git a/wavefront/templates/collector-cluster-role.yaml b/wavefront/templates/collector-cluster-role.yaml deleted file mode 100644 index 50f3bc56..00000000 --- a/wavefront/templates/collector-cluster-role.yaml +++ /dev/null @@ -1,88 +0,0 @@ -{{- if and .Values.rbac.create .Values.collector.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - kubernetes.io/bootstrapping: rbac-defaults - annotations: - rbac.authorization.kubernetes.io/autoupdate: "true" - name: {{ template "wavefront.collector.fullname" . }} -rules: -{{- if .Values.openshift.enabled }} -- apiGroups: - - security.openshift.io - resourceNames: - - scc-wavefront - resources: - - securitycontextconstraints - verbs: - - use -{{- end }} -- apiGroups: - - "" - resources: - - events - - namespaces - - nodes - - nodes/proxy - - nodes/stats - - nodes/metrics - - pods - - replicationcontrollers - - secrets - - services - - endpoints - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - update - - create - - list - - watch - -{{- if .Values.collector.kubernetesState }} -- apiGroups: - - apps - resources: - - daemonsets - - deployments - - statefulsets - - replicasets - verbs: - - get - - list - - watch -- apiGroups: - - batch - resources: - - jobs - - cronjobs - verbs: - - get - - list - - watch -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -{{- end }} -- nonResourceURLs: ["/metrics"] - verbs: - - get -{{- end }} diff --git a/wavefront/templates/collector-config.yaml b/wavefront/templates/collector-config.yaml deleted file mode 100644 index 75f3c3d8..00000000 --- a/wavefront/templates/collector-config.yaml +++ /dev/null @@ -1,187 +0,0 @@ -{{- if .Values.collector.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.collector.fullname" . }}-config -data: - config.yaml: | - clusterName: {{ .Values.clusterName }} - enableDiscovery: {{ .Values.collector.discovery.enabled }} - enableEvents: {{ .Values.collector.events.enabled }} - defaultCollectionInterval: {{ .Values.collector.interval | default "60s" }} - flushInterval: {{ .Values.collector.flushInterval | default "10s" }} - sinkExportDataTimeout: {{ .Values.collector.sinkDelay | default "20s" }} - - sinks: - {{- if .Values.collector.useProxy }} - {{- if .Values.collector.proxyAddress }} - - proxyAddress: {{ .Values.collector.proxyAddress }} - {{- else }} - - proxyAddress: {{ template "wavefront.proxy.fullname" . }}:{{ .Values.proxy.port }} - {{- end }} - {{- else }} - - server: {{ .Values.wavefront.url }} - token: {{ .Values.wavefront.token }} - {{- end }} - {{- if .Values.collector.tags }} - tags: -{{ tpl (toYaml .Values.collector.tags) . | indent 8 }} - {{- end }} - {{- if .Values.collector.filters }} - filters: -{{ tpl (toYaml .Values.collector.filters) . | indent 8 }} - {{- end }} - - sources: - kubernetes_source: - {{- if .Values.collector.useReadOnlyPort }} - url: - kubeletPort: 10255 - kubeletHttps: false - {{- else }} - url: https://kubernetes.default.svc - kubeletPort: 10250 - kubeletHttps: true - {{- end }} - {{- if .Values.serviceAccount.create }} - useServiceAccount: true - {{- else }} - useServiceAccount: false - {{- end }} - insecure: true - prefix: kubernetes. - filters: - metricBlacklist: - - 'kubernetes.sys_container.*' - - 'kubernetes.node.ephemeral_storage.*' - - internal_stats_source: - prefix: kubernetes. - - {{- if .Values.collector.kubernetesState }} - kubernetes_state_source: - prefix: kubernetes. - {{ end }} - - {{- if .Values.collector.cadvisor.enabled }} - kubernetes_cadvisor_source: - prefix: kubernetes.cadvisor. - {{- if .Values.collector.cadvisor.filters}} - filters: -{{ tpl (toYaml .Values.collector.cadvisor.filters) . | indent 10 }} - {{- end}} - {{ end }} - - {{- if .Values.collector.controlplane.enabled }} - kubernetes_control_plane_source: - collection: -{{ tpl (toYaml .Values.collector.controlplane.collection) . | indent 10 }} - {{ end }} - - {{- if .Values.collector.hostOSMetrics }} - telegraf_sources: - - plugins: [] - {{- end }} - - {{- if or .Values.collector.apiServerMetrics }} - # Kubernetes API Server - prometheus_sources: - - url: https://kubernetes.default.svc:443/metrics - httpConfig: - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecure_skip_verify: true - prefix: kube.apiserver. - filters: - metricWhitelist: - {{- if .Values.collector.apiServerMetrics }} - - 'kube.apiserver.apiserver.*' - - 'kube.apiserver.etcd.*' - - 'kube.apiserver.process.*' - {{- end }} - {{- end }} - {{- if .Values.collector.events.enabled }} - events: - {{- if .Values.collector.events.filters }} - filters: -{{ tpl (toYaml .Values.collector.events.filters) . | indent 8 }} - {{- end }} - {{- end }} - - {{- if .Values.collector.discovery.enabled }} - - discovery: - {{- if .Values.collector.discovery.annotationPrefix }} - annotation_prefix: {{ .Values.collector.discovery.annotationPrefix | quote }} - {{end }} - {{- if .Values.collector.discovery.enableRuntimeConfigs }} - enable_runtime_plugins: {{ .Values.collector.discovery.enableRuntimeConfigs }} - {{end }} - - {{- if .Values.collector.discovery.annotationExcludes }} - annotation_excludes: -{{ tpl (toYaml .Values.collector.discovery.annotationExcludes) . | indent 6 }} - {{end}} - - plugins: - # auto-discover kube DNS - - name: kube-dns-discovery - type: prometheus - selectors: - images: - - '*kube-dns/sidecar*' - labels: - k8s-app: - - kube-dns - port: 10054 - path: /metrics - scheme: http - prefix: kube.dns. - filters: - metricWhitelist: - - 'kube.dns.http.request.duration.microseconds' - - 'kube.dns.http.request.size.bytes' - - 'kube.dns.http.requests.total.counter' - - 'kube.dns.http.response.size.bytes' - - 'kube.dns.kubedns.dnsmasq.*' - - 'kube.dns.process.*' - - # auto-discover coredns - - name: coredns-discovery - type: prometheus - selectors: - images: - - '*coredns:*' - labels: - k8s-app: - - kube-dns - port: 9153 - path: /metrics - scheme: http - prefix: kube.coredns. - filters: - metricWhitelist: - - 'kube.coredns.coredns.cache.*' - - 'kube.coredns.coredns.dns.request.count.total.counter' - - 'kube.coredns.coredns.dns.request.duration.seconds' - - 'kube.coredns.coredns.dns.request.size.bytes' - - 'kube.coredns.coredns.dns.request.type.count.total.counter' - - 'kube.coredns.coredns.dns.response.rcode.count.total.counter' - - 'kube.coredns.coredns.dns.response.size.bytes' - - 'kube.coredns.process.*' - - {{- if .Values.collector.discovery.config }} - - # user supplied discovery config -{{ tpl (toYaml .Values.collector.discovery.config) . | indent 6 }} - {{- end }} - {{- end }} - -{{- end }} diff --git a/wavefront/templates/collector-daemonset.yaml b/wavefront/templates/collector-daemonset.yaml deleted file mode 100644 index 33c56e3e..00000000 --- a/wavefront/templates/collector-daemonset.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- if and .Values.collector.enabled .Values.collector.useDaemonset }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.collector.fullname" . }} -spec: - selector: - matchLabels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: collector -{{ if .Values.collector.updateStrategy }} - updateStrategy: -{{ toYaml .Values.collector.updateStrategy | indent 4 }} -{{ end }} - template: - metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: collector - annotations: - installation-method: {{ .Values.installationMethod }} - spec: - tolerations: - - effect: NoSchedule - key: node.alpha.kubernetes.io/role - operator: Exists - - effect: NoSchedule - key: node-role.kubernetes.io/master - operator: Exists -{{ if .Values.collector.tolerations }} -{{- toYaml .Values.collector.tolerations | indent 6 }} -{{ end }} - {{- if .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 6 }} - {{- end }} - serviceAccountName: {{ template "wavefront.collector.serviceAccountName" . }} - containers: - - name: wavefront-collector - image: {{ .Values.collector.image.repository }}:{{ .Values.collector.image.tag }} - imagePullPolicy: {{ .Values.collector.image.pullPolicy }} - command: - - /wavefront-collector - - --daemon=true - - --config-file=/etc/collector/config.yaml - {{- if .Values.collector.maxProcs }} - - --max-procs={{ .Values.collector.maxProcs }} - {{- end }} - {{- if .Values.collector.logLevel }} - - --log-level={{ .Values.collector.logLevel }} - {{- end }} - env: - - name: HOST_PROC - value: /host/proc - - name: POD_NODE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: POD_NAMESPACE_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: INSTALLATION_METHOD - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.annotations['installation-method'] - ports: - - containerPort: 8088 - protocol: TCP - resources: -{{ toYaml .Values.collector.resources | indent 10 }} - volumeMounts: - - name: procfs - mountPath: /host/proc - readOnly: true - - name: config - mountPath: /etc/collector/ - readOnly: true - {{- if .Values.collector.priorityClassName }} - priorityClassName: {{ .Values.collector.priorityClassName }} - {{- end }} - volumes: - - name: procfs - hostPath: - path: /proc - - name: config - configMap: - name: {{ template "wavefront.collector.fullname" . }}-config -{{- end }} diff --git a/wavefront/templates/collector-deployment.yaml b/wavefront/templates/collector-deployment.yaml deleted file mode 100644 index 228740a3..00000000 --- a/wavefront/templates/collector-deployment.yaml +++ /dev/null @@ -1,75 +0,0 @@ -{{- if .Values.collector.enabled }} -{{- if not .Values.collector.useDaemonset }} -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.collector.fullname" . }} -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: collector - template: - metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: collector - annotations: - installation-method: {{ .Values.installationMethod }} - spec: - serviceAccountName: {{ template "wavefront.collector.serviceAccountName" . }} - {{- if .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 6 }} - {{- end }} - containers: - - name: wavefront-collector - image: {{ .Values.collector.image.repository }}:{{ .Values.collector.image.tag }} - imagePullPolicy: {{ .Values.collector.image.pullPolicy }} - command: - - /wavefront-collector - - --daemon=false - - --config-file=/etc/collector/config.yaml - {{- if .Values.collector.maxProcs }} - - --max-procs={{ .Values.collector.maxProcs }} - {{- end }} - {{- if .Values.collector.logLevel }} - - --log-level={{ .Values.collector.logLevel }} - {{- end }} - env: - - name: INSTALLATION_METHOD - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.annotations['installation-method'] - resources: -{{ toYaml .Values.collector.resources | indent 10 }} - {{- if .Values.collector.priorityClassName }} - priorityClassName: {{ .Values.collector.priorityClassName }} - {{- end }} - {{- if .Values.collector.tolerations }} - tolerations: -{{ toYaml .Values.collector.tolerations | indent 6 }} - {{- end }} - volumeMounts: - - name: config - mountPath: /etc/collector/ - readOnly: true - - name: ssl-certs - mountPath: /etc/ssl/certs - readOnly: true - volumes: - - name: config - configMap: - name: {{ template "wavefront.collector.fullname" . }}-config - - name: ssl-certs - hostPath: - path: /etc/ssl/certs -{{- end }} -{{- end }} diff --git a/wavefront/templates/collector-rbac.yaml b/wavefront/templates/collector-rbac.yaml deleted file mode 100644 index cc13046a..00000000 --- a/wavefront/templates/collector-rbac.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.rbac.create .Values.collector.enabled }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.collector.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "wavefront.collector.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "wavefront.collector.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/wavefront/templates/collector-service-account.yaml b/wavefront/templates/collector-service-account.yaml deleted file mode 100644 index fb9bd79b..00000000 --- a/wavefront/templates/collector-service-account.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if and .Values.serviceAccount.create .Values.collector.enabled }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: collector - name: {{ template "wavefront.collector.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/wavefront/templates/proxy-deployment.yaml b/wavefront/templates/proxy-deployment.yaml deleted file mode 100644 index 9b1bf0d7..00000000 --- a/wavefront/templates/proxy-deployment.yaml +++ /dev/null @@ -1,141 +0,0 @@ -{{- if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: proxy - name: {{ template "wavefront.proxy.fullname" . }} -spec: - replicas: {{ .Values.proxy.replicas }} - selector: - matchLabels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: proxy - template: - metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: proxy - spec: - {{- if .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml .Values.imagePullSecrets | nindent 6 }} - {{- end }} - containers: - - name: wavefront-proxy - image: {{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - imagePullPolicy: {{ .Values.proxy.image.pullPolicy }} - env: - - name: WAVEFRONT_URL - value: {{ .Values.wavefront.url }}/api - - name: WAVEFRONT_TOKEN - valueFrom: - secretKeyRef: - name: {{ template "wavefront.fullname" . }} - key: api-token - - name: WAVEFRONT_PROXY_ARGS - value: {{ .Values.proxy.args }} - {{- if .Values.proxy.tracePort }} --traceListenerPorts {{ .Values.proxy.tracePort }}{{- end -}} - {{- if .Values.proxy.jaegerPort }} --traceJaegerListenerPorts {{ .Values.proxy.jaegerPort }}{{- end -}} - {{- if .Values.proxy.traceJaegerHttpListenerPort }} --traceJaegerHttpListenerPorts {{ .Values.proxy.traceJaegerHttpListenerPort }}{{- end -}} - {{- if .Values.proxy.traceJaegerGrpcListenerPort }} --traceJaegerGrpcListenerPorts {{ .Values.proxy.traceJaegerGrpcListenerPort }}{{- end -}} - {{- if .Values.proxy.zipkinPort }} --traceZipkinListenerPorts {{ .Values.proxy.zipkinPort }}{{- end -}} - {{- if .Values.proxy.traceSamplingRate }} --traceSamplingRate {{ .Values.proxy.traceSamplingRate }}{{- end -}} - {{- if .Values.proxy.traceSamplingDuration }} --traceSamplingDuration {{ .Values.proxy.traceSamplingDuration }}{{- end -}} - {{- if .Values.proxy.traceJaegerApplicationName }} --traceJaegerApplicationName {{ .Values.proxy.traceJaegerApplicationName }}{{- end -}} - {{- if .Values.proxy.traceZipkinApplicationName }} --traceZipkinApplicationName {{ .Values.proxy.traceZipkinApplicationName }}{{- end -}} - {{- if .Values.proxy.histogramPort }} --histogramDistListenerPorts {{ .Values.proxy.histogramPort }}{{- end -}} - {{- if .Values.proxy.histogramMinutePort }} --histogramMinuteListenerPorts {{ .Values.proxy.histogramMinutePort }}{{- end -}} - {{- if .Values.proxy.histogramHourPort }} --histogramHourListenerPorts {{ .Values.proxy.histogramHourPort }}{{- end -}} - {{- if .Values.proxy.histogramDayPort }} --histogramDayListenerPorts {{ .Values.proxy.histogramDayPort }}{{- end -}} - {{- if .Values.proxy.deltaCounterPort }} --deltaCountersAggregationListenerPorts {{ .Values.proxy.deltaCounterPort }}{{- end -}} - {{- if .Values.proxy.preprocessor }} --preprocessorConfigFile /etc/wavefront/wavefront-proxy/preprocessor/rules.yaml{{- end -}} - {{- if .Values.proxy.httpProxyHost }} --proxyHost {{ .Values.proxy.httpProxyHost }}{{- end -}} - {{- if .Values.proxy.httpProxyPort }} --proxyPort {{ .Values.proxy.httpProxyPort }}{{- end -}} - {{- if .Values.proxy.httpProxyUser }} --proxyUser {{ .Values.proxy.httpProxyUser }}{{- end -}} - {{- if .Values.proxy.httpProxyPassword }} --proxyPassword {{ .Values.proxy.httpProxyPassword }}{{- end -}} - {{- if .Values.proxy.heap }} - - name: JAVA_HEAP_USAGE - value: {{ .Values.proxy.heap | quote }} - {{- end }} - ports: - - containerPort: {{ .Values.proxy.port }} - protocol: TCP - {{- if .Values.proxy.tracePort }} - - containerPort: {{ .Values.proxy.tracePort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.jaegerPort }} - - containerPort: {{ .Values.proxy.jaegerPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.traceJaegerHttpListenerPort }} - - containerPort: {{ .Values.proxy.traceJaegerHttpListenerPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.traceJaegerGrpcListenerPort }} - - containerPort: {{ .Values.proxy.traceJaegerGrpcListenerPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.zipkinPort }} - - containerPort: {{ .Values.proxy.zipkinPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramPort }} - - containerPort: {{ .Values.proxy.histogramPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramMinutePort }} - - containerPort: {{ .Values.proxy.histogramMinutePort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramHourPort }} - - containerPort: {{ .Values.proxy.histogramHourPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramDayPort }} - - containerPort: {{ .Values.proxy.histogramDayPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.deltaCounterPort }} - - containerPort: {{ .Values.proxy.deltaCounterPort }} - protocol: TCP - {{- end }} - resources: -{{ toYaml .Values.proxy.resources | trim | indent 10 }} - securityContext: - privileged: false - volumeMounts: - {{- if .Values.proxy.preprocessor }} - - name: preprocessor - mountPath: /etc/wavefront/wavefront-proxy/preprocessor - {{- end }} - {{- if .Values.proxy.useHttpProxyCAcert }} - - name: http-proxy-ca - mountPath: /tmp/ca - {{- end }} - {{- if .Values.proxy.priorityClassName }} - priorityClassName: {{ .Values.proxy.priorityClassName }} - {{- end }} -{{- if .Values.proxy.tolerations }} - tolerations: -{{ toYaml .Values.proxy.tolerations | indent 6 }} - {{- end }} - volumes: - {{- if .Values.proxy.preprocessor }} - - name: preprocessor - configMap: - name: {{ template "wavefront.proxy.fullname" . }}-preprocessor - {{- end }} - {{- if .Values.proxy.useHttpProxyCAcert }} - - name: http-proxy-ca - secret: - secretName: http-proxy-secret - items: - - key: tls-root-ca-bundle - path: ca.pem - {{- end }} -{{- end }} diff --git a/wavefront/templates/proxy-preprocessor-config.yaml b/wavefront/templates/proxy-preprocessor-config.yaml deleted file mode 100644 index 9094c56f..00000000 --- a/wavefront/templates/proxy-preprocessor-config.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.proxy.preprocessor }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: proxy - name: {{ template "wavefront.proxy.fullname" . }}-preprocessor -data: -{{ tpl (toYaml .Values.proxy.preprocessor) . | indent 2 }} -{{- end }} diff --git a/wavefront/templates/proxy-service.yaml b/wavefront/templates/proxy-service.yaml deleted file mode 100644 index d4df8948..00000000 --- a/wavefront/templates/proxy-service.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.proxy.enabled }} -apiVersion: v1 -kind: Service -metadata: - labels: - app.kubernetes.io/name : {{ template "wavefront.fullname" . }} - helm.sh/chart: {{ template "wavefront.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - app.kubernetes.io.instance: {{ .Release.Name | quote }} - app.kubernetes.io/component: proxy - name: {{ template "wavefront.proxy.fullname" . }} -spec: - ports: - - name: wavefront - port: {{ .Values.proxy.port }} - protocol: TCP - {{- if .Values.proxy.tracePort }} - - name: wavefront-trace - port: {{ .Values.proxy.tracePort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.jaegerPort }} - - name: jaeger - port: {{ .Values.proxy.jaegerPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.traceJaegerHttpListenerPort }} - - name: jaeger-thriftdata - port: {{ .Values.proxy.traceJaegerHttpListenerPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.zipkinPort }} - - name: zipkin - port: {{ .Values.proxy.zipkinPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramPort }} - - name: histogram - port: {{ .Values.proxy.histogramPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramMinutePort }} - - name: histogram-minute - port: {{ .Values.proxy.histogramMinutePort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramHourPort }} - - name: histogram-hour - port: {{ .Values.proxy.histogramHourPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.histogramDayPort }} - - name: histogram-day - port: {{ .Values.proxy.histogramDayPort }} - protocol: TCP - {{- end }} - {{- if .Values.proxy.deltaCounterPort }} - - name: delta-counter - port: {{ .Values.proxy.deltaCounterPort }} - protocol: TCP - {{- end }} - selector: - app.kubernetes.io/name : {{ template "wavefront.fullname" .}} - app.kubernetes.io/component: proxy - type: ClusterIP -{{ end }} diff --git a/wavefront/templates/scc-wavefront.yaml b/wavefront/templates/scc-wavefront.yaml deleted file mode 100644 index 709c6839..00000000 --- a/wavefront/templates/scc-wavefront.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.openshift.enabled }} -kind: SecurityContextConstraints -apiVersion: security.openshift.io/v1 -metadata: - name: scc-wavefront -allowHostDirVolumePlugin: true -allowHostIPC: false -allowHostNetwork: false -allowHostPID: false -allowHostPorts: false -allowPrivilegedContainer: false -readOnlyRootFilesystem: false -allowedCapabilities: -defaultAddCapabilities: -priority: -requiredDropCapabilities: -volumes: -runAsUser: - type: RunAsAny -seLinuxContext: - type: RunAsAny -{{- end }} \ No newline at end of file diff --git a/wavefront/templates/tests/test-collector-running.yaml b/wavefront/templates/tests/test-collector-running.yaml deleted file mode 100644 index 1b7fde60..00000000 --- a/wavefront/templates/tests/test-collector-running.yaml +++ /dev/null @@ -1,54 +0,0 @@ -{{- if .Values.collector.useDaemonset }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: test-collector - namespace: {{ .Release.Namespace }} -rules: - - apiGroups: ["apps"] - resources: ["daemonsets"] - verbs: ["get", "watch", "list"] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: test-collector - namespace: {{ .Release.Namespace }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: test-collector - namespace: {{ .Release.Namespace }} -subjects: - - kind: ServiceAccount - name: test-collector - namespace: {{ .Release.Namespace }} -roleRef: - kind: Role - name: test-collector - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: v1 -kind: Pod -metadata: - name: test-collector - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": test - "helm.sh/hook-delete-policy" : hook-succeeded,hook-failed -spec: - serviceAccountName: test-collector - containers: - - name: test-collector - image: {{ .Values.testCollectorImage }} - imagePullPolicy: IfNotPresent - command: - - /bin/bash - - -ec - - | - kubectl --namespace {{ .Release.Namespace }} get daemonsets --selector="app.kubernetes.io/component=collector" - - restartPolicy: Never -{{- end }} \ No newline at end of file diff --git a/wavefront/templates/vsphere-tanzu-rolebinding.yaml b/wavefront/templates/vsphere-tanzu-rolebinding.yaml deleted file mode 100644 index 2cf5f345..00000000 --- a/wavefront/templates/vsphere-tanzu-rolebinding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if or .Values.vspheretanzu.enabled .Values.projectPacific.enabled }} -kind: RoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: rolebinding-default-privileged-sa-ns_wavefront - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: psp:vmware-system-privileged - apiGroup: rbac.authorization.k8s.io -subjects: - - kind: Group - apiGroup: rbac.authorization.k8s.io - name: system:serviceaccounts -{{ end }} \ No newline at end of file diff --git a/wavefront/values.schema.json b/wavefront/values.schema.json deleted file mode 100644 index 021c7a21..00000000 --- a/wavefront/values.schema.json +++ /dev/null @@ -1,1370 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "http://example.com/example.json", - "type": "object", - "title": "The root schema", - "description": "The root schema comprises the entire JSON document.", - "default": {}, - "examples": [ - { - "clusterName": "KUBERNETES_CLUSTER_NAME", - "installationMethod": "helm", - "wavefront": { - "url": "https://YOUR_CLUSTER.wavefront.com", - "token": "YOUR_API_TOKEN" - }, - "collector": { - "enabled": true, - "image": { - "repository": "projects.registry.vmware.com/tanzu_observability/kubernetes-collector", - "tag": "1.13.0", - "pullPolicy": "IfNotPresent" - }, - "useDaemonset": true, - "useProxy": true, - "kubernetesState": true, - "hostOSMetrics": false, - "filters": { - "metricDenyList": [ - "kubernetes.sys_container.*", - "kubernetes.collector.runtime.*", - "kubernetes.*.network.rx_rate", - "kubernetes.*.network.rx_errors_rate", - "kubernetes.*.network.tx_rate", - "kubernetes.*.network.tx_errors_rate", - "kubernetes.*.memory.page_faults", - "kubernetes.*.memory.page_faults_rate", - "kubernetes.*.memory.major_page_faults", - "kubernetes.*.memory.major_page_faults_rate", - "kubernetes.*.filesystem.inodes", - "kubernetes.*.filesystem.inodes_free", - "kubernetes.*.ephemeral_storage.request", - "kubernetes.*.ephemeral_storage.limit" - ], - "tagExclude": [ - "label?controller?revision*", - "label?pod?template*", - "annotation_kubectl_kubernetes_io_last_applied_configuration" - ] - }, - "cadvisor": { - "enabled": false, - "filters": { - "metricAllowList": [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - } - }, - "events": { - "enabled": false - }, - "discovery": { - "enabled": true, - "enableRuntimeConfigs": true, - "annotationExcludes": [ - { - "resourceType": "service", - "namespaces": [ - "openshift-*" - ] - } - ] - }, - "resources": { - "requests": { - "cpu": "200m", - "memory": "10Mi" - }, - "limits": { - "cpu": "200m", - "memory": "256Mi" - } - } - }, - "proxy": { - "enabled": true, - "image": { - "repository": "projects.registry.vmware.com/tanzu_observability/proxy", - "tag": 12.3, - "pullPolicy": "IfNotPresent" - }, - "resources": { - "requests": { - "cpu": "100m", - "memory": "1Gi" - }, - "limits": { - "cpu": "1000m", - "memory": "4Gi" - } - }, - "replicas": 1, - "port": 2878 - }, - "rbac": { - "create": true - }, - "serviceAccount": { - "create": true, - "name": null - }, - "imagePullSecrets": [], - "kubeStateMetrics": { - "enabled": false - }, - "vspheretanzu": { - "enabled": false - }, - "projectPacific": { - "enabled": false - } - } - ], - "required": [ - "clusterName", - "wavefront", - "collector", - "proxy", - "rbac", - "serviceAccount", - "kubeStateMetrics", - "vspheretanzu", - "projectPacific" - ], - "properties": { - "clusterName": { - "$id": "#/properties/clusterName", - "type": "string", - "title": "The clusterName schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "KUBERNETES_CLUSTER_NAME" - ] - }, - "installationMethod": { - "$id": "#/properties/installationMethod", - "type": "string", - "title": "The installationMethod schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "openshift-helm" - ] - }, - "wavefront": { - "$id": "#/properties/wavefront", - "type": "object", - "title": "The wavefront schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "url": "https://YOUR_CLUSTER.wavefront.com", - "token": "YOUR_API_TOKEN" - } - ], - "required": [ - "url", - "token" - ], - "properties": { - "url": { - "$id": "#/properties/wavefront/properties/url", - "type": "string", - "title": "The url schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "https://YOUR_CLUSTER.wavefront.com" - ] - }, - "token": { - "$id": "#/properties/wavefront/properties/token", - "type": "string", - "title": "The token schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "YOUR_API_TOKEN" - ] - } - }, - "additionalProperties": true - }, - "collector": { - "$id": "#/properties/collector", - "type": "object", - "title": "The collector schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": true, - "image": { - "repository": "projects.registry.vmware.com/tanzu_observability/kubernetes-collector", - "tag":"1.13.0", - "pullPolicy": "IfNotPresent" - }, - "useDaemonset": true, - "useProxy": true, - "controlplane": { - "enabled": false - }, - "kubernetesState": true, - "hostOSMetrics": false, - "filters": { - "metricDenyList": [ - "kubernetes.sys_container.*", - "kubernetes.collector.runtime.*", - "kubernetes.*.network.rx_rate", - "kubernetes.*.network.rx_errors_rate", - "kubernetes.*.network.tx_rate", - "kubernetes.*.network.tx_errors_rate", - "kubernetes.*.memory.page_faults", - "kubernetes.*.memory.page_faults_rate", - "kubernetes.*.memory.major_page_faults", - "kubernetes.*.memory.major_page_faults_rate", - "kubernetes.*.filesystem.inodes", - "kubernetes.*.filesystem.inodes_free", - "kubernetes.*.ephemeral_storage.request", - "kubernetes.*.ephemeral_storage.limit" - ], - "tagExclude": [ - "label?controller?revision*", - "label?pod?template*", - "annotation_kubectl_kubernetes_io_last_applied_configuration" - ] - }, - "cadvisor": { - "enabled": false, - "filters": { - "metricAllowList": [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - } - }, - "events": { - "enabled": false - }, - "discovery": { - "enabled": true, - "enableRuntimeConfigs": true, - "annotationExcludes": [ - { - "resourceType": "service", - "namespaces": [ - "openshift-*" - ] - } - ] - }, - "resources": { - "requests": { - "cpu": "200m", - "memory": "10Mi" - }, - "limits": { - "cpu": "200m", - "memory": "256Mi" - } - } - } - ], - "required": [ - "enabled", - "image", - "useDaemonset", - "useProxy", - "controlplane", - "kubernetesState", - "hostOSMetrics", - "filters", - "cadvisor", - "events", - "discovery", - "resources" - ], - "properties": { - "enabled": { - "$id": "#/properties/collector/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "image": { - "$id": "#/properties/collector/properties/image", - "type": "object", - "title": "The image schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "repository": "projects.registry.vmware.com/tanzu_observability/kubernetes-collector", - "tag": "1.13.0", - "pullPolicy": "IfNotPresent" - } - ], - "required": [ - "repository", - "tag", - "pullPolicy" - ], - "properties": { - "repository": { - "$id": "#/properties/collector/properties/image/properties/repository", - "type": "string", - "title": "The repository schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "projects.registry.vmware.com/tanzu_observability/kubernetes-collector" - ] - }, - "tag": { - "$id": "#/properties/collector/properties/image/properties/tag", - "type": "string", - "title": "The tag schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "1.7.4" - ] - }, - "pullPolicy": { - "$id": "#/properties/collector/properties/image/properties/pullPolicy", - "type": "string", - "title": "The pullPolicy schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "IfNotPresent" - ] - } - }, - "additionalProperties": true - }, - "useDaemonset": { - "$id": "#/properties/collector/properties/useDaemonset", - "type": "boolean", - "title": "The useDaemonset schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "useProxy": { - "$id": "#/properties/collector/properties/useProxy", - "type": "boolean", - "title": "The useProxy schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "controlplane": { - "$id": "#/properties/collector/properties/controlplane", - "type": "object", - "title": "The controlplane schema", - "description": "An explanation about the purpose of this instance.", - "default": { - "enabled": true, - "collection": { - "interval": "120s", - "timeout": "60s" - } - }, - "examples": [ - { - "enabled": true, - "collection": { - "interval": "120s", - "timeout": "60s" - } - } - ], - "required": [ - "enabled", - "collection" - ], - "properties": { - "enabled": { - "$id": "#/properties/collector/properties/controlplane/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - }, - "collection": { - "$id": "#/properties/collector/properties/collection", - "type": "object", - "title": "The collection schema", - "description": "An explanation about the purpose of this instance.", - "default": { - "interval": "120s", - "timeout": "60s" - }, - "examples": [ - { - "interval": "120s", - "timeout": "60s" - } - ], - "required": [ - "interval" - ], - "properties": { - "interval": { - "$id": "#/properties/collector/properties/image/properties/interval", - "type": "string", - "title": "The interval schema", - "description": "An explanation about the purpose of this instance.", - "default": "120s", - "examples": [ - "120s" - ] - }, - "timeout": { - "$id": "#/properties/collector/properties/image/properties/timeout", - "type": "string", - "title": "The timeout schema", - "description": "An explanation about the purpose of this instance.", - "default": "60s", - "examples": [ - "60s" - ] - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true - }, - "kubernetesState": { - "$id": "#/properties/collector/properties/kubernetesState", - "type": "boolean", - "title": "The kubernetesState schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "hostOSMetrics": { - "$id": "#/properties/collector/properties/hostOSMetrics", - "type": "boolean", - "title": "The hostOSMetrics schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - }, - "filters": { - "$id": "#/properties/collector/properties/filters", - "type": "object", - "title": "The filters schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "metricDenyList": [ - "kubernetes.sys_container.*", - "kubernetes.collector.runtime.*", - "kubernetes.*.network.rx_rate", - "kubernetes.*.network.rx_errors_rate", - "kubernetes.*.network.tx_rate", - "kubernetes.*.network.tx_errors_rate", - "kubernetes.*.memory.page_faults", - "kubernetes.*.memory.page_faults_rate", - "kubernetes.*.memory.major_page_faults", - "kubernetes.*.memory.major_page_faults_rate", - "kubernetes.*.filesystem.inodes", - "kubernetes.*.filesystem.inodes_free", - "kubernetes.*.ephemeral_storage.request", - "kubernetes.*.ephemeral_storage.limit" - ], - "tagExclude": [ - "label?controller?revision*", - "label?pod?template*", - "annotation_kubectl_kubernetes_io_last_applied_configuration" - ] - } - ], - "required": [ - "metricDenyList", - "tagExclude" - ], - "properties": { - "metricDenyList": { - "$id": "#/properties/collector/properties/filters/properties/metricDenyList", - "type": "array", - "title": "The metricDenyList schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - "kubernetes.sys_container.*", - "kubernetes.collector.runtime.*" - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/collector/properties/filters/properties/metricDenyList/items", - "anyOf": [ - { - "$id": "#/properties/collector/properties/filters/properties/metricDenyList/items/anyOf/0", - "type": "string", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "kubernetes.sys_container.*", - "kubernetes.collector.runtime.*" - ] - } - ] - } - }, - "tagExclude": { - "$id": "#/properties/collector/properties/filters/properties/tagExclude", - "type": "array", - "title": "The tagExclude schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - "label?controller?revision*", - "label?pod?template*" - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/collector/properties/filters/properties/tagExclude/items", - "anyOf": [ - { - "$id": "#/properties/collector/properties/filters/properties/tagExclude/items/anyOf/0", - "type": "string", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "label?controller?revision*", - "label?pod?template*" - ] - } - ] - } - } - }, - "additionalProperties": true - }, - "cadvisor": { - "$id": "#/properties/collector/properties/cadvisor", - "type": "object", - "title": "The cadvisor schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false, - "filters": { - "metricAllowList": [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - } - } - ], - "required": [ - "enabled", - "filters" - ], - "properties": { - "enabled": { - "$id": "#/properties/collector/properties/cadvisor/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - }, - "filters": { - "$id": "#/properties/collector/properties/cadvisor/properties/filters", - "type": "object", - "title": "The filters schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "metricAllowList": [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - } - ], - "required": [ - "metricAllowList" - ], - "properties": { - "metricAllowList": { - "$id": "#/properties/collector/properties/cadvisor/properties/filters/properties/metricAllowList", - "type": "array", - "title": "The metricAllowList schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/collector/properties/cadvisor/properties/filters/properties/metricAllowList/items", - "anyOf": [ - { - "$id": "#/properties/collector/properties/cadvisor/properties/filters/properties/metricAllowList/items/anyOf/0", - "type": "string", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter", - "kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter" - ] - } - ] - } - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true - }, - "events": { - "$id": "#/properties/collector/properties/events", - "type": "object", - "title": "The events schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false - } - ], - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "$id": "#/properties/collector/properties/events/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": true - }, - "discovery": { - "$id": "#/properties/collector/properties/discovery", - "type": "object", - "title": "The discovery schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": true, - "enableRuntimeConfigs": true, - "annotationExcludes": [ - { - "resourceType": "service", - "namespaces": [ - "openshift-*" - ] - } - ] - } - ], - "required": [ - "enabled", - "enableRuntimeConfigs" - ], - "properties": { - "enabled": { - "$id": "#/properties/collector/properties/discovery/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "enableRuntimeConfigs": { - "$id": "#/properties/collector/properties/discovery/properties/enableRuntimeConfigs", - "type": "boolean", - "title": "The enableRuntimeConfigs schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "annotationExcludes": { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes", - "type": "array", - "title": "The annotationExcludes schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - { - "resourceType": "service", - "namespaces": [ - "openshift-*" - ] - } - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items", - "anyOf": [ - { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items/anyOf/0", - "type": "object", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "resourceType": "service", - "namespaces": [ - "openshift-*" - ] - } - ], - "required": [ - "resourceType", - "namespaces" - ], - "properties": { - "resourceType": { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items/anyOf/0/properties/resourceType", - "type": "string", - "title": "The resourceType schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "service" - ] - }, - "namespaces": { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items/anyOf/0/properties/namespaces", - "type": "array", - "title": "The namespaces schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [ - "openshift-*" - ] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items/anyOf/0/properties/namespaces/items", - "anyOf": [ - { - "$id": "#/properties/collector/properties/discovery/properties/annotationExcludes/items/anyOf/0/properties/namespaces/items/anyOf/0", - "type": "string", - "title": "The first anyOf schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "openshift-*" - ] - } - ] - } - } - }, - "additionalProperties": true - } - ] - } - } - }, - "additionalProperties": true - }, - "resources": { - "$id": "#/properties/collector/properties/resources", - "type": "object", - "title": "The resources schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "requests": { - "cpu": "200m", - "memory": "10Mi" - }, - "limits": { - "cpu": "200m", - "memory": "256Mi" - } - } - ], - "required": [ - "requests", - "limits" - ], - "properties": { - "requests": { - "$id": "#/properties/collector/properties/resources/properties/requests", - "type": "object", - "title": "The requests schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "cpu": "200m", - "memory": "10Mi" - } - ], - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "$id": "#/properties/collector/properties/resources/properties/requests/properties/cpu", - "type": "string", - "title": "The cpu schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "200m" - ] - }, - "memory": { - "$id": "#/properties/collector/properties/resources/properties/requests/properties/memory", - "type": "string", - "title": "The memory schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "10Mi" - ] - } - }, - "additionalProperties": true - }, - "limits": { - "$id": "#/properties/collector/properties/resources/properties/limits", - "type": "object", - "title": "The limits schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "cpu": "200m", - "memory": "256Mi" - } - ], - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "$id": "#/properties/collector/properties/resources/properties/limits/properties/cpu", - "type": "string", - "title": "The cpu schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "200m" - ] - }, - "memory": { - "$id": "#/properties/collector/properties/resources/properties/limits/properties/memory", - "type": "string", - "title": "The memory schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "256Mi" - ] - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true - }, - "proxy": { - "$id": "#/properties/proxy", - "type": "object", - "title": "The proxy schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": true, - "image": { - "repository": "projects.registry.vmware.com/tanzu_observability/proxy", - "tag": 12.3, - "pullPolicy": "IfNotPresent" - }, - "resources": { - "requests": { - "cpu": "100m", - "memory": "1Gi" - }, - "limits": { - "cpu": "1000m", - "memory": "4Gi" - } - }, - "replicas": 1, - "port": 2878 - } - ], - "required": [ - "enabled", - "image", - "resources", - "replicas", - "port", - "useHttpProxyCAcert" - ], - "properties": { - "enabled": { - "$id": "#/properties/proxy/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "image": { - "$id": "#/properties/proxy/properties/image", - "type": "object", - "title": "The image schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "repository": "projects.registry.vmware.com/tanzu_observability/proxy", - "tag": 12.3, - "pullPolicy": "IfNotPresent" - } - ], - "required": [ - "repository", - "tag", - "pullPolicy" - ], - "properties": { - "repository": { - "$id": "#/properties/proxy/properties/image/properties/repository", - "type": "string", - "title": "The repository schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "projects.registry.vmware.com/tanzu_observability/proxy" - ] - }, - "tag": { - "$id": "#/properties/proxy/properties/image/properties/tag", - "type": "string", - "title": "The tag schema", - "description": "An explanation about the purpose of this instance.", - "default": "12.3", - "examples": [ - "12.3" - ] - }, - "pullPolicy": { - "$id": "#/properties/proxy/properties/image/properties/pullPolicy", - "type": "string", - "title": "The pullPolicy schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "IfNotPresent" - ] - } - }, - "additionalProperties": true - }, - "resources": { - "$id": "#/properties/proxy/properties/resources", - "type": "object", - "title": "The resources schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "requests": { - "cpu": "100m", - "memory": "1Gi" - }, - "limits": { - "cpu": "1000m", - "memory": "4Gi" - } - } - ], - "required": [ - "requests", - "limits" - ], - "properties": { - "requests": { - "$id": "#/properties/proxy/properties/resources/properties/requests", - "type": "object", - "title": "The requests schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "cpu": "100m", - "memory": "1Gi" - } - ], - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "$id": "#/properties/proxy/properties/resources/properties/requests/properties/cpu", - "type": "string", - "title": "The cpu schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "100m" - ] - }, - "memory": { - "$id": "#/properties/proxy/properties/resources/properties/requests/properties/memory", - "type": "string", - "title": "The memory schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "1Gi" - ] - } - }, - "additionalProperties": true - }, - "limits": { - "$id": "#/properties/proxy/properties/resources/properties/limits", - "type": "object", - "title": "The limits schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "cpu": "1000m", - "memory": "4Gi" - } - ], - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "$id": "#/properties/proxy/properties/resources/properties/limits/properties/cpu", - "type": "string", - "title": "The cpu schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "1000m" - ] - }, - "memory": { - "$id": "#/properties/proxy/properties/resources/properties/limits/properties/memory", - "type": "string", - "title": "The memory schema", - "description": "An explanation about the purpose of this instance.", - "default": "", - "examples": [ - "4Gi" - ] - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true - }, - "replicas": { - "$id": "#/properties/proxy/properties/replicas", - "type": "integer", - "title": "The replicas schema", - "description": "An explanation about the purpose of this instance.", - "default": 0, - "examples": [ - 1 - ] - }, - "port": { - "$id": "#/properties/proxy/properties/port", - "type": "integer", - "title": "The port schema", - "description": "An explanation about the purpose of this instance.", - "default": 0, - "examples": [ - 2878 - ] - }, - "useHttpProxyCAcert": { - "$id": "#/properties/proxy/properties/useHttpProxyCAcert", - "type": "boolean", - "title": "The useHttpProxyCAcert schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - } - }, - "additionalProperties": true - }, - "rbac": { - "$id": "#/properties/rbac", - "type": "object", - "title": "The rbac schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "create": true - } - ], - "required": [ - "create" - ], - "properties": { - "create": { - "$id": "#/properties/rbac/properties/create", - "type": "boolean", - "title": "The create schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - } - }, - "additionalProperties": true - }, - "serviceAccount": { - "$id": "#/properties/serviceAccount", - "type": "object", - "title": "The serviceAccount schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "create": true, - "name": null - } - ], - "required": [ - "create" - ], - "properties": { - "create": { - "$id": "#/properties/serviceAccount/properties/create", - "type": "boolean", - "title": "The create schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - true - ] - }, - "name": { - "$id": "#/properties/serviceAccount/properties/name", - "type": "null", - "title": "The name schema", - "description": "An explanation about the purpose of this instance.", - "default": null, - "examples": [ - null - ] - } - }, - "additionalProperties": true - }, - "imagePullSecrets": { - "$id": "#/properties/imagePullSecrets", - "type": "array", - "title": "The imagePullSecrets schema", - "description": "An explanation about the purpose of this instance.", - "default": [], - "examples": [ - [] - ], - "additionalItems": true, - "items": { - "$id": "#/properties/imagePullSecrets/items" - } - }, - "kubeStateMetrics": { - "$id": "#/properties/kubeStateMetrics", - "type": "object", - "title": "The kubeStateMetrics schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false - } - ], - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "$id": "#/properties/kubeStateMetrics/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": true - }, - "vspheretanzu": { - "$id": "#/properties/vspheretanzu", - "type": "object", - "title": "The vspheretanzu schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false - } - ], - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "$id": "#/properties/vspheretanzu/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": true - }, - "projectPacific": { - "$id": "#/properties/projectPacific", - "type": "object", - "title": "The projectPacific schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false - } - ], - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "$id": "#/properties/projectPacific/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": true - }, - "openshift": { - "$id": "#/properties/openshift", - "type": "object", - "title": "The openshift schema", - "description": "An explanation about the purpose of this instance.", - "default": {}, - "examples": [ - { - "enabled": false - } - ], - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "$id": "#/properties/openshift/properties/enabled", - "type": "boolean", - "title": "The enabled schema", - "description": "An explanation about the purpose of this instance.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": true - }, - "testCollectorImage": { - "$id": "#/properties/testCollectorImage", - "type": "string", - "title": "The testCollectorImage schema", - "description": "An explanation about the purpose of this instance.", - "default": "registry.connect.redhat.com/seldonio/kubectl", - "examples": [ - "registry.connect.redhat.com/seldonio/kubectl" - ] - } - }, - "additionalProperties": true -} \ No newline at end of file diff --git a/wavefront/values.yaml b/wavefront/values.yaml deleted file mode 100644 index 53640c7a..00000000 --- a/wavefront/values.yaml +++ /dev/null @@ -1,399 +0,0 @@ -## Default values for Wavefront - -## This is a unique name for the cluster -## All metrics will receive a `cluster` tag with this value -## Required -clusterName: KUBERNETES_CLUSTER_NAME - - -installationMethod: helm - -## Wavefront URL (cluster) and API Token -## Required -wavefront: - url: https://YOUR_CLUSTER.wavefront.com - token: YOUR_API_TOKEN - - -## Wavefront Collector is responsible to get all Kubernetes metrics from your cluster. -## It will capture Kubernetes resources metrics available from the kubelets, -## as well as auto-discovery capabilities. -collector: - enabled: true - image: - repository: projects.registry.vmware.com/tanzu_observability/kubernetes-collector - tag: "1.16.0" - pullPolicy: IfNotPresent - - ## Set the updateStrategy for the collector deployment or daemonset - ## if no updateStrategy is set, it will use the defaults. - # updateStrategy: - # type: RollingUpdate - # rollingUpdate: - # maxUnavailable: 1 - - ## If set to true, DaemonSet will be used for the collector. - ## If set to false, Deployment will be used for the collector. - ## Setting this to true is strongly recommended - useDaemonset: true - - ## max number of CPUs that can be used simultaneously. Less than 1 for default (number of cores) - # maxProcs: 0 - - ## log level one of: info, debug, or trace. (default info) - # logLevel: info - - ## The resolution at which the collector will retain metrics. (default 60s) - # interval: 60s - - ## How often collected data is flushed (default 10s) - # flushInterval: 10s - - ## Timeout for exporting data (default 20s) - # sinkDelay: 20s - - ## If set to true, will use the unauthenticated real only port for the kubelet - ## If set to false, will use the encrypted full access port for the kubelet (default false) - # useReadOnlyPort: false - - ## If set to true, metrics will be sent to Wavefront via a Wavefront Proxy. - ## When true you must either specify a value for `collector.proxyAddress` or set `proxy.enabled` to true - ## If set to false, metrics will be sent to Wavefront via the Direct Ingestion API - useProxy: true - - ## Can be used to specify a specific address for the Wavefront Proxy - ## The proxy can be anywhere network reachable including outside of the cluster - ## Required if `collector.useProxy` is true and `proxy.enabled` is false - # proxyAddress: wavefront-proxy:2878 - - ## Enable metrics for control plane dashboard - ## If controlplane is omitted, controlplane.enabled is defaulted to false - controlplane: - enabled: true - collection: - interval: 120s - - ## If set to true, metrics about Kubernetes State will be generated by the collector - ## These metrics are more efficient than kube-state-metrics - kubernetesState: true - - ## If set to true Kubernetes API Server will also be scraped for metrics (default false) - # apiServerMetrics: false - - ## Map of tags to apply to all metrics collected by the collector (default empty) - # tags: - ## sample tags to include (env, region) - # env: production - # region: us-west-2 - - ## If set to true, host OS metrics will be collected - hostOSMetrics: false - - ## Filters to apply towards all metrics collected by the collector - filters: - # Optimized metrics collection to omit peripheral metrics. - metricDenyList: - - 'kubernetes.sys_container.*' - - 'kubernetes.collector.runtime.*' - - 'kubernetes.*.network.rx_rate' - - 'kubernetes.*.network.rx_errors_rate' - - 'kubernetes.*.network.tx_rate' - - 'kubernetes.*.network.tx_errors_rate' - - 'kubernetes.*.memory.page_faults' - - 'kubernetes.*.memory.page_faults_rate' - - 'kubernetes.*.memory.major_page_faults' - - 'kubernetes.*.memory.major_page_faults_rate' - - 'kubernetes.*.filesystem.inodes' - - 'kubernetes.*.filesystem.inodes_free' - - 'kubernetes.*.ephemeral_storage.request' - - 'kubernetes.*.ephemeral_storage.limit' - - # Filter out generated labels - tagExclude: - - 'label?controller?revision*' - - 'label?pod?template*' - - 'annotation_kubectl_kubernetes_io_last_applied_configuration' - - ## cAdvisor gives detailed metrics about container resource usage - ## See https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md for details on available metrics. - cadvisor: - enabled: false - filters: - metricAllowList: - - 'kubernetes.cadvisor.container.cpu.cfs.throttled.seconds.total.counter' - - 'kubernetes.cadvisor.container.cpu.cfs.throttled.periods.total.counter' - - - ## Events can also be collected and sent to Wavefront. - ## Requires Wavefront Proxy 6.0 or greater. - ## Events should be filtered before being enabled, see event filtering documentation for details - ## Ref: https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/filtering.md - events: - enabled: false - # filters: - # tagWhilelistSets: - # - kind: - # - "Deployment" - # - reason: - # - "ScalingReplicaSet" - # - "ReplicaSetCreateError" - # - kind: - # - "HorizontalPodAutoscaler" - # reason: - # - "Failed*" - - ## Rules based discovery configuration - ## Ref: https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md - discovery: - enabled: true - - ## When specified, this replaces `prometheus.io` as the prefix for annotations used to - ## auto-discover Prometheus endpoints - # annotationPrefix: "wavefront.com" - - ## Whether to enable runtime discovery configurations - ## Ref: https://github.com/wavefrontHQ/wavefront-collector-for-kubernetes/blob/main/docs/discovery.md#runtime-configurations - enableRuntimeConfigs: true - - ## Exclude resources from annotation-based discovery - # annotationExcludes: - # - resourceType: "pod" - # images: ["redis:*","*redis*"] - # - # # map of labels to select resources by. Label values are provided as a list of glob pattern strings. - # labels: - # k8s-app: - # - "redis" - # - "*cache*" - # - # # namespaces to filter resources by. Provided as a list of glob pattern strings. - # namespaces: - # - "default" - - ## Can be used to add additional discovery rules - # config: - ## auto-discover a sample prometheus application - # - name: prom-example - # type: prometheus - # selectors: - # labels: - # k8s-app: - # - prom-example - # port: 8080 - # path: /metrics - # prefix: kube.prom-example. - # tags: - # alt_name: sample-app - ## auto-discover mongodb pods (replace USER:PASSWORD) - # - name: mongodb - # type: telegraf/mongodb - # selectors: - # images: - # - '*mongo*' - # port: 27017 - # conf: | - # servers = ["mongodb://USER:PASSWORD@${host}:${port}"] - # gather_perdb_stats = true - # filters: - # metricBlacklist: - # - 'mongodb.member.status' - # - 'mongodb.state' - # - 'mongodb.db.stats.type' - ## auto-discover rabbitmq pods (replace USER and PASSWORD) - # - name: rabbitmq - # type: telegraf/rabbitmq - # selectors: - # images: - # - '*rabbitmq:*' - # port: 15672 - # conf: | - # url = "http://${host}:${port}" - # username = "USER" - # password = "PASSWORD" - - ## Wavefront Collector resource requests and limits - ## Make sure to keep requests and limits equal to keep the pods in the Guaranteed QoS class - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ - resources: - requests: - cpu: 200m - memory: 10Mi - limits: - cpu: 200m - memory: 256Mi - -## Optionally set a priority class name for the collector. -## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass -# priorityClassName: "" - -## Optionally set tolerations for the collector -## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ -# tolerations: - - -## Wavefront Proxy is a metrics forwarder that is used to relay metrics to the Wavefront SaaS service. -## It can receive metrics from the Wavefront Collector as well as other metrics collection services -## within your cluster. The proxy also supports preprocessor rules to allow you to further filter -## and enhance your metric names, and tags. Should network connectivity fall between the proxy and -## Wavefront SaaS service, the proxy will buffer metrics, which will be flushed when connectivity resumes. -## Ref: https://docs.wavefront.com/proxies.html -proxy: - enabled: true - image: - repository: projects.registry.vmware.com/tanzu_observability/proxy - tag: "12.4.1" - pullPolicy: IfNotPresent - - ## Wavefront Collector resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ - resources: - requests: - cpu: 100m - memory: 1Gi - limits: - cpu: 1000m - memory: 4Gi - - ## Optionally set a priority class name for the proxy. - ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass - # priorityClassName: "" - - ## Optionally set tolerations for the proxy - ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ - # tolerations: - - ## The number of pod replicas to run for the Wavefront Proxy deployment - ## This is usually 1 - replicas: 1 - - ## The port number the proxy will listen on for metrics in Wavefront data format. - ## This is usually 2878 - port: 2878 - - ## HTTP proxy configurations when direct HTTP connections to Wavefront servers are not possible. - ## httpProxyHost and httpProxyPort must be used together. - # httpProxyHost: 10.202.210.216 - # httpProxyPort: 8080 - # httpProxyUser: validUser - # httpProxyPassword: validPassword123 - ## Use in conjunction with CA cert secret and http proxy - useHttpProxyCAcert: false - - ## The port nubmer the proxy will listen on for tracing spans in Wavefront trace data format. - ## This is usually 30000 - # tracePort: 30000 - - ## The port nubmer the proxy will listen on for tracing spans in Jaeger data format. - ## This is usually 30001 - # jaegerPort: 30001 - - ## TCP ports to receive Jaeger Thrift formatted data via HTTP. The data is then sent to Wavefront in Wavefront span format. - ## This is usually 30080 - # traceJaegerHttpListenerPort: 30080 - - ## The port nubmer the proxy will listen on for tracing spans in Zipkin data format. - ## This is usually 9411 - # zipkinPort: 9411 - - ## Sampling rate to apply to tracing spans sent to the proxy. - ## This rate is applied to all data formats the proxy is listening on. - ## Value should be between 0.0 and 1.0. Default is 1.0 - # traceSamplingRate: 0.25 - - ## When this is set to a value greater than 0, - ## spans that are greater than or equal to this value will be sampled. - # traceSamplingDuration: 500 - - ## Custom application name for traces received on Jaeger's traceJaegerListenerPorts or traceJaegerHttpListenerPorts. - # traceJaegerApplicationName: MyJaegerDemo - - ## Custom application name for traces received on Zipkin's traceZipkinListenerPorts. - # traceZipkinApplicationName: MyZipkinDemo - - ## The port number the proxy will listen on for histogram distributions in Wavefront Distribution format. - ## This is usually 40000 - # histogramPort: 40000 - - ## The port number the proxy will listen on for minute acculumated histograms in Wavefront Data format. - ## This is usually 40001 - # histogramMinutePort: 40001 - - ## The port number the proxy will listen on for hour acculumated histograms in Wavefront Data format. - ## This is usually 40002 - # histogramHourPort: 40002 - - ## The port number the proxy will listen on for day acculumated histograms in Wavefront Data format. - ## This is usually 40003 - # histogramDayPort: 40003 - - ## The port number the proxy will listen on for minute acculumated delta counters in Wavefront Data format. - ## This is usually 50000 - # deltaCounterPort: 50000 - - ## Any configuration property can be passed to the proxy via command line args in - ## in the format: `-- `. Multiple properties can be specified - ## separated by whitespace. - ## Ref: https://docs.wavefront.com/proxies_configuring.html - # args: - - ## Proxy is a Java application. By default Java will consume upto 4G of heap memory. - ## This can be used to override the default. Uses the `-Xmx` command line option for java - # heap: 1024m - - ## Preprocessor rules is a powerful way to apply filtering or to enhance metrics as they flow - ## through the proxy. You can configure the rules here. By default a rule to drop Kubernetes - ## generated labels is applied to remove unecessary and often noisy tags. - ## Ref: https://docs.wavefront.com/proxies_preprocessor_rules.html - # preprocessor: - # rules.yaml: | - # '2878': - # # fix %2F to be a / instead. May be required on EKS. - # - rule : fix-forward-slash - # action : replaceRegex - # scope : pointLine - # search : "%2F" - # replace : "/" - # # replace bad characters ("&", "$", "!", "@") with underscores in the entire point line string - # - rule : replace-badchars - # action : replaceRegex - # scope : pointLine - # search : "[&\\$!@]" - # replace : "_" - - -## Specifies whether RBAC resources should be created -rbac: - create: true - - -## Specifies whether a ServiceAccount should be created -serviceAccount: - create: true - - ## The name of the ServiceAccount to use. - ## If not set and create is true, a name is generated using the fullname template - name: - -## Optional array of imagePullSecrets containing private registry credentials -## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ -imagePullSecrets: [] -# - name: secretName - -## kube-state-metrics are used to get metrics about the state of the Kubernetes scheduler -## If enabled the kube-state-metrics chart will be installed as a subchart and the collector -## will be configured to capture metrics. -kubeStateMetrics: - enabled: false - -## Required for vSphere with Tanzu Kubernetes clusters. -## If enabled, a role binding to handle pod security policy will be installed within the Kubernetes cluster. -vspheretanzu: - enabled: false - -projectPacific: ## Original variable name of vspheretanzu, left in for backward compatibility - enabled: false - -openshift: - enabled: false - -testCollectorImage: bitnami/kubectl:latest