1
+ #! /usr/bin/env bash
2
+
3
+ # ###################################### CONFIGURATION PARAMETERS #######################################
4
+
5
+ COUNTRY_CODE=" CA"
6
+ LOCATION=" Waterloo"
7
+ ORG=" CA"
8
+ ORG_UNIT=" Kubernetes The Hard Way"
9
+ STATE=" Ontario"
10
+ KEY_ALGO=" rsa"
11
+ KEY_SIZE=2048
12
+ WORKER_EXTERNAL_IP=(8.8.8.8) # ###### PROVIDE YOUR WORKER'S EXTERNAL IP HERE.
13
+ KUBERNETES_PUBLIC_ADDRESS=8.8.8.8 # ###### PROVIDE YOUR AZURE LOAD BALANCER (SITTING IN FRONT OF CONTROLLERS) IP ADDRESS
14
+
1
15
# #################################################### KUBERNETES CA #############################################
2
16
3
17
cat > ca-config.json << EOF
@@ -20,23 +34,24 @@ cat > ca-csr.json <<EOF
20
34
{
21
35
"CN": "Kubernetes",
22
36
"key": {
23
- "algo": "rsa ",
24
- "size": 2048
37
+ "algo": "${KEY_ALGO} ",
38
+ "size": ${KEY_SIZE}
25
39
},
26
40
"names": [
27
41
{
28
- "C": "CA ",
29
- "L": "Waterloo ",
42
+ "C": "${COUNTRY_CODE} ",
43
+ "L": "${LOCATION} ",
30
44
"O": "Kubernetes",
31
- "OU": "CA ",
32
- "ST": "Ontario "
45
+ "OU": "${ORG} ",
46
+ "ST": "${STATE} "
33
47
}
34
48
]
35
49
}
36
50
EOF
37
51
38
52
/usr/local/bin/cfssl gencert -initca ca-csr.json | /usr/local/bin/cfssljson -bare ca
39
53
54
+
40
55
# ################################################################################################################
41
56
42
57
@@ -46,16 +61,16 @@ cat > admin-csr.json <<EOF
46
61
{
47
62
"CN": "admin",
48
63
"key": {
49
- "algo": "rsa ",
50
- "size": 2048
64
+ "algo": "${KEY_ALGO} ",
65
+ "size": ${KEY_SIZE}
51
66
},
52
67
"names": [
53
68
{
54
- "C": "CA ",
55
- "L": "Waterloo ",
69
+ "C": "${COUNTRY_CODE} ",
70
+ "L": "${LOCATION} ",
56
71
"O": "system:masters",
57
- "OU": "Kubernetes The Hard Way ",
58
- "ST": "Ontario "
72
+ "OU": "${ORG_UNIT} ",
73
+ "ST": "${STATE} "
59
74
}
60
75
]
61
76
}
68
83
-profile=kubernetes \
69
84
admin-csr.json | /usr/local/bin/cfssljson -bare admin
70
85
86
+
71
87
# ################################################################################################################
72
88
73
89
74
90
# ################################################# WORKER INSTANCES #################################################
75
91
76
- EXTERNAL_IP=(52.138.19.72 52.237.12.227 40.85.228.40)
77
-
78
92
for instance in {1..3}; do
79
93
cat > worker-${instance} -csr.json << EOF
80
94
{
81
95
"CN": "system:node:worker-${instance} ",
82
96
"key": {
83
- "algo": "rsa ",
84
- "size": 2048
97
+ "algo": "${KEY_ALGO} ",
98
+ "size": ${KEY_SIZE}
85
99
},
86
100
"names": [
87
101
{
88
- "C": "CA ",
89
- "L": "Waterloo ",
102
+ "C": "${COUNTRY_CODE} ",
103
+ "L": "${LOCATION} ",
90
104
"O": "system:nodes",
91
- "OU": "Kubernetes The Hard Way ",
92
- "ST": "Ontario "
105
+ "OU": "${ORG_UNIT} ",
106
+ "ST": "${STATE} "
93
107
}
94
108
]
95
109
}
96
110
EOF
97
111
98
-
99
-
100
112
/usr/local/bin/cfssl gencert \
101
113
-ca=ca.pem \
102
114
-ca-key=ca-key.pem \
103
115
-config=ca-config.json \
104
- -hostname=worker-${instance} ,${EXTERNAL_IP [${instance}-1]} ,10.0.0.2${instance} \
116
+ -hostname=worker-${instance} ,${WORKER_EXTERNAL_IP [${instance}-1]} ,10.0.0.2${instance} \
105
117
-profile=kubernetes \
106
118
worker-${instance} -csr.json | /usr/local/bin/cfssljson -bare worker-${instance}
107
119
done
108
120
121
+
109
122
# ################################################################################################################
110
123
111
124
@@ -115,16 +128,16 @@ cat > kube-controller-manager-csr.json <<EOF
115
128
{
116
129
"CN": "system:kube-controller-manager",
117
130
"key": {
118
- "algo": "rsa ",
119
- "size": 2048
131
+ "algo": "${KEY_ALGO} ",
132
+ "size": ${KEY_SIZE}
120
133
},
121
134
"names": [
122
135
{
123
- "C": "CA ",
124
- "L": "Waterloo ",
136
+ "C": "${COUNTRY_CODE} ",
137
+ "L": "${LOCATION} ",
125
138
"O": "system:kube-controller-manager",
126
- "OU": "Kubernetes The Hard Way ",
127
- "ST": "Ontario "
139
+ "OU": "${ORG_UNIT} ",
140
+ "ST": "${STATE} "
128
141
}
129
142
]
130
143
}
137
150
-profile=kubernetes \
138
151
kube-controller-manager-csr.json | /usr/local/bin/cfssljson -bare kube-controller-manager
139
152
140
- # ################################################################################################################
141
153
154
+ # ################################################################################################################
142
155
143
156
144
157
# ############################################## KUBE PROXY FILE ##########################################
@@ -147,16 +160,16 @@ cat > kube-proxy-csr.json <<EOF
147
160
{
148
161
"CN": "system:kube-proxy",
149
162
"key": {
150
- "algo": "rsa ",
151
- "size": 2048
163
+ "algo": "${KEY_ALGO} ",
164
+ "size": ${KEY_SIZE}
152
165
},
153
166
"names": [
154
167
{
155
- "C": "CA ",
156
- "L": "Waterloo ",
168
+ "C": "${COUNTRY_CODE} ",
169
+ "L": "${LOCATION} ",
157
170
"O": "system:node-proxier",
158
- "OU": "Kubernetes The Hard Way ",
159
- "ST": "Ontario "
171
+ "OU": "${ORG_UNIT} ",
172
+ "ST": "${STATE} "
160
173
}
161
174
]
162
175
}
169
182
-profile=kubernetes \
170
183
kube-proxy-csr.json | /usr/local/bin/cfssljson -bare kube-proxy
171
184
185
+
172
186
# ################################################################################################################
173
187
174
188
@@ -178,16 +192,16 @@ cat > kube-scheduler-csr.json <<EOF
178
192
{
179
193
"CN": "system:kube-scheduler",
180
194
"key": {
181
- "algo": "rsa ",
182
- "size": 2048
195
+ "algo": "${KEY_ALGO} ",
196
+ "size": ${KEY_SIZE}
183
197
},
184
198
"names": [
185
199
{
186
- "C": "CA ",
187
- "L": "Waterloo ",
200
+ "C": "${COUNTRY_CODE} ",
201
+ "L": "${LOCATION} ",
188
202
"O": "system:kube-scheduler",
189
- "OU": "Kubernetes The Hard Way ",
190
- "ST": "Ontario "
203
+ "OU": "${ORG_UNIT} ",
204
+ "ST": "${STATE} "
191
205
}
192
206
]
193
207
}
@@ -207,24 +221,22 @@ EOF
207
221
208
222
# ############################################ API SERVER FILE ##############################################
209
223
210
- KUBERNETES_PUBLIC_ADDRESS=20.39.141.250
211
-
212
224
KUBERNETES_HOSTNAMES=kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.svc.cluster.local
213
225
214
226
cat > kubernetes-csr.json << EOF
215
227
{
216
228
"CN": "kubernetes",
217
229
"key": {
218
- "algo": "rsa ",
219
- "size": 2048
230
+ "algo": "${KEY_ALGO} ",
231
+ "size": ${KEY_SIZE}
220
232
},
221
233
"names": [
222
234
{
223
- "C": "CA ",
224
- "L": "Waterloo ",
235
+ "C": "${COUNTRY_CODE} ",
236
+ "L": "${LOCATION} ",
225
237
"O": "Kubernetes",
226
- "OU": "Kubernetes The Hard Way ",
227
- "ST": "Ontario "
238
+ "OU": "${ORG_UNIT} ",
239
+ "ST": "${STATE} "
228
240
}
229
241
]
230
242
}
237
249
-hostname=10.32.0.1,10.0.0.11,10.0.0.12,10.0.0.13,${KUBERNETES_PUBLIC_ADDRESS} ,127.0.0.1,${KUBERNETES_HOSTNAMES} \
238
250
-profile=kubernetes \
239
251
kubernetes-csr.json | /usr/local/bin/cfssljson -bare kubernetes
252
+
253
+
240
254
# ################################################################################################################
241
255
242
256
@@ -247,16 +261,16 @@ cat > service-account-csr.json <<EOF
247
261
{
248
262
"CN": "service-accounts",
249
263
"key": {
250
- "algo": "rsa ",
251
- "size": 2048
264
+ "algo": "${KEY_ALGO} ",
265
+ "size": ${KEY_SIZE}
252
266
},
253
267
"names": [
254
268
{
255
- "C": "CA ",
256
- "L": "Waterloo ",
269
+ "C": "${COUNTRY_CODE} ",
270
+ "L": "${LOCATION} ",
257
271
"O": "Kubernetes",
258
- "OU": "Kubernetes The Hard Way ",
259
- "ST": "Ontario "
272
+ "OU": "${ORG_UNIT} ",
273
+ "ST": "${STATE} "
260
274
}
261
275
]
262
276
}
269
283
-profile=kubernetes \
270
284
service-account-csr.json | /usr/local/bin/cfssljson -bare service-account
271
285
286
+
272
287
# ################################################################################################################
0 commit comments