Skip to content

Commit 17ffb0d

Browse files
authored
upgrade to K8s v1.10.x (#10)
* removed tls-cert-file setting as it is deprecated (see kubernetes/kubernetes#58968) * remove deprecated kube-apiserver parameter insecure-bind-address / added variable+parameter secure-port for kube-apiserver * added kube-controller-manager certificate files to k8s_certificates list * update README * added kube-scheduler certificate files to k8s_certificates list * updated README * added kube-controller-manager-sa certificate files to k8s_certificates list * removed unneeded files from k8s_certificates list * change K8s release to v1.10.3 * added kubeconfig for admin user, controller manager, scheduler / introduce k8s_scheduler_conf_dir, k8s_controller_manager_conf_dir / k8s_release to v1.10.3 / update README * replaced kube-apiserver parameter admission-control with enable-admission-plugins * new service-account-key-file value for kube-apiserver * changes in k8s_controller_manager_settings: removed master parameter, added kubeconfig, new value for service-account-private-key-file, new parameter use-service-account-credentials * update to K8s v1.10.4 * update README * implemented needed changes for kube-scheduler * kubectl now uses --kubeconfig * fix wrong directory destinations * added k8s-controller-base tag / fixed wrong tags
1 parent ca2e793 commit 17ffb0d

File tree

4 files changed

+138
-36
lines changed

4 files changed

+138
-36
lines changed

README.md

+35-17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,19 @@ This role requires that you already created some certificates for Kubernetes API
1616
Changelog
1717
---------
1818

19+
**r4.0.0_v1.10.4**
20+
21+
- update `k8s_release` to `1.10.4`
22+
- removed deprecated kube-apiserver parameter `insecure-bind-address` (see: [#59018](https://github.com/kubernetes/kubernetes/pull/59018))
23+
- added variable `k8s_apiserver_secure_port: 6443`
24+
- added parameter `secure-port` to `k8s_apiserver_settings` parameter list
25+
- added `kube-controller-manager-ca` certificate files to `k8s_certificates` list
26+
- added variable `k8s_controller_manager_conf_dir` / added kubeconfig for kube-controller-manager
27+
- added variable `k8s_scheduler_conf_dir` / added kubeconfig for kube-scheduler / settings for kube-scheduler now in ` templates/var/lib/kube-scheduler/kube-scheduler.yaml.j2`
28+
- added kubeconfig for `admin` user (located by default in `k8s_conf_dir`). This `admin.kubeconfig` will be needed for `kubectl`
29+
- new `service-account-key-file` value for kube-apiserver
30+
- changes in `k8s_controller_manager_settings`: removed `master` parameter, added `kubeconfig`, new value for `service-account-private-key-file`, new parameter `use-service-account-credentials`
31+
1932
**r3.0.0_v1.9.8**
2033

2134
- update `k8s_release` to `1.9.8`
@@ -61,7 +74,7 @@ k8s_conf_dir: "/var/lib/kubernetes"
6174
# The directory to store the K8s binaries
6275
k8s_bin_dir: "/usr/local/bin"
6376
# K8s release
64-
k8s_release: "1.9.8"
77+
k8s_release: "1.10.4"
6578
# The interface on which the K8s services should listen on. As all cluster
6679
# communication should use the PeerVPN interface the interface name is
6780
# normally "tap0" or "peervpn0".
@@ -91,14 +104,18 @@ k8s_certificates:
91104
- ca-k8s-apiserver-key.pem
92105
- cert-k8s-apiserver.pem
93106
- cert-k8s-apiserver-key.pem
107+
- cert-k8s-controller-manager-sa.pem
108+
- cert-k8s-controller-manager-sa-key.pem
109+
110+
k8s_apiserver_secure_port: "6443"
94111
95112
# kube-apiserver settings (can be overriden or additional added by defining
96113
# "k8s_apiserver_settings_user" - see text below)
97114
k8s_apiserver_settings:
98115
"advertise-address": "hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address"
99116
"bind-address": "hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address"
100-
"insecure-bind-address": "hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address"
101-
"admission-control": "Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
117+
"secure-port": "{{k8s_apiserver_secure_port}}"
118+
"enable-admission-plugins": "Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
102119
"allow-privileged": "true"
103120
"apiserver-count": "3"
104121
"authorization-mode": "Node,RBAC"
@@ -121,35 +138,36 @@ k8s_apiserver_settings:
121138
"kubelet-certificate-authority": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
122139
"kubelet-client-certificate": "{{k8s_conf_dir}}/cert-k8s-apiserver.pem"
123140
"kubelet-client-key": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
124-
"service-account-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
141+
"service-account-key-file": "{{k8s_conf_dir}}/cert-k8s-controller-manager-sa.pem"
125142
"tls-ca-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
126143
"tls-cert-file": "{{k8s_conf_dir}}/cert-k8s-apiserver.pem"
127144
"tls-private-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
128145
129146
# The directory to store controller manager configuration.
130-
k8s_controller_manager_conf_dir: "{{k8s_conf_dir}}"
147+
k8s_controller_manager_conf_dir: "/var/lib/kube-controller-manager"
131148
132149
# kube-controller-manager settings (can be overriden or additional added by defining
133150
# "k8s_controller_manager_settings_user" - see text below)
134151
k8s_controller_manager_settings:
135152
"address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
136-
"master": "{{'http://' + hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address + ':8080'}}"
137153
"cluster-cidr": "10.200.0.0/16"
138154
"cluster-name": "kubernetes"
155+
"kubeconfig": "{{k8s_controller_manager_conf_dir}}/kube-controller-manager.kubeconfig"
139156
"leader-elect": "true"
140157
"service-cluster-ip-range": "10.32.0.0/16"
141-
"cluster-signing-cert-file": "{{k8s_controller_manager_conf_dir}}/ca-k8s-apiserver.pem"
142-
"cluster-signing-key-file": "{{k8s_controller_manager_conf_dir}}/cert-k8s-apiserver-key.pem"
143-
"root-ca-file": "{{k8s_controller_manager_conf_dir}}/ca-k8s-apiserver.pem"
144-
"cluster-signing-cert-file": "{{k8s_controller_manager_conf_dir}}/ca-k8s-apiserver.pem"
145-
"service-account-private-key-file": "{{k8s_controller_manager_conf_dir}}/cert-k8s-apiserver-key.pem"
146-
147-
# kube-scheduler settings (can be overriden or additional added by defining
148-
# "k8s_scheduler_settings_user" - see text below)
158+
"cluster-signing-cert-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
159+
"cluster-signing-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
160+
"root-ca-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
161+
"service-account-private-key-file": "{{k8s_conf_dir}}/cert-k8s-controller-manager-sa-key.pem"
162+
"use-service-account-credentials": "true"
163+
164+
# The directory to store scheduler configuration.
165+
k8s_scheduler_conf_dir: "/var/lib/kube-scheduler"
166+
167+
# kube-scheduler settings (only --config left,
168+
# see https://github.com/kubernetes/kubernetes/pull/62515, remaining parameter deprecated)
149169
k8s_scheduler_settings:
150-
"address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
151-
"master": "{{'http://' + hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address + ':8080'}}"
152-
"leader-elect": "true"
170+
"config": "{{k8s_scheduler_conf_dir}}/kube-scheduler.yaml"
153171
154172
# The port the control plane componentes should connect to etcd cluster
155173
etcd_client_port: "2379"

defaults/main.yml

+21-16
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ k8s_conf_dir: "/var/lib/kubernetes"
44
# The directory to store the K8s binaries
55
k8s_bin_dir: "/usr/local/bin"
66
# K8s release
7-
k8s_release: "1.9.8"
7+
k8s_release: "1.10.4"
88
# The interface on which the K8s services should listen on. As all cluster
99
# communication should use the PeerVPN interface the interface name is
1010
# normally "tap0" or "peervpn0".
@@ -28,20 +28,24 @@ k8s_controller_binaries:
2828
- kube-scheduler
2929
- kubectl
3030

31-
# K8s API daemon certificates
31+
# K8s kube-(apiserver|controller-manager-sa) certificates
3232
k8s_certificates:
3333
- ca-k8s-apiserver.pem
3434
- ca-k8s-apiserver-key.pem
3535
- cert-k8s-apiserver.pem
3636
- cert-k8s-apiserver-key.pem
37+
- cert-k8s-controller-manager-sa.pem
38+
- cert-k8s-controller-manager-sa-key.pem
39+
40+
k8s_apiserver_secure_port: "6443"
3741

3842
# K8s API daemon settings (can be overriden or additional added by defining
3943
# "k8s_apiserver_settings_user")
4044
k8s_apiserver_settings:
4145
"advertise-address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
4246
"bind-address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
43-
"insecure-bind-address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
44-
"admission-control": "Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
47+
"secure-port": "{{k8s_apiserver_secure_port}}"
48+
"enable-admission-plugins": "Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
4549
"allow-privileged": "true"
4650
"apiserver-count": "3"
4751
"authorization-mode": "Node,RBAC"
@@ -66,32 +70,33 @@ k8s_apiserver_settings:
6670
"kubelet-certificate-authority": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
6771
"kubelet-client-certificate": "{{k8s_conf_dir}}/cert-k8s-apiserver.pem"
6872
"kubelet-client-key": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
69-
"service-account-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
70-
"tls-ca-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
73+
"service-account-key-file": "{{k8s_conf_dir}}/cert-k8s-controller-manager-sa.pem"
7174
"tls-cert-file": "{{k8s_conf_dir}}/cert-k8s-apiserver.pem"
7275
"tls-private-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
7376

7477
# The directory to store controller manager configuration.
75-
k8s_controller_manager_conf_dir: "{{k8s_conf_dir}}"
78+
k8s_controller_manager_conf_dir: "/var/lib/kube-controller-manager"
7679
# K8s controller manager settings (can be overriden or additional added by defining
7780
# "k8s_controller_manager_settings_user")
7881
k8s_controller_manager_settings:
7982
"address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
80-
"master": "{{'http://' + hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address + ':8080'}}"
8183
"cluster-cidr": "10.200.0.0/16"
8284
"cluster-name": "kubernetes"
85+
"kubeconfig": "{{k8s_controller_manager_conf_dir}}/kube-controller-manager.kubeconfig"
8386
"leader-elect": "true"
8487
"service-cluster-ip-range": "10.32.0.0/16"
85-
"cluster-signing-cert-file": "{{k8s_controller_manager_conf_dir}}/ca-k8s-apiserver.pem"
86-
"cluster-signing-key-file": "{{k8s_controller_manager_conf_dir}}/cert-k8s-apiserver-key.pem"
87-
"root-ca-file": "{{k8s_controller_manager_conf_dir}}/ca-k8s-apiserver.pem"
88-
"service-account-private-key-file": "{{k8s_controller_manager_conf_dir}}/cert-k8s-apiserver-key.pem"
88+
"cluster-signing-cert-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
89+
"cluster-signing-key-file": "{{k8s_conf_dir}}/cert-k8s-apiserver-key.pem"
90+
"root-ca-file": "{{k8s_conf_dir}}/ca-k8s-apiserver.pem"
91+
"service-account-private-key-file": "{{k8s_conf_dir}}/cert-k8s-controller-manager-sa-key.pem"
92+
"use-service-account-credentials": "true"
8993

90-
# kube-scheduler settings
94+
# The directory to store scheduler configuration.
95+
k8s_scheduler_conf_dir: "/var/lib/kube-scheduler"
96+
# kube-scheduler settings (only --config left,
97+
# see https://github.com/kubernetes/kubernetes/pull/62515)
9198
k8s_scheduler_settings:
92-
"address": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
93-
"master": "{{'http://' + hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address + ':8080'}}"
94-
"leader-elect": "true"
99+
"config": "{{k8s_scheduler_conf_dir}}/kube-scheduler.yaml"
95100

96101
# The port the control plane componentes should connect to etcd cluster
97102
etcd_client_port: "2379"

tasks/main.yml

+73-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
- name: Create Kubernetes config directory
2+
- name: Create Kubernetes/kube-apiserver config directory
33
file:
44
path: "{{k8s_conf_dir}}"
55
state: directory
@@ -8,6 +8,73 @@
88
group: root
99
tags:
1010
- k8s-controller
11+
- k8s-controller-base
12+
13+
- name: Create kube-controller-manager config directory
14+
file:
15+
path: "{{k8s_controller_manager_conf_dir}}"
16+
state: directory
17+
mode: 0700
18+
owner: root
19+
group: root
20+
tags:
21+
- k8s-controller
22+
- k8s-controller-base
23+
24+
- name: Create kube-controller-manager kubeconfig
25+
template:
26+
src: "{{k8s_config_directory}}/kube-controller-manager.kubeconfig"
27+
dest: "{{k8s_controller_manager_conf_dir}}/kube-controller-manager.kubeconfig"
28+
owner: root
29+
group: root
30+
mode: 0644
31+
tags:
32+
- k8s-worker
33+
- k8s-controller-base
34+
35+
- name: Create scheduler config directory
36+
file:
37+
path: "{{k8s_scheduler_conf_dir}}"
38+
state: directory
39+
mode: 0700
40+
owner: root
41+
group: root
42+
tags:
43+
- k8s-controller
44+
- k8s-controller-base
45+
46+
- name: Create kube-scheduler kubeconfig
47+
template:
48+
src: "{{k8s_config_directory}}/kube-scheduler.kubeconfig"
49+
dest: "{{k8s_scheduler_conf_dir}}/kube-scheduler.kubeconfig"
50+
owner: root
51+
group: root
52+
mode: 0644
53+
tags:
54+
- k8s-controller
55+
- k8s-controller-base
56+
57+
- name: Create kube-scheduler.yaml
58+
template:
59+
src: "templates/var/lib/kube-scheduler/kube-scheduler.yaml.j2"
60+
dest: "{{k8s_scheduler_conf_dir}}/kube-scheduler.yaml"
61+
owner: root
62+
group: root
63+
mode: 0644
64+
tags:
65+
- k8s-controller
66+
- k8s-controller-base
67+
68+
- name: Create kubeconfig for admin user
69+
template:
70+
src: "{{k8s_config_directory}}/admin.kubeconfig"
71+
dest: "{{k8s_conf_dir}}/admin.kubeconfig"
72+
owner: root
73+
group: root
74+
mode: 0644
75+
tags:
76+
- k8s-controller
77+
- k8s-controller-base
1178

1279
- name: Copy etcd certificates
1380
copy:
@@ -20,6 +87,7 @@
2087
- "{{etcd_certificates}}"
2188
tags:
2289
- k8s-controller
90+
- k8s-controller-base
2391

2492
- name: Copy Kubernetes certificates
2593
copy:
@@ -32,6 +100,7 @@
32100
- "{{k8s_certificates}}"
33101
tags:
34102
- k8s-controller
103+
- k8s-controller-base
35104

36105
- name: Downloading official Kubernetes binaries
37106
get_url:
@@ -56,6 +125,7 @@
56125
group: root
57126
tags:
58127
- k8s-controller
128+
- k8s-controller-base
59129

60130
- name: Combine k8s_apiserver_settings and k8s_apiserver_settings_user (if defined)
61131
set_fact:
@@ -174,15 +244,15 @@
174244
delegate_to: "{{groups.k8s_controller|first}}"
175245

176246
- name: Apply kube-apiserver-to-kubelet ClusterRole
177-
shell: "kubectl --server={{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}:8080 apply -f /tmp/kube-apiserver-to-kubelet_cluster_role.yaml"
247+
shell: "kubectl apply --kubeconfig {{k8s_conf_dir}}/admin.kubeconfig -f /tmp/kube-apiserver-to-kubelet_cluster_role.yaml"
178248
register: kube_apiserver_to_kubelet_cluster_role
179249
run_once: true
180250
delegate_to: "{{groups.k8s_controller|first}}"
181251
tags:
182252
- k8s-controller
183253

184254
- name: Apply kube-apiserver-to-kubelet ClusterRoleBinding
185-
shell: "kubectl --server={{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}:8080 apply -f /tmp/kube-apiserver-to-kubelet_cluster_role_binding.yaml"
255+
shell: "kubectl apply --kubeconfig {{k8s_conf_dir}}/admin.kubeconfig -f /tmp/kube-apiserver-to-kubelet_cluster_role_binding.yaml"
186256
register: kube_apiserver_to_kubelet_cluster_role_binding
187257
run_once: true
188258
delegate_to: "{{groups.k8s_controller|first}}"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#jinja2: trim_blocks:False
2+
apiVersion: componentconfig/v1alpha1
3+
kind: KubeSchedulerConfiguration
4+
clientConnection:
5+
kubeconfig: "{{k8s_scheduler_conf_dir}}/kube-scheduler.kubeconfig"
6+
healthzBindAddress: {{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}:10251
7+
leaderElection:
8+
leaderElect: true
9+
metricsBindAddress: {{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}:10251

0 commit comments

Comments
 (0)