diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index 592480c9ce839e0c3969400e60986fec5afa9be1..0d45f09ae91c4d568252460b60faaf5b46a34d5d 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -2,7 +2,7 @@
 local_release_dir: /tmp
 
 # Versions
-kube_version: v1.2.0
+kube_version: v1.2.1
 etcd_version: v2.2.5
 calico_version: v0.17.0
 calico_cni_version: v1.0.0
@@ -25,9 +25,9 @@ calico_cni_checksum: "cfbb95d4416cb65845a188f3bd991fff232bd5ce3463b2919d586ab779
 calico_cni_ipam_checksum: "93ebf8756b26314e1e3f612f1e824418cbb0a8df2942664422e697bcb109fbb2"
 weave_checksum: "152942c330f87ab475d87d9311b91674b90f25ea685bd4e04e0495d5fe09a957"
 etcd_checksum: "aa6037406257d2a1bc48ffa769afe7a4f8a04cc1ffcd36ef84f9ee8bc4eca756"
-kubectl_checksum: "0fd51875a4783fb106f769bdbc81012066b4a2785ba88b0280870a25cab76296"
-kubelet_checksum: "a1da4b8d0965f66b7243d22f2b307227ec24bbd7ce8522cd3ce4ec1206c3a09e"
-kube_apiserver_checksum: "fe50e4014a96897a708b3c847550b4e510a390585209c2b11c02a32123570d43"
+kubectl_checksum: "a41b9543ddef1f64078716075311c44c6e1d02c67301c0937a658cef37923bbb"
+kubelet_checksum: "7e253e07da77b031d5687102c485697f95f9e1e6410c1da1f4d3f064cdc70f07"
+kube_apiserver_checksum: "8e00cd59330857b119e40cd6156c0f476a8e62bbc9e9addd524b39e0c390a6cd"
 
 downloads:
   - name: calico
diff --git a/roles/kubernetes/master/files/kubectl_bash_completion.sh b/roles/kubernetes/master/files/kubectl_bash_completion.sh
index bf378a5e0367395f0872130dc255ffb3dd124414..52e51ff6d2d76af639d1a420ebfe305210a15b43 100644
--- a/roles/kubernetes/master/files/kubectl_bash_completion.sh
+++ b/roles/kubernetes/master/files/kubectl_bash_completion.sh
@@ -272,19 +272,27 @@ _kubectl_get()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--label-columns=")
     two_word_flags+=("-L")
     flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--selector=")
     two_word_flags+=("-l")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--watch")
     flags+=("-w")
     flags+=("--watch-only")
@@ -316,6 +324,7 @@ _kubectl_get()
     must_have_one_flag=()
     must_have_one_noun=()
     must_have_one_noun+=("componentstatus")
+    must_have_one_noun+=("configmap")
     must_have_one_noun+=("daemonset")
     must_have_one_noun+=("deployment")
     must_have_one_noun+=("endpoints")
@@ -329,13 +338,16 @@ _kubectl_get()
     must_have_one_noun+=("persistentvolume")
     must_have_one_noun+=("persistentvolumeclaim")
     must_have_one_noun+=("pod")
+    must_have_one_noun+=("podsecuritypolicy")
     must_have_one_noun+=("podtemplate")
+    must_have_one_noun+=("replicaset")
     must_have_one_noun+=("replicationcontroller")
     must_have_one_noun+=("resourcequota")
     must_have_one_noun+=("secret")
     must_have_one_noun+=("service")
     must_have_one_noun+=("serviceaccount")
     must_have_one_noun+=("thirdpartyresource")
+    must_have_one_noun+=("thirdpartyresourcedata")
 }
 
 _kubectl_describe()
@@ -354,6 +366,9 @@ _kubectl_describe()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--selector=")
     two_word_flags+=("-l")
     flags+=("--alsologtostderr")
@@ -383,18 +398,22 @@ _kubectl_describe()
 
     must_have_one_flag=()
     must_have_one_noun=()
+    must_have_one_noun+=("configmap")
     must_have_one_noun+=("daemonset")
     must_have_one_noun+=("deployment")
     must_have_one_noun+=("endpoints")
     must_have_one_noun+=("horizontalpodautoscaler")
+    must_have_one_noun+=("horizontalpodautoscaler")
     must_have_one_noun+=("ingress")
     must_have_one_noun+=("job")
+    must_have_one_noun+=("job")
     must_have_one_noun+=("limitrange")
     must_have_one_noun+=("namespace")
     must_have_one_noun+=("node")
     must_have_one_noun+=("persistentvolume")
     must_have_one_noun+=("persistentvolumeclaim")
     must_have_one_noun+=("pod")
+    must_have_one_noun+=("replicaset")
     must_have_one_noun+=("replicationcontroller")
     must_have_one_noun+=("resourcequota")
     must_have_one_noun+=("secret")
@@ -414,11 +433,24 @@ _kubectl_create_namespace()
 
     flags+=("--dry-run")
     flags+=("--generator=")
+    flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
     flags+=("--save-config")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
+    flags+=("--show-all")
+    flags+=("-a")
+    flags+=("--show-labels")
+    flags+=("--sort-by=")
+    flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
+    two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--validate")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -465,11 +497,25 @@ _kubectl_create_secret_docker-registry()
     flags+=("--docker-username=")
     flags+=("--dry-run")
     flags+=("--generator=")
+    flags+=("--include-extended-apis")
+    flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
     flags+=("--save-config")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
+    flags+=("--show-all")
+    flags+=("-a")
+    flags+=("--show-labels")
+    flags+=("--sort-by=")
+    flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
+    two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--validate")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -517,11 +563,24 @@ _kubectl_create_secret_generic()
     flags+=("--from-file=")
     flags+=("--from-literal=")
     flags+=("--generator=")
+    flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
     flags+=("--save-config")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
+    flags+=("--show-all")
+    flags+=("-a")
+    flags+=("--show-labels")
+    flags+=("--sort-by=")
+    flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
+    two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--type=")
     flags+=("--validate")
     flags+=("--alsologtostderr")
@@ -594,12 +653,137 @@ _kubectl_create_secret()
     must_have_one_noun=()
 }
 
+_kubectl_create_configmap()
+{
+    last_command="kubectl_create_configmap"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--dry-run")
+    flags+=("--from-file=")
+    flags+=("--from-literal=")
+    flags+=("--generator=")
+    flags+=("--no-headers")
+    flags+=("--output=")
+    two_word_flags+=("-o")
+    flags+=("--output-version=")
+    flags+=("--save-config")
+    flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
+    flags+=("--show-all")
+    flags+=("-a")
+    flags+=("--show-labels")
+    flags+=("--sort-by=")
+    flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
+    two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
+    flags+=("--validate")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
+_kubectl_create_serviceaccount()
+{
+    last_command="kubectl_create_serviceaccount"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--dry-run")
+    flags+=("--generator=")
+    flags+=("--include-extended-apis")
+    flags+=("--no-headers")
+    flags+=("--output=")
+    two_word_flags+=("-o")
+    flags+=("--output-version=")
+    flags+=("--save-config")
+    flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
+    flags+=("--show-all")
+    flags+=("-a")
+    flags+=("--show-labels")
+    flags+=("--sort-by=")
+    flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
+    two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
+    flags+=("--validate")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
 _kubectl_create()
 {
     last_command="kubectl_create"
     commands=()
     commands+=("namespace")
     commands+=("secret")
+    commands+=("configmap")
+    commands+=("serviceaccount")
 
     flags=()
     two_word_flags=()
@@ -612,10 +796,16 @@ _kubectl_create()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--save-config")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
     flags+=("--validate")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -667,10 +857,16 @@ _kubectl_replace()
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
     flags+=("--force")
     flags+=("--grace-period=")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--save-config")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
     flags+=("--timeout=")
     flags+=("--validate")
     flags+=("--alsologtostderr")
@@ -720,10 +916,15 @@ _kubectl_patch()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--patch=")
     two_word_flags+=("-p")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
+    flags+=("--type=")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -775,8 +976,11 @@ _kubectl_delete()
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
     flags+=("--grace-period=")
     flags+=("--ignore-not-found")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--selector=")
     two_word_flags+=("-l")
     flags+=("--timeout=")
@@ -808,6 +1012,7 @@ _kubectl_delete()
     must_have_one_flag=()
     must_have_one_noun=()
     must_have_one_noun+=("componentstatus")
+    must_have_one_noun+=("configmap")
     must_have_one_noun+=("daemonset")
     must_have_one_noun+=("deployment")
     must_have_one_noun+=("endpoints")
@@ -821,13 +1026,16 @@ _kubectl_delete()
     must_have_one_noun+=("persistentvolume")
     must_have_one_noun+=("persistentvolumeclaim")
     must_have_one_noun+=("pod")
+    must_have_one_noun+=("podsecuritypolicy")
     must_have_one_noun+=("podtemplate")
+    must_have_one_noun+=("replicaset")
     must_have_one_noun+=("replicationcontroller")
     must_have_one_noun+=("resourcequota")
     must_have_one_noun+=("secret")
     must_have_one_noun+=("service")
     must_have_one_noun+=("serviceaccount")
     must_have_one_noun+=("thirdpartyresource")
+    must_have_one_noun+=("thirdpartyresourcedata")
 }
 
 _kubectl_edit()
@@ -846,9 +1054,13 @@ _kubectl_edit()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--save-config")
     flags+=("--windows-line-endings")
     flags+=("--alsologtostderr")
@@ -896,9 +1108,15 @@ _kubectl_apply()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
     flags+=("--validate")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -984,6 +1202,7 @@ _kubectl_logs()
     two_word_flags+=("-c")
     flags+=("--follow")
     flags+=("-f")
+    flags+=("--include-extended-apis")
     flags+=("--interactive")
     flags+=("--limit-bytes=")
     flags+=("--previous")
@@ -1041,6 +1260,7 @@ _kubectl_rolling-update()
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
     flags+=("--image=")
+    flags+=("--include-extended-apis")
     flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
@@ -1048,11 +1268,18 @@ _kubectl_rolling-update()
     flags+=("--poll-interval=")
     flags+=("--rollback")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--timeout=")
     flags+=("--update-period=")
     flags+=("--validate")
@@ -1105,8 +1332,12 @@ _kubectl_scale()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--output=")
     two_word_flags+=("-o")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--replicas=")
     flags+=("--resource-version=")
     flags+=("--timeout=")
@@ -1191,6 +1422,7 @@ _kubectl_drain()
 
     flags+=("--force")
     flags+=("--grace-period=")
+    flags+=("--ignore-daemonsets")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -1464,6 +1696,7 @@ _kubectl_run()
     flags+=("--generator=")
     flags+=("--hostport=")
     flags+=("--image=")
+    flags+=("--include-extended-apis")
     flags+=("--labels=")
     two_word_flags+=("-l")
     flags+=("--leave-stdin-open")
@@ -1474,6 +1707,7 @@ _kubectl_run()
     flags+=("--output-version=")
     flags+=("--overrides=")
     flags+=("--port=")
+    flags+=("--record")
     flags+=("--replicas=")
     two_word_flags+=("-r")
     flags+=("--requests=")
@@ -1484,11 +1718,16 @@ _kubectl_run()
     flags+=("--service-overrides=")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--stdin")
     flags+=("-i")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--tty")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -1552,15 +1791,23 @@ _kubectl_expose()
     flags+=("--overrides=")
     flags+=("--port=")
     flags+=("--protocol=")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--save-config")
     flags+=("--selector=")
     flags+=("--session-affinity=")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--target-port=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--type=")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -1610,6 +1857,7 @@ _kubectl_autoscale()
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
     flags+=("--generator=")
+    flags+=("--include-extended-apis")
     flags+=("--max=")
     flags+=("--min=")
     flags+=("--name=")
@@ -1617,12 +1865,20 @@ _kubectl_autoscale()
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--save-config")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -1653,6 +1909,239 @@ _kubectl_autoscale()
     must_have_one_noun=()
 }
 
+_kubectl_rollout_history()
+{
+    last_command="kubectl_rollout_history"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--filename=")
+    flags_with_completion+=("--filename")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    two_word_flags+=("-f")
+    flags_with_completion+=("-f")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--recursive")
+    flags+=("-R")
+    flags+=("--revision=")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
+_kubectl_rollout_pause()
+{
+    last_command="kubectl_rollout_pause"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--filename=")
+    flags_with_completion+=("--filename")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    two_word_flags+=("-f")
+    flags_with_completion+=("-f")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--recursive")
+    flags+=("-R")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
+_kubectl_rollout_resume()
+{
+    last_command="kubectl_rollout_resume"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--filename=")
+    flags_with_completion+=("--filename")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    two_word_flags+=("-f")
+    flags_with_completion+=("-f")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--recursive")
+    flags+=("-R")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
+_kubectl_rollout_undo()
+{
+    last_command="kubectl_rollout_undo"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--filename=")
+    flags_with_completion+=("--filename")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    two_word_flags+=("-f")
+    flags_with_completion+=("-f")
+    flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--recursive")
+    flags+=("-R")
+    flags+=("--to-revision=")
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
+_kubectl_rollout()
+{
+    last_command="kubectl_rollout"
+    commands=()
+    commands+=("history")
+    commands+=("pause")
+    commands+=("resume")
+    commands+=("undo")
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
 _kubectl_label()
 {
     last_command="kubectl_label"
@@ -1671,19 +2160,28 @@ _kubectl_label()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
     flags+=("--overwrite")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--resource-version=")
     flags+=("--selector=")
     two_word_flags+=("-l")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -1712,6 +2210,7 @@ _kubectl_label()
     must_have_one_flag=()
     must_have_one_noun=()
     must_have_one_noun+=("componentstatus")
+    must_have_one_noun+=("configmap")
     must_have_one_noun+=("daemonset")
     must_have_one_noun+=("deployment")
     must_have_one_noun+=("endpoints")
@@ -1725,13 +2224,16 @@ _kubectl_label()
     must_have_one_noun+=("persistentvolume")
     must_have_one_noun+=("persistentvolumeclaim")
     must_have_one_noun+=("pod")
+    must_have_one_noun+=("podsecuritypolicy")
     must_have_one_noun+=("podtemplate")
+    must_have_one_noun+=("replicaset")
     must_have_one_noun+=("replicationcontroller")
     must_have_one_noun+=("resourcequota")
     must_have_one_noun+=("secret")
     must_have_one_noun+=("service")
     must_have_one_noun+=("serviceaccount")
     must_have_one_noun+=("thirdpartyresource")
+    must_have_one_noun+=("thirdpartyresourcedata")
 }
 
 _kubectl_annotate()
@@ -1751,19 +2253,28 @@ _kubectl_annotate()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
     flags+=("--overwrite")
+    flags+=("--record")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--resource-version=")
     flags+=("--selector=")
     two_word_flags+=("-l")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -1804,7 +2315,7 @@ _kubectl_config_view()
     flags_completion=()
 
     flags+=("--flatten")
-    flags+=("--merge")
+    flags+=("--merge=")
     flags+=("--minify")
     flags+=("--no-headers")
     flags+=("--output=")
@@ -1813,9 +2324,14 @@ _kubectl_config_view()
     flags+=("--raw")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -1857,8 +2373,10 @@ _kubectl_config_set-cluster()
 
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
-    flags+=("--embed-certs")
-    flags+=("--insecure-skip-tls-verify")
+    flags_with_completion+=("--certificate-authority")
+    flags_completion+=("_filedir")
+    flags+=("--embed-certs=")
+    flags+=("--insecure-skip-tls-verify=")
     flags+=("--server=")
     flags+=("--alsologtostderr")
     flags+=("--client-certificate=")
@@ -1895,8 +2413,12 @@ _kubectl_config_set-credentials()
     flags_completion=()
 
     flags+=("--client-certificate=")
+    flags_with_completion+=("--client-certificate")
+    flags_completion+=("_filedir")
     flags+=("--client-key=")
-    flags+=("--embed-certs")
+    flags_with_completion+=("--client-key")
+    flags_completion+=("_filedir")
+    flags+=("--embed-certs=")
     flags+=("--password=")
     flags+=("--token=")
     flags+=("--username=")
@@ -2041,6 +2563,45 @@ _kubectl_config_unset()
     must_have_one_noun=()
 }
 
+_kubectl_config_current-context()
+{
+    last_command="kubectl_config_current-context"
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+    flags+=("--alsologtostderr")
+    flags+=("--api-version=")
+    flags+=("--certificate-authority=")
+    flags+=("--client-certificate=")
+    flags+=("--client-key=")
+    flags+=("--cluster=")
+    flags+=("--context=")
+    flags+=("--insecure-skip-tls-verify")
+    flags+=("--kubeconfig=")
+    flags+=("--log-backtrace-at=")
+    flags+=("--log-dir=")
+    flags+=("--log-flush-frequency=")
+    flags+=("--logtostderr")
+    flags+=("--match-server-version")
+    flags+=("--namespace=")
+    flags+=("--password=")
+    flags+=("--server=")
+    two_word_flags+=("-s")
+    flags+=("--stderrthreshold=")
+    flags+=("--token=")
+    flags+=("--user=")
+    flags+=("--username=")
+    flags+=("--v=")
+    flags+=("--vmodule=")
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+}
+
 _kubectl_config_use-context()
 {
     last_command="kubectl_config_use-context"
@@ -2090,6 +2651,7 @@ _kubectl_config()
     commands+=("set-context")
     commands+=("set")
     commands+=("unset")
+    commands+=("current-context")
     commands+=("use-context")
 
     flags=()
@@ -2136,6 +2698,7 @@ _kubectl_cluster-info()
     flags_with_completion=()
     flags_completion=()
 
+    flags+=("--include-extended-apis")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
     flags+=("--certificate-authority=")
@@ -2255,6 +2818,7 @@ _kubectl_explain()
     flags_with_completion=()
     flags_completion=()
 
+    flags+=("--include-extended-apis")
     flags+=("--recursive")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -2301,17 +2865,27 @@ _kubectl_convert()
     two_word_flags+=("-f")
     flags_with_completion+=("-f")
     flags_completion+=("__handle_filename_extension_flag json|yaml|yml")
+    flags+=("--include-extended-apis")
     flags+=("--local")
     flags+=("--no-headers")
     flags+=("--output=")
     two_word_flags+=("-o")
     flags+=("--output-version=")
+    flags+=("--recursive")
+    flags+=("-R")
     flags+=("--schema-cache-dir=")
+    flags_with_completion+=("--schema-cache-dir")
+    flags_completion+=("_filedir")
     flags+=("--show-all")
     flags+=("-a")
+    flags+=("--show-labels")
     flags+=("--sort-by=")
     flags+=("--template=")
+    flags_with_completion+=("--template")
+    flags_completion+=("_filedir")
     two_word_flags+=("-t")
+    flags_with_completion+=("-t")
+    flags_completion+=("_filedir")
     flags+=("--validate")
     flags+=("--alsologtostderr")
     flags+=("--api-version=")
@@ -2370,6 +2944,7 @@ _kubectl()
     commands+=("run")
     commands+=("expose")
     commands+=("autoscale")
+    commands+=("rollout")
     commands+=("label")
     commands+=("annotate")
     commands+=("config")
diff --git a/roles/kubernetes/node/defaults/main.yml b/roles/kubernetes/node/defaults/main.yml
index 5cac568d9efa0bce5e46bf7d9ef60235405dad7f..37b056a785932fc8cfffa296a8bc6a461f356856 100644
--- a/roles/kubernetes/node/defaults/main.yml
+++ b/roles/kubernetes/node/defaults/main.yml
@@ -31,8 +31,8 @@ dns_domain: "{{ cluster_name }}"
 
 kube_proxy_mode: userspace
 
-hyperkube_image_repo: quay.io/ant31/kubernetes-hyperkube
-hyperkube_image_tag: v1.2.0
+hyperkube_image_repo: quay.io/smana/kubernetes-hyperkube
+hyperkube_image_tag: v1.2.1
 
 # IP address of the DNS server.
 # Kubernetes will create a pod with several containers, serving as the DNS
diff --git a/roles/uploads/defaults/main.yml b/roles/uploads/defaults/main.yml
index 988f370d8b9186c1f40fb5b878e22bc28bfc6b10..c46de1a232a7d56542fc723160de14ba4b5cdb91 100644
--- a/roles/uploads/defaults/main.yml
+++ b/roles/uploads/defaults/main.yml
@@ -2,7 +2,7 @@
 local_release_dir: /tmp
 
 # Versions
-kube_version: v1.2.0
+kube_version: v1.2.1
 etcd_version: v2.2.5
 calico_version: v0.17.0
 calico_cni_version: v1.0.0
@@ -22,9 +22,9 @@ calico_cni_checksum: "cfbb95d4416cb65845a188f3bd991fff232bd5ce3463b2919d586ab779
 calico_cni_ipam_checksum: "93ebf8756b26314e1e3f612f1e824418cbb0a8df2942664422e697bcb109fbb2"
 weave_checksum: "152942c330f87ab475d87d9311b91674b90f25ea685bd4e04e0495d5fe09a957"
 etcd_checksum: "aa6037406257d2a1bc48ffa769afe7a4f8a04cc1ffcd36ef84f9ee8bc4eca756"
-kubectl_checksum: "0fd51875a4783fb106f769bdbc81012066b4a2785ba88b0280870a25cab76296"
-kubelet_checksum: "a1da4b8d0965f66b7243d22f2b307227ec24bbd7ce8522cd3ce4ec1206c3a09e"
-kube_apiserver_checksum: "fe50e4014a96897a708b3c847550b4e510a390585209c2b11c02a32123570d43"
+kubectl_checksum: "a41b9543ddef1f64078716075311c44c6e1d02c67301c0937a658cef37923bbb"
+kubelet_checksum: "7e253e07da77b031d5687102c485697f95f9e1e6410c1da1f4d3f064cdc70f07"
+kube_apiserver_checksum: "8e00cd59330857b119e40cd6156c0f476a8e62bbc9e9addd524b39e0c390a6cd"
 
 downloads:
   - name: calico