Skip to content
This repository has been archived by the owner on Jul 11, 2023. It is now read-only.

Commit

Permalink
feat(metrics): Decouple Grafana and Prometheus installation for OSM i…
Browse files Browse the repository at this point in the history
…nstall command (#1648)

* grafana-installation

* updated-install-test

* fixed_errors

* go_fmt_fix

* separated_prometheus_grafana

* edited_prometheus_changes

* added_unit_tests

* fixed_var

* edited_comments

Co-authored-by: nshankar13 <nshankar13@DESKTOP-U63CGKH.localdomain>
  • Loading branch information
nshankar13 and nshankar13 authored Sep 9, 2020
1 parent cb21d10 commit 15b35d1
Show file tree
Hide file tree
Showing 11 changed files with 204 additions and 25 deletions.
2 changes: 1 addition & 1 deletion charts/osm/templates/grafana-configmap.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enableGrafana}}
apiVersion: v1
kind: ConfigMap
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/grafana-deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enableGrafana}}
apiVersion: apps/v1
kind: Deployment
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/grafana-rbac.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enableGrafana}}
apiVersion: v1
kind: ServiceAccount
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/grafana-svc.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enableGrafana}}
apiVersion: v1
kind: Service
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/prometheus-configmap.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enablePrometheus }}
apiVersion: v1
kind: ConfigMap
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/prometheus-deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enablePrometheus }}
apiVersion: apps/v1
kind: Deployment
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/prometheus-rbac.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enablePrometheus }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
Expand Down
2 changes: 1 addition & 1 deletion charts/osm/templates/prometheus-svc.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if .Values.OpenServiceMesh.enableMetricsStack }}
{{- if .Values.OpenServiceMesh.enablePrometheus }}
apiVersion: v1
kind: Service
metadata:
Expand Down
3 changes: 2 additions & 1 deletion charts/osm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ OpenServiceMesh:
enablePermissiveTrafficPolicy: false
enableBackpressureExperimental: false
enableEgress: false
enableMetricsStack: true
enablePrometheus: true
enableGrafana: true
meshName: osm
meshCIDRRanges: 0.0.0.0/0
useHTTPSIngress: false
Expand Down
13 changes: 9 additions & 4 deletions cmd/cli/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,11 @@ type installCmd struct {
// become part of SMI Spec.
enableBackpressureExperimental bool

// Toggle to deploy/not deploy metrics (Promethus+Grafana) stack
enableMetricsStack bool
// Toggle to enable/disable Prometheus installation
enablePrometheus bool

// Toggle to enable/disable Grafana installation
enableGrafana bool

// Toggle this to enable/disable the automatic deployment of Jaeger
deployJaeger bool
Expand Down Expand Up @@ -145,7 +148,8 @@ func newInstallCmd(config *helm.Configuration, out io.Writer) *cobra.Command {
f.BoolVar(&inst.enableEgress, "enable-egress", false, "Enable egress in the mesh")
f.StringSliceVar(&inst.meshCIDRRanges, "mesh-cidr", []string{}, "mesh CIDR range, accepts multiple CIDRs, required if enable-egress option is true")
f.BoolVar(&inst.enableBackpressureExperimental, "enable-backpressure-experimental", false, "Enable experimental backpressure feature")
f.BoolVar(&inst.enableMetricsStack, "enable-metrics-stack", true, "Enable metrics (Prometheus and Grafana) deployment")
f.BoolVar(&inst.enablePrometheus, "enable-prometheus", true, "Enable Prometheus installation and deployment")
f.BoolVar(&inst.enableGrafana, "enable-grafana", true, "Enable Grafana installation and deployment")
f.StringVar(&inst.meshName, "mesh-name", defaultMeshName, "name for the new control plane instance")
f.BoolVar(&inst.deployJaeger, "deploy-jaeger", true, "Deploy Jaeger in the namespace of the OSM controller")

Expand Down Expand Up @@ -208,7 +212,8 @@ func (i *installCmd) resolveValues() (map[string]interface{}, error) {
fmt.Sprintf("OpenServiceMesh.enableDebugServer=%t", i.enableDebugServer),
fmt.Sprintf("OpenServiceMesh.enablePermissiveTrafficPolicy=%t", i.enablePermissiveTrafficPolicy),
fmt.Sprintf("OpenServiceMesh.enableBackpressureExperimental=%t", i.enableBackpressureExperimental),
fmt.Sprintf("OpenServiceMesh.enableMetricsStack=%t", i.enableMetricsStack),
fmt.Sprintf("OpenServiceMesh.enablePrometheus=%t", i.enablePrometheus),
fmt.Sprintf("OpenServiceMesh.enableGrafana=%t", i.enableGrafana),
fmt.Sprintf("OpenServiceMesh.meshName=%s", i.meshName),
fmt.Sprintf("OpenServiceMesh.enableEgress=%t", i.enableEgress),
fmt.Sprintf("OpenServiceMesh.meshCIDRRanges=%s", strings.Join(i.meshCIDRRanges, " ")),
Expand Down
197 changes: 185 additions & 12 deletions cmd/cli/install_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ var _ = Describe("Running the install command", func() {
prometheusRetentionTime: testRetentionTime,
meshName: defaultMeshName,
enableEgress: true,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
meshCIDRRanges: testMeshCIDRRanges,
clientSet: fakeClientSet,
}
Expand Down Expand Up @@ -139,7 +140,8 @@ var _ = Describe("Running the install command", func() {
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down Expand Up @@ -189,7 +191,8 @@ var _ = Describe("Running the install command", func() {
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
clientSet: fakeClientSet,
}

Expand Down Expand Up @@ -254,7 +257,8 @@ var _ = Describe("Running the install command", func() {
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down Expand Up @@ -311,7 +315,8 @@ var _ = Describe("Running the install command", func() {
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
clientSet: fakeClientSet,
}

Expand Down Expand Up @@ -377,7 +382,8 @@ var _ = Describe("Running the install command", func() {
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down Expand Up @@ -476,7 +482,8 @@ var _ = Describe("Running the install command", func() {
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
clientSet: fakeClientSet,
}

Expand Down Expand Up @@ -542,7 +549,8 @@ var _ = Describe("Running the install command", func() {
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down Expand Up @@ -764,7 +772,8 @@ var _ = Describe("Resolving values for install command with vault parameters", f
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
}

vals, err = installCmd.resolveValues()
Expand Down Expand Up @@ -811,7 +820,169 @@ var _ = Describe("Resolving values for install command with vault parameters", f
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
})

var _ = Describe("Ensure that grafana is disabled when flag is set to false", func() {
var (
vals map[string]interface{}
err error
)

BeforeEach(func() {
installCmd := &installCmd{
containerRegistry: testRegistry,
containerRegistrySecret: testRegistrySecret,
certificateManager: "vault",
vaultHost: testVaultHost,
vaultProtocol: testVaultProtocol,
certmanagerIssuerName: testCertManagerIssuerName,
certmanagerIssuerKind: testCertManagerIssuerKind,
certmanagerIssuerGroup: testCertManagerIssuerGroup,
vaultToken: testVaultToken,
vaultRole: testVaultRole,
osmImageTag: testOsmImageTag,
osmImagePullPolicy: defaultOsmImagePullPolicy,
serviceCertValidityMinutes: 1,
prometheusRetentionTime: testRetentionTime,
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enablePrometheus: true,
enableGrafana: false,
}

vals, err = installCmd.resolveValues()
})

It("should not error", func() {
Expect(err).NotTo(HaveOccurred())
})

It("should resolve correctly", func() {
Expect(vals).To(BeEquivalentTo(map[string]interface{}{
"OpenServiceMesh": map[string]interface{}{
"certificateManager": "vault",
"certmanager": map[string]interface{}{
"issuerKind": "ClusterIssuer",
"issuerGroup": "example.co.uk",
"issuerName": "my-osm-ca",
},
"meshName": defaultMeshName,
"image": map[string]interface{}{
"registry": testRegistry,
"tag": testOsmImageTag,
"pullPolicy": defaultOsmImagePullPolicy,
},
"imagePullSecrets": []interface{}{
map[string]interface{}{
"name": testRegistrySecret,
},
},
"serviceCertValidityMinutes": int64(1),
"vault": map[string]interface{}{
"host": testVaultHost,
"protocol": "http",
"token": testVaultToken,
"role": testVaultRole,
},
"prometheus": map[string]interface{}{
"retention": map[string]interface{}{
"time": "5d",
},
},
"enableDebugServer": false,
"enablePermissiveTrafficPolicy": false,
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enablePrometheus": true,
"enableGrafana": false,
"deployJaeger": false,
}}))
})

})

var _ = Describe("Ensure that prometheus is disabled when flag is set to false", func() {
var (
vals map[string]interface{}
err error
)

BeforeEach(func() {
installCmd := &installCmd{
containerRegistry: testRegistry,
containerRegistrySecret: testRegistrySecret,
certificateManager: "vault",
vaultHost: testVaultHost,
vaultProtocol: testVaultProtocol,
certmanagerIssuerName: testCertManagerIssuerName,
certmanagerIssuerKind: testCertManagerIssuerKind,
certmanagerIssuerGroup: testCertManagerIssuerGroup,
vaultToken: testVaultToken,
vaultRole: testVaultRole,
osmImageTag: testOsmImageTag,
osmImagePullPolicy: defaultOsmImagePullPolicy,
serviceCertValidityMinutes: 1,
prometheusRetentionTime: testRetentionTime,
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enablePrometheus: false,
enableGrafana: true,
}

vals, err = installCmd.resolveValues()
})

It("should not error", func() {
Expect(err).NotTo(HaveOccurred())
})

It("should resolve correctly", func() {
Expect(vals).To(BeEquivalentTo(map[string]interface{}{
"OpenServiceMesh": map[string]interface{}{
"certificateManager": "vault",
"certmanager": map[string]interface{}{
"issuerKind": "ClusterIssuer",
"issuerGroup": "example.co.uk",
"issuerName": "my-osm-ca",
},
"meshName": defaultMeshName,
"image": map[string]interface{}{
"registry": testRegistry,
"tag": testOsmImageTag,
"pullPolicy": defaultOsmImagePullPolicy,
},
"imagePullSecrets": []interface{}{
map[string]interface{}{
"name": testRegistrySecret,
},
},
"serviceCertValidityMinutes": int64(1),
"vault": map[string]interface{}{
"host": testVaultHost,
"protocol": "http",
"token": testVaultToken,
"role": testVaultRole,
},
"prometheus": map[string]interface{}{
"retention": map[string]interface{}{
"time": "5d",
},
},
"enableDebugServer": false,
"enablePermissiveTrafficPolicy": false,
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enablePrometheus": false,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down Expand Up @@ -842,7 +1013,8 @@ var _ = Describe("Resolving values for install command with cert-manager paramet
meshName: defaultMeshName,
enableEgress: true,
meshCIDRRanges: testMeshCIDRRanges,
enableMetricsStack: true,
enablePrometheus: true,
enableGrafana: true,
}

vals, err = installCmd.resolveValues()
Expand Down Expand Up @@ -889,7 +1061,8 @@ var _ = Describe("Resolving values for install command with cert-manager paramet
"enableBackpressureExperimental": false,
"enableEgress": true,
"meshCIDRRanges": testMeshCIDR,
"enableMetricsStack": true,
"enablePrometheus": true,
"enableGrafana": true,
"deployJaeger": false,
}}))
})
Expand Down

0 comments on commit 15b35d1

Please sign in to comment.