diff --git a/_modules/helm.py b/_modules/helm.py
index 80632d1..a71c53c 100644
--- a/_modules/helm.py
+++ b/_modules/helm.py
@@ -20,25 +20,32 @@
         tiller_args = ('--host', tiller_kwargs['tiller_host'])
     else:
         tiller_args = ('--tiller-namespace', tiller_kwargs['tiller_namespace'])
+    env = {'HELM_HOME': HELM_HOME}
+    if tiller_kwargs['kube_config']:
+        env['KUBECONFIG'] = tiller_kwargs['kube_config']
     return {
         'cmd': ('helm',) + tiller_args + args,
-        'env': {'HELM_HOME': HELM_HOME},
+        'env': env,
     }
 
 
 def release_exists(name, namespace='default',
-                   tiller_namespace='kube-system', tiller_host=None):
+                   tiller_namespace='kube-system', tiller_host=None,
+                   kube_config=None):
     cmd = _helm_cmd('list', '--short', '--all', '--namespace', namespace, name,
-                    tiller_namespace=tiller_namespace, tiller_host=tiller_host)
+                    tiller_namespace=tiller_namespace, tiller_host=tiller_host,
+                    kube_config=kube_config)
     return __salt__['cmd.run_stdout'](**cmd) == name
 
 
 def release_create(name, chart_name, namespace='default',
                    version=None, values=None,
-                   tiller_namespace='kube-system', tiller_host=None):
+                   tiller_namespace='kube-system', tiller_host=None,
+                   kube_config=None):
     tiller_args = {
         'tiller_namespace': tiller_namespace,
         'tiller_host': tiller_host,
+        'kube_config': kube_config,
     }
     args = []
     if version is not None:
@@ -53,18 +60,22 @@
     return ok_or_output(cmd, 'Failed to create release "{}"'.format(name))
 
 
-def release_delete(name, tiller_namespace='kube-system', tiller_host=None):
+def release_delete(name, tiller_namespace='kube-system', tiller_host=None,
+                   kube_config=None):
     cmd = _helm_cmd('delete', '--purge', name,
-                    tiller_namespace=tiller_namespace, tiller_host=tiller_host)
+                    tiller_namespace=tiller_namespace, tiller_host=tiller_host,
+                    kube_config=kube_config)
     return ok_or_output(cmd, 'Failed to delete release "{}"'.format(name))
 
 
 def release_upgrade(name, chart_name, namespace='default',
                     version=None, values=None,
-                    tiller_namespace='kube-system', tiller_host=None):
+                    tiller_namespace='kube-system', tiller_host=None,
+                    kube_config=None):
     tiller_args = {
         'tiller_namespace': tiller_namespace,
         'tiller_host': tiller_host,
+        'kube_config': kube_config,
     }
     args = []
     if version is not None:
@@ -79,7 +90,9 @@
     return ok_or_output(cmd, 'Failed to upgrade release "{}"'.format(name))
 
 
-def get_values(name, tiller_namespace='kube-system', tiller_host=None):
+def get_values(name, tiller_namespace='kube-system', tiller_host=None,
+               kube_config=None):
     cmd = _helm_cmd('get', 'values', '--all', name,
-                    tiller_namespace=tiller_namespace, tiller_host=tiller_host)
+                    tiller_namespace=tiller_namespace, tiller_host=tiller_host,
+                    kube_config=kube_config)
     return yaml.deserialize(__salt__['cmd.run_stdout'](**cmd))
diff --git a/_states/helm_release.py b/_states/helm_release.py
index e60c6dc..464e6d6 100644
--- a/_states/helm_release.py
+++ b/_states/helm_release.py
@@ -13,10 +13,12 @@
 
 
 def present(name, chart_name, namespace, version=None, values=None,
-            tiller_namespace='kube-system', tiller_host=None):
+            tiller_namespace='kube-system', tiller_host=None,
+            kube_config=None):
     tiller_args = {
         'tiller_namespace': tiller_namespace,
         'tiller_host': tiller_host,
+        'kube_config': kube_config,
     }
     exists = __salt__['helm.release_exists'](name, namespace, **tiller_args)
     if not exists:
@@ -58,10 +60,12 @@
     }
 
 
-def absent(name, namespace, tiller_namespace='kube-system', tiller_host=None):
+def absent(name, namespace, tiller_namespace='kube-system', tiller_host=None,
+           kube_config=None):
     tiller_args = {
         'tiller_namespace': tiller_namespace,
         'tiller_host': tiller_host,
+        'kube_config': kube_config,
     }
     exists = __salt__['helm.release_exists'](name, namespace, **tiller_args)
     if not exists:
diff --git a/helm/client.sls b/helm/client.sls
index d441da5..07b3d3d 100644
--- a/helm/client.sls
+++ b/helm/client.sls
@@ -4,6 +4,7 @@
 {%- set helm_tmp = "/tmp/helm-" + client.version %}
 {%- set helm_bin = "/usr/bin/helm-" + client.version %}
 {%- set kubectl_bin = "/usr/bin/kubectl" %}
+{%- set kube_config = "/srv/helm/kubeconfig.yaml" %}
 {%- set helm_home = "/srv/helm/home" %}
 {%- if client.tiller.host %}
 {%- set helm_run = "helm --host '{}'".format(client.tiller.host) %}
@@ -54,21 +55,34 @@
     - require:
       - file: /usr/bin/helm
 
+{{ kube_config }}:
+  file.managed:
+    - source: salt://helm/files/kubeconfig.yaml.j2
+    - mode: 400
+    - user: root
+    - group: root
+    - template: jinja
+
 {%- if client.tiller.install %}
 install_tiller:
   cmd.run:
     - name: {{ helm_run }} init --upgrade
     - env:
       - HELM_HOME: {{ helm_home }}
+      - KUBECONFIG: {{ kube_config }}
     - unless: "{{ helm_run }} version --server --short | grep -E 'Server: v{{ client.version }}(\\+|$)'"
     - require:
       - cmd: prepare_client
+      - file: {{ kube_config }}
 
 wait_for_tiller:
   cmd.run:
     - name: while ! {{ helm_run }} list; do sleep 3; done
     - env:
       - HELM_HOME: {{ helm_home }}
+      - KUBECONFIG: {{ kube_config }}
+    - require:
+      - file: {{ kube_config }}
     - onchanges:
       - cmd: install_tiller
 {%- endif %}
@@ -94,6 +108,7 @@
     - name: {{ release_name }}
     - chart_name: {{ release['chart'] }}
     - namespace: {{ namespace }}
+    - kube_config: {{ kube_config }}
     {{ tiller_arg }}
     {%- if release.get('version') %}
     - version: {{ release['version'] }}
@@ -113,6 +128,7 @@
   helm_release.absent:
     - name: {{ release_name }}
     - namespace: {{ namespace }}
+    - kube_config: {{ kube_config }}
     {{ tiller_arg }}
     - require:
 {%- if client.tiller.install %}
@@ -153,8 +169,11 @@
   cmd.run:
     - name: kubectl create namespace {{ namespace }}
     - unless: kubectl get namespace {{ namespace }}
-    {%- if client.kubectl.install %}
+    - env:
+      - KUBECONFIG: {{ kube_config }}
     - require:
+      - file: {{ kube_config }}
+    {%- if client.kubectl.install %}
       - file: {{ kubectl_bin }}
     {%- endif %}
 {%- endfor %}
diff --git a/helm/files/kubeconfig.yaml.j2 b/helm/files/kubeconfig.yaml.j2
new file mode 100644
index 0000000..753362b
--- /dev/null
+++ b/helm/files/kubeconfig.yaml.j2
@@ -0,0 +1,19 @@
+{%- from "helm/map.jinja" import client with context %}
+{%- set config = client.kubectl.config %}
+apiVersion: v1
+clusters:
+- cluster:
+    {{ config.cluster|yaml|indent(4) }}
+  name: thecluster
+contexts:
+- context:
+    cluster: thecluster
+    user: theuser
+  name: thecontext
+current-context: thecontext
+kind: Config
+preferences: {}
+users:
+- name: theuser
+  user:
+    {{ config.user|yaml|indent(4) }}
diff --git a/metadata/service/client.yml b/metadata/service/client.yml
index 512e99a..1822dd8 100644
--- a/metadata/service/client.yml
+++ b/metadata/service/client.yml
@@ -18,5 +18,8 @@
         download_url: https://dl.k8s.io/v1.6.7/kubernetes-client-linux-amd64.tar.gz
         download_hash: sha256=54947ef84181e89f9dbacedd54717cbed5cc7f9c36cb37bc8afc9097648e2c91
         tarball_path: kubernetes/client/bin/kubectl
+        config:
+          cluster: {}
+          user: {}
       repos: {}
       releases: {}
