summaryrefslogtreecommitdiff
path: root/roles/kubernetes
diff options
context:
space:
mode:
Diffstat (limited to 'roles/kubernetes')
-rw-r--r--roles/kubernetes/base/handlers/main.yml5
-rw-r--r--roles/kubernetes/base/tasks/main.yml13
-rw-r--r--roles/kubernetes/base/templates/20-dns.conf.j22
-rw-r--r--roles/kubernetes/base/templates/50-extra.conf.j23
-rw-r--r--roles/kubernetes/master/tasks/main.yml13
-rw-r--r--roles/kubernetes/master/templates/kubeadm-cluster.config.j233
6 files changed, 50 insertions, 19 deletions
diff --git a/roles/kubernetes/base/handlers/main.yml b/roles/kubernetes/base/handlers/main.yml
deleted file mode 100644
index b61c1417..00000000
--- a/roles/kubernetes/base/handlers/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- name: reload systemd
- command: systemctl daemon-reload
- args:
- warn: no
diff --git a/roles/kubernetes/base/tasks/main.yml b/roles/kubernetes/base/tasks/main.yml
index e6aee41f..5d26d161 100644
--- a/roles/kubernetes/base/tasks/main.yml
+++ b/roles/kubernetes/base/tasks/main.yml
@@ -56,14 +56,11 @@
name: "{{ item }}"
selection: hold
-- name: install kubelet config snippets
- with_items:
- - 20-dns.conf
- - 50-extra.conf
- template:
- src: "{{ item }}.j2"
- dest: "/etc/systemd/system/kubelet.service.d/{{ item }}"
- notify: reload systemd
+- name: set kubelet node-ip
+ lineinfile:
+ name: "/etc/default/kubelet"
+ regexp: '^KUBELET_EXTRA_ARGS='
+ line: 'KUBELET_EXTRA_ARGS=--node-ip={{ kubernetes.pod_ip_range | ipsubnet(kubernetes.pod_ip_range_size, kubernetes.net_index[inventory_hostname]) | ipaddr(1) | ipaddr("address") }}'
- name: add dummy group with gid 998
group:
diff --git a/roles/kubernetes/base/templates/20-dns.conf.j2 b/roles/kubernetes/base/templates/20-dns.conf.j2
deleted file mode 100644
index 9b7ab32c..00000000
--- a/roles/kubernetes/base/templates/20-dns.conf.j2
+++ /dev/null
@@ -1,2 +0,0 @@
-[Service]
-Environment="KUBELET_DNS_ARGS=--cluster-dns={{ kubernetes.service_ip_range | ipaddr(10) | ipaddr('address') }} --cluster-domain=cluster.local"
diff --git a/roles/kubernetes/base/templates/50-extra.conf.j2 b/roles/kubernetes/base/templates/50-extra.conf.j2
deleted file mode 100644
index c722ade6..00000000
--- a/roles/kubernetes/base/templates/50-extra.conf.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-{% set br_net = kubernetes.pod_ip_range | ipsubnet(kubernetes.pod_ip_range_size, kubernetes.net_index[inventory_hostname]) -%}
-[Service]
-Environment="KUBELET_EXTRA_ARGS=--node-ip={{ br_net | ipaddr(1) | ipaddr('address') }}"
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index c9092bf3..acd264e2 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -16,8 +16,19 @@
check_mode: no
register: kubeadm_token_generate
+ - name: create kubernetes config directory
+ file:
+ path: /etc/kubernetes
+ state: directory
+
+ ## TODO test whether the generated cluster configs really works - since it has never been used...
+ - name: install cluster config for kubeadm
+ template:
+ src: kubeadm-cluster.config.j2
+ dest: /etc/kubernetes/kubeadm-cluster.config
+
- name: set up kubernetes master
- command: "kubeadm init --pod-network-cidr {{ kubernetes.pod_ip_range }} --service-cidr {{ kubernetes.service_ip_range }} --apiserver-advertise-address {{ kubernetes.api_advertise_ip | default('0.0.0.0') }} {% if kubernetes.api_extra_sans | length > 0 %}--apiserver-cert-extra-sans {{ kubernetes.api_extra_sans | join(',') }}{% endif %} --token '{{ kubeadm_token_generate.stdout }}' --token-ttl 42m --skip-token-print"
+ command: "kubeadm init --config '/etc/kubernetes/kubeadm-cluster.config' --token '{{ kubeadm_token_generate.stdout }}' --token-ttl 42m --skip-token-print"
args:
creates: /etc/kubernetes/pki/ca.crt
register: kubeadm_init
diff --git a/roles/kubernetes/master/templates/kubeadm-cluster.config.j2 b/roles/kubernetes/master/templates/kubeadm-cluster.config.j2
new file mode 100644
index 00000000..eac0cacd
--- /dev/null
+++ b/roles/kubernetes/master/templates/kubeadm-cluster.config.j2
@@ -0,0 +1,33 @@
+apiVersion: kubeadm.k8s.io/v1beta1
+kind: ClusterConfiguration
+kubernetesVersion: v{{ kubernetes.version }}
+clusterName: {{ kubernetes.cluster_name }}
+certificatesDir: /etc/kubernetes/pki
+{% if kubernetes.api_advertise_ip %}
+controlPlaneEndpoint: "{{ kubernetes.api_advertise_ip }}:6443"
+{% endif %}
+imageRepository: k8s.gcr.io
+networking:
+ dnsDomain: cluster.local
+ podSubnet: {{ kubernetes.pod_ip_range }}
+ serviceSubnet: {{ kubernetes.service_ip_range }}
+etcd:
+ local:
+ dataDir: /var/lib/etcd
+apiServer:
+{% if kubernetes.api_extra_sans | length > 0 %}
+ certSANs:
+{% for san in kubernetes.api_extra_sans %}
+ - {{ san }}
+{% endfor %}
+{% endif %}
+ extraArgs:
+{% if kubernetes.api_advertise_ip %}
+ advertise-address: {{ kubernetes.api_advertise_ip }}
+{% endif %}
+ authorization-mode: Node,RBAC
+ timeoutForControlPlane: 4m0s
+controllerManager: {}
+scheduler: {}
+dns:
+ type: CoreDNS