Skip to content

Commit

Permalink
Remove GKE workload metrics (#9712)
Browse files Browse the repository at this point in the history
* Remove GKE workload metrics Helm Charts

* Remove GKE Workload Metrics from celotool

Co-authored-by: Javier Cortejoso <javi@clabs.co>
  • Loading branch information
2 people authored and martinvol committed Sep 21, 2022
1 parent a333fe8 commit b7bff7f
Show file tree
Hide file tree
Showing 9 changed files with 8 additions and 333 deletions.
7 changes: 1 addition & 6 deletions packages/celotool/src/cmds/deploy/destroy/prometheus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@ import { DestroyArgv } from 'src/cmds/deploy/destroy'
import { switchToClusterFromEnvOrContext } from 'src/lib/cluster'
import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils'
import { exitIfCelotoolHelmDryRun } from 'src/lib/helm_deploy'
import {
removeGKEWorkloadMetrics,
removeGrafanaHelmRelease,
removePrometheus,
} from 'src/lib/prometheus'
import { removeGrafanaHelmRelease, removePrometheus } from 'src/lib/prometheus'

export const command = 'prometheus'

Expand All @@ -23,6 +19,5 @@ export const handler = async (argv: PrometheusDestroyArgv) => {
await switchToClusterFromEnvOrContext(argv, true)

await removeGrafanaHelmRelease()
await removeGKEWorkloadMetrics()
await removePrometheus()
}
16 changes: 1 addition & 15 deletions packages/celotool/src/cmds/deploy/initial/prometheus.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,20 @@
import { InitialArgv } from 'src/cmds/deploy/initial'
import { switchToClusterFromEnvOrContext } from 'src/lib/cluster'
import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils'
import {
installGKEWorkloadMetricsIfNotExists,
installGrafanaIfNotExists,
installPrometheusIfNotExists,
} from 'src/lib/prometheus'
import { installGrafanaIfNotExists, installPrometheusIfNotExists } from 'src/lib/prometheus'

export const command = 'prometheus'

export const describe = 'deploy prometheus to a kubernetes cluster using Helm'

export type PrometheusInitialArgv = InitialArgv &
ContextArgv & {
deployGKEWorkloadMetrics: boolean
deployGrafana: boolean
skipClusterSetup: boolean
}

export const builder = (argv: PrometheusInitialArgv) => {
return addContextMiddleware(argv)
.option('deployGKEWorkloadMetrics', {
type: 'boolean',
description:
'Include GKE Workload Metrics, see https://cloud.google.com/stackdriver/docs/solutions/gke/managing-metrics#workload-metrics',
default: false,
})
.option('deploy-grafana', {
type: 'boolean',
description: 'Include the deployment of grafana helm chart',
Expand All @@ -42,9 +31,6 @@ export const handler = async (argv: PrometheusInitialArgv) => {
const clusterConfig = await switchToClusterFromEnvOrContext(argv, argv.skipClusterSetup)

await installPrometheusIfNotExists(argv.context, clusterConfig)
if (argv.deployGKEWorkloadMetrics) {
await installGKEWorkloadMetricsIfNotExists(clusterConfig)
}
if (argv.deployGrafana) {
await installGrafanaIfNotExists(argv.context, clusterConfig)
}
Expand Down
23 changes: 6 additions & 17 deletions packages/celotool/src/cmds/deploy/upgrade/prometheus.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,30 @@
import { UpgradeArgv } from 'src/cmds/deploy/upgrade'
import { switchToClusterFromEnvOrContext } from 'src/lib/cluster'
import { addContextMiddleware, ContextArgv } from 'src/lib/context-utils'
import { upgradeGKEWorkloadMetrics, upgradeGrafana, upgradePrometheus } from 'src/lib/prometheus'
import { upgradeGrafana, upgradePrometheus } from 'src/lib/prometheus'

export const command = 'prometheus'

export const describe = 'upgrade prometheus to a kubernetes cluster using Helm'

export type PrometheusUpgradeArgv = UpgradeArgv &
ContextArgv & {
deployGKEWorkloadMetrics: boolean
deployGrafana: boolean
}

export const builder = (argv: PrometheusUpgradeArgv) => {
return addContextMiddleware(argv)
.option('deployGKEWorkloadMetrics', {
type: 'boolean',
description:
'Include GKE Workload Metrics, see https://cloud.google.com/stackdriver/docs/solutions/gke/managing-metrics#workload-metrics',
default: false,
})
.option('deploy-grafana', {
type: 'boolean',
description: 'Include the deployment of grafana helm chart',
default: false,
})
return addContextMiddleware(argv).option('deploy-grafana', {
type: 'boolean',
description: 'Include the deployment of grafana helm chart',
default: false,
})
}

export const handler = async (argv: PrometheusUpgradeArgv) => {
const clusterConfig = await switchToClusterFromEnvOrContext(argv, true)

await upgradePrometheus(argv.context, clusterConfig)

if (argv.deployGKEWorkloadMetrics) {
await upgradeGKEWorkloadMetrics(clusterConfig)
}
if (argv.deployGrafana) {
await upgradeGrafana(argv.context, clusterConfig)
}
Expand Down
107 changes: 0 additions & 107 deletions packages/celotool/src/lib/prometheus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ import {
} from './env-utils'
import {
installGenericHelmChart,
isCelotoolHelmDryRun,
removeGenericHelmChart,
setHelmArray,
upgradeGenericHelmChart,
} from './helm_deploy'
import { BaseClusterConfig, CloudProvider } from './k8s-cluster/base'
import { GCPClusterConfig } from './k8s-cluster/gcp'
import {
createServiceAccountIfNotExists,
getServiceAccountEmail,
Expand All @@ -37,9 +35,6 @@ const sidecarImageTag = '0.8.2'
// Prometheus container registry with latest tags: https://hub.docker.com/r/prom/prometheus/tags
const prometheusImageTag = 'v2.27.1'

const GKEWorkloadMetricsHelmChartPath = '../helm-charts/gke-workload-metrics'
const GKEWorkloadMetricsReleaseName = 'gke-workload-metrics'

const grafanaHelmChartPath = '../helm-charts/grafana'
const grafanaReleaseName = 'grafana'

Expand Down Expand Up @@ -400,105 +395,3 @@ async function grafanaHelmParameters(context?: string, clusterConfig?: BaseClust
const params = [`-f ${valuesFile}`]
return params
}

// See https://cloud.google.com/stackdriver/docs/solutions/gke/managing-metrics#enable-workload-metrics
async function enableGKESystemAndWorkloadMetrics(
clusterID: string,
zone: string,
gcloudProjectName: string
) {
const GKEWMEnabled = await outputIncludes(
`gcloud beta container clusters describe ${clusterID} --zone=${zone} --project=${gcloudProjectName} --format="value(monitoringConfig.componentConfig.enableComponents)"`,
'WORKLOADS',
`GKE cluster ${clusterID} in zone ${zone} and project ${gcloudProjectName} has GKE workload metrics enabled, skipping gcloud beta container clusters update`
)

if (!GKEWMEnabled) {
if (isCelotoolHelmDryRun()) {
console.info(
`Skipping enabling GKE workload metrics for cluster ${clusterID} in zone ${zone} and project ${gcloudProjectName} due to --helmdryrun`
)
} else {
await execCmdWithExitOnFailure(
`gcloud beta container clusters update ${clusterID} --zone=${zone} --project=${gcloudProjectName} --monitoring=SYSTEM,WORKLOAD`
)
}
}
}

async function GKEWorkloadMetricsHelmParameters(clusterConfig?: BaseClusterConfig) {
// Abandon if not using GCP, it's GKE specific.
if (clusterConfig && clusterConfig.cloudProvider !== CloudProvider.GCP) {
console.error('Cannot create gke-workload-metrics in a non GCP k8s cluster, skipping')
process.exit(1)
}

const clusterName = clusterConfig
? clusterConfig!.clusterName
: fetchEnv(envVar.KUBERNETES_CLUSTER_NAME)

const params = [`--set cluster=${clusterName}`]
return params
}

export async function installGKEWorkloadMetricsIfNotExists(clusterConfig?: BaseClusterConfig) {
const GKEWMExists = await outputIncludes(
`helm list -A`,
GKEWorkloadMetricsReleaseName,
`gke-workload-metrics exists, skipping install`
)
if (!GKEWMExists) {
console.info('Installing gke-workload-metrics')
await installGKEWorkloadMetrics(clusterConfig)
}
}

async function installGKEWorkloadMetrics(clusterConfig?: BaseClusterConfig) {
// Abandon if not using GCP, it's GKE specific.
if (clusterConfig && clusterConfig.cloudProvider !== CloudProvider.GCP) {
console.error('Cannot create gke-workload-metrics in a non GCP k8s cluster, skipping')
process.exit(1)
}

let k8sClusterName, k8sClusterZone, gcpProjectName
if (clusterConfig) {
const configGCP = clusterConfig as GCPClusterConfig
k8sClusterName = configGCP!.clusterName
k8sClusterZone = configGCP!.zone
gcpProjectName = configGCP!.projectName
} else {
k8sClusterName = fetchEnv(envVar.KUBERNETES_CLUSTER_NAME)
k8sClusterZone = fetchEnv(envVar.KUBERNETES_CLUSTER_ZONE)
gcpProjectName = fetchEnv(envVar.TESTNET_PROJECT_NAME)
}

await enableGKESystemAndWorkloadMetrics(k8sClusterName, k8sClusterZone, gcpProjectName)

await createNamespaceIfNotExists(kubeNamespace)
return installGenericHelmChart(
kubeNamespace,
GKEWorkloadMetricsReleaseName,
GKEWorkloadMetricsHelmChartPath,
await GKEWorkloadMetricsHelmParameters(clusterConfig)
)
}

export async function upgradeGKEWorkloadMetrics(clusterConfig?: BaseClusterConfig) {
const params = await GKEWorkloadMetricsHelmParameters(clusterConfig)

await createNamespaceIfNotExists(kubeNamespace)
return upgradeGenericHelmChart(
kubeNamespace,
GKEWorkloadMetricsReleaseName,
GKEWorkloadMetricsHelmChartPath,
params
)
}

export async function removeGKEWorkloadMetrics() {
const GKEWMExists = await outputIncludes(`helm list -A`, GKEWorkloadMetricsReleaseName)
if (GKEWMExists) {
console.info('Removing gke-workload-metrics')
await removeGenericHelmChart(GKEWorkloadMetricsReleaseName, kubeNamespace)
}
}
9 changes: 0 additions & 9 deletions packages/helm-charts/gke-workload-metrics/Chart.yaml

This file was deleted.

5 changes: 0 additions & 5 deletions packages/helm-charts/gke-workload-metrics/NOTES.txt

This file was deleted.

11 changes: 0 additions & 11 deletions packages/helm-charts/gke-workload-metrics/README.md

This file was deleted.

This file was deleted.

Loading

0 comments on commit b7bff7f

Please sign in to comment.