From 3c9e50a4dfaabaf4573730f0edfd44ebb4b22735 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Fri, 27 Dec 2024 11:22:25 +0100 Subject: [PATCH] Update dashboard to use Cozystack API (#539) Screenshot 2024-12-23 at 13 40 30 Screenshot 2024-12-23 at 13 40 45 Signed-off-by: Andrei Kvapil ## Summary by CodeRabbit - **New Features** - Introduced a new `pluginConfig` section in the Kubeapps dashboard configuration for managing a broader range of applications. - **Bug Fixes** - Enhanced URL generation logic to ensure proper encoding of package identifiers. - **Chores** - Updated image digests in the configuration for both the dashboard and kubeappsapis sections. - Removed unnecessary patch application steps from the build process. - Upgraded the Go version used for building the application. - Updated the application version for the tenant package from `1.6.3` to `1.6.4`. - Added a new version `1.6.4 HEAD` for the tenant package. - Adjusted RBAC configuration to streamline permissions and enhance group-based access management. --------- Signed-off-by: Andrei Kvapil Co-authored-by: klinch0 <68821526+klinch0@users.noreply.github.com> --- packages/apps/tenant/Chart.yaml | 2 +- packages/apps/tenant/templates/tenant.yaml | 49 +- packages/apps/versions_map | 3 +- .../cozystack-api/templates/configmap.yaml | 4 +- packages/system/dashboard/Makefile | 7 +- .../templates/dashboard/configmap.yaml | 2 +- .../dashboard/images/dashboard/Dockerfile | 10 +- .../images/dashboard/documentation.diff | 13 + .../images/dashboard/release-url.diff | 34 + .../dashboard/remove-manage-repositories.diff | 66 + .../dashboard/images/kubeapps-apis/Dockerfile | 13 +- .../kubeapps-apis/dashboard-resource.diff | 155 - .../images/kubeapps-apis/dockerfile.diff | 38 - .../images/kubeapps-apis/fluxcd.diff | 3268 ----------------- .../images/kubeapps-apis/labels.diff | 69 - .../kubeapps-apis/reconcile-strategy.diff | 12 - packages/system/dashboard/values.yaml | 303 +- 17 files changed, 453 insertions(+), 3595 deletions(-) create mode 100644 packages/system/dashboard/images/dashboard/documentation.diff create mode 100644 packages/system/dashboard/images/dashboard/release-url.diff create mode 100644 packages/system/dashboard/images/dashboard/remove-manage-repositories.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/dashboard-resource.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/dockerfile.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/fluxcd.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/labels.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/reconcile-strategy.diff diff --git a/packages/apps/tenant/Chart.yaml b/packages/apps/tenant/Chart.yaml index e5737ddab..b73af8783 100644 --- a/packages/apps/tenant/Chart.yaml +++ b/packages/apps/tenant/Chart.yaml @@ -4,4 +4,4 @@ description: Separated tenant namespace icon: /logos/tenant.svg type: application -version: 1.6.3 +version: 1.6.4 diff --git a/packages/apps/tenant/templates/tenant.yaml b/packages/apps/tenant/templates/tenant.yaml index f6c6dfc11..8d1bcbd40 100644 --- a/packages/apps/tenant/templates/tenant.yaml +++ b/packages/apps/tenant/templates/tenant.yaml @@ -31,9 +31,7 @@ rules: - apiGroups: ["rbac.authorization.k8s.io"] resources: ["roles"] verbs: ["get"] -- apiGroups: ["helm.toolkit.fluxcd.io"] - resources: ["helmreleases"] - verbs: ["*"] + --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -86,14 +84,6 @@ rules: - get - list - watch - - apiGroups: - - helm.toolkit.fluxcd.io - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: - "" resources: @@ -122,6 +112,9 @@ subjects: name: tenant-root-view apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-view + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -158,13 +151,6 @@ rules: - get - list - watch - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: [""] resources: - "*" @@ -198,6 +184,9 @@ subjects: name: tenant-root-use apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-use + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -234,13 +223,6 @@ rules: - list - watch - delete - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: ["kubevirt.io"] resources: - virtualmachines @@ -293,6 +275,9 @@ subjects: name: tenant-root-admin apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-admin + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -329,11 +314,6 @@ rules: - list - watch - delete - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - '*' - apiGroups: ["kubevirt.io"] resources: - virtualmachines @@ -363,6 +343,9 @@ subjects: name: tenant-root-super-admin apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-super-admin + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -405,6 +388,12 @@ subjects: - kind: Group name: {{ include "tenant.name" . }}-admin apiGroup: rbac.authorization.k8s.io +- kind: Group + name: {{ include "tenant.name" . }}-use + apiGroup: rbac.authorization.k8s.io +- kind: Group + name: {{ include "tenant.name" . }}-view + apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: {{ include "tenant.name" . }} namespace: {{ include "tenant.name" . }} diff --git a/packages/apps/versions_map b/packages/apps/versions_map index 96728827b..9c92aa889 100644 --- a/packages/apps/versions_map +++ b/packages/apps/versions_map @@ -93,7 +93,8 @@ tenant 1.5.0 48128743 tenant 1.6.0 df448b99 tenant 1.6.1 edbbb9be tenant 1.6.2 ccedc5fe -tenant 1.6.3 HEAD +tenant 1.6.3 2057bb96 +tenant 1.6.4 HEAD virtual-machine 0.1.4 f2015d6 virtual-machine 0.1.5 7cd7de7 virtual-machine 0.2.0 5ca8823 diff --git a/packages/system/cozystack-api/templates/configmap.yaml b/packages/system/cozystack-api/templates/configmap.yaml index 1d13acdd0..b7789236a 100644 --- a/packages/system/cozystack-api/templates/configmap.yaml +++ b/packages/system/cozystack-api/templates/configmap.yaml @@ -71,7 +71,7 @@ data: labels: cozystack.io/ui: "true" chart: - name: http-cache + name: tcp-balancer sourceRef: kind: HelmRepository name: cozystack-apps @@ -207,7 +207,7 @@ data: singular: kafka plural: kafkas release: - prefix: ferretdb- + prefix: kafka- labels: cozystack.io/ui: "true" chart: diff --git a/packages/system/dashboard/Makefile b/packages/system/dashboard/Makefile index e62c39f91..b385c9bd3 100644 --- a/packages/system/dashboard/Makefile +++ b/packages/system/dashboard/Makefile @@ -25,7 +25,7 @@ update-dockerfiles: version=$$(echo "$$tag" | sed 's/^v//') && \ sed -i "s/ARG VERSION=.*/ARG VERSION=$${version}/" images/dashboard/Dockerfile -image-dashboard: +image-dashboard: update-version docker buildx build images/dashboard \ --provenance false \ --tag $(REGISTRY)/dashboard:$(call settag,$(TAG)) \ @@ -44,7 +44,7 @@ image-dashboard: yq -i '.kubeapps.dashboard.image.digest = strenv(DIGEST)' values.yaml rm -f images/dashboard.json -image-kubeapps-apis: +image-kubeapps-apis: update-version docker buildx build images/kubeapps-apis \ --provenance false \ --tag $(REGISTRY)/kubeapps-apis:$(call settag,$(TAG)) \ @@ -62,3 +62,6 @@ image-kubeapps-apis: DIGEST=$$(yq e '."containerimage.digest"' images/kubeapps-apis.json -o json -r) \ yq -i '.kubeapps.kubeappsapis.image.digest = strenv(DIGEST)' values.yaml rm -f images/kubeapps-apis.json + +update-version: + sed -i "s|\(\"appVersion\":\).*|\1 \"$(TAG)\",|g" ./charts/kubeapps/templates/dashboard/configmap.yaml diff --git a/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml b/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml index 5391285fc..b1f1891b3 100644 --- a/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml +++ b/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml @@ -76,7 +76,7 @@ data: "kubeappsNamespace": {{ .Release.Namespace | quote }}, "helmGlobalNamespace": {{ include "kubeapps.helmGlobalPackagingNamespace" . | quote }}, "carvelGlobalNamespace": {{ .Values.kubeappsapis.pluginConfig.kappController.packages.v1alpha1.globalPackagingNamespace | quote }}, - "appVersion": {{ printf "v%s" .Chart.AppVersion | quote }}, + "appVersion": "latest", "authProxyEnabled": {{ .Values.authProxy.enabled }}, "oauthLoginURI": {{ .Values.authProxy.oauthLoginURI | quote }}, "oauthLogoutURI": {{ .Values.authProxy.oauthLogoutURI | quote }}, diff --git a/packages/system/dashboard/images/dashboard/Dockerfile b/packages/system/dashboard/images/dashboard/Dockerfile index fb702aa1c..43bad8ce4 100644 --- a/packages/system/dashboard/images/dashboard/Dockerfile +++ b/packages/system/dashboard/images/dashboard/Dockerfile @@ -9,13 +9,17 @@ RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/v${VERSI COPY apple-touch-icon.png favicon-16x16.png favicon-32x32.png favicon.ico mstile-144x144.png mstile-150x150.png mstile-310x150.png mstile-310x310.png mstile-70x70.png safari-pinned-tab.svg public/ +COPY release-url.diff /patches/release-url.diff +COPY remove-manage-repositories.diff /patches/remove-manage-repositories.diff +COPY documentation.diff /patches/documentation.diff +RUN patch -p2 < /patches/release-url.diff +RUN patch -p2 < /patches/remove-manage-repositories.diff +RUN patch -p2 < /patches/documentation.diff + RUN sed -i 's/opacity: 0.05;/display: none;/g' src/components/InfoCard/InfoCard.scss RUN sed -i 's/"Kubeapps",/"Cozystack",/' lang/en.json RUN sed -i 's/Kubeapps/Cozystack/g' public/site.webmanifest RUN sed -i 's/Welcome To Kubeapps/Welcome To Cozystack/g' ./src/components/LoginForm/LoginForm.tsx ./src/components/AppList/AppListGrid.tsx ./src/components/AppList/AppList.test.tsx -RUN sed -i src/components/DeploymentForm/DeploymentForm.tsx \ - -e '/const handleDeploy/i \ const packageName = packageId ? packageId.split("/").pop() : "";' \ - -e '/releaseName,$/ s|releaseName,|packageName + "-" + releaseName,|' RUN sed -i '/by VMware/,/ \.$/d' src/components/Header/Menu.tsx RUN sed -i '/height: 4em;/ s/4em/4.5em/' src/components/Header/Header.scss RUN sed -i '/background-image/ s|base64,[^"]\+|base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjUyMSIKICAgaGVpZ2h0PSIxODUiCiAgIHZpZXdCb3g9IjAgMCA1MjEgMTg1IgogICBmaWxsPSJub25lIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc5NTgiCiAgIHNvZGlwb2RpOmRvY25hbWU9IkNPWllTVEFDSy5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xIChjMzA4NGVmLCAyMDIxLTA5LTIyKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzOTYyIiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3OTYwIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIHNob3dndWlkZXM9InRydWUiCiAgICAgaW5rc2NhcGU6Z3VpZGUtYmJveD0idHJ1ZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjU2NjEwNjA5IgogICAgIGlua3NjYXBlOmN4PSIxNTEuMDMxNzYiCiAgICAgaW5rc2NhcGU6Y3k9IjMxNy4wNzgzNyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iOTY5IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2Zzk1OCIgLz4KICA8cGF0aAogICAgIGQ9Ik0gNDcyLjk5MzQ1LDEyMC44NjMxMiBWIDU3LjQwODc3OSBoIDcuMzggViA4Ni4yMTA3MiBoIDAuMTggbCAzMC43ODIsLTI4LjgwMTk0MSBoIDkuNDUxIGwgLTM1LjI4MywzMi44NTIyNDEgMC4wOSwtMy45NjAyIDM3LjE3MywzNC41NjIzIGggLTkuNzIxIGwgLTMyLjQ5MiwtMjkuODgyIGggLTAuMTggdiAyOS44ODIgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQwIiAvPgogIDxwYXRoCiAgICAgZD0ibSA0MzkuODg0NDUsMTIxLjY3MzIyIGMgLTYuMjQxLDAgLTExLjU4MSwtMS4zMjAxIC0xNi4wMjEsLTMuOTYwMyAtNC40NDEsLTIuNjQwMiAtNy44NjEsLTYuMzkwNCAtMTAuMjYxLC0xMS4yNTA4IC0yLjM0LC00Ljg2MDMgLTMuNTEsLTEwLjY1MDcgLTMuNTEsLTE3LjM3MTIgMCwtNi43MjA0IDEuMTcsLTEyLjQ4MDggMy41MSwtMTcuMjgxMSAyLjQsLTQuODYwNCA1LjgyLC04LjYxMDY0IDEwLjI2MSwtMTEuMjUwODIgNC40NCwtMi42NDAxOSA5Ljc4LC0zLjk2MDI4IDE2LjAyMSwtMy45NjAyOCA0LjM4LDAgOC40MywwLjY5MDA0OCAxMi4xNTEsMi4wNzAxNCAzLjcyLDEuMzgwMSA2Ljg0LDMuMzkwMjQgOS4zNiw2LjAzMDQyIGwgLTIuODgsNi4wMzA0NCBjIC0yLjc2LC0yLjU4MDIgLTUuNjQsLTQuNDQwMzMgLTguNjQxLC01LjU4MDQxIC0yLjk0LC0xLjIwMDA4IC02LjIxLC0xLjgwMDEyIC05LjgxLC0xLjgwMDEyIC03LjE0MSwwIC0xMi42MDEsMi4yNTAxNSAtMTYuMzgxLDYuNzUwNDMgLTMuNzgxLDQuNTAwMyAtNS42NzEsMTAuODMwOCAtNS42NzEsMTguOTkxMyAwLDguMTYwNiAxLjg5LDE0LjUyMSA1LjY3MSwxOS4wODE0IDMuNzgsNC41MDAzIDkuMjQsNi43NTA0IDE2LjM4MSw2Ljc1MDQgMy42LDAgNi44NywtMC41NyA5LjgxLC0xLjcxMDEgMy4wMDEsLTEuMjAwMSA1Ljg4MSwtMy4wOTAyIDguNjQxLC01LjY3MDQgbCAyLjg4LDYuMDMwNCBjIC0yLjUyLDIuNTgwMiAtNS42NCw0LjU5MDQgLTkuMzYsNi4wMzA1IC0zLjcyMSwxLjM4IC03Ljc3MSwyLjA3MDEgLTEyLjE1MSwyLjA3MDEgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQyIiAvPgogIDxwYXRoCiAgICAgZD0ibSAzNDEuNzk1NDUsMTIwLjg2MzEyIDI3Ljk5MiwtNjMuNDU0MzQxIGggNi4zIGwgMjcuOTkyLDYzLjQ1NDM0MSBoIC03LjY1IGwgLTcuODMxLC0xOC4wOTEyIDMuNiwxLjg5MDEgaCAtMzguNzAyIGwgMy42OSwtMS44OTAxIC03Ljc0MSwxOC4wOTEyIHogbSAzMS4wNTIsLTU0LjgxMzc0IC0xNC40OTEsMzQuMTEyMzQgLTIuMTYsLTEuNzEwMSBoIDMzLjMwMiBsIC0xLjk4LDEuNzEwMSAtMTQuNDkxLC0zNC4xMTIzNCB6IgogICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgaWQ9InBhdGg5NDQiIC8+CiAgPHBhdGgKICAgICBkPSJtIDMxNi4xOTk0NSwxMjAuODYzMTIgdiAtNTcuMDYzOSBoIC0yMy4wNDIgdiAtNi4zOTA0NDEgaCA1My41NTQgdiA2LjM5MDQ0MSBoIC0yMy4wNDIgdiA1Ny4wNjM5IHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk0NiIgLz4KICA8cGF0aAogICAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgICBjbGlwLXJ1bGU9ImV2ZW5vZGQiCiAgICAgZD0ibSAyMzYuNjQ1NDUsNTcuMzI5MzExIGggNTAuODI3IHYgNi4zNTMzNzkgaCAtNTAuODI3IHogbSAwLDU3LjE4MDQwOSBoIDUwLjgyNyB2IDYuMzUzNCBoIC01MC44MjcgeiBtIDUwLjgyNywtMjguNTkwMiBoIC01MC44MjcgdiA2LjM1MzQgaCA1MC44MjcgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQ4IiAvPgogIDxwYXRoCiAgICAgZD0ibSAxOTkuODYzNDUsMTIwLjg2MzEyIHYgLTMyLjg1MjIgbCAxLjYyLDUuMTMwMyAtMjUuOTIyLC0zNS43MzI0NDEgaCA4LjY0MSBsIDIwLjQzMSwyOC4yNjE5NDEgaCAtMS44OSBsIDIwLjQzMiwtMjguMjYxOTQxIGggOC4zNyBsIC0yNS44MzIsMzUuNzMyNDQxIDEuNTMxLC01LjEzMDMgdiAzMi44NTIyIHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk1MCIgLz4KICA8cGF0aAogICAgIGQ9Im0gMTI2Ljk5MTQ1LDEyMC44NjMxMiB2IC01LjQ5MDMgbCAzOC41MjMsLTU0LjQ1MzggdiAyLjg4MDIgaCAtMzguNTIzIHYgLTYuMzkwNDQxIGggNDUuNDUzIHYgNS40OTAzODEgbCAtMzguNTIyLDU0LjM2Mzc2IHYgLTIuNzkwMiBoIDM5Ljc4MyB2IDYuMzkwNCB6IgogICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgaWQ9InBhdGg5NTIiIC8+CiAgPHBhdGgKICAgICBkPSJtIDg5LjQ2MzU1MywxMjEuNjczMjIgYyAtNC4zODAzLDAgLTguMzcwNiwtMC43NTAxIC0xMS45NzA4LC0yLjI1MDIgLTMuNjAwMywtMS41NjAxIC02LjY2MDUsLTMuNzUwMiAtOS4xODA3LC02LjU3MDQgLTIuNTIwMSwtMi44MjAyIC00LjQ3MDMsLTYuMjQwNCAtNS44NTA0LC0xMC4yNjA3IC0xLjMyMDEsLTQuMDIwMyAtMS45ODAxLC04LjUyMDYgLTEuOTgwMSwtMTMuNTAxIDAsLTUuMDQwMyAwLjY2LC05LjU0MDYgMS45ODAxLC0xMy41MDA5IDEuMzgwMSwtNC4wMjAzIDMuMzMwMywtNy40MTA1IDUuODUwNCwtMTAuMTcwNjkgMi41MjAyLC0yLjgyMDIgNS41NTA0LC00Ljk4MDM0IDkuMDkwNywtNi40ODA0NSAzLjYwMDIsLTEuNTYwMTA0IDcuNjIwNSwtMi4zNDAxNiAxMi4wNjA4LC0yLjM0MDE2IDQuNTAwMywwIDguNTIwNiwwLjc1MDA1NCAxMi4wNjA3OTcsMi4yNTAxNiAzLjYwMDEsMS41MDAxIDYuNjYwMSwzLjY2MDI1IDkuMTgxMSw2LjQ4MDQ0IDIuNTgsMi44MjAyIDQuNTMsNi4yNDA0IDUuODUsMTAuMjYwNyAxLjM4LDMuOTYwMyAyLjA3LDguNDMwNiAyLjA3LDEzLjQxMDkgMCw1LjA0MDQgLTAuNjksOS41NzA3IC0yLjA3LDEzLjU5MSAtMS4zOCw0LjAyMDMgLTMuMzMsNy40NDA1IC01Ljg1LDEwLjI2MDcgLTIuNTIxLDIuODIwMiAtNS41ODEsNS4wMTAzIC05LjE4MTEsNi41NzA0IC0zLjU0MDE5NywxLjUwMDEgLTcuNTYwNDk3LDIuMjUwMiAtMTIuMDYwNzk3LDIuMjUwMiB6IG0gMCwtNi41NzA1IGMgNC41NjAzLDAgOC40MDA2LC0xLjAyIDExLjUyMDc5NywtMy4wNjAyIDMuMTgwMSwtMi4wNDAxIDUuNjEwMSwtNS4wMTAzIDcuMjkwMSwtOC45MTA2IDEuNjgxLC0zLjkwMDMgMi41MjEsLTguNTgwNiAyLjUyMSwtMTQuMDQxIDAsLTUuNTIwMyAtMC44NCwtMTAuMjAwNyAtMi41MjEsLTE0LjA0MDkgLTEuNjgsLTMuODQwMyAtNC4xMSwtNi43ODA1IC03LjI5MDEsLTguODIwNjQgLTMuMTIwMTk3LC0yLjA0MDE0IC02Ljk2MDQ5NywtMy4wNjAyIC0xMS41MjA3OTcsLTMuMDYwMiAtNC40NDAzLDAgLTguMjUwNiwxLjAyMDA2IC0xMS40MzA4LDMuMDYwMiAtMy4xMjAyLDIuMDQwMTQgLTUuNTIwNCw1LjAxMDM0IC03LjIwMDUsOC45MTA2NCAtMS42ODAxLDMuODQwMiAtMi41MjAyLDguNDkwNiAtMi41MjAyLDEzLjk1MDkgMCw1LjQ2MDQgMC44NDAxLDEwLjE0MDcgMi41MjAyLDE0LjA0MSAxLjY4MDEsMy44NDAzIDQuMDgwMyw2LjgxMDUgNy4yMDA1LDguOTEwNiAzLjE4MDIsMi4wNDAyIDYuOTkwNSwzLjA2MDIgMTEuNDMwOCwzLjA2MDIgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTU0IiAvPgogIDxwYXRoCiAgICAgZD0ibSAzMS41NTg1NTMsMTIxLjY3MzIyIGMgLTYuMjQwNSwwIC0xMS41ODA4LC0xLjMyMDEgLTE2LjAyMTIsLTMuOTYwMyAtNC40NDAyNiwtMi42NDAyIC03Ljg2MDQ4OTcsLTYuMzkwNCAtMTAuMjYwNjU5NywtMTEuMjUwOCAtMi4zNDAxNiwtNC44NjAzIC0zLjUxMDI0LC0xMC42NTA3IC0zLjUxMDI0LC0xNy4zNzEyIDAsLTYuNzIwNCAxLjE3MDA4LC0xMi40ODA4IDMuNTEwMjQsLTE3LjI4MTEgMi40MDAxNywtNC44NjA0IDUuODIwMzk5NywtOC42MTA2NCAxMC4yNjA2NTk3LC0xMS4yNTA4MiA0LjQ0MDQsLTIuNjQwMTkgOS43ODA3LC0zLjk2MDI4IDE2LjAyMTIsLTMuOTYwMjggNC4zODAzLDAgOC40MzA1LDAuNjkwMDQ4IDEyLjE1MDgsMi4wNzAxNCAzLjcyMDMsMS4zODAxIDYuODQwNSwzLjM5MDI0IDkuMzYwNiw2LjAzMDQyIGwgLTIuODgwMiw2LjAzMDQ0IGMgLTIuNzYwMSwtMi41ODAyIC01LjY0MDMsLTQuNDQwMzMgLTguNjQwNiwtNS41ODA0MSAtMi45NDAyLC0xLjIwMDA4IC02LjIxMDQsLTEuODAwMTIgLTkuODEwNiwtMS44MDAxMiAtNy4xNDA1LDAgLTEyLjYwMDksMi4yNTAxNSAtMTYuMzgxMiw2Ljc1MDQzIC0zLjc4MDIyLDQuNTAwMyAtNS42NzAzNDk3LDEwLjgzMDggLTUuNjcwMzQ5NywxOC45OTEzIDAsOC4xNjA2IDEuODkwMTI5NywxNC41MjEgNS42NzAzNDk3LDE5LjA4MTQgMy43ODAzLDQuNTAwMyA5LjI0MDcsNi43NTA0IDE2LjM4MTIsNi43NTA0IDMuNjAwMiwwIDYuODcwNCwtMC41NyA5LjgxMDYsLTEuNzEwMSAzLjAwMDMsLTEuMjAwMSA1Ljg4MDUsLTMuMDkwMiA4LjY0MDYsLTUuNjcwNCBsIDIuODgwMiw2LjAzMDQgYyAtMi41MjAxLDIuNTgwMiAtNS42NDAzLDQuNTkwNCAtOS4zNjA2LDYuMDMwNSAtMy43MjAzLDEuMzggLTcuNzcwNSwyLjA3MDEgLTEyLjE1MDgsMi4wNzAxIHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk1NiIgLz4KPC9zdmc+Cg==|' src/components/Header/Header.scss diff --git a/packages/system/dashboard/images/dashboard/documentation.diff b/packages/system/dashboard/images/dashboard/documentation.diff new file mode 100644 index 000000000..2a6e9d2a5 --- /dev/null +++ b/packages/system/dashboard/images/dashboard/documentation.diff @@ -0,0 +1,13 @@ +diff --git a/dashboard/src/components/AppList/AppListGrid.tsx b/dashboard/src/components/AppList/AppListGrid.tsx +index d3261e459..597512e62 100644 +--- a/dashboard/src/components/AppList/AppListGrid.tsx ++++ b/dashboard/src/components/AppList/AppListGrid.tsx +@@ -42,7 +42,7 @@ function AppListGrid(props: IAppListProps) { + Start browsing your favourite apps{" "} + or check the{" "} + diff --git a/packages/system/dashboard/images/dashboard/release-url.diff b/packages/system/dashboard/images/dashboard/release-url.diff new file mode 100644 index 000000000..97c125f6a --- /dev/null +++ b/packages/system/dashboard/images/dashboard/release-url.diff @@ -0,0 +1,34 @@ +diff --git a/dashboard/src/shared/url.ts b/dashboard/src/shared/url.ts +index 7918652b0..64c3435af 100644 +--- a/dashboard/src/shared/url.ts ++++ b/dashboard/src/shared/url.ts +@@ -36,7 +36,7 @@ export const app = { + return `${app.apps.list( + pkgCluster, + pkgNamespace, +- )}/${pkgPluginName}/${pkgPluginVersion}/${pkgId}`; ++ )}/${pkgPluginName}/${pkgPluginVersion}/${encodeURIComponent(pkgId)}`; + }, + upgrade: (ref: InstalledPackageReference) => `${app.apps.get(ref)}/upgrade`, + upgradeTo: (ref: InstalledPackageReference, version?: string) => +diff --git a/dashboard/src/components/DeploymentForm/DeploymentForm.tsx b/dashboard/src/components/DeploymentForm/DeploymentForm.tsx +index 7ccb77b5d..589f72b65 100644 +--- a/dashboard/src/components/DeploymentForm/DeploymentForm.tsx ++++ b/dashboard/src/components/DeploymentForm/DeploymentForm.tsx +@@ -144,13 +144,15 @@ export default function DeploymentForm() { + ); + setDeploying(false); + if (deployed) { ++ const chartParts = packageId?.split("/") || []; ++ const kind = chartParts[chartParts.length - 1]; + push( + // Redirect to the installed package, note that the cluster/ns are the ones passed + // in the URL, not the ones from the package. + url.app.apps.get({ + context: { cluster: targetCluster, namespace: targetNamespace }, + plugin: pluginObj, +- identifier: releaseName, ++ identifier: `${kind}%2F${releaseName}`, + } as AvailablePackageReference), + ); + } diff --git a/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff b/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff new file mode 100644 index 000000000..a22121608 --- /dev/null +++ b/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff @@ -0,0 +1,66 @@ +diff --git a/dashboard/src/components/Catalog/Catalog.tsx b/dashboard/src/components/Catalog/Catalog.tsx +index 5f2d2a1c5..093cb598d 100644 +--- a/dashboard/src/components/Catalog/Catalog.tsx ++++ b/dashboard/src/components/Catalog/Catalog.tsx +@@ -15,7 +15,6 @@ import qs from "qs"; + import React, { useEffect } from "react"; + import { useDispatch, useSelector } from "react-redux"; + import * as ReactRouter from "react-router-dom"; +-import { Link } from "react-router-dom"; + import { IClusterServiceVersion, IStoreState } from "shared/types"; + import { app } from "shared/url"; + import { escapeRegExp, getPluginPackageName } from "shared/utils"; +@@ -85,7 +84,6 @@ export default function Catalog() { + operators, + repos: { reposSummaries: repos }, + config: { +- appVersion, + kubeappsCluster, + helmGlobalNamespace, + carvelGlobalNamespace, +@@ -420,24 +418,6 @@ export default function Catalog() { +
+ +

The current catalog is empty.

+-

+- Manage your Package Repositories in Kubeapps by visiting the Package repositories +- configuration page. +-

+- +- Manage Package Repositories +- +-

+- For help managing other packaging formats, such as Flux or Carvel, please refer to the{" "} +- +- Kubeapps documentation +- +- . +-

+
+ ) : ( + +diff --git a/dashboard/src/components/Header/Menu.tsx b/dashboard/src/components/Header/Menu.tsx +index c8ec1da8c..e59f90190 100644 +--- a/dashboard/src/components/Header/Menu.tsx ++++ b/dashboard/src/components/Header/Menu.tsx +@@ -78,16 +78,6 @@ function Menu({ clusters, appVersion, logout }: IContextSelectorProps) { +