From b7caa8930a59687cf812ed9566330480f99c1a77 Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Tue, 30 Sep 2025 14:29:26 +0000 Subject: [PATCH 1/3] fix: usb redeployment issue --- VERSION | 2 +- deployment-package/usb/akri-values.yaml | 4 + deployment-package/usb/application.yaml | 6 +- .../usb/deployment-package.yaml | 6 +- helm/akri/Chart.yaml | 2 +- helm/akri/templates/pre-deletion-hook.yaml | 119 ++++++++++++++++++ helm/akri/values.yaml | 5 + manifest/manifest.yaml | 4 +- 8 files changed, 138 insertions(+), 10 deletions(-) create mode 100644 helm/akri/templates/pre-deletion-hook.yaml diff --git a/VERSION b/VERSION index 90a7f60..7962dcf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.12 +1.3.13 diff --git a/deployment-package/usb/akri-values.yaml b/deployment-package/usb/akri-values.yaml index 3b7fb25..c47fe75 100644 --- a/deployment-package/usb/akri-values.yaml +++ b/deployment-package/usb/akri-values.yaml @@ -18,3 +18,7 @@ udev: enabled: true # nodeSelectors: # kubernetes.io/os: linux + +# Disable the upstream cleanup hook to prevent bitnami/kubectl:latest ImagePullBackOff +cleanupHook: + enabled: false diff --git a/deployment-package/usb/application.yaml b/deployment-package/usb/application.yaml index 82747e3..00e70ad 100644 --- a/deployment-package/usb/application.yaml +++ b/deployment-package/usb/application.yaml @@ -6,7 +6,7 @@ schemaVersion: "0.1" $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: akri -version: 0.13.10 +version: 0.13.11 description: "akri base application" kind: extension @@ -25,13 +25,13 @@ schemaVersion: "0.1" $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: usb-device-plugin -version: 1.1.3 +version: 1.1.4 description: "Exposes USB devices to the k8s cluster" kind: extension helmRegistry: "intel-rs-helm" chartName: "edge-orch/en/charts/akri" -chartVersion: 1.1.1 +chartVersion: 1.1.2 profiles: - name: default diff --git a/deployment-package/usb/deployment-package.yaml b/deployment-package/usb/deployment-package.yaml index 0dd8922..f4494e3 100644 --- a/deployment-package/usb/deployment-package.yaml +++ b/deployment-package/usb/deployment-package.yaml @@ -7,15 +7,15 @@ $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: "usb" description: "Brings USB allocation for containers/VMs running on k8s cluster" -version: 0.4.4 +version: 0.4.5 forbidsMultipleDeployments: true kind: extension applications: - name: akri - version: 0.13.10 + version: 0.13.11 - name: usb-device-plugin - version: 1.1.3 + version: 1.1.4 defaultNamespaces: usb-device-plugin: akri diff --git a/helm/akri/Chart.yaml b/helm/akri/Chart.yaml index 9c3164e..71c4c90 100644 --- a/helm/akri/Chart.yaml +++ b/helm/akri/Chart.yaml @@ -18,4 +18,4 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.1.1 +version: 1.1.2 diff --git a/helm/akri/templates/pre-deletion-hook.yaml b/helm/akri/templates/pre-deletion-hook.yaml new file mode 100644 index 0000000..bbb0902 --- /dev/null +++ b/helm/akri/templates/pre-deletion-hook.yaml @@ -0,0 +1,119 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "5" +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "5" +rules: + - apiGroups: [""] + resources: ["pods", "services"] + verbs: [ "delete", "get", "watch", "list" ] + - apiGroups: ["apps"] + resources: ["deployments", "daemonsets"] + verbs: [ "delete", "get", "watch", "list" ] + - apiGroups: ["akri.sh"] + resources: ["configurations", "instances"] + verbs: [ "delete", "get", "watch", "list" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: akri-pre-deletion + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "5" +rules: + - apiGroups: ["akri.sh"] + resources: ["configurations", "instances"] + verbs: ["delete", "get", "watch", "list"] + - apiGroups: ["admissionregistration.k8s.io"] + resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"] + verbs: ["delete", "get", "watch", "list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "5" +subjects: + - kind: ServiceAccount + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} +roleRef: + kind: Role + name: akri-pre-deletion + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: akri-pre-deletion + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "5" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: akri-pre-deletion +subjects: + - kind: ServiceAccount + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: akri-pre-deletion + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed + "helm.sh/hook-weight": "10" +spec: + template: + spec: + serviceAccountName: akri-pre-deletion + containers: + - name: kubectl + image: {{ .Values.kubectl.image | default "bitnamilegacy/kubectl:1.31.3" }} + imagePullPolicy: IfNotPresent + command: ["sh", "-e", "-c"] + args: + - | + echo "Cleaning up Akri resources..." + # Remove finalizers from configurations to allow deletion + for config in $(kubectl get configurations.akri.sh --all-namespaces -o name 2>/dev/null || true); do + kubectl patch $config -p '{"metadata":{"finalizers":null}}' --type=merge 2>/dev/null || true + done + # Remove finalizers from instances + for instance in $(kubectl get instances.akri.sh --all-namespaces -o name 2>/dev/null || true); do + kubectl patch $instance -p '{"metadata":{"finalizers":null}}' --type=merge 2>/dev/null || true + done + # Now delete resources + kubectl delete configurations.akri.sh --all --all-namespaces --timeout=10s --ignore-not-found=true || true + kubectl delete instances.akri.sh --all --all-namespaces --timeout=10s --ignore-not-found=true || true + kubectl delete deployments -n {{ .Release.Namespace }} -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true + kubectl delete daemonsets -n {{ .Release.Namespace }} -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true + kubectl delete services -n {{ .Release.Namespace }} -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true + kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true + echo "Akri cleanup completed!" + restartPolicy: OnFailure \ No newline at end of file diff --git a/helm/akri/values.yaml b/helm/akri/values.yaml index 4898336..47b508b 100644 --- a/helm/akri/values.yaml +++ b/helm/akri/values.yaml @@ -11,3 +11,8 @@ extensionImages: - "ghcr.io/project-akri/akri/controller:v0.12.20" - "ghcr.io/project-akri/akri/webhook-configuration:v0.12.20" - "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1" + - "bitnamilegacy/kubectl:1.31.3" + +# kubectl image for pre-deletion hook +kubectl: + image: "bitnamilegacy/kubectl:1.31.3" diff --git a/manifest/manifest.yaml b/manifest/manifest.yaml index 1be23e4..54204bd 100644 --- a/manifest/manifest.yaml +++ b/manifest/manifest.yaml @@ -3,7 +3,7 @@ --- metadata: schemaVersion: 0.3.0 - release: 1.3.12 + release: 1.3.13 lpke: deploymentPackages: - dpkg: edge-orch/en/file/cert-manager @@ -23,7 +23,7 @@ lpke: - dpkg: edge-orch/en/file/trusted-compute version: 0.5.7 - dpkg: edge-orch/en/file/usb - version: 0.4.4 + version: 0.4.5 - dpkg: edge-orch/en/file/virtualization version: 0.5.10 - dpkg: edge-orch/en/file/observability From 39ee85eb100ce255112a9264e1649cde49799dfc Mon Sep 17 00:00:00 2001 From: guptagunjan <88308027+guptagunjan@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:59:30 +0530 Subject: [PATCH 2/3] add license for compliance check --- helm/akri/templates/pre-deletion-hook.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/helm/akri/templates/pre-deletion-hook.yaml b/helm/akri/templates/pre-deletion-hook.yaml index bbb0902..26bb6fa 100644 --- a/helm/akri/templates/pre-deletion-hook.yaml +++ b/helm/akri/templates/pre-deletion-hook.yaml @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +--- apiVersion: v1 kind: ServiceAccount metadata: @@ -116,4 +119,4 @@ spec: kubectl delete services -n {{ .Release.Namespace }} -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io -l app.kubernetes.io/name=akri --timeout=10s --ignore-not-found=true || true echo "Akri cleanup completed!" - restartPolicy: OnFailure \ No newline at end of file + restartPolicy: OnFailure From 40a9e3e137253f226d93ae28acbd29626780457b Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Tue, 7 Oct 2025 15:10:07 +0000 Subject: [PATCH 3/3] update usb pkg version --- VERSION | 2 +- deployment-package/usb/application.yaml | 4 ++-- deployment-package/usb/deployment-package.yaml | 6 +++--- manifest/manifest.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/VERSION b/VERSION index 7962dcf..085c0f2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.13 +1.3.14 diff --git a/deployment-package/usb/application.yaml b/deployment-package/usb/application.yaml index 00e70ad..78444a2 100644 --- a/deployment-package/usb/application.yaml +++ b/deployment-package/usb/application.yaml @@ -6,7 +6,7 @@ schemaVersion: "0.1" $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: akri -version: 0.13.11 +version: 0.13.12 description: "akri base application" kind: extension @@ -25,7 +25,7 @@ schemaVersion: "0.1" $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: usb-device-plugin -version: 1.1.4 +version: 1.1.5 description: "Exposes USB devices to the k8s cluster" kind: extension diff --git a/deployment-package/usb/deployment-package.yaml b/deployment-package/usb/deployment-package.yaml index f4494e3..5f2c4d0 100644 --- a/deployment-package/usb/deployment-package.yaml +++ b/deployment-package/usb/deployment-package.yaml @@ -7,15 +7,15 @@ $schema: "https://schema.intel.com/catalog.orchestrator/0.1/schema" name: "usb" description: "Brings USB allocation for containers/VMs running on k8s cluster" -version: 0.4.5 +version: 0.4.6 forbidsMultipleDeployments: true kind: extension applications: - name: akri - version: 0.13.11 + version: 0.13.12 - name: usb-device-plugin - version: 1.1.4 + version: 1.1.5 defaultNamespaces: usb-device-plugin: akri diff --git a/manifest/manifest.yaml b/manifest/manifest.yaml index 54204bd..630f654 100644 --- a/manifest/manifest.yaml +++ b/manifest/manifest.yaml @@ -3,7 +3,7 @@ --- metadata: schemaVersion: 0.3.0 - release: 1.3.13 + release: 1.3.14 lpke: deploymentPackages: - dpkg: edge-orch/en/file/cert-manager @@ -23,7 +23,7 @@ lpke: - dpkg: edge-orch/en/file/trusted-compute version: 0.5.7 - dpkg: edge-orch/en/file/usb - version: 0.4.5 + version: 0.4.6 - dpkg: edge-orch/en/file/virtualization version: 0.5.10 - dpkg: edge-orch/en/file/observability