diff --git a/gateway/handlers/update_handler.go b/gateway/handlers/update_handler.go
index 9fe554d53798dc0176f52262479a1881a17ba6ef..989deea3a56b27ccf8535236fe27deb88b8e97a6 100644
--- a/gateway/handlers/update_handler.go
+++ b/gateway/handlers/update_handler.go
@@ -45,7 +45,14 @@ func MakeUpdateFunctionHandler(metricsOptions metrics.MetricOptions, c *client.C
 			return
 		}
 
-		updateSpec(&request, &service.Spec, maxRestarts, restartDelay)
+		secrets, err := makeSecretsArray(c, request.Secrets)
+		if err != nil {
+			log.Println(err)
+			w.WriteHeader(http.StatusBadRequest)
+			w.Write([]byte("Deployment error: " + err.Error()))
+			return
+		}
+		updateSpec(&request, &service.Spec, maxRestarts, restartDelay, secrets)
 
 		updateOpts := types.ServiceUpdateOptions{}
 		updateOpts.RegistryAuthFrom = types.RegistryAuthFromSpec
@@ -72,7 +79,7 @@ func MakeUpdateFunctionHandler(metricsOptions metrics.MetricOptions, c *client.C
 	}
 }
 
-func updateSpec(request *requests.CreateFunctionRequest, spec *swarm.ServiceSpec, maxRestarts uint64, restartDelay time.Duration) {
+func updateSpec(request *requests.CreateFunctionRequest, spec *swarm.ServiceSpec, maxRestarts uint64, restartDelay time.Duration, secrets []*swarm.SecretReference) {
 
 	constraints := []string{}
 	if request.Constraints != nil && len(request.Constraints) > 0 {
@@ -103,6 +110,7 @@ func updateSpec(request *requests.CreateFunctionRequest, spec *swarm.ServiceSpec
 			Target: request.Network,
 		},
 	}
+	spec.TaskTemplate.ContainerSpec.Secrets = secrets
 
 	spec.TaskTemplate.Resources = buildResources(request)