Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 3523050

Browse files
committedMay 21, 2025
Authentication for metrics and version endpoint
Signed-off-by: naveenpaul1 <[email protected]>
1 parent 52143f9 commit 3523050

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed
 

‎pkg/system/phase4_configuring.go

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,32 @@ func (r *Reconciler) ReconcileSystemSecrets() error {
135135
if err := r.ReconcileObject(r.SecretEndpoints, r.SetDesiredSecretEndpoints); err != nil {
136136
return err
137137
}
138+
139+
if err := r.ReconcileObject(r.SecretMetricsAuth, r.SetDesiredMetricsAuth); err != nil {
140+
return err
141+
}
142+
143+
return nil
144+
}
145+
146+
// SetDesiredMetricsAuth updates the ServiceAccount as desired for reconciling
147+
func (r *Reconciler) SetDesiredMetricsAuth() error {
148+
149+
// Load string data from data
150+
util.SecretResetStringDataFromData(r.SecretMetricsAuth)
151+
// SecretMetricsAuth exists means the system already created and we can skip
152+
if r.SecretMetricsAuth.StringData["metrics_token"] != "" {
153+
return nil
154+
}
155+
res, err := r.NBClient.CreateAuthAPI(nb.CreateAuthParams{
156+
System: r.Request.Name,
157+
Role: "metrics-auth",
158+
Email: options.OperatorAccountEmail,
159+
})
160+
if err != nil {
161+
return fmt.Errorf("cannot create an auth token for metrics, error: %v", err)
162+
}
163+
r.SecretMetricsAuth.StringData["metrics_token"] = res.Token
138164
return nil
139165
}
140166

@@ -619,11 +645,11 @@ func (r *Reconciler) setDesiredEndpointMounts(podSpec *corev1.PodSpec, container
619645
//this is a way to let containers explicitly know
620646
//that an nsr should be mounted on them
621647
envVar := corev1.EnvVar{
622-
Name: "NSFS_NSR_" + nsStore.Name,
648+
Name: "NSFS_NSR_" + nsStore.Name,
623649
Value: "mounted",
624650
}
625651

626-
util.MergeEnvArrays(&container.Env, &[]corev1.EnvVar{envVar});
652+
util.MergeEnvArrays(&container.Env, &[]corev1.EnvVar{envVar})
627653
}
628654
}
629655

@@ -1583,15 +1609,42 @@ func (r *Reconciler) ReconcileServiceMonitors() error {
15831609

15841610
r.ApplyMonitoringLabels(r.ServiceMonitorMgmt)
15851611

1586-
if err := r.ReconcileObjectOptional(r.ServiceMonitorMgmt, nil); err != nil {
1612+
if err := r.ReconcileObjectOptional(r.ServiceMonitorMgmt, r.setDesiredServiceMonitorMgmt); err != nil {
15871613
return err
15881614
}
1589-
if err := r.ReconcileObjectOptional(r.ServiceMonitorS3, nil); err != nil {
1615+
if err := r.ReconcileObjectOptional(r.ServiceMonitorS3, r.setDesiredServiceMonitorS3); err != nil {
15901616
return err
15911617
}
15921618
return nil
15931619
}
15941620

1621+
// setDesiredServiceMonitorMgmt set authorization to managemnt ServiceMonitor
1622+
func (r *Reconciler) setDesiredServiceMonitorMgmt() error {
1623+
r.setServiceMonitorAuthorization(r.ServiceMonitorMgmt.Spec.Endpoints)
1624+
return nil
1625+
}
1626+
1627+
// setDesiredServiceMonitorS3 set authorization to s3 ServiceMonitor
1628+
func (r *Reconciler) setDesiredServiceMonitorS3() error {
1629+
r.setServiceMonitorAuthorization(r.ServiceMonitorS3.Spec.Endpoints)
1630+
return nil
1631+
}
1632+
1633+
// setServiceMonitorAuthorization set authorization to both managemnt and s3 ServiceMonitor
1634+
func (r *Reconciler) setServiceMonitorAuthorization(endpoints []monitoringv1.Endpoint) {
1635+
for i := range endpoints {
1636+
endpoints[i].Authorization = &monitoringv1.SafeAuthorization{
1637+
Type: "Bearer",
1638+
Credentials: &corev1.SecretKeySelector{
1639+
LocalObjectReference: corev1.LocalObjectReference{
1640+
Name: r.SecretMetricsAuth.Name,
1641+
},
1642+
Key: "metrics_token",
1643+
},
1644+
}
1645+
}
1646+
}
1647+
15951648
// ReconcileReadSystem calls read_system on noobaa server and stores the result
15961649
func (r *Reconciler) ReconcileReadSystem() error {
15971650
// Skip if joining another NooBaa

‎pkg/system/reconciler.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ type Reconciler struct {
125125
ExternalPgSecret *corev1.Secret
126126
ExternalPgSSLSecret *corev1.Secret
127127
BucketNotificationsPVC *corev1.PersistentVolumeClaim
128+
SecretMetricsAuth *corev1.Secret
128129

129130
// CNPG resources
130131
CNPGImageCatalog *cnpgv1.ImageCatalog
@@ -194,6 +195,8 @@ func NewReconciler(
194195

195196
CNPGImageCatalog: cnpg.GetCnpgImageCatalogObj(req.Namespace, req.Name+pgImageCatalogSuffix),
196197
CNPGCluster: cnpg.GetCnpgClusterObj(req.Namespace, req.Name+pgClusterSuffix),
198+
199+
SecretMetricsAuth: util.KubeObject(bundle.File_deploy_internal_secret_empty_yaml).(*corev1.Secret),
197200
}
198201

199202
// Set Namespace
@@ -242,6 +245,7 @@ func NewReconciler(
242245
r.AdapterHPA.Namespace = r.Request.Namespace
243246
r.BucketLoggingPVC.Namespace = r.Request.Namespace
244247
r.BucketNotificationsPVC.Namespace = r.Request.Namespace
248+
r.SecretMetricsAuth.Namespace = r.Request.Namespace
245249

246250
// Set Names
247251
r.NooBaa.Name = r.Request.Name
@@ -287,6 +291,7 @@ func NewReconciler(
287291
r.AdapterHPA.Name = r.Request.Name + "-hpav2"
288292
r.BucketLoggingPVC.Name = r.Request.Name + "-bucket-logging-pvc"
289293
r.BucketNotificationsPVC.Name = r.Request.Name + "-bucket-notifications-pvc"
294+
r.SecretMetricsAuth.Name = "metrics-auth-secret"
290295

291296
// Set the target service for routes.
292297
r.RouteMgmt.Spec.To.Name = r.ServiceMgmt.Name

0 commit comments

Comments
 (0)
Please sign in to comment.