Skip to content

Commit 5af209b

Browse files
xrstfmirzakopic
andauthored
[observability] Install OTel-Operator / Prometheus CRDs as dedicated HelmReleases (#640)
* add support for prometheusCRDs, similar to how traefikCRDs work On-behalf-of: @SAP christoph.mewes@sap.com Signed-off-by: Christoph Mewes <christoph@kubermatic.com> * do the same for the otel-operator On-behalf-of: @SAP christoph.mewes@sap.com Signed-off-by: Christoph Mewes <christoph@kubermatic.com> * integrate into e2e tests On-behalf-of: @SAP christoph.mewes@sap.com Signed-off-by: Christoph Mewes <christoph@kubermatic.com> --------- Signed-off-by: Christoph Mewes <christoph@kubermatic.com> Co-authored-by: Mirza Kopic <1658560+mirzakopic@users.noreply.github.com>
1 parent 0ec7668 commit 5af209b

8 files changed

Lines changed: 240 additions & 1 deletion

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{{- if .opentelemetryOperator.enabled }}
2+
apiVersion: argoproj.io/v1alpha1
3+
kind: Application
4+
metadata:
5+
name: {{ .opentelemetryOperator.name }}
6+
namespace: {{ .helmReleaseNamespace }}
7+
labels:
8+
core.platform-mesh.io/operator-created: "true"
9+
annotations:
10+
argocd.argoproj.io/sync-wave: "{{ .opentelemetryOperator.syncWave | default 0 }}"
11+
finalizers:
12+
- resources-finalizer.argocd.argoproj.io
13+
spec:
14+
project: platform-mesh-runtime
15+
{{- if .opentelemetryOperator.ignoreDifferences }}
16+
ignoreDifferences:
17+
{{ toYaml .opentelemetryOperator.ignoreDifferences | nindent 4 }}
18+
{{- end }}
19+
source:
20+
{{- if .opentelemetryOperator.repoURL }}
21+
repoURL: {{ .opentelemetryOperator.repoURL }}
22+
{{- else }}
23+
repoURL: https://open-telemetry.github.io/opentelemetry-helm-charts
24+
{{- end }}
25+
chart: opentelemetry-operator
26+
{{- if .opentelemetryOperator.targetRevision }}
27+
targetRevision: "{{ .opentelemetryOperator.targetRevision }}"
28+
{{- else }}
29+
targetRevision: "*"
30+
{{- end }}
31+
{{- if .opentelemetryOperator.values }}
32+
helm:
33+
values: |
34+
{{ toYaml .opentelemetryOperator.values | nindent 8 }}
35+
{{- end }}
36+
destination:
37+
server: {{ .destinationServer | default "https://kubernetes.default.svc" }}
38+
namespace: {{ .opentelemetryOperator.targetNamespace }}
39+
syncPolicy:
40+
automated:
41+
prune: true
42+
selfHeal: true
43+
{{- if .opentelemetryOperator.syncOptions }}
44+
syncOptions:
45+
{{ toYaml .opentelemetryOperator.syncOptions | nindent 4 }}
46+
{{- else }}
47+
syncOptions:
48+
- CreateNamespace=true
49+
{{- if .opentelemetryOperator.ignoreDifferences }}
50+
- RespectIgnoreDifferences=true
51+
{{- end }}
52+
{{- end }}
53+
{{- end }}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{{- if .opentelemetryOperator.enabled }}
2+
apiVersion: helm.toolkit.fluxcd.io/v2
3+
kind: HelmRelease
4+
metadata:
5+
name: {{ .opentelemetryOperator.name }}
6+
namespace: {{ .helmReleaseNamespace }}
7+
labels:
8+
core.platform-mesh.io/operator-created: "true"
9+
spec:
10+
{{- if .kubeConfigEnabled }}
11+
kubeConfig:
12+
secretRef:
13+
name: {{ .kubeConfigSecretName }}
14+
key: {{ .kubeConfigSecretKey }}
15+
{{- end }}
16+
chartRef:
17+
kind: OCIRepository
18+
name: {{ .opentelemetryOperator.name }}
19+
namespace: {{ .helmReleaseNamespace }}
20+
dependsOn:
21+
- name: {{ .certManager.name }}
22+
interval: {{ .opentelemetryOperator.interval }}
23+
releaseName: {{ .opentelemetryOperator.name }}
24+
targetNamespace: {{ .opentelemetryOperator.targetNamespace }}
25+
timeout: 15m
26+
{{- if .opentelemetryOperator.values }}
27+
values:
28+
{{ toYaml .opentelemetryOperator.values | nindent 4 }}
29+
{{- end }}
30+
{{- end }}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{{- if .prometheusOperatorCRDs.enabled }}
2+
apiVersion: argoproj.io/v1alpha1
3+
kind: Application
4+
metadata:
5+
name: {{ .prometheusOperatorCRDs.name }}
6+
namespace: {{ .helmReleaseNamespace }}
7+
labels:
8+
core.platform-mesh.io/operator-created: "true"
9+
annotations:
10+
argocd.argoproj.io/sync-wave: "{{ .prometheusOperatorCRDs.syncWave | default 0 }}"
11+
finalizers:
12+
- resources-finalizer.argocd.argoproj.io
13+
spec:
14+
project: platform-mesh-runtime
15+
{{- if .prometheusOperatorCRDs.ignoreDifferences }}
16+
ignoreDifferences:
17+
{{ toYaml .prometheusOperatorCRDs.ignoreDifferences | nindent 4 }}
18+
{{- end }}
19+
source:
20+
{{- if .prometheusOperatorCRDs.repoURL }}
21+
repoURL: {{ .prometheusOperatorCRDs.repoURL }}
22+
{{- else }}
23+
repoURL: https://prometheus-community.github.io/helm-charts
24+
{{- end }}
25+
chart: prometheus-operator-crds
26+
{{- if .prometheusOperatorCRDs.targetRevision }}
27+
targetRevision: "{{ .prometheusOperatorCRDs.targetRevision }}"
28+
{{- else }}
29+
targetRevision: "*"
30+
{{- end }}
31+
{{- if .prometheusOperatorCRDs.values }}
32+
helm:
33+
values: |
34+
{{ toYaml .prometheusOperatorCRDs.values | nindent 8 }}
35+
{{- end }}
36+
destination:
37+
server: {{ .destinationServer | default "https://kubernetes.default.svc" }}
38+
namespace: {{ .prometheusOperatorCRDs.targetNamespace }}
39+
syncPolicy:
40+
automated:
41+
prune: true
42+
selfHeal: true
43+
{{- if .prometheusOperatorCRDs.syncOptions }}
44+
syncOptions:
45+
{{ toYaml .prometheusOperatorCRDs.syncOptions | nindent 4 }}
46+
{{- else }}
47+
syncOptions:
48+
- CreateNamespace=true
49+
{{- if .prometheusOperatorCRDs.ignoreDifferences }}
50+
- RespectIgnoreDifferences=true
51+
{{- end }}
52+
{{- end }}
53+
{{- end }}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{{- if .prometheusOperatorCRDs.enabled }}
2+
apiVersion: helm.toolkit.fluxcd.io/v2
3+
kind: HelmRelease
4+
metadata:
5+
name: {{ .prometheusOperatorCRDs.name }}
6+
namespace: {{ .helmReleaseNamespace }}
7+
labels:
8+
core.platform-mesh.io/operator-created: "true"
9+
spec:
10+
{{- if .kubeConfigEnabled }}
11+
kubeConfig:
12+
secretRef:
13+
name: {{ .kubeConfigSecretName }}
14+
key: {{ .kubeConfigSecretKey }}
15+
{{- end }}
16+
chart:
17+
spec:
18+
chart: prometheus-operator-crds
19+
reconcileStrategy: ChartVersion
20+
sourceRef:
21+
kind: HelmRepository
22+
name: {{ .prometheusOperatorCRDs.name }}
23+
namespace: {{ .helmReleaseNamespace }}
24+
dependsOn: []
25+
interval: {{ .prometheusOperatorCRDs.interval }}
26+
releaseName: {{ .prometheusOperatorCRDs.name }}
27+
targetNamespace: {{ .prometheusOperatorCRDs.targetNamespace }}
28+
timeout: 15m
29+
{{- if .prometheusOperatorCRDs.values }}
30+
values:
31+
{{ toYaml .prometheusOperatorCRDs.values | nindent 4 }}
32+
{{- end }}
33+
{{- end }}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- if .opentelemetryOperator.enabled }}
2+
apiVersion: delivery.ocm.software/v1alpha1
3+
kind: Resource
4+
metadata:
5+
labels:
6+
artifact: chart
7+
repo: oci
8+
name: {{ .opentelemetryOperator.name }}
9+
namespace: {{ .helmReleaseNamespace }}
10+
spec:
11+
componentRef:
12+
name: {{ .ocm.component.name }}
13+
ocmConfig:
14+
- apiVersion: delivery.ocm.software/v1alpha1
15+
kind: Repository
16+
name: {{ .ocm.repo.name }}
17+
namespace: {{ .releaseNamespace }}
18+
resource:
19+
byReference:
20+
referencePath:
21+
{{- range .ocm.referencePath }}
22+
- name: {{ .name }}
23+
{{- end }}
24+
- name: {{ .opentelemetryOperator.ocmComponentName }}
25+
resource:
26+
name: {{ .opentelemetryOperator.ocmResourceName }}
27+
{{- end }}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- if .prometheusOperatorCRDs.enabled }}
2+
apiVersion: delivery.ocm.software/v1alpha1
3+
kind: Resource
4+
metadata:
5+
labels:
6+
artifact: chart
7+
repo: helm
8+
name: {{ .prometheusOperatorCRDs.name }}
9+
namespace: {{ .helmReleaseNamespace }}
10+
spec:
11+
componentRef:
12+
name: {{ .ocm.component.name }}
13+
ocmConfig:
14+
- apiVersion: delivery.ocm.software/v1alpha1
15+
kind: Repository
16+
name: {{ .ocm.repo.name }}
17+
namespace: {{ .releaseNamespace }}
18+
resource:
19+
byReference:
20+
referencePath:
21+
{{- range .ocm.referencePath }}
22+
- name: {{ .name }}
23+
{{- end }}
24+
- name: {{ .prometheusOperatorCRDs.ocmComponentName }}
25+
resource:
26+
name: {{ .prometheusOperatorCRDs.ocmResourceName }}
27+
{{- end }}

test/e2e/kind/kustomize/components/ocm/component.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ spec:
1414
namespace: platform-mesh-system
1515
repositoryRef:
1616
name: platform-mesh
17-
semver: 0.4.0-build.87
17+
semver: 0.4.0-build.321

test/e2e/kind/yaml/platform-mesh-resource/default-profile.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,22 @@ data:
468468
targetNamespace: default
469469
values:
470470
gatewayAPI: false
471+
prometheusOperatorCRDs:
472+
enabled: true
473+
interval: 1m
474+
name: prometheus-operator-crds
475+
ocmComponentName: prometheus-operator-crds
476+
ocmResourceName: chart
477+
targetNamespace: default
478+
values: {}
479+
opentelemetryOperator:
480+
enabled: true
481+
interval: 1m
482+
name: opentelemetry-operator
483+
ocmComponentName: opentelemetry-operator
484+
ocmResourceName: chart
485+
targetNamespace: default
486+
values: {}
471487
kind: ConfigMap
472488
metadata:
473489
name: platform-mesh-profile

0 commit comments

Comments
 (0)