diff --git a/README.md b/README.md
index f1ba038d4ad9f67d2343a59dc6ce0f22913feb7b..ad9d4b26b24343b447574dab41134dd7933257fc 100644
--- a/README.md
+++ b/README.md
@@ -395,6 +395,7 @@ The Kubernetes template uses some global configuration used throughout all jobs.
 | `scripts-dir` / `K8S_SCRIPTS_DIR` | directory where k8s scripts (hook scripts) are located                                                                                                                  | `.` _(root project dir)_                                                                               |
 | `kustomize-enabled` / `K8S_KUSTOMIZE_ENABLED` | Set to `true` to force using [Kustomize](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/)                                                        | _none_ (disabled)                                                                                      |
 | `kustomize-args` / `K8S_KUSTOMIZE_ARGS` | Additional [`kubectl kustomize` options](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#kustomize)<br/>_for example: `--enable-helm`_ | _none_                                                                                               |
+| `create-namespace` / `K8S_CREATE_NAMESPACE_ENABLED` | Set to `true` to enable automatic namespace creation  | `false`                                                                                               |
 | `DOCKER_CONTAINER_STABLE_IMAGE` | Docker image name to use for staging/prod                                                                                                                               | **has to be defined when not chaining execution from Docker template**                                 |
 | `DOCKER_CONTAINER_UNSTABLE_IMAGE` | Docker image name to use for review                                                                                                                                     | **has to be defined when not chaining execution from Docker template**                                 |
 
diff --git a/kicker.json b/kicker.json
index 5baa73581f6f5ead63a733de327663d63ac62a24..cf95473c27d92e15f87d3247b79881805d041029 100644
--- a/kicker.json
+++ b/kicker.json
@@ -58,6 +58,12 @@
       "name": "K8S_KUSTOMIZE_ARGS",
       "description": "Additional [`kubectl kustomize` options](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#kustomize)\n\n_For example: `--enable-helm`_",
       "advanced": true
+    },
+    {
+      "name": "K8S_CREATE_NAMESPACE_ENABLED",
+      "description": "Set to `true` to enable automatic namespace creation",
+      "type": "boolean",
+      "advanced": true
     }
   ],
   "features": [
diff --git a/templates/gitlab-ci-k8s.yml b/templates/gitlab-ci-k8s.yml
index 2412c6ca8a892bd8dd1fcf3b3546f4521b69a99a..3840a9483a1dc9afb26b173bd2800232b540f810 100644
--- a/templates/gitlab-ci-k8s.yml
+++ b/templates/gitlab-ci-k8s.yml
@@ -43,6 +43,10 @@ spec:
 
         _For example: `--enable-helm`_
       default: ''
+    create-namespace-enabled:
+      description: Creates the namespace, if it doesn't exist
+      type: boolean
+      default: false
     score-disabled:
       description: Disable kube-score
       type: boolean
@@ -181,6 +185,7 @@ variables:
   K8S_ENVIRONMENT_URL: $[[ inputs.environment-url ]]
   K8S_KUSTOMIZE_ENABLED: $[[ inputs.kustomize-enabled ]]
   K8S_KUSTOMIZE_ARGS: $[[ inputs.kustomize-args ]]
+  K8S_CREATE_NAMESPACE_ENABLED: $[[ inputs.create-namespace-enabled ]]
   K8S_SCORE_DISABLED: $[[ inputs.score-disabled ]]
   K8S_SCORE_EXTRA_OPTS: $[[ inputs.score-extra-opts ]]
   K8S_REVIEW_SPACE: $[[ inputs.review-space ]]
@@ -490,6 +495,16 @@ stages:
       kubectl config use-context gitlab-k8s-cluster
     fi
 
+    if ! kubectl get namespace "$k8s_namespace" > /dev/null 2>&1; then
+      if [[ "${K8S_CREATE_NAMESPACE_ENABLED}" == "true" ]]
+      then
+        log_info "--- Namespace \\e[33;1m${k8s_namespace}\\e[0m does not exist: create..."
+        kubectl create namespace "$k8s_namespace" --save-config
+      else
+        log_warn "--- Namespace \\e[33;1m${k8s_namespace}\\e[0m does not exist: set K8S_CREATE_NAMESPACE_ENABLED=true to enable automatic namespace creation"
+      fi
+    fi
+    
     kubectl config set-context --current --namespace="$k8s_namespace"
 
     log_info "--- \\e[32mlogin\\e[0m"