diff --git a/helpers/helm_base.yaml b/helpers/helm_base.yaml
index c48f92fdd5e5f33c1c9340f6836d2de653801993..a18d3782e765385e4e9a82f00d401a2fa5b1b8d3 100644
--- a/helpers/helm_base.yaml
+++ b/helpers/helm_base.yaml
@@ -4,9 +4,7 @@
   before_script:
     - docker info
     - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
-    - shopt -s expand_aliases
-    - alias helm='docker run -t --rm -e HELM_EXPERIMENTAL_OCI="$HELM_EXPERIMENTAL_OCI" -v $(pwd):/apps -w /apps -v ~/.kube:/root/.kube -v ~/.helm:/root/.helm -v ~/.config/helm:/root/.config/helm -v ~/.cache/helm:/root/.cache/helm alpine/helm:3.2.3'
+    - source ./helpers/shell_aliases.sh
     - helm registry login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
-    - alias kubectl='docker run -a stdout --rm -v $(pwd):/apps -w /apps alpine/k8s:1.18.2 kubectl'
     - helm repo add stable https://kubernetes-charts.storage.googleapis.com
     - helm repo update
diff --git a/helpers/shell_aliases.sh b/helpers/shell_aliases.sh
new file mode 100644
index 0000000000000000000000000000000000000000..70fabf3072159b8184cca9108c710836400d3195
--- /dev/null
+++ b/helpers/shell_aliases.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# Define custom bash functions that can be passed around to sub-envs
+shopt -s expand_aliases
+
+helm() {
+  docker run -t --rm -e HELM_EXPERIMENTAL_OCI="$HELM_EXPERIMENTAL_OCI" -v $(pwd):/apps -w /apps -v ~/.kube:/root/.kube -v ~/.helm:/root/.helm -v ~/.config/helm:/root/.config/helm -v ~/.cache/helm:/root/.cache/helm alpine/helm:3.2.3 "$@"
+}
+export -f helm
+
+kubectl() {
+    docker run -a stdout --rm -v $(pwd):/apps -w /apps alpine/k8s:1.18.2 kubectl "$@"
+}
+export -f kubectl