Skip to content

Commit fe6c7ea

Browse files
committed
feat: create secrets
1 parent 8dd0cb9 commit fe6c7ea

File tree

3 files changed

+45
-7
lines changed

3 files changed

+45
-7
lines changed

internal/controllers/cluster/controller.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ func (r *ClusterReconciler) buildGatewayManager(ctx context.Context, req reconci
231231
DNSConfig: r.Config.Spec.DNS,
232232
PlatformClient: r.PlatformCluster.Client(),
233233
ClusterClient: access.Client(),
234-
PullSecrets: []corev1.LocalObjectReference{}, // TODO
235234
FluxKubeconfig: &fluxmeta.KubeConfigReference{
236235
SecretRef: &fluxmeta.SecretKeyReference{
237236
Name: ar.Status.SecretRef.Name,

pkg/envoy/config.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"time"
88

9-
"github.com/openmcp-project/platform-service-gateway/pkg/utils"
109
corev1 "k8s.io/api/core/v1"
1110
apierrors "k8s.io/apimachinery/pkg/api/errors"
1211
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -16,6 +15,8 @@ import (
1615
"sigs.k8s.io/controller-runtime/pkg/client"
1716
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1817
gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
18+
19+
"github.com/openmcp-project/platform-service-gateway/pkg/utils"
1920
)
2021

2122
var (
@@ -163,7 +164,7 @@ func (g *Gateway) reconcileEnvoyProxyFunc(obj *unstructured.Unstructured) func()
163164
"envoyDeployment": map[string]any{
164165
"container": container,
165166
"pod": map[string]any{
166-
"imagePullSecrets": g.PullSecrets,
167+
"imagePullSecrets": g.EnvoyConfig.Images.ImagePullSecrets,
167168
},
168169
},
169170
},

pkg/envoy/deployment.go

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
fluxmeta "github.com/fluxcd/pkg/apis/meta"
1212
sourcev1 "github.com/fluxcd/source-controller/api/v1"
1313
clustersv1alpha1 "github.com/openmcp-project/openmcp-operator/api/clusters/v1alpha1"
14+
corev1 "k8s.io/api/core/v1"
1415
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
1516
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1617
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -32,25 +33,32 @@ type Gateway struct {
3233
DNSConfig v1alpha1.DNSConfig
3334
PlatformClient client.Client
3435
ClusterClient client.Client
35-
//PullSecrets []corev1.LocalObjectReference
3636
FluxKubeconfig *fluxmeta.KubeConfigReference
3737
}
3838

3939
func (g *Gateway) InstallOrUpdate(ctx context.Context) error {
4040
repo := g.getRepo()
4141
helmRelease := g.getHelmRelease()
4242

43+
imagePullSecretOps, err := g.ensureSecrets(ctx, g.Cluster.Namespace, deploymentNamespace)
44+
if err != nil {
45+
return fmt.Errorf("failed to ensure image pull secrets: %w", err)
46+
}
47+
4348
ops := []applyOperation{
4449
ensureNamespace(deploymentNamespace, g.ClusterClient),
45-
{
50+
}
51+
ops = append(ops, imagePullSecretOps...)
52+
ops = append(ops,
53+
applyOperation{
4654
obj: repo,
4755
f: g.reconcileOCIRepositoryFunc(repo),
4856
},
49-
{
57+
applyOperation{
5058
obj: helmRelease,
5159
f: g.reconcileHelmReleaseFunc(repo.Name, helmRelease),
5260
},
53-
}
61+
)
5462

5563
return createOrUpdate(ctx, g.PlatformClient, ops...)
5664
}
@@ -131,6 +139,36 @@ func (g *Gateway) reconcileHelmReleaseFunc(repoName string, obj *helmv2.HelmRele
131139
}
132140
}
133141

142+
// ----- Secrets -----
143+
144+
func (g *Gateway) ensureSecrets(ctx context.Context, sourceNamespace, targetNamespace string) ([]applyOperation, error) {
145+
secretList := &corev1.SecretList{}
146+
if err := g.PlatformClient.List(ctx, secretList, client.InNamespace(sourceNamespace)); err != nil {
147+
return nil, fmt.Errorf("failed to list secrets in namespace %s: %w", sourceNamespace, err)
148+
}
149+
150+
ops := make([]applyOperation, 0, len(secretList.Items))
151+
for _, imagePullSecret := range g.EnvoyConfig.Images.ImagePullSecrets {
152+
for _, secret := range secretList.Items {
153+
if imagePullSecret.Name == secret.Name {
154+
ops = append(ops, applyOperation{
155+
obj: &corev1.Secret{
156+
ObjectMeta: metav1.ObjectMeta{
157+
Name: secret.Name,
158+
Namespace: targetNamespace,
159+
},
160+
Data: secret.Data,
161+
Type: secret.Type,
162+
},
163+
c: g.ClusterClient,
164+
})
165+
}
166+
}
167+
}
168+
169+
return ops, nil
170+
}
171+
134172
func (g *Gateway) generateHelmValuesJSON() (*apiextensionsv1.JSON, error) {
135173
values := g.generateHelmValues()
136174
raw, err := json.Marshal(values)

0 commit comments

Comments
 (0)