Merge pull request #6 from tcpcloud/add_fixes

add fixes
diff --git a/README.rst b/README.rst
index 303e739..3d4a016 100644
--- a/README.rst
+++ b/README.rst
@@ -154,6 +154,15 @@
       master:
         network:
           engine: flannel
+If you don't register master as node:
+          etcd:
+            members:
+              - host: 10.0.175.101
+                port: 4001
+              - host: 10.0.175.102
+                port: 4001
+              - host: 10.0.175.103
+                port: 4001
       common:
         network:
           engine: flannel
@@ -166,6 +175,14 @@
       pool:
         network:
           engine: flannel
+          etcd:
+            members:
+              - host: 10.0.175.101
+                port: 4001
+              - host: 10.0.175.102
+                port: 4001
+              - host: 10.0.175.103
+                port: 4001
       common:
         network:
           engine: flannel
@@ -181,6 +198,15 @@
       master:
         network:
           engine: calico
+If you don't register master as node:
+          etcd:
+            members:
+              - host: 10.0.175.101
+                port: 4001
+              - host: 10.0.175.102
+                port: 4001
+              - host: 10.0.175.103
+                port: 4001
 
 On pools:
 
@@ -190,6 +216,14 @@
       pool:
         network:
           engine: calico
+          etcd:
+            members:
+              - host: 10.0.175.101
+                port: 4001
+              - host: 10.0.175.102
+                port: 4001
+              - host: 10.0.175.103
+                port: 4001
 
 Kubernetes with GlusterFS for storage
 ---------------------------------------------
diff --git a/kubernetes/files/calico/calico.conf b/kubernetes/files/calico/calico.conf
index c6cb273..dcd0c85 100644
--- a/kubernetes/files/calico/calico.conf
+++ b/kubernetes/files/calico/calico.conf
@@ -2,7 +2,7 @@
 {
     "name": "calico-k8s-network",
     "type": "calico",
-    "etcd_authority": "{{ pool.master.host }}:6666",
+    "etcd_endpoints": "{% for member in pool.network.etcd.members %}http://{{ member.host }}:{{ member.port }}{% if not loop.last %},{% endif %}{% endfor %}",
     "log_level": "info",
     "ipam": {
         "type": "calico-ipam"
diff --git a/kubernetes/files/calico/network-environment.master b/kubernetes/files/calico/network-environment.master
index 64e55dc..71d17c5 100644
--- a/kubernetes/files/calico/network-environment.master
+++ b/kubernetes/files/calico/network-environment.master
@@ -4,4 +4,4 @@
 DEFAULT_IPV4={{ master.apiserver.address }}
 
 # IP and port of etcd instance used by Calico
-ETCD_AUTHORITY={{ master.apiserver.address }}:6666
\ No newline at end of file
+ETCD_ENDPOINTS={% for member in master.network.etcd.members %}http://{{ member.host }}:{{ member.port }}{% if not loop.last %},{% endif %}{% endfor %}
\ No newline at end of file
diff --git a/kubernetes/files/calico/network-environment.pool b/kubernetes/files/calico/network-environment.pool
index aa0126e..f01980e 100644
--- a/kubernetes/files/calico/network-environment.pool
+++ b/kubernetes/files/calico/network-environment.pool
@@ -7,4 +7,4 @@
 KUBERNETES_MASTER={{ pool.master.host }}
 
 # IP and port of etcd instance used by Calico
-ETCD_AUTHORITY={{ pool.master.host }}:6666
\ No newline at end of file
+ETCD_ENDPOINTS={% for member in pool.network.etcd.members %}http://{{ member.host }}:{{ member.port }}{% if not loop.last %},{% endif %}{% endfor %}
\ No newline at end of file
diff --git a/kubernetes/files/flannel/default.master b/kubernetes/files/flannel/default.master
index 61fbc6d..2a8b881 100644
--- a/kubernetes/files/flannel/default.master
+++ b/kubernetes/files/flannel/default.master
@@ -1,3 +1,3 @@
 {%- from "kubernetes/map.jinja" import master with context %}
 
-DAEMON_ARGS="--etcd-endpoints={% for member in master.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} --ip-masq --etcd-prefix=/kubernetes.io/network"
\ No newline at end of file
+DAEMON_ARGS="--etcd-endpoints={% for member in master.network.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} --ip-masq --etcd-prefix=/kubernetes.io/network"
\ No newline at end of file
diff --git a/kubernetes/files/flannel/default.pool b/kubernetes/files/flannel/default.pool
index bd1a506..9bf8bfb 100644
--- a/kubernetes/files/flannel/default.pool
+++ b/kubernetes/files/flannel/default.pool
@@ -1,3 +1,3 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
 
-DAEMON_ARGS="--etcd-endpoints={% for member in pool.master.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} --ip-masq --etcd-prefix=/kubernetes.io/network"
\ No newline at end of file
+DAEMON_ARGS="--etcd-endpoints={% for member in pool.network.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} --ip-masq --etcd-prefix=/kubernetes.io/network"
\ No newline at end of file
diff --git a/kubernetes/files/known_tokens.csv b/kubernetes/files/known_tokens.csv
index 3bc3198..c17d03e 100644
--- a/kubernetes/files/known_tokens.csv
+++ b/kubernetes/files/known_tokens.csv
@@ -4,6 +4,10 @@
 {{ master.token.kube_proxy }},kube_proxy,kube_proxy
 {{ master.token.scheduler }},system:scheduler,system:scheduler
 {{ master.token.controller_manager }},system:controller_manager,system:controller_manager
+{%- if master.addons.logging is defined %}
 {{ master.token.logging }},system:logging,system:logging
+{%- endif %}
+{%- if master.addons.monitoring is defined %}
 {{ master.token.monitoring }},system:monitoring,system:monitoring
+{%- endif %}
 {{ master.token.dns }},system:dns,system:dns
\ No newline at end of file
diff --git a/kubernetes/files/manifest/calico-etcd.manifest b/kubernetes/files/manifest/calico-etcd.manifest
deleted file mode 100644
index a5a7b4c..0000000
--- a/kubernetes/files/manifest/calico-etcd.manifest
+++ /dev/null
@@ -1,31 +0,0 @@
-{%- from "kubernetes/map.jinja" import master with context %}
-apiVersion: v1
-kind: Pod
-metadata:
-  name: calico-etcd
-  namespace: calico-system
-spec:
-    hostNetwork: true
-    containers:
-    - name: calico-etcd-container
-      image: gcr.io/google_containers/etcd:2.2.1
-      command:
-        - "/usr/local/bin/etcd"
-        - "--name=calico-etcd"
-        - "--data-dir=/var/etcd/calico-data"
-        - "--advertise-client-urls=http://{{ master.apiserver.address }}:6666"
-        - "--listen-client-urls=http://0.0.0.0:6666"
-        - "--listen-peer-urls=http://0.0.0.0:6660"
-      securityContext:
-        privileged: true
-      ports:
-      - name: clientport
-        containerPort: 6666
-        hostPort: 6666
-      volumeMounts:
-        - mountPath: /var/etcd
-          name: varetcd
-    volumes:
-      - name: "varetcd"
-        hostPath:
-          path: "/mnt/master-pd/var/etcd"
\ No newline at end of file
diff --git a/kubernetes/files/manifest/flannel-server.manifest b/kubernetes/files/manifest/flannel-server.manifest
index ac2b1e3..532a0ba 100644
--- a/kubernetes/files/manifest/flannel-server.manifest
+++ b/kubernetes/files/manifest/flannel-server.manifest
@@ -52,7 +52,7 @@
                 "command": [
                     "/bin/sh",
                     "-c",
-                    "/opt/bin/flanneld -listen 0.0.0.0:10253 -etcd-endpoints {% for member in master.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} -etcd-prefix /kubernetes.io/network 2>&1 | tee -a /var/log/flannel-server.log"
+                    "/opt/bin/flanneld -listen 0.0.0.0:10253 -etcd-endpoints {% for member in master.network.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %} -etcd-prefix /kubernetes.io/network 2>&1 | tee -a /var/log/flannel-server.log"
                 ],
                 "ports": [
                     {
diff --git a/kubernetes/master/calico.sls b/kubernetes/master/calico.sls
index 36df8c4..e2833b4 100644
--- a/kubernetes/master/calico.sls
+++ b/kubernetes/master/calico.sls
@@ -1,18 +1,6 @@
 {%- from "kubernetes/map.jinja" import master with context %}
 {%- if master.enabled %}
 
-/etc/kubernetes/manifests/calico-etcd.manifest:
-  file.managed:
-    - source: salt://kubernetes/files/manifest/calico-etcd.manifest
-    - user: root
-    - group: root
-    - mode: 644
-    - makedirs: true
-    - dir_mode: 755
-    - template: jinja
-
-{%- if not pillar.kubernetes.pool is defined %}
-
 /etc/calico/network-environment:
   file.managed:
     - source: salt://kubernetes/files/calico/network-environment.master
@@ -23,7 +11,7 @@
     - dir_mode: 755
     - template: jinja
 
-/etc/systemd/calico-node.service:
+/etc/systemd/system/calico-node.service:
   file.managed:
     - source: salt://kubernetes/files/calico/calico-node.service
     - user: root
@@ -42,8 +30,6 @@
   - name: calico-node
   - enable: True
   - watch:
-    - file: /etc/systemd/calico-node.service
-
-{%- endif %}
+    - file: /etc/systemd/system/calico-node.service
 
 {%- endif %}
\ No newline at end of file
diff --git a/kubernetes/master/init.sls b/kubernetes/master/init.sls
index 3c28c89..51a365d 100644
--- a/kubernetes/master/init.sls
+++ b/kubernetes/master/init.sls
@@ -13,8 +13,10 @@
 - kubernetes.master.flannel
 {%- endif %}
 {%- if master.network.engine == "calico" %}
+{%- if not pillar.kubernetes.pool is defined %}
 - kubernetes.master.calico
 {%- endif %}
+{%- endif %}
 {%- if master.storage.get('engine', 'none') == 'glusterfs' %}
 - kubernetes.master.glusterfs
 {%- endif %}
diff --git a/kubernetes/pool/calico.sls b/kubernetes/pool/calico.sls
index f962e5c..adcfb4d 100644
--- a/kubernetes/pool/calico.sls
+++ b/kubernetes/pool/calico.sls
@@ -11,8 +11,8 @@
 
 /opt/cni/bin/calico:
   file.managed:
-     - source: https://github.com/projectcalico/calico-cni/releases/download/v1.0.0/calico
-     - source_hash: md5=c829450f7e9d7abe81b3a8b37fc787a4
+     - source: https://github.com/projectcalico/calico-cni/releases/download/{{ pool.network.cni.version }}/calico
+     - source_hash: md5={{ pool.network.cni.hash }}
      - mode: 751
      - makedirs: true
      - user: root
@@ -20,8 +20,8 @@
 
 /opt/cni/bin/calico-ipam:
   file.managed:
-     - source: https://github.com/projectcalico/calico-cni/releases/download/v1.0.0/calico-ipam
-     - source_hash: md5=a40d4db5b3acbb6dc93330b84d25d936
+     - source: https://github.com/projectcalico/calico-cni/releases/download/{{ pool.network.ipam.version }}/calico-ipam
+     - source_hash: md5={{ pool.network.ipam.hash }}
      - mode: 751
      - makedirs: true
      - user: root
@@ -47,7 +47,7 @@
     - dir_mode: 755
     - template: jinja
 
-/etc/systemd/calico-node.service:
+/etc/systemd/system/calico-node.service:
   file.managed:
     - source: salt://kubernetes/files/calico/calico-node.service
     - user: root
@@ -58,6 +58,6 @@
   - name: calico-node
   - enable: True
   - watch:
-    - file: /etc/systemd/calico-node.service
+    - file: /etc/systemd/system/calico-node.service
 
 {%- endif %}
\ No newline at end of file
diff --git a/kubernetes/pool/kubelet.sls b/kubernetes/pool/kubelet.sls
index 4667e40..f79dfa5 100644
--- a/kubernetes/pool/kubelet.sls
+++ b/kubernetes/pool/kubelet.sls
@@ -21,7 +21,7 @@
 /etc/kubernetes/config:
   file.absent
 
-{%- if pool.host.labels is defined %}
+{%- if pool.host.label is defined %}
 
 {%- for name,label in pool.host.label.iteritems() %}
 
diff --git a/metadata/service/master/cluster.yml b/metadata/service/master/cluster.yml
index 6359e40..f68e5ff 100644
--- a/metadata/service/master/cluster.yml
+++ b/metadata/service/master/cluster.yml
@@ -49,4 +49,13 @@
         engine: none
       namespace:
         kube-system:
-          enabled: True
\ No newline at end of file
+          enabled: True
+      network:
+        etcd:
+          members:
+          - host: ${_param:cluster_node01_address}
+            port: 4001
+          - host: ${_param:cluster_node02_address}
+            port: 4001
+          - host: ${_param:cluster_node03_address}
+            port: 4001
\ No newline at end of file
diff --git a/metadata/service/master/single.yml b/metadata/service/master/single.yml
index c145469..2f76e7d 100644
--- a/metadata/service/master/single.yml
+++ b/metadata/service/master/single.yml
@@ -45,4 +45,9 @@
         engine: none
       namespace:
         kube-system:
-          enabled: True
\ No newline at end of file
+          enabled: True
+      network:
+        etcd:
+          members:
+            - host: ${_param:single_address}
+              port: 4001
\ No newline at end of file
diff --git a/metadata/service/pool/cluster.yml b/metadata/service/pool/cluster.yml
index dc87cbb..e79a104 100644
--- a/metadata/service/pool/cluster.yml
+++ b/metadata/service/pool/cluster.yml
@@ -18,12 +18,7 @@
             - host: ${_param:cluster_node01_address}
             - host: ${_param:cluster_node02_address}
             - host: ${_param:cluster_node03_address}
-        etcd:
-          members:
-            - host: ${_param:cluster_node01_address}
-            - host: ${_param:cluster_node02_address}
-            - host: ${_param:cluster_node03_address}
-      address: 0.0.0.0
+      address: ${_param:cluster_local_address}
       cluster_dns: 10.254.0.10
       cluster_domain: cluster.local
       kubelet:
@@ -33,4 +28,13 @@
       token:
         kubelet: ${_param:kubernetes_kubelet_token}
         kube_proxy: ${_param:kubernetes_kube-proxy_token}
-      ca: kubernetes
\ No newline at end of file
+      ca: kubernetes
+      network:
+        etcd:
+          members:
+          - host: ${_param:cluster_node01_address}
+            port: 4001
+          - host: ${_param:cluster_node02_address}
+            port: 4001
+          - host: ${_param:cluster_node03_address}
+            port: 4001
\ No newline at end of file
diff --git a/metadata/service/pool/single.yml b/metadata/service/pool/single.yml
index ac4254e..68ec845 100644
--- a/metadata/service/pool/single.yml
+++ b/metadata/service/pool/single.yml
@@ -30,4 +30,9 @@
       token:
         kubelet: ${_param:kubernetes_kubelet_token}
         kube_proxy: ${_param:kubernetes_kube-proxy_token}
-      ca: kubernetes
\ No newline at end of file
+      ca: kubernetes
+      network:
+        etcd:
+          members:
+            - host: ${_param:master_address}
+              port: 4001
\ No newline at end of file