Skip to content

Commit 8e08842

Browse files
committed
update kubeadm job
1 parent acb8aca commit 8e08842

File tree

7 files changed

+107
-93
lines changed

7 files changed

+107
-93
lines changed

deploy/helm/kubernetes/scripts/configure-cluster.sh

Lines changed: 29 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,15 @@
11
#!/bin/sh
22
set -e
33
set -x
4-
5-
# ------------------------------------------------------------------------------
6-
# Setup environment
7-
# ------------------------------------------------------------------------------
8-
9-
mkdir -p /etc/kubernetes/pki
10-
ln -sf /pki/apiserver-etcd-client/tls.crt /etc/kubernetes/pki/apiserver-etcd-client.crt
11-
ln -sf /pki/apiserver-etcd-client/tls.key /etc/kubernetes/pki/apiserver-etcd-client.key
12-
ln -sf /pki/apiserver-kubelet-client/tls.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt
13-
ln -sf /pki/apiserver-kubelet-client/tls.key /etc/kubernetes/pki/apiserver-kubelet-client.key
14-
ln -sf /pki/apiserver/tls.crt /etc/kubernetes/pki/apiserver.crt
15-
ln -sf /pki/apiserver/tls.key /etc/kubernetes/pki/apiserver.key
16-
ln -sf /pki/ca/tls.crt /etc/kubernetes/pki/ca.crt
17-
ln -sf /pki/ca/tls.key /etc/kubernetes/pki/ca.key
18-
ln -sf /pki/front-proxy-ca/tls.key /etc/kubernetes/pki/front-proxy-ca.crt
19-
ln -sf /pki/front-proxy-ca/tls.crt /etc/kubernetes/pki/front-proxy-ca.key
20-
ln -sf /pki/front-proxy-client/tls.key /etc/kubernetes/pki/front-proxy-client.crt
21-
ln -sf /pki/front-proxy-client/tls.crt /etc/kubernetes/pki/front-proxy-client.key
4+
ENDPOINT=$(awk -F'[ "]+' '$1 == "controlPlaneEndpoint:" {print $2}' /config/kubeadmcfg.yaml)
225

236
# ------------------------------------------------------------------------------
247
# Update secrets and component configs
258
# ------------------------------------------------------------------------------
269

27-
cat >kubeadmcfg.yaml <<EOT
28-
apiVersion: "kubeadm.k8s.io/v1beta2"
29-
kind: ClusterConfiguration
30-
imageRepository: k8s.gcr.io
31-
controlPlaneEndpoint: "${FULL_NAME}-apiserver:6443"
32-
EOT
33-
34-
{{- if .Values.apiServer.enabled }}{{"\n"}}
35-
# generate sa key
36-
if ! kubectl get secret "${FULL_NAME}-pki-sa" >/dev/null; then
37-
kubeadm init phase certs sa
38-
kubectl create secret generic "${FULL_NAME}-pki-sa" --from-file=/etc/kubernetes/pki/sa.pub --from-file=/etc/kubernetes/pki/sa.key
39-
fi
40-
{{- end }}
41-
4210
# wait for cluster
43-
echo "Waiting for api-server endpoint ${FULL_NAME}-apiserver:6443..."
44-
until kubectl --kubeconfig /etc/kubernetes/admin.conf cluster-info >/dev/null 2>/dev/null; do
11+
echo "Waiting for api-server endpoint ${ENDPOINT}..."
12+
until kubectl cluster-info >/dev/null 2>/dev/null; do
4513
sleep 1
4614
done
4715

@@ -52,7 +20,7 @@ export KUBECONFIG=/etc/kubernetes/admin.conf
5220

5321
# upload configuration
5422
kubeadm init phase upload-config kubeadm --config /config/kubeadmcfg.yaml
55-
kubectl --kubeconfig /etc/kubernetes/admin.conf patch configmap -n kube-system kubeadm-config \
23+
kubectl patch configmap -n kube-system kubeadm-config \
5624
-p '{"data":{"ClusterStatus":"apiEndpoints: {}\napiVersion: kubeadm.k8s.io/v1beta2\nkind: ClusterStatus"}}'
5725

5826
# upload configuration
@@ -63,41 +31,55 @@ kubeadm init phase upload-config kubelet --config /config/kubeadmcfg.yaml -v1 2>
6331
kubeadm init phase bootstrap-token --config /config/kubeadmcfg.yaml --skip-token-print
6432

6533
# correct apiserver address for the external clients
66-
tmp="$(mktemp -d)"
67-
kubectl --kubeconfig "$tmp/kubeconfig" config set clusters..server "https://${CONTROL_PLANE_ENDPOINT:-${FULL_NAME}-apiserver:6443}"
68-
kubectl --kubeconfig "$tmp/kubeconfig" config set clusters..certificate-authority-data "$(base64 /etc/kubernetes/pki/ca.crt | tr -d '\n')"
69-
kubectl create configmap cluster-info --from-file="$tmp/kubeconfig" --dry-run=client -o yaml | kubectl --kubeconfig /etc/kubernetes/admin.conf apply -n kube-public -f -
70-
rm -rf "$tmp"
34+
kubectl apply -n kube-public -f - <<EOT
35+
apiVersion: v1
36+
kind: ConfigMap
37+
metadata:
38+
name: cluster-info
39+
data:
40+
kubeconfig: |
41+
apiVersion: v1
42+
clusters:
43+
- cluster:
44+
certificate-authority-data: $(base64 /pki/admin-client/ca.crt | tr -d '\n')
45+
server: https://${ENDPOINT}
46+
name: ""
47+
contexts: null
48+
current-context: ""
49+
kind: Config
50+
preferences: {}
51+
users: null
52+
EOT
7153

7254
{{- if .Values.konnectivityServer.enabled }}{{"\n"}}
7355
# install konnectivity server
74-
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f /manifests/konnectivity-server-rbac.yaml
56+
kubectl apply -f /manifests/konnectivity-server-rbac.yaml
7557
{{- else }}{{"\n"}}
76-
kubectl --kubeconfig /etc/kubernetes/admin.conf delete clusterrolebinding/system:konnectivity-server 2>/dev/null || true
58+
kubectl delete clusterrolebinding/system:konnectivity-server 2>/dev/null || true
7759
{{- end }}
7860

7961
{{- if .Values.konnectivityAgent.enabled }}{{"\n"}}
8062
# install konnectivity agent
81-
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f /manifests/konnectivity-agent-deployment.yaml -f /manifests/konnectivity-agent-rbac.yaml
63+
kubectl apply -f /manifests/konnectivity-agent-deployment.yaml -f /manifests/konnectivity-agent-rbac.yaml
8264
{{- else }}{{"\n"}}
8365
# uninstall konnectivity agent
84-
kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system delete deployment/konnectivity-agent serviceaccount/konnectivity-agent 2>/dev/null || true
66+
kubectl -n kube-system delete deployment/konnectivity-agent serviceaccount/konnectivity-agent 2>/dev/null || true
8567
{{- end }}
8668

8769
{{- if .Values.coredns.enabled }}{{"\n"}}
8870
# install coredns addon
8971
kubeadm init phase addon coredns --config /config/kubeadmcfg.yaml
9072
{{- else }}{{"\n"}}
9173
# uninstall coredns addon
92-
kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system delete configmap/coredns deployment/coredns 2>/dev/null || true
74+
kubectl -n kube-system delete configmap/coredns deployment/coredns 2>/dev/null || true
9375
{{- end }}
9476

9577
{{- if .Values.kubeProxy.enabled }}{{"\n"}}
9678
# install kube-proxy addon
9779
kubeadm init phase addon kube-proxy --config /config/kubeadmcfg.yaml
9880
{{- else }}{{"\n"}}
9981
# uninstall kube-proxy addon
100-
kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system delete configmap/kube-proxy daemonset/kube-proxy 2>/dev/null || true
82+
kubectl -n kube-system delete configmap/kube-proxy daemonset/kube-proxy 2>/dev/null || true
10183
{{- end }}
10284

10385
{{- with .Values.extraManifests }}{{"\n"}}

deploy/helm/kubernetes/templates/admin-deployment.yaml

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ spec:
7171
env:
7272
- name: KUBECONFIG
7373
value: "/etc/kubernetes/admin.conf"
74-
- name: FULL_NAME
75-
value: "{{ $fullName }}"
7674
{{- with .Values.admin.extraEnv }}
7775
{{- toYaml . | nindent 8 }}
7876
{{- end }}
@@ -82,6 +80,14 @@ spec:
8280
readOnly: true
8381
- mountPath: /pki/admin-client
8482
name: pki-admin-client
83+
- mountPath: /scripts
84+
name: scripts
85+
{{- if or .Values.extraManifests .Values.konnectivityServer.enabled .Values.konnectivityAgent.enabled }}
86+
- mountPath: /manifests
87+
name: manifests
88+
{{- end }}
89+
- mountPath: /config
90+
name: config
8591
{{- with .Values.admin.extraVolumeMounts }}
8692
{{- toYaml . | nindent 8 }}
8793
{{- end }}
@@ -95,6 +101,26 @@ spec:
95101
- secret:
96102
secretName: "{{ $fullName }}-pki-admin-client"
97103
name: pki-admin-client
104+
- name: scripts
105+
configMap:
106+
name: "{{ $fullName }}-kubeadm-scripts"
107+
defaultMode: 0777
108+
{{- if or .Values.extraManifests .Values.konnectivityServer.enabled .Values.konnectivityAgent.enabled }}
109+
- name: manifests
110+
projected:
111+
sources:
112+
{{- if or .Values.extraManifests }}
113+
- secret:
114+
name: "{{ $fullName }}-extra-manifests"
115+
{{- end }}
116+
{{- if or .Values.konnectivityServer.enabled .Values.konnectivityAgent.enabled }}
117+
- configMap:
118+
name: "{{ $fullName }}-konnectivity-manifests"
119+
{{- end }}
120+
{{- end }}
121+
- name: config
122+
configMap:
123+
name: "{{ $fullName }}-kubeadm-config"
98124
{{- with .Values.admin.extraVolumes }}
99125
{{- toYaml . | nindent 6 }}
100126
{{- end }}

deploy/helm/kubernetes/templates/apiserver-deployment.yaml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ spec:
7575
- --requestheader-group-headers=X-Remote-Group
7676
- --requestheader-username-headers=X-Remote-User
7777
- --secure-port={{ .Values.apiServer.port }}
78-
- --service-account-key-file=/pki/sa/sa.pub
78+
- --service-account-key-file=/pki/sa/tls.crt
7979
- --service-cluster-ip-range={{ .Values.apiServer.serviceClusterIPRange }}
8080
- --tls-cert-file=/pki/apiserver-server/tls.crt
8181
- --tls-private-key-file=/pki/apiserver-server/tls.key
8282
- --egress-selector-config-file=/etc/kubernetes/egress-selector-configuration.yaml
8383
{{- if .Values.konnectivityAgent.enabled }}{{"\n"}}
8484
- --service-account-issuer=api
85-
- --service-account-signing-key-file=/pki/sa/sa.key
85+
- --service-account-signing-key-file=/pki/sa/tls.key
8686
- --api-audiences=system:konnectivity-server
8787
{{- end }}
8888
{{- if not (hasKey .Values.apiServer.extraArgs "advertise-address") }}
@@ -154,9 +154,6 @@ spec:
154154
- secret:
155155
secretName: "{{ $fullName }}-pki-apiserver-kubelet-client"
156156
name: pki-apiserver-kubelet-client
157-
- secret:
158-
secretName: "{{ $fullName }}-pki-ca"
159-
name: pki-ca
160157
- secret:
161158
secretName: "{{ $fullName }}-pki-sa"
162159
name: pki-sa

deploy/helm/kubernetes/templates/controller-manager-deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ spec:
6464
- --requestheader-client-ca-file=/pki/front-proxy-client/tls.crt
6565
- --root-ca-file=/pki/ca/tls.crt
6666
- --secure-port={{ .Values.controllerManager.port }}
67-
- --service-account-private-key-file=/pki/kubernetes-sa/sa.key
67+
- --service-account-private-key-file=/pki/sa/tls.key
6868
- --use-service-account-credentials=true
6969
- --tls-cert-file=/pki/controller-manager-server/tls.crt
7070
- --tls-private-key-file=/pki/controller-manager-server/tls.key
@@ -102,7 +102,7 @@ spec:
102102
name: pki-ca
103103
- mountPath: /pki/front-proxy-client
104104
name: pki-front-proxy-client
105-
- mountPath: /pki/kubernetes-sa
105+
- mountPath: /pki/sa
106106
name: pki-sa
107107
{{- with .Values.controllerManager.extraVolumeMounts }}
108108
{{- toYaml . | nindent 8 }}

deploy/helm/kubernetes/templates/kubeadm-config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ data:
99
kubeadmcfg.yaml: |+
1010
apiVersion: kubeadm.k8s.io/v1beta2
1111
kind: ClusterConfiguration
12-
{{- with .Values.controlPlaneEndpoint }}
13-
controlPlaneEndpoint: {{ . }}
12+
{{- if .Values.controlPlaneEndpoint }}
13+
controlPlaneEndpoint: {{ .Values.controlPlaneEndpoint }}
14+
{{- else }}
15+
controlPlaneEndpoint: {{ $fullName }}-apiserver:{{ .Values.apiServer.service.port }}
1416
{{- end }}
1517
{{- end }}

deploy/helm/kubernetes/templates/kubeadm-job.yaml

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,17 @@ spec:
5757
imagePullPolicy: {{ .Values.admin.image.PullPolicy }}
5858
command: [ '/scripts/configure-cluster.sh' ]
5959
env:
60-
- name: FULL_NAME
61-
value: "{{ $fullName }}"
62-
{{- with .Values.controlPlaneEndpoint }}
63-
- name: CONTROL_PLANE_ENDPOINT
64-
value: "{{ . }}"
65-
{{- end }}
60+
- name: KUBECONFIG
61+
value: "/etc/kubernetes/admin.conf"
6662
{{- with .Values.admin.job.extraEnv }}
6763
{{- toYaml . | nindent 8 }}
6864
{{- end }}
6965
volumeMounts:
70-
- mountPath: /pki/front-proxy-client
71-
name: pki-front-proxy-client
72-
- mountPath: /pki/apiserver
73-
name: pki-apiserver
74-
- mountPath: /pki/apiserver-etcd-client
75-
name: pki-apiserver-etcd-client
76-
- mountPath: /pki/apiserver-kubelet-client
77-
name: pki-apiserver-kubelet-client
78-
- mountPath: /pki/ca
79-
name: pki-ca
80-
- mountPath: /pki/front-proxy-ca
81-
name: pki-front-proxy-ca
66+
- mountPath: /etc/kubernetes/
67+
name: kubeconfig
68+
readOnly: true
69+
- mountPath: /pki/admin-client
70+
name: pki-admin-client
8271
- mountPath: /scripts
8372
name: scripts
8473
{{- if or .Values.extraManifests .Values.konnectivityServer.enabled .Values.konnectivityAgent.enabled }}
@@ -87,25 +76,19 @@ spec:
8776
{{- end }}
8877
- mountPath: /config
8978
name: config
79+
{{- with .Values.admin.extraVolumeMounts }}
80+
{{- toYaml . | nindent 8 }}
81+
{{- end }}
82+
{{- with .Values.admin.sidecars }}
83+
{{- toYaml . | nindent 6 }}
84+
{{- end }}
9085
volumes:
86+
- configMap:
87+
name: "{{ $fullName }}-admin-conf"
88+
name: kubeconfig
9189
- secret:
92-
secretName: "{{ $fullName }}-pki-front-proxy-client"
93-
name: pki-front-proxy-client
94-
- secret:
95-
secretName: "{{ $fullName }}-pki-apiserver-server"
96-
name: pki-apiserver
97-
- secret:
98-
secretName: "{{ $fullName }}-pki-apiserver-etcd-client"
99-
name: pki-apiserver-etcd-client
100-
- secret:
101-
secretName: "{{ $fullName }}-pki-apiserver-kubelet-client"
102-
name: pki-apiserver-kubelet-client
103-
- secret:
104-
secretName: "{{ $fullName }}-pki-ca"
105-
name: pki-ca
106-
- secret:
107-
secretName: "{{ $fullName }}-pki-front-proxy-ca"
108-
name: pki-front-proxy-ca
90+
secretName: "{{ $fullName }}-pki-admin-client"
91+
name: pki-admin-client
10992
- name: scripts
11093
configMap:
11194
name: "{{ $fullName }}-kubeadm-scripts"
@@ -126,4 +109,7 @@ spec:
126109
- name: config
127110
configMap:
128111
name: "{{ $fullName }}-kubeadm-config"
112+
{{- with .Values.admin.extraVolumes }}
113+
{{- toYaml . | nindent 6 }}
114+
{{- end }}
129115
{{- end }}

deploy/helm/kubernetes/templates/kubernetes-certs.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,27 @@ spec:
3030
ca:
3131
secretName: "{{ $fullName }}-pki-ca"
3232
---
33+
apiVersion: cert-manager.io/v1
34+
kind: Certificate
35+
metadata:
36+
name: "{{ $fullName }}-pki-sa"
37+
spec:
38+
commonName: "{{ $certName }}-sa"
39+
secretName: "{{ $fullName }}-pki-sa"
40+
duration: 87600h # 3650d
41+
renewBefore: 8760h # 365d
42+
subject:
43+
organizations:
44+
- "{{ $fullName }}"
45+
usages:
46+
- "signing"
47+
- "key encipherment"
48+
- "cert sign"
49+
isCA: true
50+
issuerRef:
51+
name: "{{ $fullName }}-selfsigning-issuer"
52+
kind: Issuer
53+
---
3354
{{- $svcName1 := printf "%s-controller-manager" $fullName }}
3455
{{- $svcName2 := printf "%s-controller-manager.%s" $fullName .Release.Namespace }}
3556
{{- $svcName3 := printf "%s-controller-manager.%s.svc" $fullName .Release.Namespace }}

0 commit comments

Comments
 (0)