Skip to content

Commit 82d92ba

Browse files
authored
CASMINST-6968 Fixes for 1.6 (#5639)
* Fix missing admission plugin The list of plugins given to `enable-admission-plugins` was being written to the wrong top-level key. Instead of defining `.scheduler.extraArgs.enable-admission-plugins` we need to define `.apiServer.extraArgs.enable-admission-plugins`. * Missing updated `.data.ClusterConfiguration` The updates to `.data.ClusterConfiguration` were not saving into the `kubeadm-config.yaml` file. This change ensures `yq4` writes the updated config before we read it via `kubectl apply`. * Fix false positive for enabling auditing Translating the original code went ary during the auditing conditional. Now that both checks return `1` for true and `0` for false (instead of mix-n-matching) the conditional can treat `0` and `1` the same across both values. Now `cm_auditing_enabled=1` means true, vs. before this meant false. The conditional now only runs when both values are `1`. * Fix `ImagePull` errors The translation from `sed` to `awk` over-zealously set the DNS options for `kubeadm`, pointing to an unusable repository that resulting in `ImagePull` errors. According to the previous version of this script, these values were only set in certain cases and should not be defaults.
1 parent 4f88067 commit 82d92ba

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

upgrade/scripts/k8s/upgrade_control_plane.sh

+10-6
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,28 @@ kubectl get configmap kubeadm-config -n kube-system -o yaml > "${workdir}/kubead
3232
cp "${workdir}/kubeadm-config.yaml" "${workdir}/kubeadm-config.yaml.back"
3333
yq4 eval -P '.data.ClusterConfiguration' "${workdir}/kubeadm-config.yaml" > "${workdir}/ClusterConfiguration.yaml"
3434

35-
yq4 eval -i -P '.imageRepository = "artifactory.algol60.net/csm-docker/stable/k8s.gcr.io"' "${workdir}/ClusterConfiguration.yaml"
36-
yq4 eval -i -P '.dns = {"type": "CoreDNS", "imageRepository": "artifactory.algol60.net/csm-docker/stable/k8s.gcr.io/coredns"}' "${workdir}/ClusterConfiguration.yaml"
35+
if [ "$(yq4 eval '.dns' "${workdir}/ClusterConfiguration.yaml")" = "null" ] || [ "$(yq4 eval '.dns' "${workdir}/ClusterConfiguration.yaml")" == "{}" ]; then
36+
yq4 eval -i -P '.dns = {"type": "CoreDNS", "imageRepository": "artifactory.algol60.net/csm-docker/stable/k8s.gcr.io/coredns"}' "${workdir}/ClusterConfiguration.yaml"
37+
fi
38+
if [ "$(yq4 eval '.imageRepository' "${workdir}/ClusterConfiguration.yaml")" = 'k8s.gcr.io' ]; then
39+
yq4 eval -i -P '.imageRepository = "artifactory.algol60.net/csm-docker/stable/k8s.gcr.io"' "${workdir}/ClusterConfiguration.yaml"
40+
fi
3741
yq4 eval -i -P '.apiServer.extraArgs.api-audiences = "api,istio-ca"' "${workdir}/ClusterConfiguration.yaml"
42+
yq4 eval -i -P '.apiServer.extraArgs.enable-admission-plugins = "NodeRestriction,PodSecurityPolicy"' "${workdir}/ClusterConfiguration.yaml"
3843
yq4 eval -i -P '.controllerManager.extraArgs.bind-address = "0.0.0.0"' "${workdir}/ClusterConfiguration.yaml"
3944
yq4 eval -i -P '.scheduler.extraArgs.bind-address = "0.0.0.0"' "${workdir}/ClusterConfiguration.yaml"
40-
yq4 eval -i -P '.scheduler.extraArgs.enable-admission-plugins = "NodeRestriction,PodSecurityPolicy"' "${workdir}/ClusterConfiguration.yaml"
4145

4246
manifest_auditing_enabled=0
4347
if ! grep -q '/var/log/audit' /etc/kubernetes/manifests/kube-apiserver.yaml; then
4448
manifest_auditing_enabled=1
4549
fi
4650

4751
cm_auditing_enabled=0
48-
if [ "$(yq4 eval '.audit-log-path' "${workdir}/ClusterConfiguration.yaml")" != "null" ]; then
52+
if [ "$(yq4 eval '.extraArgs.audit-log-path' "${workdir}/ClusterConfiguration.yaml")" != "null" ]; then
4953
cm_auditing_enabled=1
5054
fi
5155

52-
if [[ ${manifest_auditing_enabled} -eq 1 && ${cm_auditing_enabled} -ne 1 ]]; then
56+
if [ ${manifest_auditing_enabled} -eq 1 ] && [ ${cm_auditing_enabled} -eq 1 ]; then
5357
echo "Updating kubeadm-config configmap with audit configuration"
5458
yq4 eval -i -P '.apiServer.extraArgs.audit-log-maxbackup = "100"' "${workdir}/ClusterConfiguration.yaml"
5559
yq4 eval -i -P '.apiServer.extraArgs.audit-log-path = "/var/log/audit/kl8s/apiserver/audit.log"' "${workdir}/ClusterConfiguration.yaml"
@@ -68,7 +72,7 @@ fi
6872
if IFS= read -rd '' -a cluster_configuration; then
6973
:
7074
fi <<< "$(cat "${workdir}/ClusterConfiguration.yaml")"
71-
cluster_configuration=$cluster_configuration yq4 eval '.data.ClusterConfiguration = strenv(cluster_configuration)' "${workdir}/kubeadm-config.yaml"
75+
cluster_configuration=$cluster_configuration yq4 eval -i '.data.ClusterConfiguration = strenv(cluster_configuration)' "${workdir}/kubeadm-config.yaml"
7276

7377
# Apply the new Kubernetes config.
7478
kubectl -n kube-system apply -f "${workdir}/kubeadm-config.yaml"

0 commit comments

Comments
 (0)