From ff151a150e2425a12d2ae8073ace4c2c8cb5c18b Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Sat, 27 Jan 2024 09:11:40 +0100 Subject: [PATCH] filter apps by labels --- .../templates/kubeappsapis/deployment.yaml | 2 +- .../system/kubeapps/images/kubeapps-apis.json | 6 +- .../kubeapps/images/kubeapps-apis/Dockerfile | 2 + .../kubeapps/images/kubeapps-apis/labels.diff | 59 +++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 packages/system/kubeapps/images/kubeapps-apis/labels.diff diff --git a/packages/system/kubeapps/charts/kubeapps/templates/kubeappsapis/deployment.yaml b/packages/system/kubeapps/charts/kubeapps/templates/kubeappsapis/deployment.yaml index c64484eb..c6b66bd1 100644 --- a/packages/system/kubeapps/charts/kubeapps/templates/kubeappsapis/deployment.yaml +++ b/packages/system/kubeapps/charts/kubeapps/templates/kubeappsapis/deployment.yaml @@ -71,7 +71,7 @@ spec: {{- end }} containers: - name: kubeappsapis - image: ghcr.io/aenix-io/cozystack/kubeapps-apis:latest + image: ghcr.io/aenix-io/cozystack/kubeapps-apis:latest@sha256:318d655e1d15d6ef2bfcaeb5d2cbec0c76896270ff312115e4aeee4144143d1e imagePullPolicy: {{ .Values.kubeappsapis.image.pullPolicy | quote }} {{- if .Values.kubeappsapis.containerSecurityContext.enabled }} securityContext: {{- omit .Values.kubeappsapis.containerSecurityContext "enabled" | toYaml | nindent 12 }} diff --git a/packages/system/kubeapps/images/kubeapps-apis.json b/packages/system/kubeapps/images/kubeapps-apis.json index 1454724b..594a8114 100644 --- a/packages/system/kubeapps/images/kubeapps-apis.json +++ b/packages/system/kubeapps/images/kubeapps-apis.json @@ -1,4 +1,4 @@ { - "containerimage.config.digest": "sha256:66f229577dbbfe93166e5705d80c3164d9c645b2863f4f2a41b973341ddd4fcd", - "containerimage.digest": "sha256:2951e3e6bb318617095b060f7bf7155d08e9be568ebbd04e0555f6205cea06f1" -} \ No newline at end of file + "containerimage.config.digest": "sha256:89ac857482dae7aa0cf4247331fec8053a66256d7172a1570b0d890a5b7cef57", + "containerimage.digest": "sha256:318d655e1d15d6ef2bfcaeb5d2cbec0c76896270ff312115e4aeee4144143d1e" +} diff --git a/packages/system/kubeapps/images/kubeapps-apis/Dockerfile b/packages/system/kubeapps/images/kubeapps-apis/Dockerfile index f72964d5..456a59ee 100644 --- a/packages/system/kubeapps/images/kubeapps-apis/Dockerfile +++ b/packages/system/kubeapps/images/kubeapps-apis/Dockerfile @@ -9,7 +9,9 @@ RUN apk add --no-cache patch WORKDIR /source RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/${VERSION}.tar.gz | tar xzf - --strip-components=1 COPY fix-flux.diff /patches/fix-flux.diff +COPY labels.diff /patches/labels.diff RUN patch -p1 < /patches/fix-flux.diff +RUN patch -p1 < /patches/labels.diff FROM bitnami/golang:1.21.1 as builder WORKDIR /go/src/github.com/vmware-tanzu/kubeapps diff --git a/packages/system/kubeapps/images/kubeapps-apis/labels.diff b/packages/system/kubeapps/images/kubeapps-apis/labels.diff new file mode 100644 index 00000000..a7317cc6 --- /dev/null +++ b/packages/system/kubeapps/images/kubeapps-apis/labels.diff @@ -0,0 +1,59 @@ +diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go +index fe7ca772d..3b46afbd1 100644 +--- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go ++++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go +@@ -29,8 +29,10 @@ import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ++ "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/types" + log "k8s.io/klog/v2" ++ ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/yaml" + ) + +@@ -54,7 +56,10 @@ func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, + // see any results created/updated/deleted after the first request is issued + // To fix this, we must make use of resourceVersion := relList.GetResourceVersion() + var relList helmv2.HelmReleaseList +- if err = client.List(ctx, &relList); err != nil { ++ listOptions := ctrlclient.ListOptions{ ++ LabelSelector: labels.SelectorFromSet(labels.Set{"cozystack.io/ui": "true"}), ++ } ++ if err = client.List(ctx, &relList, &listOptions); err != nil { + return nil, connecterror.FromK8sError("list", "HelmRelease", namespace+"/*", err) + } else { + return relList.Items, nil +@@ -511,6 +516,9 @@ func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.Namesp + ObjectMeta: metav1.ObjectMeta{ + Name: targetName.Name, + Namespace: targetName.Namespace, ++ Labels: map[string]string{ ++ "cozystack.io/ui": "true", ++ }, + }, + Spec: helmv2.HelmReleaseSpec{ + Chart: helmv2.HelmChartTemplate{ +diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go +index 1ab08c074..cd7b3b9aa 100644 +--- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go ++++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go +@@ -32,6 +32,7 @@ import ( + apiv1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ++ "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/sets" + log "k8s.io/klog/v2" +@@ -64,7 +65,8 @@ func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, + + var repoList sourcev1.HelmRepositoryList + listOptions := ctrlclient.ListOptions{ +- Namespace: ns, ++ Namespace: ns, ++ LabelSelector: labels.SelectorFromSet(labels.Set{"cozystack.io/ui": "true"}), + } + if err := client.List(backgroundCtx, &repoList, &listOptions); err != nil { + return nil, connecterror.FromK8sError("list", "HelmRepository", "", err)