charts/blob-upload/templates/storage-container-job.yaml (51 lines of code) (raw):

{{- if (default false .Values.blobUpload.enabled) }} {{- $i := 0 }} {{- range $key, $value := (lookup "v1" "ConfigMap" .Values.global.configmapNamespace "configmap-services").data }} {{- if hasPrefix "partition_storage_name_" $key }} {{- range $.Values.blobUpload.items }} --- apiVersion: batch/v1 kind: Job metadata: name: {{ $.Release.Name }}-blob-upload-{{ .name }}-{{ $i }} namespace: {{ $.Release.Namespace }} spec: ttlSecondsAfterFinished: 300 template: metadata: labels: azure.workload.identity/use: "true" spec: serviceAccountName: workload-identity-sa containers: - name: blob-upload image: mcr.microsoft.com/azure-cli:cbl-mariner2.0-amd64 command: ["/bin/bash"] args: - -c - | # Install curl tdnf install -y curl # Download the file echo "Downloading file from {{ .url }}" curl -kso {{ .file }} "{{ .url }}" echo "==================================================================" echo " Logging in using Workload Identity" echo "==================================================================" # Login using the federated token from the environment variable az login --federated-token "$(cat ${AZURE_FEDERATED_TOKEN_FILE})" \ --service-principal \ -u ${AZURE_CLIENT_ID} \ -t ${AZURE_TENANT_ID} || exit 1 # Upload directly to blob storage using Azure CLI az storage blob upload \ -f {{ .file }} \ -c {{ $.Values.blobUpload.container }} \ -n {{ .file }} \ --account-name {{ $value }} \ --overwrite \ --auth-mode login || exit 1 echo "File uploaded to container {{ $.Values.blobUpload.container }} in storage account {{ $value }}" exit 0 restartPolicy: Never {{- end }} {{- $i = add $i 1 }} {{- end }} {{- end }} {{- end }}