forked from xiaoqshuo/k8-ha-install
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate-config.sh
executable file
·231 lines (196 loc) · 6.95 KB
/
create-config.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#!/bin/bash
#######################################
# set variables below to create the config files, all files will create at ./config directory
#######################################
# master keepalived virtual ip address
export K8SHA_VIP=192.168.2.99
# master01 ip address
export K8SHA_IP1=192.168.2.100
# node01 ip address
export K8SHA_IP2=192.168.2.101
# node02 ip address
export K8SHA_IP3=192.168.2.102
# master keepalived virtual ip hostname
export K8SHA_VHOST=k8s-master-lb
# master01 hostname
export K8SHA_HOST1=k8s-master01
# node01 hostname
export K8SHA_HOST2=k8s-node01
# node02 hostname
export K8SHA_HOST3=k8s-node02
# master01 network interface name
export K8SHA_NETINF1=ens160
# master02 network interface name
export K8SHA_NETINF2=ens160
# master03 network interface name
export K8SHA_NETINF3=ens160
# keepalived auth_pass config
export K8SHA_KEEPALIVED_AUTH=412f7dc3bfed32194d1600c483e10ad1d
# calico reachable ip address
export K8SHA_CALICO_REACHABLE_IP=192.168.2.1
# kubernetes CIDR pod subnet, if CIDR pod subnet is "172.168.0.0/16" please set to "172.168.0.0"
export K8SHA_CIDR=172.168.0.0
##############################
# please do not modify anything below
##############################
mkdir -p config/$K8SHA_HOST1/{keepalived,nginx-lb}
mkdir -p config/$K8SHA_HOST2/{keepalived,nginx-lb}
mkdir -p config/$K8SHA_HOST3/{keepalived,nginx-lb}
# create all kubeadm-config.yaml files
cat << EOF > config/$K8SHA_HOST1/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
kubernetesVersion: v1.12.3
apiServerCertSANs:
- ${K8SHA_HOST1}
- ${K8SHA_HOST2}
- ${K8SHA_HOST3}
- ${K8SHA_VHOST}
- ${K8SHA_IP1}
- ${K8SHA_IP2}
- ${K8SHA_IP3}
- ${K8SHA_VIP}
etcd:
local:
extraArgs:
listen-client-urls: "https://127.0.0.1:2379,https://${K8SHA_IP1}:2379"
advertise-client-urls: "https://${K8SHA_IP1}:2379"
listen-peer-urls: "https://${K8SHA_IP1}:2380"
initial-advertise-peer-urls: "https://${K8SHA_IP1}:2380"
initial-cluster: "${K8SHA_HOST1}=https://${K8SHA_IP1}:2380"
serverCertSANs:
- ${K8SHA_HOST1}
- ${K8SHA_IP1}
peerCertSANs:
- ${K8SHA_HOST1}
- ${K8SHA_IP1}
networking:
# This CIDR is a Calico default. Substitute or remove for your CNI provider.
podSubnet: "${K8SHA_CIDR}/16"
EOF
cat << EOF > config/$K8SHA_HOST2/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
kubernetesVersion: v1.12.3
apiServerCertSANs:
- ${K8SHA_HOST1}
- ${K8SHA_HOST2}
- ${K8SHA_HOST3}
- ${K8SHA_VHOST}
- ${K8SHA_IP1}
- ${K8SHA_IP2}
- ${K8SHA_IP3}
- ${K8SHA_VIP}
etcd:
local:
extraArgs:
listen-client-urls: "https://127.0.0.1:2379,https://${K8SHA_IP2}:2379"
advertise-client-urls: "https://${K8SHA_IP2}:2379"
listen-peer-urls: "https://${K8SHA_IP2}:2380"
initial-advertise-peer-urls: "https://${K8SHA_IP2}:2380"
initial-cluster: "${K8SHA_HOST1}=https://${K8SHA_IP1}:2380,${K8SHA_HOST2}=https://${K8SHA_IP2}:2380"
initial-cluster-state: existing
serverCertSANs:
- ${K8SHA_HOST2}
- ${K8SHA_IP2}
peerCertSANs:
- ${K8SHA_HOST2}
- ${K8SHA_IP2}
networking:
# This CIDR is a calico default. Substitute or remove for your CNI provider.
podSubnet: "${K8SHA_CIDR}/16"
EOF
cat << EOF > config/$K8SHA_HOST3/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
kubernetesVersion: v1.12.3
apiServerCertSANs:
- ${K8SHA_HOST1}
- ${K8SHA_HOST2}
- ${K8SHA_HOST3}
- ${K8SHA_VHOST}
- ${K8SHA_IP1}
- ${K8SHA_IP2}
- ${K8SHA_IP3}
- ${K8SHA_VIP}
etcd:
local:
extraArgs:
listen-client-urls: "https://127.0.0.1:2379,https://${K8SHA_IP3}:2379"
advertise-client-urls: "https://${K8SHA_IP3}:2379"
listen-peer-urls: "https://${K8SHA_IP3}:2380"
initial-advertise-peer-urls: "https://${K8SHA_IP3}:2380"
initial-cluster: "${K8SHA_HOST1}=https://${K8SHA_IP1}:2380,${K8SHA_HOST2}=https://${K8SHA_IP2}:2380,${K8SHA_HOST3}=https://${K8SHA_IP3}:2380"
initial-cluster-state: existing
serverCertSANs:
- ${K8SHA_HOST3}
- ${K8SHA_IP3}
peerCertSANs:
- ${K8SHA_HOST3}
- ${K8SHA_IP3}
networking:
# This CIDR is a calico default. Substitute or remove for your CNI provider.
podSubnet: "${K8SHA_CIDR}/16"
EOF
echo "create kubeadm-config.yaml files success. config/$K8SHA_HOST1/kubeadm-config.yaml"
echo "create kubeadm-config.yaml files success. config/$K8SHA_HOST2/kubeadm-config.yaml"
echo "create kubeadm-config.yaml files success. config/$K8SHA_HOST3/kubeadm-config.yaml"
# create all keepalived files
cp keepalived/check_apiserver.sh config/$K8SHA_HOST1/keepalived
cp keepalived/check_apiserver.sh config/$K8SHA_HOST2/keepalived
cp keepalived/check_apiserver.sh config/$K8SHA_HOST3/keepalived
sed \
-e "s/K8SHA_KA_STATE/MASTER/g" \
-e "s/K8SHA_KA_INTF/${K8SHA_NETINF1}/g" \
-e "s/K8SHA_IPLOCAL/${K8SHA_IP1}/g" \
-e "s/K8SHA_KA_PRIO/102/g" \
-e "s/K8SHA_VIP/${K8SHA_VIP}/g" \
-e "s/K8SHA_KA_AUTH/${K8SHA_KEEPALIVED_AUTH}/g" \
keepalived/keepalived.conf.tpl > config/$K8SHA_HOST1/keepalived/keepalived.conf
sed \
-e "s/K8SHA_KA_STATE/BACKUP/g" \
-e "s/K8SHA_KA_INTF/${K8SHA_NETINF2}/g" \
-e "s/K8SHA_IPLOCAL/${K8SHA_IP2}/g" \
-e "s/K8SHA_KA_PRIO/101/g" \
-e "s/K8SHA_VIP/${K8SHA_VIP}/g" \
-e "s/K8SHA_KA_AUTH/${K8SHA_KEEPALIVED_AUTH}/g" \
keepalived/keepalived.conf.tpl > config/$K8SHA_HOST2/keepalived/keepalived.conf
sed \
-e "s/K8SHA_KA_STATE/BACKUP/g" \
-e "s/K8SHA_KA_INTF/${K8SHA_NETINF3}/g" \
-e "s/K8SHA_IPLOCAL/${K8SHA_IP3}/g" \
-e "s/K8SHA_KA_PRIO/100/g" \
-e "s/K8SHA_VIP/${K8SHA_VIP}/g" \
-e "s/K8SHA_KA_AUTH/${K8SHA_KEEPALIVED_AUTH}/g" \
keepalived/keepalived.conf.tpl > config/$K8SHA_HOST3/keepalived/keepalived.conf
echo "create keepalived files success. config/$K8SHA_HOST1/keepalived/"
echo "create keepalived files success. config/$K8SHA_HOST2/keepalived/"
echo "create keepalived files success. config/$K8SHA_HOST3/keepalived/"
# create all nginx-lb files
cp nginx-lb/docker-compose.yaml config/$K8SHA_HOST1/nginx-lb/
cp nginx-lb/docker-compose.yaml config/$K8SHA_HOST2/nginx-lb/
cp nginx-lb/docker-compose.yaml config/$K8SHA_HOST3/nginx-lb/
sed \
-e "s/K8SHA_IP1/$K8SHA_IP1/g" \
-e "s/K8SHA_IP2/$K8SHA_IP2/g" \
-e "s/K8SHA_IP3/$K8SHA_IP3/g" \
nginx-lb/nginx-lb.conf.tpl > config/$K8SHA_HOST1/nginx-lb/nginx-lb.conf
sed \
-e "s/K8SHA_IP1/$K8SHA_IP1/g" \
-e "s/K8SHA_IP2/$K8SHA_IP2/g" \
-e "s/K8SHA_IP3/$K8SHA_IP3/g" \
nginx-lb/nginx-lb.conf.tpl > config/$K8SHA_HOST2/nginx-lb/nginx-lb.conf
sed \
-e "s/K8SHA_IP1/$K8SHA_IP1/g" \
-e "s/K8SHA_IP2/$K8SHA_IP2/g" \
-e "s/K8SHA_IP3/$K8SHA_IP3/g" \
nginx-lb/nginx-lb.conf.tpl > config/$K8SHA_HOST3/nginx-lb/nginx-lb.conf
echo "create nginx-lb files success. config/$K8SHA_HOST1/nginx-lb/"
echo "create nginx-lb files success. config/$K8SHA_HOST2/nginx-lb/"
echo "create nginx-lb files success. config/$K8SHA_HOST3/nginx-lb/"
# create calico yaml file
sed \
-e "s/K8SHA_CALICO_REACHABLE_IP/${K8SHA_CALICO_REACHABLE_IP}/g" \
-e "s/K8SHA_CIDR/${K8SHA_CIDR}/g" \
calico/calico.yaml.tpl > calico/calico.yaml
echo "create calico.yaml file success. calico/calico.yaml"