Skip to content

Commit 5f92d6b

Browse files
committed
working metrics via otel
1 parent f636135 commit 5f92d6b

File tree

7 files changed

+213
-16
lines changed

7 files changed

+213
-16
lines changed

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,14 +343,14 @@ crossplane-install:
343343

344344
# Install the Kubernetes provider using kubectl
345345
crossplane-provider-install:
346-
kubectl apply -f crossplane/provider.yaml -n $(CROSSPLANE_NAMESPACE)
346+
kubectl apply -f examples/crossplane/provider.yaml -n $(CROSSPLANE_NAMESPACE)
347347
kubectl wait --for=condition=Healthy provider/provider-helm --timeout=1m
348-
kubectl apply -f crossplane/provider-config.yaml -n $(CROSSPLANE_NAMESPACE)
348+
kubectl apply -f examples/crossplane/provider-config.yaml -n $(CROSSPLANE_NAMESPACE)
349349

350350

351351

352352
.PHONY: install-k8s-provider
353353

354354
.PHONY: helm-provider-sample
355355
crossplane-provider-sample:
356-
kubectl apply -f crossplane/release.yaml -n $(CROSSPLANE_NAMESPACE)
356+
kubectl apply -f examples/crossplane/release.yaml -n $(CROSSPLANE_NAMESPACE)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: helm.crossplane.io/v1beta1
2+
kind: ProviderConfig
3+
metadata:
4+
name: helm-provider
5+
spec:
6+
credentials:
7+
source: InjectedIdentity

examples/crossplane/provider.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
apiVersion: pkg.crossplane.io/v1
2+
kind: Provider
3+
metadata:
4+
name: provider-helm
5+
spec:
6+
package: xpkg.upbound.io/crossplane-contrib/provider-helm:v0.17.0
7+
runtimeConfigRef:
8+
apiVersion: pkg.crossplane.io/v1beta1
9+
kind: DeploymentRuntimeConfig
10+
name: provider-helm
11+
---
12+
apiVersion: pkg.crossplane.io/v1beta1
13+
kind: DeploymentRuntimeConfig
14+
metadata:
15+
name: provider-helm
16+
spec:
17+
serviceAccountTemplate:
18+
metadata:
19+
name: provider-helm
20+
---
21+
apiVersion: rbac.authorization.k8s.io/v1
22+
kind: ClusterRoleBinding
23+
metadata:
24+
name: provider-helm-cluster-admin
25+
subjects:
26+
- kind: ServiceAccount
27+
name: provider-helm
28+
namespace: crossplane-system
29+
roleRef:
30+
kind: ClusterRole
31+
name: cluster-admin
32+
apiGroup: rbac.authorization.k8s.io
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: wordpress2
5+
---
6+
apiVersion: helm.crossplane.io/v1beta1
7+
kind: Release
8+
metadata:
9+
name: wordpress-oci-example
10+
spec:
11+
# rollbackLimit: 3
12+
forProvider:
13+
chart:
14+
name: wordpress
15+
repository: "oci://localhost:5000/helm-charts"
16+
version: 15.2.5
17+
# pullSecretRef:
18+
# name: oci-creds
19+
# namespace: default
20+
# url: "oci://localhost:5000/helm-charts/wordpress:9.3.19"
21+
namespace: wordpress2
22+
# insecureSkipTLSVerify: true
23+
# skipCreateNamespace: true
24+
# wait: true
25+
# skipCRDs: true
26+
values:
27+
service:
28+
type: ClusterIP
29+
set:
30+
- name: param1
31+
value: value2
32+
# valuesFrom:
33+
# - configMapKeyRef:
34+
# key: values.yaml
35+
# name: default-vals
36+
# namespace: wordpress
37+
# optional: false
38+
# - secretKeyRef:
39+
# key: svalues.yaml
40+
# name: svals
41+
# namespace: wordpress
42+
# optional: false
43+
# connectionDetails:
44+
# - apiVersion: v1
45+
# kind: Service
46+
# name: wordpress-example
47+
# namespace: wordpress
48+
# fieldPath: spec.clusterIP
49+
# #fieldPath: status.loadBalancer.ingress[0].ip
50+
# toConnectionSecretKey: ip
51+
# - apiVersion: v1
52+
# kind: Service
53+
# name: wordpress-example
54+
# namespace: wordpress
55+
# fieldPath: spec.ports[0].port
56+
# toConnectionSecretKey: port
57+
# - apiVersion: v1
58+
# kind: Secret
59+
# name: wordpress-example
60+
# namespace: wordpress
61+
# fieldPath: data.wordpress-password
62+
# toConnectionSecretKey: password
63+
# - apiVersion: v1
64+
# kind: Secret
65+
# name: manual-api-secret
66+
# namespace: wordpress
67+
# fieldPath: data.api-key
68+
# toConnectionSecretKey: api-key
69+
# # this secret created manually (not via Helm chart), so skip 'part of helm release' check
70+
# skipPartOfReleaseCheck: true
71+
# writeConnectionSecretToRef:
72+
# name: wordpress-credentials
73+
# namespace: crossplane-system
74+
providerConfigRef:
75+
name: helm-provider

examples/crossplane/release.yaml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
apiVersion: helm.crossplane.io/v1beta1
2+
kind: Release
3+
metadata:
4+
name: wordpress-example
5+
spec:
6+
# rollbackLimit: 3
7+
forProvider:
8+
chart:
9+
name: wordpress
10+
repository: https://charts.bitnami.com/bitnami
11+
version: 15.2.5 ## To use development versions, set ">0.0.0-0"
12+
# pullSecretRef:
13+
# name: museum-creds
14+
# namespace: default
15+
# url: "https://charts.bitnami.com/bitnami/wordpress-9.3.19.tgz"
16+
namespace: wordpress
17+
# insecureSkipTLSVerify: true
18+
# skipCreateNamespace: true
19+
# wait: true
20+
# skipCRDs: true
21+
values:
22+
service:
23+
type: ClusterIP
24+
set:
25+
- name: param1
26+
value: value2
27+
# valuesFrom:
28+
# - configMapKeyRef:
29+
# key: values.yaml
30+
# name: default-vals
31+
# namespace: wordpress
32+
# optional: false
33+
# - secretKeyRef:
34+
# key: svalues.yaml
35+
# name: svals
36+
# namespace: wordpress
37+
# optional: false
38+
# connectionDetails:
39+
# - apiVersion: v1
40+
# kind: Service
41+
# name: wordpress-example
42+
# namespace: wordpress
43+
# fieldPath: spec.clusterIP
44+
# #fieldPath: status.loadBalancer.ingress[0].ip
45+
# toConnectionSecretKey: ip
46+
# - apiVersion: v1
47+
# kind: Service
48+
# name: wordpress-example
49+
# namespace: wordpress
50+
# fieldPath: spec.ports[0].port
51+
# toConnectionSecretKey: port
52+
# - apiVersion: v1
53+
# kind: Secret
54+
# name: wordpress-example
55+
# namespace: wordpress
56+
# fieldPath: data.wordpress-password
57+
# toConnectionSecretKey: password
58+
# - apiVersion: v1
59+
# kind: Secret
60+
# name: manual-api-secret
61+
# namespace: wordpress
62+
# fieldPath: data.api-key
63+
# toConnectionSecretKey: api-key
64+
# # this secret created manually (not via Helm chart), so skip 'part of helm release' check
65+
# skipPartOfReleaseCheck: true
66+
# writeConnectionSecretToRef:
67+
# name: wordpress-credentials
68+
# namespace: crossplane-system
69+
providerConfigRef:
70+
name: helm-provider

internal/orchestrator/compoundhandler.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,26 @@ func (h *CompoundHandler) Monitor(ctx context.Context) (MonitorResult, error) {
5252

5353
for _, group := range groups {
5454
groupCount := len(group)
55-
dataPoint := clientoptl.NewDataPoint().
56-
AddDimension(RESOURCE, h.metric.Spec.Target.Resource).
57-
AddDimension(GROUP, h.metric.Spec.Target.Group).
58-
AddDimension(VERSION, h.metric.Spec.Target.Version).
59-
SetValue(int64(groupCount))
55+
dataPoint := clientoptl.NewDataPoint().SetValue(int64(groupCount))
6056

61-
if h.clusterName != nil {
57+
// Add base dimensions only if they have a non-empty value
58+
if h.metric.Spec.Target.Resource != "" {
59+
dataPoint.AddDimension(RESOURCE, h.metric.Spec.Target.Resource)
60+
}
61+
if h.metric.Spec.Target.Group != "" {
62+
dataPoint.AddDimension(GROUP, h.metric.Spec.Target.Group)
63+
}
64+
if h.metric.Spec.Target.Version != "" {
65+
dataPoint.AddDimension(VERSION, h.metric.Spec.Target.Version)
66+
}
67+
if h.clusterName != nil && *h.clusterName != "" {
6268
dataPoint.AddDimension(CLUSTER, *h.clusterName)
6369
}
6470

6571
// Add projected dimensions for this specific group
6672
for _, pField := range group {
67-
if pField.error == nil {
73+
// Add projected dimension only if the value is non-empty and no error occurred
74+
if pField.error == nil && pField.value != "" {
6875
dataPoint.AddDimension(pField.name, pField.value)
6976
} else {
7077
// Optionally log or handle projection errors

internal/orchestrator/singlehandler.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,19 @@ func (h *SingleHandler) Monitor(ctx context.Context) (MonitorResult, error) {
4646

4747
primaryCount := len(list.Items)
4848
// Create DataPoint and record it
49-
dataPoint := clientoptl.NewDataPoint().
50-
AddDimension(GROUP, h.metric.Spec.Target.Group).
51-
AddDimension(VERSION, h.metric.Spec.Target.Version).
52-
AddDimension(KIND, h.metric.Spec.Target.Kind).
53-
SetValue(int64(primaryCount))
49+
dataPoint := clientoptl.NewDataPoint().SetValue(int64(primaryCount))
5450

55-
if h.clusterName != nil {
51+
// Add dimensions only if they have a non-empty value
52+
if h.metric.Spec.Target.Group != "" {
53+
dataPoint.AddDimension(GROUP, h.metric.Spec.Target.Group)
54+
}
55+
if h.metric.Spec.Target.Version != "" {
56+
dataPoint.AddDimension(VERSION, h.metric.Spec.Target.Version)
57+
}
58+
if h.metric.Spec.Target.Kind != "" {
59+
dataPoint.AddDimension(KIND, h.metric.Spec.Target.Kind)
60+
}
61+
if h.clusterName != nil && *h.clusterName != "" {
5662
dataPoint.AddDimension(CLUSTER, *h.clusterName)
5763
}
5864

0 commit comments

Comments
 (0)