From 3021435687baea0a4f4517e60c95b00504a92e7e Mon Sep 17 00:00:00 2001 From: anujmaheshwari1 Date: Mon, 19 Aug 2024 11:30:50 -0700 Subject: [PATCH] =?UTF-8?q?Revert=20"feat:=20add=20--serialize-image-pulls?= =?UTF-8?q?=20flag=20to=20kubelet=20config=20flag=E2=80=A6=20(#4830)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: anujmaheshwari1 --- pkg/agent/baker_test.go | 13 - .../CSECommand | 1 - .../CustomData | 314 ------- .../line105.sh | 34 - .../line112.sh | 10 - .../line119.sh | 27 - .../line127.sh | 99 --- .../line134.sh | 6 - .../line141.sh | 9 - .../line149.sh | 24 - .../line156.sh | 9 - .../line163.sh | 11 - .../line170.sh | 27 - .../line18.sh | 104 --- .../line215.sh | 9 - .../line222.sh | 51 -- .../line26.sh | 89 -- .../line314.sh | 11 - .../line33.sh | 368 -------- .../line40.sh | 588 ------------- .../line47.sh | 63 -- .../line54.sh | 44 - .../line62.sh | 245 ------ .../line70.sh | 822 ------------------ .../line77.sh | 43 - .../line84.sh | 0 .../line9.sh | 554 ------------ .../line91.sh | 46 - .../line98.sh | 8 - .../CSECommand | 1 - .../CustomData | 314 ------- .../line105.sh | 34 - .../line112.sh | 10 - .../line119.sh | 27 - .../line127.sh | 99 --- .../line134.sh | 6 - .../line141.sh | 9 - .../line149.sh | 24 - .../line156.sh | 9 - .../line163.sh | 11 - .../line170.sh | 27 - .../line18.sh | 104 --- .../line215.sh | 9 - .../line222.sh | 51 -- .../line26.sh | 89 -- .../line314.sh | 11 - .../line33.sh | 368 -------- .../line40.sh | 588 ------------- .../line47.sh | 63 -- .../line54.sh | 44 - .../line62.sh | 245 ------ .../line70.sh | 822 ------------------ .../line77.sh | 43 - .../line84.sh | 0 .../line9.sh | 554 ------------ .../line91.sh | 46 - .../line98.sh | 8 - .../CustomData | 314 ------- pkg/agent/utils.go | 12 - 59 files changed, 7571 deletions(-) delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CSECommand delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CustomData delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line105.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line112.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line119.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line127.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line134.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line141.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line149.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line156.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line163.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line170.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line18.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line215.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line222.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line26.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line314.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line33.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line40.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line47.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line54.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line62.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line70.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line77.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line84.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line9.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line91.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line98.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CSECommand delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CustomData delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line105.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line112.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line119.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line127.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line134.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line141.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line149.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line156.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line163.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line170.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line18.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line215.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line222.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line26.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line314.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line33.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line40.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line47.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line54.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line62.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line70.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line77.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line84.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line9.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line91.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line98.sh delete mode 100644 pkg/agent/testdata/AKSUbuntu2204+no serializeImagePull flag/CustomData diff --git a/pkg/agent/baker_test.go b/pkg/agent/baker_test.go index 99b11330983..93e8efa0846 100644 --- a/pkg/agent/baker_test.go +++ b/pkg/agent/baker_test.go @@ -1245,19 +1245,6 @@ oom_score = 0 Expect(strings.Contains(o.vars["KUBELET_FLAGS"], "--image-credential-provider-config=/var/lib/kubelet/credential-provider-config.yaml")).To(BeTrue()) Expect(strings.Contains(o.vars["KUBELET_FLAGS"], "--image-credential-provider-bin-dir=/var/lib/kubelet/credential-provider")).To(BeTrue()) }), - Entry("AKSUbuntu2204 with SerializeImagePulls=false and k8s 1.31", "AKSUbuntu2204+SerializeImagePulls", "1.31.0", func(config *datamodel.NodeBootstrappingConfiguration) { - config.KubeletConfig["--serialize-image-pulls"] = "false" - }, func(o *nodeBootstrappingOutput) { - Expect(o.vars["KUBELET_FLAGS"]).NotTo(BeEmpty()) - Expect(strings.Contains(o.vars["KUBELET_FLAGS"], "--serialize-image-pulls=false")).To(BeTrue()) - }), - Entry("AKSUbuntu2204 with no serializeImagePull in kubelet flag", "AKSUbuntu2204+NoSerializeImagePulls", "1.29.0", func(config *datamodel.NodeBootstrappingConfiguration) { - // for k8s < 1.31, this will never happen but adding a case where it is set somehow, we should skip that in KUBELET_FLAGS - config.KubeletConfig["--serialize-image-pulls"] = "false" - }, func(o *nodeBootstrappingOutput) { - Expect(o.vars["KUBELET_FLAGS"]).NotTo(BeEmpty()) - Expect(strings.Contains(o.vars["KUBELET_FLAGS"], "--serialize-image-pulls")).To(BeFalse()) - }), Entry("AKSUbuntu2204 custom cloud and OOT credentialprovider", "AKSUbuntu2204+CustomCloud+ootcredentialprovider", "1.29.10", func(config *datamodel.NodeBootstrappingConfiguration) { config.ContainerService.Properties.CustomCloudEnv = &datamodel.CustomCloudEnv{ diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CSECommand b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CSECommand deleted file mode 100644 index 419495d0feb..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CSECommand +++ /dev/null @@ -1 +0,0 @@ -PROVISION_OUTPUT="/var/log/azure/cluster-provision-cse-output.log"; echo $(date),$(hostname) > ${PROVISION_OUTPUT}; cloud-init status --wait > /dev/null 2>&1; [ $? -ne 0 ] && echo 'cloud-init failed' >> ${PROVISION_OUTPUT} && exit 1; echo "cloud-init succeeded" >> ${PROVISION_OUTPUT}; ADMINUSER=azureuser MOBY_VERSION= TENANT_ID=tenantID KUBERNETES_VERSION=1.29.0 HYPERKUBE_URL=k8s.gcr.io/hyperkube-amd64:v1.29.0 KUBE_BINARY_URL= CUSTOM_KUBE_BINARY_URL= PRIVATE_KUBE_BINARY_URL="" KUBEPROXY_URL= APISERVER_PUBLIC_KEY= SUBSCRIPTION_ID=subID RESOURCE_GROUP=resourceGroupName LOCATION=southcentralus VM_TYPE=vmss SUBNET=subnet1 NETWORK_SECURITY_GROUP=aks-agentpool-36873793-nsg VIRTUAL_NETWORK=aks-vnet-07752737 VIRTUAL_NETWORK_RESOURCE_GROUP=MC_rg ROUTE_TABLE=aks-agentpool-36873793-routetable PRIMARY_AVAILABILITY_SET= PRIMARY_SCALE_SET=aks-agent2-36873793-vmss SERVICE_PRINCIPAL_CLIENT_ID=ClientID NETWORK_PLUGIN= NETWORK_POLICY= VNET_CNI_PLUGINS_URL=https://acs-mirror.azureedge.net/azure-cni/v1.1.3/binaries/azure-vnet-cni-linux-amd64-v1.1.3.tgz CLOUDPROVIDER_BACKOFF= CLOUDPROVIDER_BACKOFF_MODE= CLOUDPROVIDER_BACKOFF_RETRIES=0 CLOUDPROVIDER_BACKOFF_EXPONENT=0 CLOUDPROVIDER_BACKOFF_DURATION=0 CLOUDPROVIDER_BACKOFF_JITTER=0 CLOUDPROVIDER_RATELIMIT= CLOUDPROVIDER_RATELIMIT_QPS=0 CLOUDPROVIDER_RATELIMIT_QPS_WRITE=0 CLOUDPROVIDER_RATELIMIT_BUCKET=0 CLOUDPROVIDER_RATELIMIT_BUCKET_WRITE=0 LOAD_BALANCER_DISABLE_OUTBOUND_SNAT= USE_MANAGED_IDENTITY_EXTENSION=false USE_INSTANCE_METADATA=false LOAD_BALANCER_SKU= EXCLUDE_MASTER_FROM_STANDARD_LB=true MAXIMUM_LOADBALANCER_RULE_COUNT=0 CONTAINER_RUNTIME= CLI_TOOL= CONTAINERD_DOWNLOAD_URL_BASE=https://storage.googleapis.com/cri-containerd-release/ NETWORK_MODE= KUBE_BINARY_URL= USER_ASSIGNED_IDENTITY_ID=userAssignedID API_SERVER_NAME= IS_VHD=true GPU_NODE=false SGX_NODE=false MIG_NODE=false CONFIG_GPU_DRIVER_IF_NEEDED=true ENABLE_GPU_DEVICE_PLUGIN_IF_NEEDED=false TELEPORTD_PLUGIN_DOWNLOAD_URL= CREDENTIAL_PROVIDER_DOWNLOAD_URL=https://acs-mirror.azureedge.net/cloud-provider-azure/v1.29.0/binaries/azure-acr-credential-provider-linux-amd64-v1.29.0.tar.gz CONTAINERD_VERSION= CONTAINERD_PACKAGE_URL= RUNC_VERSION= RUNC_PACKAGE_URL= ENABLE_HOSTS_CONFIG_AGENT="false" DISABLE_SSH="false" NEEDS_CONTAINERD="false" TELEPORT_ENABLED="false" SHOULD_CONFIGURE_HTTP_PROXY="false" SHOULD_CONFIGURE_HTTP_PROXY_CA="false" HTTP_PROXY_TRUSTED_CA="" SHOULD_CONFIGURE_CUSTOM_CA_TRUST="false" CUSTOM_CA_TRUST_COUNT="0" IS_KRUSTLET="false" GPU_NEEDS_FABRIC_MANAGER="false" NEEDS_DOCKER_LOGIN="false" IPV6_DUAL_STACK_ENABLED="false" OUTBOUND_COMMAND="curl -v --insecure --proxy-insecure https://mcr.microsoft.com/v2/" BLOCK_OUTBOUND_NETWORK="false" ENABLE_UNATTENDED_UPGRADES="true" ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE="false" SHOULD_CONFIG_SWAP_FILE="false" SHOULD_CONFIG_TRANSPARENT_HUGE_PAGE="false" SHOULD_CONFIG_CONTAINERD_ULIMITS="false" CONTAINERD_ULIMITS="" TARGET_CLOUD="AzurePublicCloud" TARGET_ENVIRONMENT="AzurePublicCloud" CUSTOM_ENV_JSON="" IS_CUSTOM_CLOUD="false" AKS_CUSTOM_CLOUD_CONTAINER_REGISTRY_DNS_SUFFIX="" CSE_HELPERS_FILEPATH="/opt/azure/containers/provision_source.sh" CSE_DISTRO_HELPERS_FILEPATH="/opt/azure/containers/provision_source_distro.sh" CSE_INSTALL_FILEPATH="/opt/azure/containers/provision_installs.sh" CSE_DISTRO_INSTALL_FILEPATH="/opt/azure/containers/provision_installs_distro.sh" CSE_CONFIG_FILEPATH="/opt/azure/containers/provision_configs.sh" AZURE_PRIVATE_REGISTRY_SERVER="" HAS_CUSTOM_SEARCH_DOMAIN="false" CUSTOM_SEARCH_DOMAIN_FILEPATH="/opt/azure/containers/setup-custom-search-domains.sh" HTTP_PROXY_URLS="" HTTPS_PROXY_URLS="" NO_PROXY_URLS="" PROXY_VARS="" ENABLE_TLS_BOOTSTRAPPING="false" ENABLE_SECURE_TLS_BOOTSTRAPPING="false" CUSTOM_SECURE_TLS_BOOTSTRAP_AAD_SERVER_APP_ID="" DHCPV6_SERVICE_FILEPATH="/etc/systemd/system/dhcpv6.service" DHCPV6_CONFIG_FILEPATH="/opt/azure/containers/enable-dhcpv6.sh" THP_ENABLED="" THP_DEFRAG="" SERVICE_PRINCIPAL_FILE_CONTENT="U2VjcmV0" KUBELET_CLIENT_CONTENT="" KUBELET_CLIENT_CERT_CONTENT="" KUBELET_CONFIG_FILE_ENABLED="false" KUBELET_CONFIG_FILE_CONTENT="ewogICAgImtpbmQiOiAiS3ViZWxldENvbmZpZ3VyYXRpb24iLAogICAgImFwaVZlcnNpb24iOiAia3ViZWxldC5jb25maWcuazhzLmlvL3YxYmV0YTEiLAogICAgInN0YXRpY1BvZFBhdGgiOiAiL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cyIsCiAgICAiYWRkcmVzcyI6ICIwLjAuMC4wIiwKICAgICJyZWFkT25seVBvcnQiOiAxMDI1NSwKICAgICJ0bHNDZXJ0RmlsZSI6ICIvZXRjL2t1YmVybmV0ZXMvY2VydHMva3ViZWxldHNlcnZlci5jcnQiLAogICAgInRsc1ByaXZhdGVLZXlGaWxlIjogIi9ldGMva3ViZXJuZXRlcy9jZXJ0cy9rdWJlbGV0c2VydmVyLmtleSIsCiAgICAidGxzQ2lwaGVyU3VpdGVzIjogWwogICAgICAgICJUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiLAogICAgICAgICJUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2IiwKICAgICAgICAiVExTX0VDREhFX0VDRFNBX1dJVEhfQ0hBQ0hBMjBfUE9MWTEzMDUiLAogICAgICAgICJUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwKICAgICAgICAiVExTX0VDREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1IiwKICAgICAgICAiVExTX0VDREhFX0VDRFNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwKICAgICAgICAiVExTX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCIsCiAgICAgICAgIlRMU19SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiCiAgICBdLAogICAgInJvdGF0ZUNlcnRpZmljYXRlcyI6IHRydWUsCiAgICAiYXV0aGVudGljYXRpb24iOiB7CiAgICAgICAgIng1MDkiOiB7CiAgICAgICAgICAgICJjbGllbnRDQUZpbGUiOiAiL2V0Yy9rdWJlcm5ldGVzL2NlcnRzL2NhLmNydCIKICAgICAgICB9LAogICAgICAgICJ3ZWJob29rIjogewogICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhbm9ueW1vdXMiOiB7fQogICAgfSwKICAgICJhdXRob3JpemF0aW9uIjogewogICAgICAgICJtb2RlIjogIldlYmhvb2siLAogICAgICAgICJ3ZWJob29rIjoge30KICAgIH0sCiAgICAiZXZlbnRSZWNvcmRRUFMiOiAwLAogICAgImNsdXN0ZXJEb21haW4iOiAiY2x1c3Rlci5sb2NhbCIsCiAgICAiY2x1c3RlckROUyI6IFsKICAgICAgICAiMTAuMC4wLjEwIgogICAgXSwKICAgICJzdHJlYW1pbmdDb25uZWN0aW9uSWRsZVRpbWVvdXQiOiAiNGgwbTBzIiwKICAgICJub2RlU3RhdHVzVXBkYXRlRnJlcXVlbmN5IjogIjEwcyIsCiAgICAiaW1hZ2VHQ0hpZ2hUaHJlc2hvbGRQZXJjZW50IjogODUsCiAgICAiaW1hZ2VHQ0xvd1RocmVzaG9sZFBlcmNlbnQiOiA4MCwKICAgICJjZ3JvdXBzUGVyUU9TIjogdHJ1ZSwKICAgICJtYXhQb2RzIjogMTEwLAogICAgInBvZFBpZHNMaW1pdCI6IC0xLAogICAgInJlc29sdkNvbmYiOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAiZXZpY3Rpb25IYXJkIjogewogICAgICAgICJtZW1vcnkuYXZhaWxhYmxlIjogIjc1ME1pIiwKICAgICAgICAibm9kZWZzLmF2YWlsYWJsZSI6ICIxMCUiLAogICAgICAgICJub2RlZnMuaW5vZGVzRnJlZSI6ICI1JSIKICAgIH0sCiAgICAicHJvdGVjdEtlcm5lbERlZmF1bHRzIjogdHJ1ZSwKICAgICJmZWF0dXJlR2F0ZXMiOiB7CiAgICAgICAgIlBvZFByaW9yaXR5IjogdHJ1ZSwKICAgICAgICAiUm90YXRlS3ViZWxldFNlcnZlckNlcnRpZmljYXRlIjogdHJ1ZSwKICAgICAgICAiYSI6IGZhbHNlLAogICAgICAgICJ4IjogZmFsc2UKICAgIH0sCiAgICAiY29udGFpbmVyTG9nTWF4U2l6ZSI6ICI1ME0iLAogICAgInN5c3RlbVJlc2VydmVkIjogewogICAgICAgICJjcHUiOiAiMiIsCiAgICAgICAgIm1lbW9yeSI6ICIxR2kiCiAgICB9LAogICAgImt1YmVSZXNlcnZlZCI6IHsKICAgICAgICAiY3B1IjogIjEwMG0iLAogICAgICAgICJtZW1vcnkiOiAiMTYzOE1pIgogICAgfSwKICAgICJlbmZvcmNlTm9kZUFsbG9jYXRhYmxlIjogWwogICAgICAgICJwb2RzIgogICAgXQp9" SWAP_FILE_SIZE_MB="0" GPU_DRIVER_VERSION="cuda-550.90.07" GPU_IMAGE_SHA="sha-b40b85" GPU_INSTANCE_PROFILE="" CUSTOM_SEARCH_DOMAIN_NAME="" CUSTOM_SEARCH_REALM_USER="" CUSTOM_SEARCH_REALM_PASSWORD="" MESSAGE_OF_THE_DAY="" HAS_KUBELET_DISK_TYPE="false" NEEDS_CGROUPV2="false" TLS_BOOTSTRAP_TOKEN="" KUBELET_FLAGS="--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --container-log-max-size=50M --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=PodPriority=true,RotateKubeletServerCertificate=true,a=false,x=false --image-gc-high-threshold=85 --image-gc-low-threshold=80 --kube-reserved=cpu=100m,memory=1638Mi --max-pods=110 --node-status-update-frequency=10s --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=10255 --resolv-conf=/etc/resolv.conf --rotate-certificates=true --streaming-connection-idle-timeout=4h0m0s --system-reserved=cpu=2,memory=1Gi --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key " NETWORK_POLICY="" KUBELET_NODE_LABELS="agentpool=agent2,kubernetes.azure.com/agentpool=agent2" AZURE_ENVIRONMENT_FILEPATH="" KUBE_CA_CRT="" KUBENET_TEMPLATE="CnsKICAgICJjbmlWZXJzaW9uIjogIjAuMy4xIiwKICAgICJuYW1lIjogImt1YmVuZXQiLAogICAgInBsdWdpbnMiOiBbewogICAgInR5cGUiOiAiYnJpZGdlIiwKICAgICJicmlkZ2UiOiAiY2JyMCIsCiAgICAibXR1IjogMTUwMCwKICAgICJhZGRJZiI6ICJldGgwIiwKICAgICJpc0dhdGV3YXkiOiB0cnVlLAogICAgImlwTWFzcSI6IGZhbHNlLAogICAgInByb21pc2NNb2RlIjogdHJ1ZSwKICAgICJoYWlycGluTW9kZSI6IGZhbHNlLAogICAgImlwYW0iOiB7CiAgICAgICAgInR5cGUiOiAiaG9zdC1sb2NhbCIsCiAgICAgICAgInJhbmdlcyI6IFt7e3JhbmdlICRpLCAkcmFuZ2UgOj0gLlBvZENJRFJSYW5nZXN9fXt7aWYgJGl9fSwge3tlbmR9fVt7InN1Ym5ldCI6ICJ7eyRyYW5nZX19In1de3tlbmR9fV0sCiAgICAgICAgInJvdXRlcyI6IFt7e3JhbmdlICRpLCAkcm91dGUgOj0gLlJvdXRlc319e3tpZiAkaX19LCB7e2VuZH19eyJkc3QiOiAie3skcm91dGV9fSJ9e3tlbmR9fV0KICAgIH0KICAgIH0sCiAgICB7CiAgICAidHlwZSI6ICJwb3J0bWFwIiwKICAgICJjYXBhYmlsaXRpZXMiOiB7InBvcnRNYXBwaW5ncyI6IHRydWV9LAogICAgImV4dGVybmFsU2V0TWFya0NoYWluIjogIktVQkUtTUFSSy1NQVNRIgogICAgfV0KfQo=" CONTAINERD_CONFIG_CONTENT="dmVyc2lvbiA9IDIKb29tX3Njb3JlID0gMApbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJdCiAgc2FuZGJveF9pbWFnZSA9ICIiCiAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmRdCiAgICBkZWZhdWx0X3J1bnRpbWVfbmFtZSA9ICJydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMucnVuY10KICAgICAgcnVudGltZV90eXBlID0gImlvLmNvbnRhaW5lcmQucnVuYy52MiIKICAgIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5jb250YWluZXJkLnJ1bnRpbWVzLnJ1bmMub3B0aW9uc10KICAgICAgQmluYXJ5TmFtZSA9ICIvdXNyL2Jpbi9ydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkXQogICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW5jLnYyIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkLm9wdGlvbnNdCiAgICAgIEJpbmFyeU5hbWUgPSAiL3Vzci9iaW4vcnVuYyIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnldCiAgICBjb25maWdfcGF0aCA9ICIvZXRjL2NvbnRhaW5lcmQvY2VydHMuZCIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnkuaGVhZGVyc10KICAgIFgtTWV0YS1Tb3VyY2UtQ2xpZW50ID0gWyJhenVyZS9ha3MiXQpbbWV0cmljc10KICBhZGRyZXNzID0gIjAuMC4wLjA6MTAyNTciCg==" CONTAINERD_CONFIG_NO_GPU_CONTENT="dmVyc2lvbiA9IDIKb29tX3Njb3JlID0gMApbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJdCiAgc2FuZGJveF9pbWFnZSA9ICIiCiAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmRdCiAgICBkZWZhdWx0X3J1bnRpbWVfbmFtZSA9ICJydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMucnVuY10KICAgICAgcnVudGltZV90eXBlID0gImlvLmNvbnRhaW5lcmQucnVuYy52MiIKICAgIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5jb250YWluZXJkLnJ1bnRpbWVzLnJ1bmMub3B0aW9uc10KICAgICAgQmluYXJ5TmFtZSA9ICIvdXNyL2Jpbi9ydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkXQogICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW5jLnYyIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkLm9wdGlvbnNdCiAgICAgIEJpbmFyeU5hbWUgPSAiL3Vzci9iaW4vcnVuYyIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnldCiAgICBjb25maWdfcGF0aCA9ICIvZXRjL2NvbnRhaW5lcmQvY2VydHMuZCIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnkuaGVhZGVyc10KICAgIFgtTWV0YS1Tb3VyY2UtQ2xpZW50ID0gWyJhenVyZS9ha3MiXQpbbWV0cmljc10KICBhZGRyZXNzID0gIjAuMC4wLjA6MTAyNTciCg==" IS_KATA="false" ARTIFACT_STREAMING_ENABLED="false" SYSCTL_CONTENT="IyBUaGlzIGlzIGEgcGFydGlhbCB3b3JrYXJvdW5kIHRvIHRoaXMgdXBzdHJlYW0gS3ViZXJuZXRlcyBpc3N1ZToKIyBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlcm5ldGVzL2lzc3Vlcy80MTkxNiNpc3N1ZWNvbW1lbnQtMzEyNDI4NzMxCm5ldC5pcHY0LnRjcF9yZXRyaWVzMj04Cm5ldC5jb3JlLm1lc3NhZ2VfYnVyc3Q9ODAKbmV0LmNvcmUubWVzc2FnZV9jb3N0PTQwCm5ldC5jb3JlLnNvbWF4Y29ubj0xNjM4NApuZXQuaXB2NC50Y3BfbWF4X3N5bl9iYWNrbG9nPTE2Mzg0Cm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMT00MDk2Cm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMj04MTkyCm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMz0xNjM4NAo=" PRIVATE_EGRESS_PROXY_ADDRESS="" ENABLE_IMDS_RESTRICTION="false" INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE="false" /usr/bin/nohup /bin/bash -c "/bin/bash /opt/azure/containers/provision_start.sh" \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CustomData b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CustomData deleted file mode 100644 index b934c07967f..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/CustomData +++ /dev/null @@ -1,314 +0,0 @@ -#cloud-config - -write_files: -- path: /opt/azure/containers/provision_source.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - - -- path: /opt/azure/containers/provision_source_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/9yW8U/bOBTHf89f8ZZZrJ1mQpm4H6i6W6eGOyQEJ7aJk4CL3OQlsZrame1QEPR/P9lN05a2R3f74XRDQk3sr1/8vv7Yz69fBUMugiHTuedhnEvwP8tKxVxkEGuMcixKVDpKuDZK7uscUqng67ASpvI9z2OlGTM1uuqfcVHd9zMUptWGRw8AwIUjrYQZbL8jrVxqI9gY2+9AG6ZMf30o+KTju7ETxk2UShWx0kSFjEfaNSs06iEeJxFPo5TxolIIncMDOILDI2CloTYikA5MWGGjMhf16Qlu3HCewvW1+wj0euDnskh8uL3tgslROIWb9z03QMLLy+j3i7NBdNU/Oz3/+mf/t/D8yyyv4lmcSrwY6TI8C/ufwy0RU/6CYSiSrXZNPW/drWYRJjkvENJKo4Lgjqmg4MMgKUdZYHWLJlaaoODa6KX2mMU5uh6m4pzfYd35IUjwLhBVUcDhh71OFxK5SNnm8OaKcWMRsrAoLJBpBJnaFQI3vTeNXheIJbx374kU6E0tU1GGJqpK60STiV17jrrXOXCvVjVTRLIyZWV6gRmXdrY0Q0NnXfuyMjOHpQIOXABpafwGHSB1uPbK7LdgN1vLUioDg/DTaf88Orm8OP8Sng96QgouDCoWG36Hjdo6DJTGUqQ8s5RSBpSmUsXoGhNMG209ZaAp0AfgQhtWFE3vK2jNBbOcnOfwBAYRyJoL8ASZwhJoCP5freur8PZ4/237qXUd4u31pZr9X0j3u/+2Tfw27O3V28P+xcxsirq3B0OFbLTYS9vFTbfdJkA4UPzW+A3P90i9tJUS0FmYXWis0ThqGutd4ihpUAvvMa4MJvDMJMLB8DHqbafJArPa8DXOSKc7G+jm0SOHXRdRVqZH3ndB5zx1vqw+/G9oq9MGKmFQjrLj44vScCn08XHPXx7rTjZKhaT1CKowluMxikRbXsnjx+kWPH5s/VcUMxbIYj1WeldPjO8EpjFie443Pvl44zdMdV+GqqxUtn50/aRI1TkAmT/MrXUu7EjYf0/SbrjUOf0bKOwlKqrKTLFkzsZKUbO6Zc3GwmYFtBbU5W0HNrZwsTsTu/KwvZg11zOdy4m9MLnWpfL2EicCJz4sp2+/8LwYbvDvR0piU+E2xV1n9Z/k3o4gryC8VggdpDWimwFdcWipDG5Es16gAQ7/YPGIZXii5PiEF4uzaxB+ik5Oz8Ie6Xz3zdxezH85OFhA8WC5mB+45HEeewqUsqKQE5rIiXAz10sXdvIrUIFwsH7BXvEq5d7Uex1enHh/BwAA///v2zzl1gwAAA== - - -- path: /opt/azure/containers/provision_start.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_installs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_redact_cloud_config.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/6xUQW/rNgy++1cQvchGE+edC/hQtG/YaSseslNmCIpNO1ptyZPodsGw/z5IVm0lcbEelktkivz48SNF2Q/aEJxF3yXhLEw7CGMxSX58f3582n9/hgLYx5klSY0NGKxFRfyoNVkyYuCv4xErrRrZcuosJ/2KKl29fjeSkDeyw+whAQCotCJUxB0JKDyX3IoGeadF/V8YBxbCWZndoB3YaNFYVh6+ldOZlQfmubESCvgoygd+PdEHyXrshzTOlyUX6lg0b7JCPhipKjmIjlusDFJqh3C6FWPt6jL1TDpJXh73P/P9r3wy8Z9+++UJCvjbA7HdmzC7Th53rpwOaTcXuF0KZA9fa+UmYCJVHs8oJLQ7O+T0Fy0gn1Wc/HOpTNXpseZTkjT+4IOg0wb0SMNI/iPoQsK0OFksFGCR0pXq81c82zTLEh/zLukEekC1loIZloGw0Ez4fnRir1qQgAKa3KCo0zBbkcPtpN6EBxqNNrA0E6S6wDmw5c6ycmEjG4hHwLFmpYuOpVjcr0SCYiX6M2ebG+z1G6aRLZD/+LmOUsp++P5J1cLUWAuN0X2U6gEY3MMFTgyz0rND5Fym0YNIYik6VDE7m0FRwLfL8o8GxWsyhQW+z2M/OLbT3GE9Sb8NLSQ90Y3H7WpyoqsNsPf7aWiC1Rc8U4iMuS8jjbZE1HE3nolsgHMleuTcVcI474VUnLMJz29gA8W8jfNH0449KnrxN+mctUZbGTmQ1KpgT7rvhaqhkwphJNlJOsNosQbSQYPPGgc1NlJJh2P9yDK4v1DXkkkPdxu4y//QUq29vqzM4B6YV08qEGAHrGQjr2R3KyOH3y/A9ye0OFPrR0twxKVrR2y0wRsUqIRyfpXuOvSOjnin21aqNmdZJGUu6pqLoOGi3t12G4NuXZ/vNvO1wT9HabAu9mbExUznAQtLZrGcsBsK9uIeHulbnrP6X+Q0jdL/xIZOCArfuzO0qNCI62fgGfqJn/UOjWDhDQrTuqUbWPs/x9uGtbi21N11vrJ2vT1+b/8GAAD///cgKleCCAAA - -- path: /opt/azure/containers/provision_send_logs.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5xTTW/bOBC981dwvQdKQERJ9sZIDAiLIPAugqZFkLintjBocSQToEiVpBy7Qf57QfpLbpO0qA/GcPTe8HHmzd9/4bSzJl0IlYJa4XbjllqNEBJNq43DnZFSLEaHYyf4Pl43koIzAHQqoQHlZgYAM4unM4SWzrW42NPpndbyPVOsBhPFCNWaybl1zMF83UhcYA+nBr52YF2E8O5H/p/OyNnx6FGTNM3HF3Q8ovnwkubjtGHlUihI/y110xa+cijc4y2BcTC2eDpkQrV10thkBcYKrcgEk2GWD5M8T0YZOQCfQxT3BOMCT2e0MrqxzghVR6dvoZw5RjmUmkNEOlclFySOUamVY0KBmQuOC3zk0EoozqSMCE2v96BjdMNJ/Cn7Qh2sHTJawrzUqhL1XLEGfqPQvZZwo6xjqoRbYd1JwuMqUXeGOaHV7vSBNdC7k0Mr9cZPd6v8Rw3UtlK4iNDAQehRuCXWLaiIpCtmUikW6SNjNSiXSl2XWkoonTb+YOk30ZIzTMyCxN44PjcJHffR3LcSFyGmBhiP4vCta6VmfO7Trzvn7uMvnTMZDc+H43TVXHl1t7r+I8ucJ9llkuU97hFZSgHKJaU2BmRosuBkgq0zkV8k6v/+ieL4Da7vsb/p6t3D9cP0Tna1UG/d1ROX0ZxmL2P3/ghy+t58Cb1qwvikrpOjGwLzxBxH6vMxXGi+KQ7DPNttExJVf4rUG7izuCjwMMu2BmiNUC4aPHRlCdZWnZSbHQV4cMRgawZYCxdlMQJpoc8k/zEhgWOnd7RAInEPUpF7sK1WFvBWwAQ//azq+TWOf9rkszqh9Jd/EJZ/EO8LBKV5jL4HAAD//yh+BLByBQAA - - -- path: /opt/azure/containers/provision_installs_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - -- path: /opt/azure/containers/provision_configs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/manifest.json - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RSXa+TMBi+51eQujtdK0aj4Q45NeckE044wxtjSKGdNulaAu2mEv67KTrYFmDmZMlu3/d5P56PxnFd1wWFkppwySoKfPdvratvuGAR2TLgu2Cr8l/LAZgtmjCO1sFDhJO77AtOnh7iqH1JfpuKLU96j8E6vO8RkLIcvBpOULWXQhG6UgXRXEl7CqlSo+EUOmDqscE0WdmZH1qXtY+QfRPmQuWwUBWDey6p2tdQMt210BkNNEMDLZr0Yxqt0yyM73AUfMYtElyan5b7Y5oFSXjfni+c1cXkRmrTr03wCgdPuDUzeh3fOtdux6qaK1kD3/367ahecinZqZVd3fvw+q3VyoPvobf0QN9tj4YZ/c560LsD6h8CVEYWFzJiIdmiSdIonOLf9f6f52RG7Knrp6PbOkoA5VxJXkyl4PrMn++wB7034wZzWWsixNg4ZRtihB7dcBIDueOUkyH2lrrmXQgmonHJzxnzJgUZe4lW3GJu+Eim2bYURN9EDKd1XuD4k/MnAAD//39cbrrZBQAA - -- path: /opt/azure/containers/init-aks-custom-cloud.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - - -- path: /opt/azure/containers/reconcilePrivateHosts.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3SSb0/zNhTF3/tTHEy0AZKblo1JFDLWjaBV/OuI4A1ilUluqEVqB9vp2AP97o+ShpI+EnkTWz7+Hd9z7/ZW+Kh0+CjdjDFHHsJAm0o78h/bUpWUS1Uw9kReyFI5sguyQpUit2YuvHxyO7t4Y0C9jIKdtLIFhEsuIP4GvyQvM+nlEN5WxMFn3pfDMBz8dtjbP/i11/7DeasLlXZe6pTC1MzLylNYY09kqcSCrFNGR/v9waHo/yIGg59yY+fSR55ePd9lgMpxDx6ccEQReJ/j4Qh+RpoBwPgsifgRhyWZQVhZP/hCOY/j42PwoPbhjTA3FgpKgwdvreb+j4clP0JmGkFT6zn931TrITI+5BD5oCYFavdTcyeLin5Q7W+qVA5KZwbBCol3PFkqIdQL+L/y2Y0m46SJfDwZZZkl5wLeKar+mvtCr2poLPn6zJKv7Ic0V80iM5pYu1vf5WzJWHIRx5NpEv91fXWaRIMDlhaV82TP/jm9injwdn77ZzwdTcbTJL65i2+mV6PLeMlZHfs9go4YWxH2eqVVC+mpUPq5t4eHz2Y0rtw9qxKWUqNTVRBmxnnXhL9BckqnBOV/dtDGY3SeoOWildXV0qvy6LNcsRW7Qxhu8Dhj/81qu3oe2462x+NJFOx8PebrARPf1sTxZGPEXEFU1mOzEeRy1Y7UaK90tY5e5W2rX8A7vI3HIiSfhk0yHZtO0wAqHK3Mq8zAUQahwMMuJsy6oE/E17bvK5ongpCdu/gdYUaLUFdF0eHclpn0lG02zptOTPyj6i8jaqaSbcfXZ+x7AAAA//92UkeEmAQAAA== - -- path: /etc/systemd/system/reconcile-private-hosts.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTOMU4DMRCF4d6n8AUSn2AbBBJ0KAFRrLaYDG/ZkZyxNTOOCKdHAaV8r/m/+V0llvQIZ5Me0nQ6gJuyVOSC4LI1D8/rba/Ncje5UCBzHR6wNB9hF2Es6e3aMbmce0U6wIMspqa7laQOQ3r6Bh//znISLSfyLZfWo9DPMBRuGiQK82J3wOt/6/km2PuW5hf1oFqX9EEa+Hy4TudRQ3bDYfsg+0L8BgAA//8Sy/8V0QAAAA== - -- path: /etc/systemd/system/kubelet.service - permissions: "0600" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4yUz2/aMBTH7/krnlAP28H11u1W5QBtqFAZVAS0A0XIcR7lCecF2S+03br/fQqBbrS0ak6x/fn+iPTi6YRJZtElButpLVRyfF1l6FCii5JzqndujCyTBwoSYl0Fr11pjdMZsV7t0J+GJcSMcl/6lSrZEeOpGH+HArZkMcTo89OAfkMWo/ZC0H8cj6Zp8zaLRhjEeImNuzePYb9M0cZnUcIb8iUXyNIlh7FGsTrHhamcPDdNK2sxhOSBJBUjVYi/fv8WJQ9o09rpxmO8/bLMhCXoci3a/Ko86udaYW91GpZHdMUqJw9qDXpjvHaUPSd/hLVMb3VRFlq0gCmcfCrKigWe4M7jGm5bL5NuW/AE9xaU+wzKIXyBGZyDLJGhid3KlcqI81c1X2+cw4Jax9rvbAqzQhWWxuNrt+hQp3SolZiJyRwGUAJsag9HQY6itH6JclWgJ7sX/VO9MZtwG8HuUQq5dlP1YKE/OOEyR+VMhi7ErZPf15NO0k/G88HwMpn3252kn/5pHQg28dnhunRVgWrtqjtilZNv5q9u4RkFg26IBgj/aU/2YeN+Ou8Mh+N0PGrfzLv99lV6DLsYDrq9q3m310/ehcbt3iAZXX6AmY8mg3HvR2N3lLwaDSfvVNoeRNG0x0GMc7PthYB55zEuKiekqoB+94NHfwMAAP//toiZ8HIEAAA= - -- path: /etc/systemd/system/mig-partition.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TOwWqDQBDG8fs+xR56NZs8gAfbWhFaK7HSg0iYmIkZ0FmZnQ1NS9+9mEuvf358fF3LpL15xjAILUqe02xZppt9Kws7eD7TGAXWbj3b6konApvttltb1K0xXYNypQF7s8egIJp6Ts5AUxQ0+RcOzRprwdTFIO5I7Pi+kYSZbDLTaHf/Lr2DI4SLdX5RB99R0A2eFYhRgptpTBYQpfXQJlzsw09Rt4eyaj6y6ik/1Pv3l/I1/zWmKzkoTFNvPoEVT4+3dI6TUhIDykZBRlTzFwAA///GvdrK/QAAAA== - -- path: /opt/azure/containers/mig-partition.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4SS0YubQBDG3/0rvpp76BVTa3ulXI4+lN41CE0MJelrWddRh5pd2V1tQsj/XjRcIiSgDMLOzu+bj5mdvAlTVmEqbOl5k2Wyfpnhe2MMKVftAyxbzlig4tQIs8eWi2ktjKMMb0vnajsLw4Jd2aTvpd6Gy9/xc/wtvFTdQwqltMM/bf6iNromU+2RkhSNJegcriToxmWi05yvNsgMt2TQkrGslTdZJ8/JDBtLw+avfpxGpnuN7oIdawWROzJ9TqS6JbC1TfdHzjvK4C3i+Z/Vr+RH/PPl690hOnpSWMLdYZA/ghU8APAX8Twq/Pv+0H2qH8jUbrnzg6ksGNFjcBVn4OnpLPRxVOgh6OMW/GkMfgxuNn0Y4z7for6MUR8GFE6zenchSJYafrd4gVZUfFotK+uEktQ9hJwr8i/1O3aIhkbICuldNZb8PwAA//+R/AassAIAAA== - - -- path: /opt/azure/containers/ubuntu-snapshot-update.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RWTY/bNhC981fMqkK0LiIr26BF60A5tMipuXWLArVdgZZGFrsyqZBDbxrH/70gKctf2sVeil4MyvM4M3zz9KhvbjJrdLYSMkO5hRU3DWMGCVIFUllpkMIjMmaU1SVCpjrK+BerMSuVJC4kapN1Wm2FEUoWAVZUwpBWU5fPSk6EssKqsN1a8wpvJ7BjABpJCzT53RsGUCsNAoSE+NbgJ7iDuA9P3kGlGADAMVHaJ4J0C69ewUojf/AQUcMcYgEpfhoSwPIdUIPSA3xVqyXc+UdsDYJpETv43v9RCwZQKYkMAMtGwYfPWFrC6qQ6HKrHAkhs0LA9Y2W9LhpuCtWRULI/ocvXYh6HYiGUx9/5p1ZIzN1hK0glRNlfcYjPMugiiGK3M5p46NwjYrcjguWhmkF6ebUtby3m8dsDSzdw3vChIER9G9EZaT0Zh+AMYp8wgvfvDzsHPoct/mgCEpMlQ9ZkNv02Pj4PiZJsnZxlqoU756+///zhl/uPeeR12qqSt16tD3aFJbWQpn6lZC3WkG25zlqx8tEWKTvGooN+i1YYKjpOTZ4hlRnvKAsRM3WhM9iKlw+2ewY9DQhWtspWhWP0iPX/hd9pWa8Ze2xEizCHG0jr53p1eu0V70lP/uCChFz7V+T+42+wUooMad51Qq4TDwwSfsu8cplUFRaSb5y+GmXILSfMvxvpF4ji3QDYR2dvRxhyyaVUBGskcEBwwH68nwXBHavFeY1eG8NfEXwF0pDMZ7brUM+WiVu36tGvJ4ytVVuhLPzLQ3zT5fFt3I/6WPa0TWdIfxslPb3RbrpB4hUnPvWtciclM08ch1oioVlMvUUtpqXaZK3YYtpxKhsh12monQ61k+U+OiPnsrlRjgIIBhAIA440g/QazIPowFWFQ9UT+t44+p5MMoOxBhgrrdYo6f+hrC8+zpmzjt1Ve+PCCqirA4/sZoOdz5+YSZ4/WXg56l0921xWMNaI2wKGb/C1G6Q7N5AKA4yOmcIEe4Ny74Fqq+LEM/L4tuQE8e7SbvYTdvTDhqibLbJFuEinXJeN2OLUrqwk6wawyMJ6kXms8WAjeWcaRaO4ZJQlb6sjzVz08oL8i9v5m/Sn5WL342J/3y9/WOz/XEz+ow77+4t3VHQaDeot9kQbD+sBRbjZSFu8uBWdsM58eQ/xLoSOq7B9z5jEx5fOcVDlxez3Edx4UV7kupTk4So93x3B+4tyJ9fP/mTj6E3kBGy7ihNWsyDXStT1MwnHjgZfnW9b9ML2HwmO/TVSEVJfneE8DDUXLVaXV4VPdP0ReJXsGvJEQjYYX29lCGmqtqgftSAcccKjyQWPe4nF5SNiZcG3DyrvCYdSbboW3TeisWWJxtS2bf9h/wYAAP//2imkv10LAAA= - -- path: /etc/systemd/system/snapshot-update.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/yzMvQ3CQAxA4f6myALhJrgOJjhSRSnMYSlubMs/CJgeEaV7xdO3LkyxlSv6MNIg4dYZ1HeJadEnBE4d7UUDS1nP2sr9o9iE8b+V2xtHD7BoVTQqfNOwDuEAYjSv+UiOnP1k5zzYi++/AAAA//9JR72LfAAAAA== - -- path: /etc/systemd/system/snapshot-update.timer - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TMPapCMRBA4X5WkQ28hy4ghRcbqwv+YBFSDMmgA8kkZCbC3b2Ihe058IWbsEU4kqbB3biJP09Rp4Jdn83c7BmN3He7ToNb5oSlbADhypVGhFWW1uxCye93lQVW+aiHZPyiX4VwEjUsJcIdxSgvm6+zGP9NpfFvOB5k7wAAAP//XnoOYJAAAAA= - - -- path: /opt/azure/containers/bind-mount.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/2SP3UrzQBCGz+cqptOcfSx7AR89ESMEayqaHomUTTMhS5LdsD+xKL13qWJNzOHDM/POO+uVjN7JUhvJZsRS+QY8BxQW2Tk+6fCDxkbj+YqDHrhWuvvmE8Aa4GG3z4vD4y7Liw3J3gSpWk8A9/ubdJsWh5lPPiZ4lm0sueNA1+Hb7GlDclROdrr81dC3lXYoBvyTQADPaV5kebo93GXbdEPSDkGq9+hYHq0JSht2/vJqJTyboA13BLrGF1yhYKRktk/4+h9DwwYQEfsRKZlUI6Rkcp2+hoKNx2aRA7Wet57EnAl6G01AIS69pnb222IN4dj0tkL1723hPgMAAP//gwnZGtQBAAA= - -- path: /etc/systemd/system/bind-mount.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/xzNMW7CQBCF4X5O4QuYPYGLoFCkBUUpLBdj+xFGWc+i2bcR5PQRrv9f+sZPN07yjrqE3WnFh6P52m2lObufNiOD3apUGS+IX1swyRmVGhyK91e13AJyxqbmb1ciTg/j8ESV0wPLZR/TbJ5mrbculTuT/rVAWopTzRH1ldd+Jw/1JjJ+eKXmPMmXOrEen8PWMq1vFXGgxjco/wEAAP//HvlBProAAAA= - -- path: /etc/systemd/system/dhcpv6.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTNsc6CMBAH8P1e45uh27d10IiJkwMaB8JQy19prNfmeqD49A7EJ/h1Zw7a0w7FS8gaEluwu0YMo8/zP21uCrEMfSV5VIljYNTq5A4l6lrIHDx6Oi0ZNjHKmJSaN3yrTtSalNW4zyQwPrG6wJBiVqBahbqMRN2Bi7oYe7o4VgzbxT6nqKGaCuTH/TXHPX0DAAD//wVR54mwAAAA - -- path: /opt/azure/containers/enable-dhcpv6.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3RS3WqcQBS+n6f4apZNezG6W4g3TQPFaCpdFMKG3hTEHY/rUDNjnZlNYOO7F9cKbbq58XD+vh/PXLwLnOmDnVQBqQN2pWkYM2TBaQoaneyoLmU75Y6x26/RJo2zbVhEeZYUSbqJPwdkRVA1ohs/rSRlQ19oVbNokz/cFmmWbosouZvmFNkn3f8MpLLU16Ug41fB1YqLVruKSyWtL+o9Yz2VFXgPXuHyElm8/Z7ffzuRpncP91+2aZ7h+hpxHuHlBbZ3xOQIB7LNClKRDVE6qxkAuA6mJepwNaezUvA1eAguarxlA7ytERzKPmjl7vXAyOa3VBoy4IeJfNYT5xFjZVUVsi6UtgU9S2PN+w84nlTse+rAfz0n8BbH9eCN4ePgjeskGj1Xb27+NNjA2NSItKrl3vVS7Ucj3SGE7/seY1Y70bxtZLnEf3LgWflI2lmsV588LI5nLjyMmz9Oos/sL45nrzOMYP++gL9wjKs0ZF3pJzX9tOVyrrnuVHlttrRSKwj92LVkyWMXcZ6w3wEAAP//V01dfMMCAAA= - -- path: /etc/systemd/system/docker.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStart= - ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip= - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/docker/daemon.json - permissions: "0644" - owner: root - content: | - { - "live-restore": true, - "log-driver": "json-file", - "log-opts": { - "max-size": "50m", - "max-file": "5" - } - } - -- path: /etc/systemd/system/containerd.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/crictl.yaml - permissions: "0644" - owner: root - content: | - runtime-endpoint: unix:///run/containerd/containerd.sock - #EOF - -- path: /etc/systemd/system/ensure-no-dup.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zyNvUoEQRCE83mKBuO9AfMNDjxTwcXouGB+ar3GvZ6hu0fEpxeV26z4qqjv/Cbsl/AEK8rducl8rJUq6uiE7ClvIB0bjNam9DEyBE5Zub6DWKhru7GV0YbRrVWE4+rQuTTxxAKtB4N+crkXvw8bfKfn5T9cwivMk/rcZFoTb0NxRwvK/BhOXyjL3yJmlpiTXSm27jF9D0XcjRYhNhSTtKmOfrBreDi9PIefAAAA//+1G3Iw6wAAAA== - -- path: /opt/azure/containers/ensure-no-dup.sh - permissions: "0755" - owner: root - encoding: gzip - content: !!binary | - H4sIAAAAAAAA/7yVX2/aPBTG7/MpnqZIL7yTE7r1ZpvYhCiTqpWC+ueKcmHiA3EV7NR26Fjhu08hYYM23eik9Q6c4/M753mOjg8PwrFU4Zjb2PM8Gjs+TsiCOUxk4siAnaH99ZKddE+uB2xw0e+dXnbw9lMoaB6qLEk8OcFwiNpnMLpDE6PRR7iYlAcAFMUa/tP7JksIPDHExQKWnF9Ef5MOTW8iy5wHYBOE5KIwUjJU5AIRHjVZpJXjUpERLD+LtJok0roqcqQk8u9yCqUdshQLckEQ5CSppiBuksUW/CiHe2MjxZTO+YxatXrE3QtqwBK3d2AGfpAm2VQqOxxhCUsJRa4euEVKaLVw4xeMG7+BJYLij9/wUqNn0kY9LV4LvUX0G6Xufu1h63jl46AF35mM/CqNi3SoPfySbbVWWyqUaTKdWcy0oN9Iv/Z9x3i7sGGUcGvz3sOd/CEXwpC1L6pnT/dL+08HrVpdpshJsLG+f5RxiamhFKyr4UtFDvVhk70f/X8TNB7erYrf/k5UVcBGcvY9V31DXu0vtNBk193FfE7gCjKdH6OU54+9plpcZmNFri2EeaWJkymfBXZNfdT+TjXVGkQ6S8S6X0GOzEwqgotlLoGg/yxSLZADUABguJoSJkbP8Hwjey6EXruzkWiP0Wx4XlEyFyLP/HQJlssWUcyl8it373nFtcrAdkUgS3E6mB+D2Z8z02t3VmAac3LxGzAmU2ZNhK3JA7tFu9PpDq7+CWfX4hx2ctEfPIPqX18Nrq/WFT1VoVRXZy7N3No7RffJIh99EhUX8ifHfqiW+WyD2n7X/uYtLDfZYbf/5UcAAAD//4wWzb9ZBwAA - -- path: /etc/systemd/system/teleportd.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=teleportd teleport runtime - After=network.target - [Service] - ExecStart=/usr/local/bin/teleportd --metrics --aksConfig /etc/kubernetes/azure.json - Delegate=yes - KillMode=process - Restart=always - LimitNPROC=infinity - LimitCORE=infinity - LimitNOFILE=1048576 - TasksMax=infinity - [Install] - WantedBy=multi-user.target - #EOF - -- path: /etc/systemd/system/nvidia-modprobe.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=Installs and loads Nvidia GPU kernel module - [Service] - Type=oneshot - RemainAfterExit=true - ExecStartPre=/bin/sh -c "dkms autoinstall --verbose" - ExecStart=/bin/sh -c "nvidia-modprobe -u -c0" - ExecStartPost=/bin/sh -c "sleep 10 && systemctl restart kubelet" - [Install] - WantedBy=multi-user.target - -- path: /etc/default/kubelet - permissions: "0644" - owner: root - content: | - KUBELET_FLAGS=--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --container-log-max-size=50M --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=PodPriority=true,RotateKubeletServerCertificate=true,a=false,x=false --image-gc-high-threshold=85 --image-gc-low-threshold=80 --kube-reserved=cpu=100m,memory=1638Mi --max-pods=110 --node-status-update-frequency=10s --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=10255 --resolv-conf=/etc/resolv.conf --rotate-certificates=true --streaming-connection-idle-timeout=4h0m0s --system-reserved=cpu=2,memory=1Gi --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key - KUBELET_REGISTER_SCHEDULABLE=true - NETWORK_POLICY= - KUBELET_NODE_LABELS=agentpool=agent2,kubernetes.azure.com/agentpool=agent2 - -- path: /var/lib/kubelet/kubeconfig - permissions: "0644" - owner: root - content: | - apiVersion: v1 - kind: Config - clusters: - - name: localcluster - cluster: - certificate-authority: /etc/kubernetes/certs/ca.crt - server: https://:443 - users: - - name: client - user: - client-certificate: /etc/kubernetes/certs/client.crt - client-key: /etc/kubernetes/certs/client.key - contexts: - - context: - cluster: localcluster - user: client - name: localclustercontext - current-context: localclustercontext - -- path: /opt/azure/containers/kubelet.sh - permissions: "0755" - owner: root - content: | - #!/bin/bash - # - # - # - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 80 -j DROP - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 32526 -j DROP - -- path: /etc/kubernetes/certs/ca.crt - permissions: "0600" - encoding: base64 - owner: root - content: | - - -- path: /opt/azure/containers/setup-custom-search-domains.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5yQQYsaQRCF7/MrKsZDcmjbFSTXDDpBQVeZUQK5NGVPjXbs6Zauko3Z+N/D7uwlq6dcCurx3uPxffygdy7oHfIhYxJQvzKO52QJev3nSVWYWbFYF2Vlvs0XxTrfzK69d4bpvNqUq3u+jOwhQg+gDqyYMNkD9J8n22qzWpqqyMvJzExXy3z+aB7zZXHtwR8QIlAImsTqQPIU01G7IJQatMSDWo+Hyvp4rpULTga22Wd8YaHWijeJWDAJjIYwhochvBW4sM+e0IlpYjJ4EuOjPXKWSNLFtrVxjWnQ+XOil9AYHkZDwJOo/QuPC7jAgt5DIvRtDczcHSUxegbGdofKxraNoXv+lU4XOcQwGnx5k73bMZzQHnFPRyf3lnXc3qMqi3yxNOu8qr6vyukrrddJ8DO6AGp7w7YLbKuivH7tf7pfesM/gUb1W4PO1Q/9Gf4zl/0NAAD///uJhCVYAgAA \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line105.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line105.sh deleted file mode 100644 index 5aec7b9068c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line105.sh +++ /dev/null @@ -1,34 +0,0 @@ -[Unit] -Description=Kubelet -ConditionPathExists=/usr/local/bin/kubelet -Wants=network-online.target containerd.service -After=network-online.target containerd.service - -[Service] -Restart=always -RestartSec=2 -EnvironmentFile=/etc/default/kubelet -SuccessExitStatus=143 -ExecStartPre=/bin/bash /opt/azure/containers/kubelet.sh -ExecStartPre=/bin/mkdir -p /var/lib/kubelet -ExecStartPre=/bin/mkdir -p /var/lib/cni -ExecStartPre=/bin/bash -c "if [ $(mount | grep \"/var/lib/kubelet\" | wc -l) -le 0 ] ; then /bin/mount --bind /var/lib/kubelet /var/lib/kubelet ; fi" -ExecStartPre=/bin/mount --make-shared /var/lib/kubelet - -ExecStartPre=-/sbin/ebtables -t nat --list -ExecStartPre=-/sbin/iptables -t nat --numeric --list - -ExecStart=/usr/local/bin/kubelet \ - --enable-server \ - --node-labels="${KUBELET_NODE_LABELS}" \ - --v=2 \ - --volume-plugin-dir=/etc/kubernetes/volumeplugins \ - $KUBELET_TLS_BOOTSTRAP_FLAGS \ - $KUBELET_CONFIG_FILE_FLAGS \ - $KUBELET_CONTAINERD_FLAGS \ - $KUBELET_CONTAINER_RUNTIME_FLAG \ - $KUBELET_CGROUP_FLAGS \ - $KUBELET_FLAGS - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line112.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line112.sh deleted file mode 100644 index b02cff3e054..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line112.sh +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Apply MIG configuration on Nvidia A100 GPU - -[Service] -Restart=on-failure -ExecStartPre=/usr/bin/nvidia-smi -mig 1 -ExecStart=/bin/bash /opt/azure/containers/mig-partition.sh ${GPU_INSTANCE_PROFILE} - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line119.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line119.sh deleted file mode 100644 index d60b92d68b2..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line119.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -#NOTE: Currently, Nvidia library mig-parted (https://github.com/NVIDIA/mig-parted) cannot work properly because of the outdated GPU driver version -#TODO: Use mig-parted library to do the partition after the above issue is fixed -MIG_PROFILE=${1} -case ${MIG_PROFILE} in - "MIG1g") - nvidia-smi mig -cgi 19,19,19,19,19,19,19 - ;; - "MIG2g") - nvidia-smi mig -cgi 14,14,14 - ;; - "MIG3g") - nvidia-smi mig -cgi 9,9 - ;; - "MIG4g") - nvidia-smi mig -cgi 5 - ;; - "MIG7g") - nvidia-smi mig -cgi 0 - ;; - *) - echo "not a valid GPU instance profile" - exit 1 - ;; -esac -nvidia-smi mig -cci \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line127.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line127.sh deleted file mode 100644 index 7605397f84c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line127.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash - -set -o nounset -set -e - -source /opt/azure/containers/provision_source_distro.sh - -unattended_upgrade() { - retries=10 - for i in $(seq 1 $retries); do - unattended-upgrade -v && break - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed unattended upgrade $i times -} - -cfg_has_option() { - file=$1 - option=$2 - line=$(sed -n "/^$option:/ p" "$file") - [ -n "$line" ] -} - -cfg_set_option() { - file=$1 - option=$2 - value=$3 - if ! cfg_has_option "$file" "$option"; then - echo "$option: $value" >> "$file" - else - sed -i 's/'"$option"':.*$/'"$option: $value"'/g' "$file" - fi -} - -KUBECTL="/usr/local/bin/kubectl --kubeconfig /var/lib/kubelet/kubeconfig" - -source_list_path=/etc/apt/sources.list -source_list_backup_path=/etc/apt/sources.list.backup -cloud_cfg_path=/etc/cloud/cloud.cfg - -while [ ! -f /var/lib/kubelet/kubeconfig ]; do - echo 'Waiting for TLS bootstrapping' - sleep 3 -done - -node_name=$(hostname) -if [ -z "${node_name}" ]; then - echo "cannot get node name" - exit 1 -fi - -node_name=$(echo "$node_name" | tr '[:upper:]' '[:lower:]') - -golden_timestamp=$($KUBECTL get node ${node_name} -o jsonpath="{.metadata.annotations['kubernetes\.azure\.com/live-patching-golden-timestamp']}") -if [ -z "${golden_timestamp}" ]; then - echo "golden timestamp is not set, skip live patching" - exit 0 -fi -echo "golden timestamp is: ${golden_timestamp}" - -current_timestamp=$($KUBECTL get node ${node_name} -o jsonpath="{.metadata.annotations['kubernetes\.azure\.com/live-patching-current-timestamp']}") -if [ -n "${current_timestamp}" ]; then - echo "current timestamp is: ${current_timestamp}" - - if [[ "${golden_timestamp}" == "${current_timestamp}" ]]; then - echo "golden and current timestamp is the same, nothing to patch" - exit 0 - fi -fi - -old_source_list=$(cat ${source_list_path}) -sed -i 's/http:\/\/azure.archive.ubuntu.com\/ubuntu\//https:\/\/snapshot.ubuntu.com\/ubuntu\/'"${golden_timestamp}"'/g' ${source_list_path} -sed -i 's/https:\/\/snapshot.ubuntu.com\/ubuntu\/\([0-9]\{8\}T[0-9]\{6\}Z\)/https:\/\/snapshot.ubuntu.com\/ubuntu\/'"${golden_timestamp}"'/g' ${source_list_path} -option=apt_preserve_sources_list -option_value=true -cfg_set_option ${cloud_cfg_path} ${option} ${option_value} - -new_source_list=$(cat ${source_list_path}) -if [[ "${old_source_list}" != "${new_source_list}" ]]; then - echo "$old_source_list" > ${source_list_backup_path} - echo "/etc/apt/sources.list is updated:" - diff ${source_list_backup_path} ${source_list_path} || true -fi - -if ! apt_get_update; then - echo "apt_get_update failed" - exit 1 -fi -if ! unattended_upgrade; then - echo "unattended_upgrade failed" - exit 1 -fi - -$KUBECTL annotate --overwrite node ${node_name} kubernetes.azure.com/live-patching-current-timestamp=${golden_timestamp} - -echo snapshot update completed successfully diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line134.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line134.sh deleted file mode 100644 index 15be92f982a..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line134.sh +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=Snapshot Update Service - -[Service] -Type=oneshot -ExecStart=/opt/azure/containers/ubuntu-snapshot-update.sh \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line141.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line141.sh deleted file mode 100644 index 2f855de5428..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line141.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Runs snapshot update script periodically - -[Timer] -OnBootSec=10min -OnUnitActiveSec=10min - -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line149.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line149.sh deleted file mode 100644 index 4d6cb87b4cd..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line149.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -set -o errexit -set -o nounset -set -o pipefail -set -x - -# - -MOUNT_POINT="/mnt/aks" - -KUBELET_MOUNT_POINT="${MOUNT_POINT}/kubelet" -KUBELET_DIR="/var/lib/kubelet" - -mkdir -p "${MOUNT_POINT}" - -SENTINEL_FILE="/opt/azure/containers/bind-sentinel" -if [ ! -e "$SENTINEL_FILE" ]; then - mv "$KUBELET_DIR" "$MOUNT_POINT" - touch "$SENTINEL_FILE" -fi - -mkdir -p "${KUBELET_DIR}" -mount --bind "${KUBELET_MOUNT_POINT}" "${KUBELET_DIR}" -chmod a+w "${KUBELET_DIR}" \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line156.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line156.sh deleted file mode 100644 index 93bf4b6968a..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line156.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Bind mount kubelet data -[Service] -Restart=on-failure -RemainAfterExit=yes -ExecStart=/bin/bash /opt/azure/containers/bind-mount.sh - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line163.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line163.sh deleted file mode 100644 index 7cc1e25064c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line163.sh +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=enabledhcpv6 -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/opt/azure/containers/enable-dhcpv6.sh - -[Install] -WantedBy=multi-user.target -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line170.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line170.sh deleted file mode 100644 index e13d68920d0..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line170.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -o pipefail -set -u - -DHCLIENT6_CONF_FILE=/etc/dhcp/dhclient6.conf -CLOUD_INIT_CFG=/etc/network/interfaces.d/50-cloud-init.cfg - -read -r -d '' NETWORK_CONFIGURATION << EOC || true -iface eth0 inet6 auto - up sleep 5 - up dhclient -1 -6 -cf /etc/dhcp/dhclient6.conf -lf /var/lib/dhcp/dhclient6.eth0.leases -v eth0 || true -EOC - -add_if_not_exists() { - grep -qxF "${1}" "${2}" || echo "${1}" >> "${2}" -} - -echo "Configuring dhcpv6 ..." - -touch /etc/dhcp/dhclient6.conf && add_if_not_exists "timeout 10;" ${DHCLIENT6_CONF_FILE} && \ - add_if_not_exists "${NETWORK_CONFIGURATION}" ${CLOUD_INIT_CFG} && \ - sudo ifdown eth0 && sudo ifup eth0 - -echo "Configuration complete" -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line18.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line18.sh deleted file mode 100644 index 6cff2327aeb..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line18.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -echo "Sourcing cse_helpers_distro.sh for Ubuntu" - - -aptmarkWALinuxAgent() { - echo $(date),$(hostname), startAptmarkWALinuxAgent "$1" - wait_for_apt_locks - retrycmd_if_failure 120 5 25 apt-mark $1 walinuxagent || \ - if [[ "$1" == "hold" ]]; then - exit $ERR_HOLD_WALINUXAGENT - elif [[ "$1" == "unhold" ]]; then - exit $ERR_RELEASE_HOLD_WALINUXAGENT - fi - echo $(date),$(hostname), endAptmarkWALinuxAgent "$1" -} - -wait_for_apt_locks() { - while fuser /var/lib/dpkg/lock /var/lib/apt/lists/lock /var/cache/apt/archives/lock >/dev/null 2>&1; do - echo 'Waiting for release of apt locks' - sleep 3 - done -} -apt_get_update() { - retries=10 - apt_update_output=/tmp/apt-get-update.out - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get -f -y install - ! (apt-get update 2>&1 | tee $apt_update_output | grep -E "^([WE]:.*)|([Ee][Rr][Rr][Oo][Rr].*)$") && \ - cat $apt_update_output && break || \ - cat $apt_update_output - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed apt-get update $i times - wait_for_apt_locks -} -apt_get_install() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get install -o Dpkg::Options::="--force-confold" --no-install-recommends -y ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - apt_get_update - fi - done - echo Executed apt-get install --no-install-recommends -y \"$@\" $i times; - wait_for_apt_locks -} -apt_get_purge() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - timeout $timeout apt-get purge -o Dpkg::Options::="--force-confold" -y ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done - echo Executed apt-get purge -y \"$@\" $i times; - wait_for_apt_locks -} -apt_get_dist_upgrade() { - retries=10 - apt_dist_upgrade_output=/tmp/apt-get-dist-upgrade.out - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get -f -y install - apt-mark showhold - ! (apt-get -o Dpkg::Options::="--force-confnew" dist-upgrade -y 2>&1 | tee $apt_dist_upgrade_output | grep -E "^([WE]:.*)|([Ee][Rr][Rr][Oo][Rr].*)$") && \ - cat $apt_dist_upgrade_output && break || \ - cat $apt_dist_upgrade_output - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed apt-get dist-upgrade $i times - wait_for_apt_locks -} -installDebPackageFromFile() { - DEB_FILE=$1 - wait_for_apt_locks - retrycmd_if_failure 10 5 600 apt-get -y -f install ${DEB_FILE} --allow-downgrades - if [[ $? -ne 0 ]]; then - return 1 - fi -} -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line215.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line215.sh deleted file mode 100644 index ceb0ddeb979..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line215.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Add dedup ebtable rules for kubenet bridge in promiscuous mode -After=containerd.service -After=kubelet.service -[Service] -Restart=on-failure -RestartSec=2 -ExecStart=/bin/bash /opt/azure/containers/ensure-no-dup.sh -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line222.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line222.sh deleted file mode 100644 index c606af08d4c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line222.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - - -ebtables -t filter -L AKS-DEDUP-PROMISC 2>/dev/null -if [[ $? -eq 0 ]]; then - echo "AKS-DEDUP-PROMISC rule already set" - exit 0 -fi -if [[ ! -f /etc/cni/net.d/10-containerd-net.conflist ]]; then - echo "cni config not up yet...exiting early" - exit 1 -fi - -bridgeName=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .bridge") -promiscMode=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .promiscMode") -if [[ "${promiscMode}" != "true" ]]; then - echo "bridge ${bridgeName} not in promiscuous mode...exiting early" - exit 0 -fi - -if [[ ! -f /sys/class/net/${bridgeName}/address ]]; then - echo "bridge ${bridgeName} not up yet...exiting early" - exit 1 -fi - - -bridgeIP=$(ip addr show ${bridgeName} | grep -Eo "inet ([0-9]*\.){3}[0-9]*" | grep -Eo "([0-9]*\.){3}[0-9]*") -if [[ -z "${bridgeIP}" ]]; then - echo "bridge ${bridgeName} does not have an ipv4 address...exiting early" - exit 1 -fi - -podSubnetAddr=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .ipam.subnet") -if [[ -z "${podSubnetAddr}" ]]; then - echo "could not determine this node's pod ipam subnet range from 10-containerd-net.conflist...exiting early" - exit 1 -fi - -bridgeMAC=$(cat /sys/class/net/${bridgeName}/address) - -echo "adding AKS-DEDUP-PROMISC ebtable chain" -ebtables -t filter -N AKS-DEDUP-PROMISC -ebtables -t filter -A AKS-DEDUP-PROMISC -p IPv4 -s ${bridgeMAC} -o veth+ --ip-src ${bridgeIP} -j ACCEPT -ebtables -t filter -A AKS-DEDUP-PROMISC -p IPv4 -s ${bridgeMAC} -o veth+ --ip-src ${podSubnetAddr} -j DROP -ebtables -t filter -A OUTPUT -j AKS-DEDUP-PROMISC - -echo "outputting newly added AKS-DEDUP-PROMISC rules:" -ebtables -t filter -L OUTPUT 2>/dev/null -ebtables -t filter -L AKS-DEDUP-PROMISC 2>/dev/null -exit 0 -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line26.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line26.sh deleted file mode 100644 index 55b4d474be0..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line26.sh +++ /dev/null @@ -1,89 +0,0 @@ -CSE_STARTTIME=$(date) -CSE_STARTTIME_FORMATTED=$(date +"%F %T.%3N") -timeout -k5s 15m /bin/bash /opt/azure/containers/provision.sh >> /var/log/azure/cluster-provision.log 2>&1 -EXIT_CODE=$? -systemctl --no-pager -l status kubelet >> /var/log/azure/cluster-provision-cse-output.log 2>&1 -OUTPUT=$(tail -c 3000 "/var/log/azure/cluster-provision.log") -KERNEL_STARTTIME=$(systemctl show -p KernelTimestamp | sed -e "s/KernelTimestamp=//g" || true) -KERNEL_STARTTIME_FORMATTED=$(date -d "${KERNEL_STARTTIME}" +"%F %T.%3N" ) -CLOUDINITLOCAL_STARTTIME=$(systemctl show cloud-init-local -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINITLOCAL_STARTTIME_FORMATTED=$(date -d "${CLOUDINITLOCAL_STARTTIME}" +"%F %T.%3N" ) -CLOUDINIT_STARTTIME=$(systemctl show cloud-init -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINIT_STARTTIME_FORMATTED=$(date -d "${CLOUDINIT_STARTTIME}" +"%F %T.%3N" ) -CLOUDINITFINAL_STARTTIME=$(systemctl show cloud-final -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINITFINAL_STARTTIME_FORMATTED=$(date -d "${CLOUDINITFINAL_STARTTIME}" +"%F %T.%3N" ) -NETWORKD_STARTTIME=$(systemctl show systemd-networkd -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -NETWORKD_STARTTIME_FORMATTED=$(date -d "${NETWORKD_STARTTIME}" +"%F %T.%3N" ) -GUEST_AGENT_STARTTIME=$(systemctl show walinuxagent.service -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -GUEST_AGENT_STARTTIME_FORMATTED=$(date -d "${GUEST_AGENT_STARTTIME}" +"%F %T.%3N" ) -KUBELET_START_TIME=$(systemctl show kubelet.service -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -KUBELET_START_TIME_FORMATTED=$(date -d "${KUBELET_START_TIME}" +"%F %T.%3N" ) -KUBELET_READY_TIME_FORMATTED="$(date -d "$(journalctl -u kubelet | grep NodeReady | cut -d' ' -f1-3)" +"%F %T.%3N")" -SYSTEMD_SUMMARY=$(systemd-analyze || true) -CSE_ENDTIME_FORMATTED=$(date +"%F %T.%3N") -EVENTS_LOGGING_DIR=/var/log/azure/Microsoft.Azure.Extensions.CustomScript/events/ -EVENTS_FILE_NAME=$(date +%s%3N) -EXECUTION_DURATION=$(echo $(($(date +%s) - $(date -d "$CSE_STARTTIME" +%s)))) - -JSON_STRING=$( jq -n \ - --arg ec "$EXIT_CODE" \ - --arg op "$OUTPUT" \ - --arg er "" \ - --arg ed "$EXECUTION_DURATION" \ - --arg ks "$KERNEL_STARTTIME" \ - --arg cinitl "$CLOUDINITLOCAL_STARTTIME" \ - --arg cinit "$CLOUDINIT_STARTTIME" \ - --arg cf "$CLOUDINITFINAL_STARTTIME" \ - --arg ns "$NETWORKD_STARTTIME" \ - --arg cse "$CSE_STARTTIME" \ - --arg ga "$GUEST_AGENT_STARTTIME" \ - --arg ss "$SYSTEMD_SUMMARY" \ - --arg kubelet "$KUBELET_START_TIME" \ - '{ExitCode: $ec, Output: $op, Error: $er, ExecDuration: $ed, KernelStartTime: $ks, CloudInitLocalStartTime: $cinitl, CloudInitStartTime: $cinit, CloudFinalStartTime: $cf, NetworkdStartTime: $ns, CSEStartTime: $cse, GuestAgentStartTime: $ga, SystemdSummary: $ss, BootDatapoints: { KernelStartTime: $ks, CSEStartTime: $cse, GuestAgentStartTime: $ga, KubeletStartTime: $kubelet }}' ) -mkdir -p /var/log/azure/aks -echo $JSON_STRING | tee /var/log/azure/aks/provision.json - -message_string=$( jq -n \ ---arg EXECUTION_DURATION "${EXECUTION_DURATION}" \ ---arg EXIT_CODE "${EXIT_CODE}" \ ---arg KERNEL_STARTTIME_FORMATTED "${KERNEL_STARTTIME_FORMATTED}" \ ---arg CLOUDINITLOCAL_STARTTIME_FORMATTED "${CLOUDINITLOCAL_STARTTIME_FORMATTED}" \ ---arg CLOUDINIT_STARTTIME_FORMATTED "${CLOUDINIT_STARTTIME_FORMATTED}" \ ---arg CLOUDINITFINAL_STARTTIME_FORMATTED "${CLOUDINITFINAL_STARTTIME_FORMATTED}" \ ---arg NETWORKD_STARTTIME_FORMATTED "${NETWORKD_STARTTIME_FORMATTED}" \ ---arg GUEST_AGENT_STARTTIME_FORMATTED "${GUEST_AGENT_STARTTIME_FORMATTED}" \ ---arg KUBELET_START_TIME_FORMATTED "${KUBELET_START_TIME_FORMATTED}" \ ---arg KUBELET_READY_TIME_FORMATTED "${KUBELET_READY_TIME_FORMATTED}" \ -'{ExitCode: $EXIT_CODE, E2E: $EXECUTION_DURATION, KernelStartTime: $KERNEL_STARTTIME_FORMATTED, CloudInitLocalStartTime: $CLOUDINITLOCAL_STARTTIME_FORMATTED, CloudInitStartTime: $CLOUDINIT_STARTTIME_FORMATTED, CloudFinalStartTime: $CLOUDINITFINAL_STARTTIME_FORMATTED, NetworkdStartTime: $NETWORKD_STARTTIME_FORMATTED, GuestAgentStartTime: $GUEST_AGENT_STARTTIME_FORMATTED, KubeletStartTime: $KUBELET_START_TIME_FORMATTED, KubeletReadyTime: $KUBELET_READY_TIME_FORMATTED } | tostring' -) -message_string=$(echo $message_string | sed 's/\\//g' | sed 's/^.\(.*\).$/\1/') - -EVENT_JSON=$( jq -n \ - --arg Timestamp "${CSE_STARTTIME_FORMATTED}" \ - --arg OperationId "${CSE_ENDTIME_FORMATTED}" \ - --arg Version "1.23" \ - --arg TaskName "AKS.CSE.cse_start" \ - --arg EventLevel "${eventlevel}" \ - --arg Message "${message_string}" \ - --arg EventPid "0" \ - --arg EventTid "0" \ - '{Timestamp: $Timestamp, OperationId: $OperationId, Version: $Version, TaskName: $TaskName, EventLevel: $EventLevel, Message: $Message, EventPid: $EventPid, EventTid: $EventTid}' -) -echo ${EVENT_JSON} > ${EVENTS_LOGGING_DIR}${EVENTS_FILE_NAME}.json - -upload_logs() { - if test -x /opt/azure/containers/aks-log-collector.sh; then - /opt/azure/containers/aks-log-collector.sh >/var/log/azure/aks/cse-aks-log-collector.log 2>&1 - else - PYTHONPATH=$(find /var/lib/waagent -name WALinuxAgent\*.egg | sort -rV | head -n1) - python3 $PYTHONPATH -collect-logs -full >/dev/null 2>&1 - python3 /opt/azure/containers/provision_send_logs.py >/dev/null 2>&1 - fi -} -if [ $EXIT_CODE -ne 0 ]; then - upload_logs -else - upload_logs & -fi - -exit $EXIT_CODE \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line314.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line314.sh deleted file mode 100644 index 21f8bec58d6..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line314.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -x -source "${CSE_HELPERS_FILEPATH}" -source "${CSE_DISTRO_HELPERS_FILEPATH}" - -echo " dns-search ${CUSTOM_SEARCH_DOMAIN_NAME}" | tee -a /etc/network/interfaces.d/50-cloud-init.cfg -systemctl_restart 20 5 10 networking -wait_for_apt_locks -retrycmd_if_failure 10 5 120 apt-get -y install realmd sssd sssd-tools samba-common samba samba-common python2.7 samba-libs packagekit -wait_for_apt_locks -echo "${CUSTOM_SEARCH_REALM_PASSWORD}" | realm join -U ${CUSTOM_SEARCH_REALM_USER}@$(echo "${CUSTOM_SEARCH_DOMAIN_NAME}" | tr /a-z/ /A-Z/) $(echo "${CUSTOM_SEARCH_DOMAIN_NAME}" | tr /a-z/ /A-Z/) diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line33.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line33.sh deleted file mode 100644 index 6357bdbe386..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line33.sh +++ /dev/null @@ -1,368 +0,0 @@ -#!/bin/bash -ERR_FILE_WATCH_TIMEOUT=6 -set -x -if [ -f /opt/azure/containers/provision.complete ]; then - echo "Already ran to success exiting..." - exit 0 -fi - -aptmarkWALinuxAgent hold & - -LOG_DIR=/var/log/azure/aks -mkdir -p ${LOG_DIR} -ln -s /var/log/azure/cluster-provision.log \ - /var/log/azure/cluster-provision-cse-output.log \ - /opt/azure/*.json \ - /opt/azure/cloud-init-files.paved \ - /opt/azure/vhd-install.complete \ - ${LOG_DIR}/ - -python3 /opt/azure/containers/provision_redact_cloud_config.py \ - --cloud-config-path /var/lib/cloud/instance/cloud-config.txt \ - --output-path ${LOG_DIR}/cloud-config.txt - -UBUNTU_RELEASE=$(lsb_release -r -s) -if [[ ${UBUNTU_RELEASE} == "16.04" ]]; then - sudo apt-get -y autoremove chrony - echo $? - sudo systemctl restart systemd-timesyncd -fi - -echo $(date),$(hostname), startcustomscript>>/opt/m - -for i in $(seq 1 3600); do - if [ -s "${CSE_HELPERS_FILEPATH}" ]; then - grep -Fq '#HELPERSEOF' "${CSE_HELPERS_FILEPATH}" && break - fi - if [ $i -eq 3600 ]; then - exit $ERR_FILE_WATCH_TIMEOUT - else - sleep 1 - fi -done -sed -i "/#HELPERSEOF/d" "${CSE_HELPERS_FILEPATH}" -source "${CSE_HELPERS_FILEPATH}" - -source "${CSE_DISTRO_HELPERS_FILEPATH}" -source "${CSE_INSTALL_FILEPATH}" -source "${CSE_DISTRO_INSTALL_FILEPATH}" -source "${CSE_CONFIG_FILEPATH}" - -if [[ "${DISABLE_SSH}" == "true" ]]; then - disableSSH || exit $ERR_DISABLE_SSH -fi - -echo "private egress proxy address is '${PRIVATE_EGRESS_PROXY_ADDRESS}'" - -if [[ "${SHOULD_CONFIGURE_HTTP_PROXY}" == "true" ]]; then - if [[ "${SHOULD_CONFIGURE_HTTP_PROXY_CA}" == "true" ]]; then - configureHTTPProxyCA || exit $ERR_UPDATE_CA_CERTS - fi - configureEtcEnvironment -fi - - -if [[ "${SHOULD_CONFIGURE_CUSTOM_CA_TRUST}" == "true" ]]; then - configureCustomCaCertificate || exit $ERR_UPDATE_CA_CERTS -fi - -if [[ -n "${OUTBOUND_COMMAND}" ]]; then - if [[ -n "${PROXY_VARS}" ]]; then - eval $PROXY_VARS - fi - retrycmd_if_failure 50 1 5 $OUTBOUND_COMMAND >> /var/log/azure/cluster-provision-cse-output.log 2>&1 || exit $ERR_OUTBOUND_CONN_FAIL; -fi - -source /etc/os-release - -if [[ ${ID} != "mariner" ]]; then - echo "Removing man-db auto-update flag file..." - logs_to_events "AKS.CSE.removeManDbAutoUpdateFlagFile" removeManDbAutoUpdateFlagFile -fi - -export -f should_skip_nvidia_drivers -skip_nvidia_driver_install=$(retrycmd_if_failure_no_stats 10 1 10 bash -cx should_skip_nvidia_drivers) -ret=$? -if [[ "$ret" != "0" ]]; then - echo "Failed to determine if nvidia driver install should be skipped" - exit $ERR_NVIDIA_DRIVER_INSTALL -fi - -if [[ "${GPU_NODE}" != "true" ]] || [[ "${skip_nvidia_driver_install}" == "true" ]]; then - logs_to_events "AKS.CSE.cleanUpGPUDrivers" cleanUpGPUDrivers -fi - -logs_to_events "AKS.CSE.disableSystemdResolved" disableSystemdResolved - -logs_to_events "AKS.CSE.configureAdminUser" configureAdminUser - -VHD_LOGS_FILEPATH=/opt/azure/vhd-install.complete -if [ -f $VHD_LOGS_FILEPATH ]; then - echo "detected golden image pre-install" - logs_to_events "AKS.CSE.cleanUpContainerImages" cleanUpContainerImages - FULL_INSTALL_REQUIRED=false -else - if [[ "${IS_VHD}" = true ]]; then - echo "Using VHD distro but file $VHD_LOGS_FILEPATH not found" - exit $ERR_VHD_FILE_NOT_FOUND - fi - FULL_INSTALL_REQUIRED=true -fi - -if [[ $OS == $UBUNTU_OS_NAME ]] && [ "$FULL_INSTALL_REQUIRED" = "true" ]; then - logs_to_events "AKS.CSE.installDeps" installDeps -else - echo "Golden image; skipping dependencies installation" -fi - -logs_to_events "AKS.CSE.installContainerRuntime" installContainerRuntime -if [ "${NEEDS_CONTAINERD}" == "true" ] && [ "${TELEPORT_ENABLED}" == "true" ]; then - logs_to_events "AKS.CSE.installTeleportdPlugin" installTeleportdPlugin -fi - -setupCNIDirs - -logs_to_events "AKS.CSE.installNetworkPlugin" installNetworkPlugin - -if [ "${IS_KRUSTLET}" == "true" ]; then - logs_to_events "AKS.CSE.downloadKrustlet" downloadContainerdWasmShims -fi - -if [ "${ENABLE_SECURE_TLS_BOOTSTRAPPING}" == "true" ]; then - logs_to_events "AKS.CSE.downloadSecureTLSBootstrapKubeletExecPlugin" downloadSecureTLSBootstrapKubeletExecPlugin -fi - -REBOOTREQUIRED=false - -echo $(date),$(hostname), "Start configuring GPU drivers" -if [[ "${GPU_NODE}" = true ]] && [[ "${skip_nvidia_driver_install}" != "true" ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers" ensureGPUDrivers - if [[ "${ENABLE_GPU_DEVICE_PLUGIN_IF_NEEDED}" = true ]]; then - if [[ "${MIG_NODE}" == "true" ]] && [[ -f "/etc/systemd/system/nvidia-device-plugin.service" ]]; then - mkdir -p "/etc/systemd/system/nvidia-device-plugin.service.d" - tee "/etc/systemd/system/nvidia-device-plugin.service.d/10-mig_strategy.conf" > /dev/null <<'EOF' -[Service] -Environment="MIG_STRATEGY=--mig-strategy single" -ExecStart= -ExecStart=/usr/local/nvidia/bin/nvidia-device-plugin $MIG_STRATEGY -EOF - fi - logs_to_events "AKS.CSE.start.nvidia-device-plugin" "systemctlEnableAndStart nvidia-device-plugin" || exit $ERR_GPU_DEVICE_PLUGIN_START_FAIL - else - logs_to_events "AKS.CSE.stop.nvidia-device-plugin" "systemctlDisableAndStop nvidia-device-plugin" - fi - - if [[ "${GPU_NEEDS_FABRIC_MANAGER}" == "true" ]]; then - if [[ $OS == $MARINER_OS_NAME ]]; then - logs_to_events "AKS.CSE.installNvidiaFabricManager" installNvidiaFabricManager - fi - logs_to_events "AKS.CSE.nvidia-fabricmanager" "systemctlEnableAndStart nvidia-fabricmanager" || exit $ERR_GPU_DRIVERS_START_FAIL - fi - - if [[ "${MIG_NODE}" == "true" ]]; then - REBOOTREQUIRED=true - - logs_to_events "AKS.CSE.ensureMigPartition" ensureMigPartition - fi -fi - -echo $(date),$(hostname), "End configuring GPU drivers" - -if [ "${NEEDS_DOCKER_LOGIN}" == "true" ]; then - set +x - docker login -u $SERVICE_PRINCIPAL_CLIENT_ID -p $SERVICE_PRINCIPAL_CLIENT_SECRET "${AZURE_PRIVATE_REGISTRY_SERVER}" - set -x -fi - -if [ "${ENABLE_IMDS_RESTRICTION}" == "true" ]; then - logs_to_events "AKS.CSE.ensureIMDSRestrictionRule" ensureIMDSRestrictionRule "${INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE}" -else - logs_to_events "AKS.CSE.disableIMDSRestriction" disableIMDSRestriction -fi - -logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy" installKubeletKubectlAndKubeProxy - -createKubeManifestDir - -if [ "${HAS_CUSTOM_SEARCH_DOMAIN}" == "true" ]; then - "${CUSTOM_SEARCH_DOMAIN_FILEPATH}" > /opt/azure/containers/setup-custom-search-domain.log 2>&1 || exit $ERR_CUSTOM_SEARCH_DOMAINS_FAIL -fi - - -mkdir -p "/etc/systemd/system/kubelet.service.d" - -logs_to_events "AKS.CSE.configureK8s" configureK8s - -logs_to_events "AKS.CSE.configureCNI" configureCNI - -if [ "${IPV6_DUAL_STACK_ENABLED}" == "true" ]; then - logs_to_events "AKS.CSE.ensureDHCPv6" ensureDHCPv6 -fi - -if [[ $OS == $MARINER_OS_NAME ]]; then - logs_to_events "AKS.CSE.configureSystemdUseDomains" configureSystemdUseDomains -fi - -if [ "${NEEDS_CONTAINERD}" == "true" ]; then - logs_to_events "AKS.CSE.ensureContainerd" ensureContainerd -else - logs_to_events "AKS.CSE.ensureDocker" ensureDocker -fi - -if [[ "${MESSAGE_OF_THE_DAY}" != "" ]]; then - echo "${MESSAGE_OF_THE_DAY}" | base64 -d > /etc/motd -fi - -if [[ "${TARGET_CLOUD}" == "AzureChinaCloud" ]]; then - retagMCRImagesForChina -fi - -if [[ "${ENABLE_HOSTS_CONFIG_AGENT}" == "true" ]]; then - logs_to_events "AKS.CSE.configPrivateClusterHosts" configPrivateClusterHosts -fi - -if [ "${SHOULD_CONFIG_TRANSPARENT_HUGE_PAGE}" == "true" ]; then - logs_to_events "AKS.CSE.configureTransparentHugePage" configureTransparentHugePage -fi - -if [ "${SHOULD_CONFIG_SWAP_FILE}" == "true" ]; then - logs_to_events "AKS.CSE.configureSwapFile" configureSwapFile -fi - -if [ "${NEEDS_CGROUPV2}" == "true" ]; then - tee "/etc/systemd/system/kubelet.service.d/10-cgroupv2.conf" > /dev/null < /etc/containerd/kubenet_template.conf - - tee "/etc/systemd/system/kubelet.service.d/10-containerd-base-flag.conf" > /dev/null <<'EOF' -[Service] -Environment="KUBELET_CONTAINERD_FLAGS=--runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --runtime-cgroups=/system.slice/containerd.service" -EOF - - if ! semverCompare ${KUBERNETES_VERSION:-"0.0.0"} "1.27.0"; then - tee "/etc/systemd/system/kubelet.service.d/10-container-runtime-flag.conf" > /dev/null <<'EOF' -[Service] -Environment="KUBELET_CONTAINER_RUNTIME_FLAG=--container-runtime=remote" -EOF - fi -fi - -if [ "${HAS_KUBELET_DISK_TYPE}" == "true" ]; then - tee "/etc/systemd/system/kubelet.service.d/10-bindmount.conf" > /dev/null < /sys/bus/vmbus/drivers/hv_util/unbind - sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local - fi -fi - -VALIDATION_ERR=0 - -API_SERVER_CONN_RETRIES=50 -if [[ $API_SERVER_NAME == *.privatelink.* ]]; then - API_SERVER_CONN_RETRIES=100 -fi -if ! [[ ${API_SERVER_NAME} =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - API_SERVER_DNS_RETRY_TIMEOUT=300 - if [[ $API_SERVER_NAME == *.privatelink.* ]]; then - API_SERVER_DNS_RETRY_TIMEOUT=600 - fi - if [[ "${ENABLE_HOSTS_CONFIG_AGENT}" != "true" ]]; then - RES=$(logs_to_events "AKS.CSE.apiserverNslookup" "retrycmd_nslookup 1 15 ${API_SERVER_DNS_RETRY_TIMEOUT} ${API_SERVER_NAME}") - STS=$? - else - STS=0 - fi - if [[ $STS != 0 ]]; then - time nslookup ${API_SERVER_NAME} - if [[ $RES == *"168.63.129.16"* ]]; then - VALIDATION_ERR=$ERR_K8S_API_SERVER_AZURE_DNS_LOOKUP_FAIL - else - VALIDATION_ERR=$ERR_K8S_API_SERVER_DNS_LOOKUP_FAIL - fi - else - logs_to_events "AKS.CSE.apiserverNC" "retrycmd_if_failure ${API_SERVER_CONN_RETRIES} 1 10 nc -vz ${API_SERVER_NAME} 443" || time nc -vz ${API_SERVER_NAME} 443 || VALIDATION_ERR=$ERR_K8S_API_SERVER_CONN_FAIL - fi -else - logs_to_events "AKS.CSE.apiserverNC" "retrycmd_if_failure ${API_SERVER_CONN_RETRIES} 1 10 nc -vz ${API_SERVER_NAME} 443" || time nc -vz ${API_SERVER_NAME} 443 || VALIDATION_ERR=$ERR_K8S_API_SERVER_CONN_FAIL -fi - -if [[ ${ID} != "mariner" ]]; then - echo "Recreating man-db auto-update flag file and kicking off man-db update process at $(date)" - createManDbAutoUpdateFlagFile - /usr/bin/mandb && echo "man-db finished updates at $(date)" & -fi - -if $REBOOTREQUIRED; then - echo 'reboot required, rebooting node in 1 minute' - /bin/bash -c "shutdown -r 1 &" - if [[ $OS == $UBUNTU_OS_NAME ]]; then - aptmarkWALinuxAgent unhold & - fi -else - if [[ $OS == $UBUNTU_OS_NAME ]]; then - if [ "${ENABLE_UNATTENDED_UPGRADES}" == "true" ]; then - UU_CONFIG_DIR="/etc/apt/apt.conf.d/99periodic" - mkdir -p "$(dirname "${UU_CONFIG_DIR}")" - touch "${UU_CONFIG_DIR}" - chmod 0644 "${UU_CONFIG_DIR}" - echo 'APT::Periodic::Update-Package-Lists "1";' >> "${UU_CONFIG_DIR}" - echo 'APT::Periodic::Unattended-Upgrade "1";' >> "${UU_CONFIG_DIR}" - systemctl unmask apt-daily.service apt-daily-upgrade.service - systemctl enable apt-daily.service apt-daily-upgrade.service - systemctl enable apt-daily.timer apt-daily-upgrade.timer - systemctl restart --no-block apt-daily.timer apt-daily-upgrade.timer - systemctl restart --no-block apt-daily.service - - fi - aptmarkWALinuxAgent unhold & - elif [[ $OS == $MARINER_OS_NAME ]]; then - if [ "${ENABLE_UNATTENDED_UPGRADES}" == "true" ]; then - if [ "${IS_KATA}" == "true" ]; then - echo 'EnableUnattendedUpgrade is not supported by kata images, will not be enabled' - else - systemctl disable dnf-automatic-notifyonly.timer - systemctl stop dnf-automatic-notifyonly.timer - systemctl unmask dnf-automatic-install.service || exit $ERR_SYSTEMCTL_START_FAIL - systemctl unmask dnf-automatic-install.timer || exit $ERR_SYSTEMCTL_START_FAIL - systemctlEnableAndStart dnf-automatic-install.timer || exit $ERR_SYSTEMCTL_START_FAIL - fi - fi - fi -fi - -echo "Custom script finished. API server connection check code:" $VALIDATION_ERR -echo $(date),$(hostname), endcustomscript>>/opt/m -mkdir -p /opt/azure/containers && touch /opt/azure/containers/provision.complete - -exit $VALIDATION_ERR - - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line40.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line40.sh deleted file mode 100644 index 1c74ace1058..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line40.sh +++ /dev/null @@ -1,588 +0,0 @@ -#!/bin/bash - -CC_SERVICE_IN_TMP=/opt/azure/containers/cc-proxy.service.in -CC_SOCKET_IN_TMP=/opt/azure/containers/cc-proxy.socket.in -CNI_CONFIG_DIR="/etc/cni/net.d" -CNI_BIN_DIR="/opt/cni/bin" -#TODO pull this out of componetns.json too? -CNI_DOWNLOADS_DIR="/opt/cni/downloads" -CRICTL_DOWNLOAD_DIR="/opt/crictl/downloads" -CRICTL_BIN_DIR="/usr/local/bin" -CONTAINERD_DOWNLOADS_DIR="/opt/containerd/downloads" -RUNC_DOWNLOADS_DIR="/opt/runc/downloads" -K8S_DOWNLOADS_DIR="/opt/kubernetes/downloads" -K8S_PRIVATE_PACKAGES_CACHE_DIR="/opt/kubernetes/downloads/private-packages" -UBUNTU_RELEASE=$(lsb_release -r -s) -SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR="/opt/azure/tlsbootstrap" -SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION="v0.1.0-alpha.2" -TELEPORTD_PLUGIN_DOWNLOAD_DIR="/opt/teleportd/downloads" -CREDENTIAL_PROVIDER_DOWNLOAD_DIR="/opt/credentialprovider/downloads" -CREDENTIAL_PROVIDER_BIN_DIR="/var/lib/kubelet/credential-provider" -TELEPORTD_PLUGIN_BIN_DIR="/usr/local/bin" -CONTAINERD_WASM_VERSIONS="v0.3.0 v0.5.1 v0.8.0" -MANIFEST_FILEPATH="/opt/azure/manifest.json" -COMPONENTS_FILEPATH="/opt/azure/components.json" -MAN_DB_AUTO_UPDATE_FLAG_FILEPATH="/var/lib/man-db/auto-update" -CURL_OUTPUT=/tmp/curl_verbose.out -UBUNTU_OS_NAME="UBUNTU" -MARINER_OS_NAME="MARINER" - -removeManDbAutoUpdateFlagFile() { - rm -f $MAN_DB_AUTO_UPDATE_FLAG_FILEPATH -} - -createManDbAutoUpdateFlagFile() { - touch $MAN_DB_AUTO_UPDATE_FLAG_FILEPATH -} - -cleanupContainerdDlFiles() { - rm -rf $CONTAINERD_DOWNLOADS_DIR -} - -installContainerdWithComponentsJson() { - os=${UBUNTU_OS_NAME} - if [[ -z "$UBUNTU_RELEASE" ]]; then - os=${MARINER_OS_NAME} - os_version="current" - else - os_version="${UBUNTU_RELEASE}" - fi - - containerdPackage=$(jq ".Packages" "$COMPONENTS_FILEPATH" | jq ".[] | select(.name == \"containerd\")") || exit $ERR_CONTAINERD_VERSION_INVALID - PACKAGE_VERSIONS=() - if [[ "${os}" == "${MARINER_OS_NAME}" && "${IS_KATA}" == "true" ]]; then - os=${MARINER_KATA_OS_NAME} - fi - returnPackageVersions "${containerdPackage}" "${os}" "${os_version}" - - #Containerd's versions array is expected to have only one element. - #If it has more than one element, we will install the last element in the array. - if [[ ${#PACKAGE_VERSIONS[@]} -gt 1 ]]; then - echo "WARNING: containerd package versions array has more than one element. Installing the last element in the array." - fi - if [[ ${#PACKAGE_VERSIONS[@]} -eq 0 || ${PACKAGE_VERSIONS[0]} == "" ]]; then - echo "INFO: containerd package versions array is either empty or the first element is . Skipping containerd installation." - return 0 - fi - IFS=$'\n' sortedPackageVersions=($(sort -V <<<"${PACKAGE_VERSIONS[*]}")) - unset IFS - array_size=${#sortedPackageVersions[@]} - [[ $((array_size-1)) -lt 0 ]] && last_index=0 || last_index=$((array_size-1)) - packageVersion=${sortedPackageVersions[${last_index}]} - containerdMajorMinorPatchVersion="$(echo "$packageVersion" | cut -d- -f1)" - containerdHotFixVersion="$(echo "$packageVersion" | cut -d- -s -f2)" - if [ -z "$containerdMajorMinorPatchVersion" ] || [ "$containerdMajorMinorPatchVersion" == "null" ] || [ "$containerdHotFixVersion" == "null" ]; then - echo "invalid containerd version: $packageVersion" - exit $ERR_CONTAINERD_VERSION_INVALID - fi - logs_to_events "AKS.CSE.installContainerRuntime.installStandaloneContainerd" "installStandaloneContainerd ${containerdMajorMinorPatchVersion} ${containerdHotFixVersion}" - echo "in installContainerRuntime - CONTAINERD_VERSION = ${packageVersion}" - -} - -installContainerdWithManifestJson() { - local containerd_version - if [ -f "$MANIFEST_FILEPATH" ]; then - local containerd_version - containerd_version="$(jq -r .containerd.edge "$MANIFEST_FILEPATH")" - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - containerd_version="$(jq -r '.containerd.pinned."1804"' "$MANIFEST_FILEPATH")" - fi - else - echo "WARNING: containerd version not found in manifest, defaulting to hardcoded." - fi - containerd_patch_version="$(echo "$containerd_version" | cut -d- -f1)" - containerd_revision="$(echo "$containerd_version" | cut -d- -f2)" - if [ -z "$containerd_patch_version" ] || [ "$containerd_patch_version" == "null" ] || [ "$containerd_revision" == "null" ]; then - echo "invalid container version: $containerd_version" - exit $ERR_CONTAINERD_INSTALL_TIMEOUT - fi - logs_to_events "AKS.CSE.installContainerRuntime.installStandaloneContainerd" "installStandaloneContainerd ${containerd_patch_version} ${containerd_revision}" - echo "in installContainerRuntime - CONTAINERD_VERSION = ${containerd_patch_version}" -} - -installContainerRuntime() { - echo "in installContainerRuntime - KUBERNETES_VERSION = ${KUBERNETES_VERSION}" - if [[ "${NEEDS_CONTAINERD}" != "true" ]]; then - installMoby - fi - if [ -f "$COMPONENTS_FILEPATH" ] && jq '.Packages[] | select(.name == "containerd")' < $COMPONENTS_FILEPATH > /dev/null; then - echo "Package \"containerd\" exists in $COMPONENTS_FILEPATH." - installContainerdWithComponentsJson - return - fi - echo "Package \"containerd\" does not exist in $COMPONENTS_FILEPATH." - installContainerdWithManifestJson -} - -installNetworkPlugin() { - if [[ "${NETWORK_PLUGIN}" = "azure" ]]; then - installAzureCNI - fi - installCNI #reference plugins. Mostly for kubenet but loopback plugin is used by containerd until containerd 2 - rm -rf $CNI_DOWNLOADS_DIR & -} - - -downloadCredentalProvider() { - mkdir -p $CREDENTIAL_PROVIDER_DOWNLOAD_DIR - CREDENTIAL_PROVIDER_TGZ_TMP=${CREDENTIAL_PROVIDER_DOWNLOAD_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$CREDENTIAL_PROVIDER_DOWNLOAD_DIR/$CREDENTIAL_PROVIDER_TGZ_TMP" "$CREDENTIAL_PROVIDER_DOWNLOAD_URL" || exit $ERR_CREDENTIAL_PROVIDER_DOWNLOAD_TIMEOUT -} - -installCredentalProvider() { - logs_to_events "AKS.CSE.installCredentalProvider.downloadCredentalProvider" downloadCredentalProvider - tar -xzf "$CREDENTIAL_PROVIDER_DOWNLOAD_DIR/${CREDENTIAL_PROVIDER_TGZ_TMP}" -C $CREDENTIAL_PROVIDER_DOWNLOAD_DIR - mkdir -p "${CREDENTIAL_PROVIDER_BIN_DIR}" - chown -R root:root "${CREDENTIAL_PROVIDER_BIN_DIR}" - mv "${CREDENTIAL_PROVIDER_DOWNLOAD_DIR}/azure-acr-credential-provider" "${CREDENTIAL_PROVIDER_BIN_DIR}/acr-credential-provider" - chmod 755 "${CREDENTIAL_PROVIDER_BIN_DIR}/acr-credential-provider" - rm -rf ${CREDENTIAL_PROVIDER_DOWNLOAD_DIR} -} - -downloadSecureTLSBootstrapKubeletExecPlugin() { - local plugin_url="https://k8sreleases.blob.core.windows.net/aks-tls-bootstrap-client/${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION}/linux/amd64/tls-bootstrap-client" - if [[ $(isARM64) == 1 ]]; then - plugin_url="https://k8sreleases.blob.core.windows.net/aks-tls-bootstrap-client/${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION}/linux/arm64/tls-bootstrap-client" - fi - - mkdir -p $SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR - plugin_download_path="${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR}/tls-bootstrap-client" - - if [ ! -f "$plugin_download_path" ]; then - retrycmd_if_failure 30 5 60 curl -fSL -o "$plugin_download_path" "$plugin_url" || exit $ERR_DOWNLOAD_SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_TIMEOUT - chown -R root:root "$SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR" - chmod -R 755 "$SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR" - fi -} - -downloadContainerdWasmShims() { - declare -a wasmShimPids=() - for shim_version in $CONTAINERD_WASM_VERSIONS; do - binary_version="$(echo "${shim_version}" | tr . -)" - local containerd_wasm_filepath="/usr/local/bin" - local containerd_wasm_url="https://acs-mirror.azureedge.net/containerd-wasm-shims/${shim_version}/linux/amd64" - if [[ $(isARM64) == 1 ]]; then - containerd_wasm_url="https://acs-mirror.azureedge.net/containerd-wasm-shims/${shim_version}/linux/arm64" - fi - - if [ ! -f "$containerd_wasm_filepath/containerd-shim-spin-${shim_version}" ] || [ ! -f "$containerd_wasm_filepath/containerd-shim-slight-${shim_version}" ]; then - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-spin-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-spin-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-slight-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-slight-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - if [ "$shim_version" == "v0.8.0" ]; then - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-wws-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-wws-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - fi - fi - done - wait ${wasmShimPids[@]} - for shim_version in $CONTAINERD_WASM_VERSIONS; do - binary_version="$(echo "${shim_version}" | tr . -)" - chmod 755 "$containerd_wasm_filepath/containerd-shim-spin-${binary_version}-v1" - chmod 755 "$containerd_wasm_filepath/containerd-shim-slight-${binary_version}-v1" - if [ "$shim_version" == "v0.8.0" ]; then - chmod 755 "$containerd_wasm_filepath/containerd-shim-wws-${binary_version}-v1" - fi - done -} - -installOras() { - ORAS_DOWNLOAD_DIR="/opt/oras/downloads" - ORAS_EXTRACTED_DIR=${1} - ORAS_DOWNLOAD_URL=${2} - ORAS_VERSION=${3} - - mkdir -p $ORAS_DOWNLOAD_DIR - - echo "Installing Oras version $ORAS_VERSION..." - ORAS_TMP=${ORAS_DOWNLOAD_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" ${ORAS_DOWNLOAD_URL} || exit $ERR_ORAS_DOWNLOAD_ERROR - - if [ ! -f "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" ]; then - echo "File $ORAS_DOWNLOAD_DIR/${ORAS_TMP} does not exist." - exit $ERR_ORAS_DOWNLOAD_ERROR - fi - - echo "File $ORAS_DOWNLOAD_DIR/${ORAS_TMP} exists." - sudo tar -zxf "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" -C $ORAS_EXTRACTED_DIR/ - rm -r "$ORAS_DOWNLOAD_DIR" - echo "Oras version $ORAS_VERSION installed successfully." - -} - -evalPackageDownloadURL() { - local url=${1:-} - if [[ -n "$url" ]]; then - eval "result=${url}" - echo $result - return - fi - echo "" -} - -downloadAzureCNI() { - mkdir -p ${1-$:CNI_DOWNLOADS_DIR} - VNET_CNI_PLUGINS_URL=${2:-$VNET_CNI_PLUGINS_URL} - if [[ -z "$VNET_CNI_PLUGINS_URL" ]]; then - echo "VNET_CNI_PLUGINS_URL is not set. Exiting..." - return - fi - CNI_TGZ_TMP=${VNET_CNI_PLUGINS_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" ${VNET_CNI_PLUGINS_URL} || exit $ERR_CNI_DOWNLOAD_TIMEOUT -} - -downloadCrictl() { - #if $1 is empty, take ${CRICTL_DOWNLOAD_DIR} as default value. Otherwise take $1 as the value - downloadDir=${1:-${CRICTL_DOWNLOAD_DIR}} - mkdir -p $downloadDir - url=${2} - crictlTgzTmp=${url##*/} - retrycmd_curl_file 10 5 60 "$downloadDir/${crictlTgzTmp}" ${url} || exit $ERR_CRICTL_DOWNLOAD_TIMEOUT -} - -installCrictl() { - CPU_ARCH=$(getCPUArch) - currentVersion=$(crictl --version 2>/dev/null | sed 's/crictl version //g') - if [[ "${currentVersion}" != "" ]]; then - echo "version ${currentVersion} of crictl already installed. skipping installCrictl of target version ${KUBERNETES_VERSION%.*}.0" - else - CRICTL_TGZ_TEMP="crictl-v${CRICTL_VERSION}-linux-${CPU_ARCH}.tar.gz" - if [[ ! -f "$CRICTL_DOWNLOAD_DIR/${CRICTL_TGZ_TEMP}" ]]; then - rm -rf ${CRICTL_DOWNLOAD_DIR} - echo "pre-cached crictl not found: skipping installCrictl" - return 1 - fi - echo "Unpacking crictl into ${CRICTL_BIN_DIR}" - tar zxvf "$CRICTL_DOWNLOAD_DIR/${CRICTL_TGZ_TEMP}" -C ${CRICTL_BIN_DIR} - chown root:root $CRICTL_BIN_DIR/crictl - chmod 755 $CRICTL_BIN_DIR/crictl - fi -} - -downloadTeleportdPlugin() { - DOWNLOAD_URL=$1 - TELEPORTD_VERSION=$2 - if [[ $(isARM64) == 1 ]]; then - return - fi - - if [[ -z ${DOWNLOAD_URL} ]]; then - echo "download url parameter for downloadTeleportdPlugin was not given" - exit $ERR_TELEPORTD_DOWNLOAD_ERR - fi - if [[ -z ${TELEPORTD_VERSION} ]]; then - echo "teleportd version not given" - exit $ERR_TELEPORTD_DOWNLOAD_ERR - fi - mkdir -p $TELEPORTD_PLUGIN_DOWNLOAD_DIR - retrycmd_curl_file 10 5 60 "${TELEPORTD_PLUGIN_DOWNLOAD_DIR}/teleportd-v${TELEPORTD_VERSION}" "${DOWNLOAD_URL}/v${TELEPORTD_VERSION}/teleportd" || exit ${ERR_TELEPORTD_DOWNLOAD_ERR} -} - -installTeleportdPlugin() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - CURRENT_VERSION=$(teleportd --version 2>/dev/null | sed 's/teleportd version v//g') - local TARGET_VERSION="0.8.0" - if semverCompare ${CURRENT_VERSION:-"0.0.0"} ${TARGET_VERSION}; then - echo "currently installed teleportd version ${CURRENT_VERSION} is greater than (or equal to) target base version ${TARGET_VERSION}. skipping installTeleportdPlugin." - else - downloadTeleportdPlugin ${TELEPORTD_PLUGIN_DOWNLOAD_URL} ${TARGET_VERSION} - mv "${TELEPORTD_PLUGIN_DOWNLOAD_DIR}/teleportd-v${TELEPORTD_VERSION}" "${TELEPORTD_PLUGIN_BIN_DIR}/teleportd" || exit ${ERR_TELEPORTD_INSTALL_ERR} - chmod 755 "${TELEPORTD_PLUGIN_BIN_DIR}/teleportd" || exit ${ERR_TELEPORTD_INSTALL_ERR} - fi - rm -rf ${TELEPORTD_PLUGIN_DOWNLOAD_DIR} -} - -setupCNIDirs() { - mkdir -p $CNI_BIN_DIR - chown -R root:root $CNI_BIN_DIR - chmod -R 755 $CNI_BIN_DIR - - mkdir -p $CNI_CONFIG_DIR - chown -R root:root $CNI_CONFIG_DIR - chmod 755 $CNI_CONFIG_DIR -} - - -installCNI() { - - if [ ! -f "$COMPONENTS_FILEPATH" ] || ! jq '.Packages[] | select(.name == "cni-plugins")' < $COMPONENTS_FILEPATH > /dev/null; then - echo "WARNING: no cni-plugins components present falling back to hard coded download of 1.4.1. This should error eventually" - retrycmd_get_tarball 120 5 "${CNI_DOWNLOADS_DIR}/refcni.tar.gz" "https://acs-mirror.azureedge.net/cni-plugins/v1.4.1/binaries/cni-plugins-linux-amd64-v1.4.1.tgz" || exit - tar -xzf "${CNI_DOWNLOADS_DIR}/refcni.tar.gz" -C $CNI_BIN_DIR - return - fi - - #always just use what is listed in components.json so we don't have to sync. - cniPackage=$(jq ".Packages" "$COMPONENTS_FILEPATH" | jq ".[] | select(.name == \"cni-plugins\")") || exit $ERR_CNI_VERSION_INVALID - - #CNI doesn't really care about this but wanted to reuse returnPackageVersions which requires it. - os=${UBUNTU_OS_NAME} - if [[ -z "$UBUNTU_RELEASE" ]]; then - os=${MARINER_OS_NAME} - os_version="current" - fi - os_version="${UBUNTU_RELEASE}" - if [[ "${os}" == "${MARINER_OS_NAME}" && "${IS_KATA}" == "true" ]]; then - os=${MARINER_KATA_OS_NAME} - fi - PACKAGE_VERSIONS=() - returnPackageVersions "${cniPackage}" "${os}" "${os_version}" - - #should change to ne - if [[ ${#PACKAGE_VERSIONS[@]} -gt 1 ]]; then - echo "WARNING: containerd package versions array has more than one element. Installing the last element in the array." - exit $ERR_CONTAINERD_VERSION_INVALID - fi - packageVersion=${PACKAGE_VERSIONS[0]} - - if [[ $(isARM64) == 1 ]]; then - CNI_DIR_TMP="cni-plugins-linux-arm64-v${packageVersion}" - else - CNI_DIR_TMP="cni-plugins-linux-amd64-v${packageVersion}" - fi - - if [[ -d "$CNI_DOWNLOADS_DIR/${CNI_DIR_TMP}" ]]; then - #not clear to me when this would ever happen. assume its related to the line above Latest VHD should have the untar, older should have the tgz. - mv ${CNI_DOWNLOADS_DIR}/${CNI_DIR_TMP}/* $CNI_BIN_DIR - else - echo "CNI tarball should already be unzipped by components.json" - exit $ERR_CNI_VERSION_INVALID - fi - - chown -R root:root $CNI_BIN_DIR -} - -installAzureCNI() { - CNI_TGZ_TMP=${VNET_CNI_PLUGINS_URL##*/} # Use bash builtin # - CNI_DIR_TMP=${CNI_TGZ_TMP%.tgz} - - if [[ -d "$CNI_DOWNLOADS_DIR/${CNI_DIR_TMP}" ]]; then - mv ${CNI_DOWNLOADS_DIR}/${CNI_DIR_TMP}/* $CNI_BIN_DIR - else - if [[ ! -f "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" ]]; then - logs_to_events "AKS.CSE.installAzureCNI.downloadAzureCNI" downloadAzureCNI - fi - - tar -xzf "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" -C $CNI_BIN_DIR - fi - - chown -R root:root $CNI_BIN_DIR -} - -extractKubeBinaries() { - local k8s_version="$1" - local kube_binary_url="$2" - local is_private_url="$3" - local k8s_downloads_dir="$4" - - local k8s_tgz_tmp_filename=${kube_binary_url##*/} - - if [[ $is_private_url == true ]]; then - k8s_tgz_tmp="${K8S_PRIVATE_PACKAGES_CACHE_DIR}/${k8s_tgz_tmp_filename}" - - if [[ ! -f "${k8s_tgz_tmp}" ]]; then - echo "cached package ${k8s_tgz_tmp} not found" - return 1 - fi - - echo "cached package ${k8s_tgz_tmp} found, will extract that" - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* - else - k8s_tgz_tmp="${k8s_downloads_dir}/${k8s_tgz_tmp_filename}" - mkdir -p ${k8s_downloads_dir} - - retrycmd_get_tarball 120 5 "${k8s_tgz_tmp}" ${kube_binary_url} || exit $ERR_K8S_DOWNLOAD_TIMEOUT - if [[ ! -f ${k8s_tgz_tmp} ]]; then - exit "$ERR_K8S_DOWNLOAD_TIMEOUT" - fi - fi - - tar --transform="s|.*|&-${k8s_version}|" --show-transformed-names -xzvf "${k8s_tgz_tmp}" \ - --strip-components=3 -C /usr/local/bin kubernetes/node/bin/kubelet kubernetes/node/bin/kubectl || exit $ERR_K8S_INSTALL_ERR - if [[ ! -f /usr/local/bin/kubectl-${k8s_version} ]] || [[ ! -f /usr/local/bin/kubelet-${k8s_version} ]]; then - exit $ERR_K8S_INSTALL_ERR - fi - - if [[ $is_private_url == false ]]; then - rm -f "${k8s_tgz_tmp}" - fi -} - -installKubeletKubectlAndKubeProxy() { - CUSTOM_KUBE_BINARY_DOWNLOAD_URL="${CUSTOM_KUBE_BINARY_URL:=}" - PRIVATE_KUBE_BINARY_DOWNLOAD_URL="${PRIVATE_KUBE_BINARY_URL:=}" - echo "using private url: ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL}, custom url: ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL}" - install_default_if_missing=true - - if [[ ! -z ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL} ]]; then - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* - - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL} false - install_default_if_missing=false - elif [[ ! -z ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL} ]]; then - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL} true - fi - - if [[ ! -f "/usr/local/bin/kubectl-${KUBERNETES_VERSION}" ]] || [[ ! -f "/usr/local/bin/kubelet-${KUBERNETES_VERSION}" ]]; then - if [[ "$install_default_if_missing" == true ]]; then - #TODO: remove the condition check on KUBE_BINARY_URL once RP change is released - if (($(echo ${KUBERNETES_VERSION} | cut -d"." -f2) >= 17)) && [ -n "${KUBE_BINARY_URL}" ]; then - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${KUBE_BINARY_URL} false - fi - fi - fi - mv "/usr/local/bin/kubelet-${KUBERNETES_VERSION}" "/usr/local/bin/kubelet" - mv "/usr/local/bin/kubectl-${KUBERNETES_VERSION}" "/usr/local/bin/kubectl" - - chmod a+x /usr/local/bin/kubelet /usr/local/bin/kubectl - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* /home/hyperkube-downloads & -} - -pullContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - echo "pulling the image ${CONTAINER_IMAGE_URL} using ${CLI_TOOL}" - if [[ ${CLI_TOOL} == "ctr" ]]; then - logs_to_events "AKS.CSE.imagepullctr.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure_nostdout 2 1 120 ctr --namespace k8s.io image pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via ctr" && exit $ERR_CONTAINERD_CTR_IMG_PULL_TIMEOUT) - elif [[ ${CLI_TOOL} == "crictl" ]]; then - logs_to_events "AKS.CSE.imagepullcrictl.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure 2 1 120 crictl pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via crictl" && exit $ERR_CONTAINERD_CRICTL_IMG_PULL_TIMEOUT) - else - logs_to_events "AKS.CSE.imagepull.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure 2 1 120 docker pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via docker" && exit $ERR_DOCKER_IMG_PULL_TIMEOUT) - fi -} - -retagContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - RETAG_IMAGE_URL=$3 - echo "retagging from ${CONTAINER_IMAGE_URL} to ${RETAG_IMAGE_URL} using ${CLI_TOOL}" - if [[ ${CLI_TOOL} == "ctr" ]]; then - ctr --namespace k8s.io image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - elif [[ ${CLI_TOOL} == "crictl" ]]; then - crictl image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - else - docker image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - fi -} - -retagMCRImagesForChina() { - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - allMCRImages=($(ctr --namespace k8s.io images list | grep '^mcr.microsoft.com/' | awk '{print $1}')) - else - allMCRImages=($(docker images | grep '^mcr.microsoft.com/' | awk '{str = sprintf("%s:%s", $1, $2)} {print str}')) - fi - if [[ "${allMCRImages}" == "" ]]; then - echo "failed to find mcr images for retag" - return - fi - for mcrImage in ${allMCRImages[@]+"${allMCRImages[@]}"}; do - retagMCRImage=$(echo ${mcrImage} | sed -e 's/^mcr.microsoft.com/mcr.azk8s.cn/g') - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - retagContainerImage "ctr" ${mcrImage} ${retagMCRImage} - else - retagContainerImage "docker" ${mcrImage} ${retagMCRImage} - fi - done -} - -removeContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - if [[ "${CLI_TOOL}" == "docker" ]]; then - docker image rm $CONTAINER_IMAGE_URL - else - crictl rmi $CONTAINER_IMAGE_URL - fi -} - -cleanUpImages() { - local targetImage=$1 - export targetImage - function cleanupImagesRun() { - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - if [[ "${CLI_TOOL}" == "crictl" ]]; then - images_to_delete=$(crictl images | awk '{print $1":"$2}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - else - images_to_delete=$(ctr --namespace k8s.io images list | awk '{print $1}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - fi - else - images_to_delete=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - fi - local exit_code=$? - if [[ $exit_code != 0 ]]; then - exit $exit_code - elif [[ "${images_to_delete}" != "" ]]; then - echo "${images_to_delete}" | while read image; do - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - removeContainerImage ${CLI_TOOL} ${image} - else - removeContainerImage "docker" ${image} - fi - done - fi - } - export -f cleanupImagesRun - retrycmd_if_failure 10 5 120 bash -c cleanupImagesRun -} - -cleanUpKubeProxyImages() { - echo $(date),$(hostname), startCleanUpKubeProxyImages - cleanUpImages "kube-proxy" - echo $(date),$(hostname), endCleanUpKubeProxyImages -} - -cleanupRetaggedImages() { - if [[ "${TARGET_CLOUD}" != "AzureChinaCloud" ]]; then - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - if [[ "${CLI_TOOL}" == "crictl" ]]; then - images_to_delete=$(crictl images | awk '{print $1":"$2}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - else - images_to_delete=$(ctr --namespace k8s.io images list | awk '{print $1}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - fi - else - images_to_delete=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - fi - if [[ "${images_to_delete}" != "" ]]; then - echo "${images_to_delete}" | while read image; do - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - removeContainerImage "ctr" ${image} - else - removeContainerImage "docker" ${image} - fi - done - fi - else - echo "skipping container cleanup for AzureChinaCloud" - fi -} - -cleanUpContainerImages() { - export KUBERNETES_VERSION - export CLI_TOOL - export -f retrycmd_if_failure - export -f removeContainerImage - export -f cleanUpImages - export -f cleanUpKubeProxyImages - bash -c cleanUpKubeProxyImages & -} - -cleanUpContainerd() { - rm -Rf $CONTAINERD_DOWNLOADS_DIR -} - -overrideNetworkConfig() { - CONFIG_FILEPATH="/etc/cloud/cloud.cfg.d/80_azure_net_config.cfg" - touch ${CONFIG_FILEPATH} - cat <>${CONFIG_FILEPATH} -datasource: - Azure: - apply_network_config: false -EOF -} - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line47.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line47.sh deleted file mode 100644 index b6b6cad0f98..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line47.sh +++ /dev/null @@ -1,63 +0,0 @@ -import yaml -import argparse - -REDACTED = 'REDACTED' - -def redact_bootstrap_kubeconfig_tls_token(bootstrap_kubeconfig_write_file): - content_yaml = yaml.safe_load(bootstrap_kubeconfig_write_file['content']) - content_yaml['users'][0]['user']['token'] = REDACTED - bootstrap_kubeconfig_write_file['content'] = yaml.dump(content_yaml) - - -def redact_service_principal_secret(sp_secret_write_file): - sp_secret_write_file['content'] = REDACTED - - -PATH_TO_REDACT_FUNC = { - '/var/lib/kubelet/bootstrap-kubeconfig': redact_bootstrap_kubeconfig_tls_token, - '/etc/kubernetes/sp.txt': redact_service_principal_secret -} - - -def redact_cloud_config(cloud_config_path, output_path): - target_paths = set(PATH_TO_REDACT_FUNC.keys()) - - with open(cloud_config_path, 'r') as f: - cloud_config_data = f.read() - cloud_config = yaml.safe_load(cloud_config_data) - - for write_file in cloud_config['write_files']: - if write_file['path'] in target_paths: - target_path = write_file['path'] - target_paths.remove(target_path) - - print('Redacting secrets from write_file: ' + target_path) - PATH_TO_REDACT_FUNC[target_path](write_file) - - if len(target_paths) == 0: - break - - - print('Dumping redacted cloud-config to: ' + output_path) - with open(output_path, 'w+') as output_file: - output_file.write(yaml.dump(cloud_config)) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser( - description='Command line utility used to redact secrets from write_file definitions for ' + - str([", ".join(PATH_TO_REDACT_FUNC)]) + ' within a specified cloud-config.txt. \ - These secrets must be redacted before cloud-config.txt can be collected for logging.') - parser.add_argument( - "--cloud-config-path", - required=True, - type=str, - help='Path to cloud-config.txt to redact') - parser.add_argument( - "--output-path", - required=True, - type=str, - help='Path to the newly generated cloud-config.txt with redacted secrets') - - args = parser.parse_args() - redact_cloud_config(args.cloud_config_path, args.output_path) \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line54.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line54.sh deleted file mode 100644 index 14d099727b1..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line54.sh +++ /dev/null @@ -1,44 +0,0 @@ -#! /usr/bin/env python3 - -import urllib3 -import uuid -import xml.etree.ElementTree as ET - -http = urllib3.PoolManager() - -goal_state_xml = http.request( - 'GET', - 'http://168.63.129.16/machine/?comp=goalstate', - headers={ - 'x-ms-version': '2012-11-30' - } - ) -goal_state = ET.fromstring(goal_state_xml.data.decode('utf-8')) -container_id = goal_state.findall('./Container/ContainerId')[0].text -role_config_name = goal_state.findall('./Container/RoleInstanceList/RoleInstance/Configuration/ConfigName')[0].text -deployment_id = role_config_name.split('.')[0] - -with open('/var/lib/waagent/logcollector/logs.zip', 'rb') as logs: - logs_data = logs.read() - upload_logs = http.request( - 'PUT', - 'http://168.63.129.16:32526/vmAgentLog', - headers={ - 'x-ms-version': '2015-09-01', - 'x-ms-client-correlationid': str(uuid.uuid4()), - 'x-ms-client-name': 'AKSCSEPlugin', - 'x-ms-client-version': '0.1.0', - 'x-ms-containerid': container_id, - 'x-ms-vmagentlog-deploymentid': deployment_id, - }, - body=logs_data, - ) - -if upload_logs.status == 200: - print("Successfully uploaded logs") - exit(0) -else: - print('Failed to upload logs') - print(f'Response status: {upload_logs.status}') - print(f'Response body:\n{upload_logs.data.decode("utf-8")}') - exit(1) diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line62.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line62.sh deleted file mode 100644 index 1bc19fc978e..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line62.sh +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash - -echo "Sourcing cse_install_distro.sh for Ubuntu" - -removeMoby() { - apt_get_purge 10 5 300 moby-engine moby-cli -} - -removeContainerd() { - apt_get_purge 10 5 300 moby-containerd -} - -installDeps() { - if [[ $(isARM64) == 1 ]]; then - wait_for_apt_locks - retrycmd_if_failure_no_stats 120 5 25 curl -fsSL https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/packages-microsoft-prod.deb > /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_DOWNLOAD_TIMEOUT - else - retrycmd_if_failure_no_stats 120 5 25 curl -fsSL https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/packages-microsoft-prod.deb > /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_DOWNLOAD_TIMEOUT - fi - retrycmd_if_failure 60 5 10 dpkg -i /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_PKG_ADD_FAIL - - aptmarkWALinuxAgent hold - apt_get_update || exit $ERR_APT_UPDATE_TIMEOUT - - pkg_list=(ca-certificates ceph-common cgroup-lite cifs-utils conntrack cracklib-runtime ebtables ethtool git glusterfs-client htop init-system-helpers inotify-tools iotop iproute2 ipset iptables nftables jq libpam-pwquality libpwquality-tools mount nfs-common pigz socat sysfsutils sysstat util-linux xz-utils netcat-openbsd zip rng-tools kmod gcc make dkms initramfs-tools linux-headers-$(uname -r) linux-modules-extra-$(uname -r)) - - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - pkg_list+=(dnsutils) - else - pkg_list+=(bind9-dnsutils) - fi - - local OSVERSION - OSVERSION=$(grep DISTRIB_RELEASE /etc/*-release| cut -f 2 -d "=") - BLOBFUSE_VERSION="1.4.5" - BLOBFUSE2_VERSION="2.3.0" - - if [ "${OSVERSION}" == "18.04" ]; then - BLOBFUSE2_VERSION="2.2.0" - fi - - pkg_list+=(blobfuse2=${BLOBFUSE2_VERSION}) - if [[ "${OSVERSION}" == "22.04" || "${OSVERSION}" == "24.04" ]]; then - pkg_list+=(fuse3) - else - pkg_list+=(blobfuse=${BLOBFUSE_VERSION} fuse) - fi - - for apt_package in ${pkg_list[*]}; do - if ! apt_get_install 30 1 600 $apt_package; then - journalctl --no-pager -u $apt_package - exit $ERR_APT_INSTALL_TIMEOUT - fi - done -} - -updateAptWithMicrosoftPkg() { - retrycmd_if_failure_no_stats 120 5 25 curl https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/prod.list > /tmp/microsoft-prod.list || exit $ERR_MOBY_APT_LIST_TIMEOUT - retrycmd_if_failure 10 5 10 cp /tmp/microsoft-prod.list /etc/apt/sources.list.d/ || exit $ERR_MOBY_APT_LIST_TIMEOUT - if [[ ${UBUNTU_RELEASE} == "18.04" ]]; then { - echo "deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/18.04/multiarch/prod testing main" > /etc/apt/sources.list.d/microsoft-prod-testing.list - } - elif [[ ${UBUNTU_RELEASE} == "20.04" || ${UBUNTU_RELEASE} == "22.04" || ${UBUNTU_RELEASE} == "24.04" ]]; then { - echo "deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/${UBUNTU_RELEASE}/prod testing main" > /etc/apt/sources.list.d/microsoft-prod-testing.list - } - fi - - retrycmd_if_failure_no_stats 120 5 25 curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg || exit $ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT - retrycmd_if_failure 10 5 10 cp /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ || exit $ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT - apt_get_update || exit $ERR_APT_UPDATE_TIMEOUT -} - -cleanUpGPUDrivers() { - rm -Rf $GPU_DEST /opt/gpu -} - -installContainerd() { - packageVersion="${3:-}" - containerdMajorMinorPatchVersion="$(echo "$packageVersion" | cut -d- -f1)" - containerdHotFixVersion="$(echo "$packageVersion" | cut -d- -f2)" - CONTAINERD_DOWNLOADS_DIR="${1:-$CONTAINERD_DOWNLOADS_DIR}" - eval containerdOverrideDownloadURL="${2:-}" - - if [[ ! -z ${containerdOverrideDownloadURL} ]]; then - installContainerdFromOverride ${containerdOverrideDownloadURL} || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - installContainerdWithAptGet "${containerdMajorMinorPatchVersion}" "${containerdHotFixVersion}" "${CONTAINERD_DOWNLOADS_DIR}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT -} - -installContainerdFromOverride() { - containerdOverrideDownloadURL=$1 - echo "Installing containerd from user input: ${containerdOverrideDownloadURL}" - logs_to_events "AKS.CSE.installContainerRuntime.removeMoby" removeMoby - logs_to_events "AKS.CSE.installContainerRuntime.removeContainerd" removeContainerd - logs_to_events "AKS.CSE.installContainerRuntime.downloadContainerdFromURL" downloadContainerdFromURL "${containerdOverrideDownloadURL}" - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${CONTAINERD_DEB_FILE}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - echo "Succeeded to install containerd from user input: ${containerdOverrideDownloadURL}" - return 0 -} - -installContainerdWithAptGet() { - local containerdMajorMinorPatchVersion="${1}" - local containerdHotFixVersion="${2}" - CONTAINERD_DOWNLOADS_DIR="${3:-$CONTAINERD_DOWNLOADS_DIR}" - currentVersion=$(containerd -version | cut -d " " -f 3 | sed 's|v||' | cut -d "+" -f 1) - - if [ -z "$currentVersion" ]; then - currentVersion="0.0.0" - fi - - currentMajorMinor="$(echo $currentVersion | tr '.' '\n' | head -n 2 | paste -sd.)" - desiredMajorMinor="$(echo $containerdMajorMinorPatchVersion | tr '.' '\n' | head -n 2 | paste -sd.)" - semverCompare "$currentVersion" "$containerdMajorMinorPatchVersion" - hasGreaterVersion="$?" - - if [[ "$hasGreaterVersion" == "0" ]] && [[ "$currentMajorMinor" == "$desiredMajorMinor" ]]; then - echo "currently installed containerd version ${currentVersion} matches major.minor with higher patch ${containerdMajorMinorPatchVersion}. skipping installStandaloneContainerd." - else - echo "installing containerd version ${containerdMajorMinorPatchVersion}" - logs_to_events "AKS.CSE.installContainerRuntime.removeMoby" removeMoby - logs_to_events "AKS.CSE.installContainerRuntime.removeContainerd" removeContainerd - containerdDebFile="$(ls ${CONTAINERD_DOWNLOADS_DIR}/moby-containerd_${containerdMajorMinorPatchVersion}*)" - if [[ -f "${containerdDebFile}" ]]; then - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${containerdDebFile}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - logs_to_events "AKS.CSE.installContainerRuntime.downloadContainerdFromVersion" "downloadContainerdFromVersion ${containerdMajorMinorPatchVersion} ${containerdHotFixVersion}" - containerdDebFile="$(ls ${CONTAINERD_DOWNLOADS_DIR}/moby-containerd_${containerdMajorMinorPatchVersion}*)" - if [[ -z "${containerdDebFile}" ]]; then - echo "Failed to locate cached containerd deb" - exit $ERR_CONTAINERD_INSTALL_TIMEOUT - fi - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${containerdDebFile}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi -} - -installStandaloneContainerd() { - UBUNTU_RELEASE=$(lsb_release -r -s) - UBUNTU_CODENAME=$(lsb_release -c -s) - CONTAINERD_VERSION=$1 - CONTAINERD_PATCH_VERSION="${2:-1}" - - CONTAINERD_PACKAGE_URL="${CONTAINERD_PACKAGE_URL:=}" - if [[ ! -z ${CONTAINERD_PACKAGE_URL} ]]; then - installContainerdFromOverride ${CONTAINERD_PACKAGE_URL} || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - - #if there is no containerd_version input from RP, use hardcoded version - if [[ -z ${CONTAINERD_VERSION} ]]; then - CONTAINERD_VERSION="1.7.15" - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - CONTAINERD_VERSION="1.7.1" - fi - CONTAINERD_PATCH_VERSION="1" - echo "Containerd Version not specified, using default version: ${CONTAINERD_VERSION}-${CONTAINERD_PATCH_VERSION}" - else - echo "Using specified Containerd Version: ${CONTAINERD_VERSION}-${CONTAINERD_PATCH_VERSION}" - fi - - installContainerdWithAptGet "${CONTAINERD_VERSION}" "${CONTAINERD_PATCH_VERSION}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT -} - -downloadContainerdFromVersion() { - CONTAINERD_VERSION=$1 - mkdir -p $CONTAINERD_DOWNLOADS_DIR - updateAptWithMicrosoftPkg - apt_get_download 20 30 moby-containerd=${CONTAINERD_VERSION}* || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - cp -al ${APT_CACHE_DIR}moby-containerd_${CONTAINERD_VERSION}* $CONTAINERD_DOWNLOADS_DIR/ || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - echo "Succeeded to download containerd version ${CONTAINERD_VERSION}" -} - -downloadContainerdFromURL() { - CONTAINERD_DOWNLOAD_URL=$1 - mkdir -p $CONTAINERD_DOWNLOADS_DIR - CONTAINERD_DEB_TMP=${CONTAINERD_DOWNLOAD_URL##*/} - retrycmd_curl_file 120 5 60 "$CONTAINERD_DOWNLOADS_DIR/${CONTAINERD_DEB_TMP}" ${CONTAINERD_DOWNLOAD_URL} || exit $ERR_CONTAINERD_DOWNLOAD_TIMEOUT - CONTAINERD_DEB_FILE="$CONTAINERD_DOWNLOADS_DIR/${CONTAINERD_DEB_TMP}" -} - -installMoby() { - ensureRunc ${RUNC_VERSION:-""} - CURRENT_VERSION=$(dockerd --version | grep "Docker version" | cut -d "," -f 1 | cut -d " " -f 3 | cut -d "+" -f 1) - local MOBY_VERSION="19.03.14" - local MOBY_CONTAINERD_VERSION="1.4.13" - if semverCompare ${CURRENT_VERSION:-"0.0.0"} ${MOBY_VERSION}; then - echo "currently installed moby-docker version ${CURRENT_VERSION} is greater than (or equal to) target base version ${MOBY_VERSION}. skipping installMoby." - else - removeMoby - updateAptWithMicrosoftPkg - MOBY_CLI=${MOBY_VERSION} - if [[ "${MOBY_CLI}" == "3.0.4" ]]; then - MOBY_CLI="3.0.3" - fi - apt_get_install 20 30 120 moby-engine=${MOBY_VERSION}* moby-cli=${MOBY_CLI}* moby-containerd=${MOBY_CONTAINERD_VERSION}* --allow-downgrades || exit $ERR_MOBY_INSTALL_TIMEOUT - fi -} - -ensureRunc() { - RUNC_PACKAGE_URL=${2:-""} - RUNC_DOWNLOADS_DIR=${3:-$RUNC_DOWNLOADS_DIR} - if [[ ! -z ${RUNC_PACKAGE_URL} ]]; then - echo "Installing runc from user input: ${RUNC_PACKAGE_URL}" - mkdir -p $RUNC_DOWNLOADS_DIR - RUNC_DEB_TMP=${RUNC_PACKAGE_URL##*/} - RUNC_DEB_FILE="$RUNC_DOWNLOADS_DIR/${RUNC_DEB_TMP}" - retrycmd_curl_file 120 5 60 ${RUNC_DEB_FILE} ${RUNC_PACKAGE_URL} || exit $ERR_RUNC_DOWNLOAD_TIMEOUT - installDebPackageFromFile ${RUNC_DEB_FILE} || exit $ERR_RUNC_INSTALL_TIMEOUT - echo "Succeeded to install runc from user input: ${RUNC_PACKAGE_URL}" - return 0 - fi - - TARGET_VERSION=${1:-""} - - if [[ $(isARM64) == 1 ]]; then - if [[ ${TARGET_VERSION} == "1.0.0-rc92" || ${TARGET_VERSION} == "1.0.0-rc95" ]]; then - return - fi - fi - - CPU_ARCH=$(getCPUArch) #amd64 or arm64 - CURRENT_VERSION=$(runc --version | head -n1 | sed 's/runc version //') - CLEANED_TARGET_VERSION=${TARGET_VERSION} - - CURRENT_VERSION=${CURRENT_VERSION%-*} - CLEANED_TARGET_VERSION=${CLEANED_TARGET_VERSION%-*} - - if [ "${CURRENT_VERSION}" == "${CLEANED_TARGET_VERSION}" ]; then - echo "target moby-runc version ${CLEANED_TARGET_VERSION} is already installed. skipping installRunc." - return - fi - if [ -f $VHD_LOGS_FILEPATH ]; then - RUNC_DEB_PATTERN="moby-runc_*.deb" - RUNC_DEB_FILE=$(find ${RUNC_DOWNLOADS_DIR} -type f -iname "${RUNC_DEB_PATTERN}" | sort -V | tail -n1) - if [[ -f "${RUNC_DEB_FILE}" ]]; then - installDebPackageFromFile ${RUNC_DEB_FILE} || exit $ERR_RUNC_INSTALL_TIMEOUT - return 0 - fi - fi - apt_get_install 20 30 120 moby-runc=${TARGET_VERSION}* --allow-downgrades || exit $ERR_RUNC_INSTALL_TIMEOUT -} - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line70.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line70.sh deleted file mode 100644 index 3167cc81748..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line70.sh +++ /dev/null @@ -1,822 +0,0 @@ -#!/bin/bash -NODE_INDEX=$(hostname | tail -c 2) -NODE_NAME=$(hostname) - -configureAdminUser(){ - chage -E -1 -I -1 -m 0 -M 99999 "${ADMINUSER}" - chage -l "${ADMINUSER}" -} - -configPrivateClusterHosts() { - mkdir -p /etc/systemd/system/reconcile-private-hosts.service.d/ - touch /etc/systemd/system/reconcile-private-hosts.service.d/10-fqdn.conf - tee /etc/systemd/system/reconcile-private-hosts.service.d/10-fqdn.conf > /dev/null < /sys/kernel/mm/transparent_hugepage/enabled - echo "kernel/mm/transparent_hugepage/enabled=${THP_ENABLED}" >> ${ETC_SYSFS_CONF} - fi - if [[ "${THP_DEFRAG}" != "" ]]; then - echo "${THP_DEFRAG}" > /sys/kernel/mm/transparent_hugepage/defrag - echo "kernel/mm/transparent_hugepage/defrag=${THP_DEFRAG}" >> ${ETC_SYSFS_CONF} - fi -} - -configureSystemdUseDomains() { - NETWORK_CONFIG_FILE="/etc/systemd/networkd.conf" - - if awk '/^\[DHCPv4\]/{flag=1; next} /^\[/{flag=0} flag && /#UseDomains=no/' "$NETWORK_CONFIG_FILE"; then - sed -i '/^\[DHCPv4\]/,/^\[/ s/#UseDomains=no/UseDomains=yes/' $NETWORK_CONFIG_FILE - fi - - if [ "${IPV6_DUAL_STACK_ENABLED}" == "true" ]; then - if awk '/^\[DHCPv6\]/{flag=1; next} /^\[/{flag=0} flag && /#UseDomains=no/' "$NETWORK_CONFIG_FILE"; then - sed -i '/^\[DHCPv6\]/,/^\[/ s/#UseDomains=no/UseDomains=yes/' $NETWORK_CONFIG_FILE - fi - fi - - systemctl restart systemd-networkd - - systemctl restart rsyslog -} - -configureSwapFile() { - swap_size_kb=$(expr ${SWAP_FILE_SIZE_MB} \* 1000) - swap_location="" - - if [[ -L /dev/disk/azure/resource-part1 ]]; then - resource_disk_path=$(findmnt -nr -o target -S $(readlink -f /dev/disk/azure/resource-part1)) - disk_free_kb=$(df ${resource_disk_path} | sed 1d | awk '{print $4}') - if [[ ${disk_free_kb} -gt ${swap_size_kb} ]]; then - echo "Will use resource disk for swap file" - swap_location=${resource_disk_path}/swapfile - else - echo "Insufficient disk space on resource disk to create swap file: request ${swap_size_kb} free ${disk_free_kb}, attempting to fall back to OS disk..." - fi - fi - - if [[ -z "${swap_location}" ]]; then - os_device=$(readlink -f /dev/disk/azure/root) - disk_free_kb=$(df -P / | sed 1d | awk '{print $4}') - if [[ ${disk_free_kb} -gt ${swap_size_kb} ]]; then - echo "Will use OS disk for swap file" - swap_location=/swapfile - else - echo "Insufficient disk space on OS device ${os_device} to create swap file: request ${swap_size_kb} free ${disk_free_kb}" - exit $ERR_SWAP_CREATE_INSUFFICIENT_DISK_SPACE - fi - fi - - echo "Swap file will be saved to: ${swap_location}" - retrycmd_if_failure 24 5 25 fallocate -l ${swap_size_kb}K ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - chmod 600 ${swap_location} - retrycmd_if_failure 24 5 25 mkswap ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - retrycmd_if_failure 24 5 25 swapon ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - retrycmd_if_failure 24 5 25 swapon --show | grep ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - echo "${swap_location} none swap sw 0 0" >> /etc/fstab -} - -configureEtcEnvironment() { - mkdir -p /etc/systemd/system.conf.d/ - touch /etc/systemd/system.conf.d/proxy.conf - chmod 0644 /etc/systemd/system.conf.d/proxy.conf - - mkdir -p /etc/apt/apt.conf.d - touch /etc/apt/apt.conf.d/95proxy - chmod 0644 /etc/apt/apt.conf.d/95proxy - - echo "[Manager]" >> /etc/systemd/system.conf.d/proxy.conf - if [ "${HTTP_PROXY_URLS}" != "" ]; then - echo "HTTP_PROXY=${HTTP_PROXY_URLS}" >> /etc/environment - echo "http_proxy=${HTTP_PROXY_URLS}" >> /etc/environment - echo "Acquire::http::proxy \"${HTTP_PROXY_URLS}\";" >> /etc/apt/apt.conf.d/95proxy - echo "DefaultEnvironment=\"HTTP_PROXY=${HTTP_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"http_proxy=${HTTP_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - if [ "${HTTPS_PROXY_URLS}" != "" ]; then - echo "HTTPS_PROXY=${HTTPS_PROXY_URLS}" >> /etc/environment - echo "https_proxy=${HTTPS_PROXY_URLS}" >> /etc/environment - echo "Acquire::https::proxy \"${HTTPS_PROXY_URLS}\";" >> /etc/apt/apt.conf.d/95proxy - echo "DefaultEnvironment=\"HTTPS_PROXY=${HTTPS_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"https_proxy=${HTTPS_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - if [ "${NO_PROXY_URLS}" != "" ]; then - echo "NO_PROXY=${NO_PROXY_URLS}" >> /etc/environment - echo "no_proxy=${NO_PROXY_URLS}" >> /etc/environment - echo "DefaultEnvironment=\"NO_PROXY=${NO_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"no_proxy=${NO_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - - mkdir -p "/etc/systemd/system/kubelet.service.d" - tee "/etc/systemd/system/kubelet.service.d/10-httpproxy.conf" > /dev/null <<'EOF' -[Service] -EnvironmentFile=/etc/environment -EOF -} - -configureHTTPProxyCA() { - if [[ $OS == $MARINER_OS_NAME ]]; then - cert_dest="/usr/share/pki/ca-trust-source/anchors" - update_cmd="update-ca-trust" - else - cert_dest="/usr/local/share/ca-certificates" - update_cmd="update-ca-certificates" - fi - HTTP_PROXY_TRUSTED_CA=$(echo "${HTTP_PROXY_TRUSTED_CA}" | xargs) - echo "${HTTP_PROXY_TRUSTED_CA}" | base64 -d > "${cert_dest}/proxyCA.crt" || exit $ERR_UPDATE_CA_CERTS - $update_cmd || exit $ERR_UPDATE_CA_CERTS -} - -configureCustomCaCertificate() { - mkdir -p /opt/certs - for i in $(seq 0 $((${CUSTOM_CA_TRUST_COUNT} - 1))); do - declare varname=CUSTOM_CA_CERT_${i} - echo "${!varname}" | base64 -d > /opt/certs/00000000000000cert${i}.crt - done - systemctl restart update_certs.service || exit $ERR_UPDATE_CA_CERTS - systemctl restart containerd -} - -configureContainerdUlimits() { - CONTAINERD_ULIMIT_DROP_IN_FILE_PATH="/etc/systemd/system/containerd.service.d/set_ulimits.conf" - touch "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" - chmod 0600 "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" - tee "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" > /dev/null < /etc/kubernetes/certs/client.key - fi - if [ -n "${KUBELET_CLIENT_CERT_CONTENT}" ]; then - echo "${KUBELET_CLIENT_CERT_CONTENT}" | base64 -d > /etc/kubernetes/certs/client.crt - fi - if [ -n "${SERVICE_PRINCIPAL_FILE_CONTENT}" ]; then - echo "${SERVICE_PRINCIPAL_FILE_CONTENT}" | base64 -d > /etc/kubernetes/sp.txt - fi - - set +x - echo "${APISERVER_PUBLIC_KEY}" | base64 --decode > "${APISERVER_PUBLIC_KEY_PATH}" - SP_FILE="/etc/kubernetes/sp.txt" - SERVICE_PRINCIPAL_CLIENT_SECRET="$(cat "$SP_FILE")" - SERVICE_PRINCIPAL_CLIENT_SECRET=${SERVICE_PRINCIPAL_CLIENT_SECRET//\\/\\\\} - SERVICE_PRINCIPAL_CLIENT_SECRET=${SERVICE_PRINCIPAL_CLIENT_SECRET//\"/\\\"} - rm "$SP_FILE" - cat << EOF > "${AZURE_JSON_PATH}" -{ - "cloud": "${TARGET_CLOUD}", - "tenantId": "${TENANT_ID}", - "subscriptionId": "${SUBSCRIPTION_ID}", - "aadClientId": "${SERVICE_PRINCIPAL_CLIENT_ID}", - "aadClientSecret": "${SERVICE_PRINCIPAL_CLIENT_SECRET}", - "resourceGroup": "${RESOURCE_GROUP}", - "location": "${LOCATION}", - "vmType": "${VM_TYPE}", - "subnetName": "${SUBNET}", - "securityGroupName": "${NETWORK_SECURITY_GROUP}", - "vnetName": "${VIRTUAL_NETWORK}", - "vnetResourceGroup": "${VIRTUAL_NETWORK_RESOURCE_GROUP}", - "routeTableName": "${ROUTE_TABLE}", - "primaryAvailabilitySetName": "${PRIMARY_AVAILABILITY_SET}", - "primaryScaleSetName": "${PRIMARY_SCALE_SET}", - "cloudProviderBackoffMode": "${CLOUDPROVIDER_BACKOFF_MODE}", - "cloudProviderBackoff": ${CLOUDPROVIDER_BACKOFF}, - "cloudProviderBackoffRetries": ${CLOUDPROVIDER_BACKOFF_RETRIES}, - "cloudProviderBackoffExponent": ${CLOUDPROVIDER_BACKOFF_EXPONENT}, - "cloudProviderBackoffDuration": ${CLOUDPROVIDER_BACKOFF_DURATION}, - "cloudProviderBackoffJitter": ${CLOUDPROVIDER_BACKOFF_JITTER}, - "cloudProviderRateLimit": ${CLOUDPROVIDER_RATELIMIT}, - "cloudProviderRateLimitQPS": ${CLOUDPROVIDER_RATELIMIT_QPS}, - "cloudProviderRateLimitBucket": ${CLOUDPROVIDER_RATELIMIT_BUCKET}, - "cloudProviderRateLimitQPSWrite": ${CLOUDPROVIDER_RATELIMIT_QPS_WRITE}, - "cloudProviderRateLimitBucketWrite": ${CLOUDPROVIDER_RATELIMIT_BUCKET_WRITE}, - "useManagedIdentityExtension": ${USE_MANAGED_IDENTITY_EXTENSION}, - "userAssignedIdentityID": "${USER_ASSIGNED_IDENTITY_ID}", - "useInstanceMetadata": ${USE_INSTANCE_METADATA}, - "loadBalancerSku": "${LOAD_BALANCER_SKU}", - "disableOutboundSNAT": ${LOAD_BALANCER_DISABLE_OUTBOUND_SNAT}, - "excludeMasterFromStandardLB": ${EXCLUDE_MASTER_FROM_STANDARD_LB}, - "providerVaultName": "${KMS_PROVIDER_VAULT_NAME}", - "maximumLoadBalancerRuleCount": ${MAXIMUM_LOADBALANCER_RULE_COUNT}, - "providerKeyName": "k8s", - "providerKeyVersion": "" -} -EOF - set -x - if [[ "${CLOUDPROVIDER_BACKOFF_MODE}" = "v2" ]]; then - sed -i "/cloudProviderBackoffExponent/d" /etc/kubernetes/azure.json - sed -i "/cloudProviderBackoffJitter/d" /etc/kubernetes/azure.json - fi - - configureKubeletServerCert - if [ "${IS_CUSTOM_CLOUD}" == "true" ]; then - set +x - AKS_CUSTOM_CLOUD_JSON_PATH="/etc/kubernetes/${TARGET_ENVIRONMENT}.json" - touch "${AKS_CUSTOM_CLOUD_JSON_PATH}" - chmod 0600 "${AKS_CUSTOM_CLOUD_JSON_PATH}" - chown root:root "${AKS_CUSTOM_CLOUD_JSON_PATH}" - - echo "${CUSTOM_ENV_JSON}" | base64 -d > "${AKS_CUSTOM_CLOUD_JSON_PATH}" - set -x - fi - - if [ "${KUBELET_CONFIG_FILE_ENABLED}" == "true" ]; then - set +x - KUBELET_CONFIG_JSON_PATH="/etc/default/kubeletconfig.json" - touch "${KUBELET_CONFIG_JSON_PATH}" - chmod 0600 "${KUBELET_CONFIG_JSON_PATH}" - chown root:root "${KUBELET_CONFIG_JSON_PATH}" - echo "${KUBELET_CONFIG_FILE_CONTENT}" | base64 -d > "${KUBELET_CONFIG_JSON_PATH}" - set -x - KUBELET_CONFIG_DROP_IN="/etc/systemd/system/kubelet.service.d/10-componentconfig.conf" - touch "${KUBELET_CONFIG_DROP_IN}" - chmod 0600 "${KUBELET_CONFIG_DROP_IN}" - tee "${KUBELET_CONFIG_DROP_IN}" > /dev/null < /etc/modules-load.d/br_netfilter.conf - configureCNIIPTables -} - -configureCNIIPTables() { - if [[ "${NETWORK_PLUGIN}" = "azure" ]]; then - mv $CNI_BIN_DIR/10-azure.conflist $CNI_CONFIG_DIR/ - chmod 600 $CNI_CONFIG_DIR/10-azure.conflist - if [[ "${NETWORK_POLICY}" == "calico" ]]; then - sed -i 's#"mode":"bridge"#"mode":"transparent"#g' $CNI_CONFIG_DIR/10-azure.conflist - elif [[ "${NETWORK_POLICY}" == "" || "${NETWORK_POLICY}" == "none" ]] && [[ "${NETWORK_MODE}" == "transparent" ]]; then - sed -i 's#"mode":"bridge"#"mode":"transparent"#g' $CNI_CONFIG_DIR/10-azure.conflist - fi - /sbin/ebtables -t nat --list - fi -} - -disableSystemdResolved() { - ls -ltr /etc/resolv.conf - cat /etc/resolv.conf - UBUNTU_RELEASE=$(lsb_release -r -s) - if [[ "${UBUNTU_RELEASE}" == "18.04" || "${UBUNTU_RELEASE}" == "20.04" || "${UBUNTU_RELEASE}" == "22.04" || "${UBUNTU_RELEASE}" == "24.04" ]]; then - echo "Ingoring systemd-resolved query service but using its resolv.conf file" - echo "This is the simplest approach to workaround resolved issues without completely uninstall it" - [ -f /run/systemd/resolve/resolv.conf ] && sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf - ls -ltr /etc/resolv.conf - cat /etc/resolv.conf - fi -} - -ensureContainerd() { - if [ "${TELEPORT_ENABLED}" == "true" ]; then - ensureTeleportd - fi - mkdir -p "/etc/systemd/system/containerd.service.d" - tee "/etc/systemd/system/containerd.service.d/exec_start.conf" > /dev/null < /etc/containerd/config.toml || exit $ERR_FILE_WATCH_TIMEOUT - else - echo "Generating containerd config..." - echo "${CONTAINERD_CONFIG_CONTENT}" | base64 -d > /etc/containerd/config.toml || exit $ERR_FILE_WATCH_TIMEOUT - fi - - tee "/etc/sysctl.d/99-force-bridge-forward.conf" > /dev/null < "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_REGISTER_SCHEDULABLE=true" >> "${KUBELET_DEFAULT_FILE}" - echo "NETWORK_POLICY=${NETWORK_POLICY}" >> "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_IMAGE=${KUBELET_IMAGE}" >> "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_NODE_LABELS=${KUBELET_NODE_LABELS}" >> "${KUBELET_DEFAULT_FILE}" - if [ -n "${AZURE_ENVIRONMENT_FILEPATH}" ]; then - echo "AZURE_ENVIRONMENT_FILEPATH=${AZURE_ENVIRONMENT_FILEPATH}" >> "${KUBELET_DEFAULT_FILE}" - fi - chmod 0600 "${KUBELET_DEFAULT_FILE}" - - KUBE_CA_FILE="/etc/kubernetes/certs/ca.crt" - mkdir -p "$(dirname "${KUBE_CA_FILE}")" - echo "${KUBE_CA_CRT}" | base64 -d > "${KUBE_CA_FILE}" - chmod 0600 "${KUBE_CA_FILE}" - - if [ "${ENABLE_SECURE_TLS_BOOTSTRAPPING}" == "true" ] || [ "${ENABLE_TLS_BOOTSTRAPPING}" == "true" ]; then - KUBELET_TLS_DROP_IN="/etc/systemd/system/kubelet.service.d/10-tlsbootstrap.conf" - mkdir -p "$(dirname "${KUBELET_TLS_DROP_IN}")" - touch "${KUBELET_TLS_DROP_IN}" - chmod 0600 "${KUBELET_TLS_DROP_IN}" - tee "${KUBELET_TLS_DROP_IN}" > /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < "${SYSCTL_CONFIG_FILE}" - retrycmd_if_failure 24 5 25 sysctl --system -} - -ensureK8sControlPlane() { - if $REBOOTREQUIRED || [ "$NO_OUTBOUND" = "true" ]; then - return - fi - retrycmd_if_failure 120 5 25 $KUBECTL 2>/dev/null cluster-info || exit $ERR_K8S_RUNNING_TIMEOUT -} - -createKubeManifestDir() { - KUBEMANIFESTDIR=/etc/kubernetes/manifests - mkdir -p $KUBEMANIFESTDIR -} - -writeKubeConfig() { - KUBECONFIGDIR=/home/$ADMINUSER/.kube - KUBECONFIGFILE=$KUBECONFIGDIR/config - mkdir -p $KUBECONFIGDIR - touch $KUBECONFIGFILE - chown $ADMINUSER:$ADMINUSER $KUBECONFIGDIR - chown $ADMINUSER:$ADMINUSER $KUBECONFIGFILE - chmod 700 $KUBECONFIGDIR - chmod 600 $KUBECONFIGFILE - set +x - echo " ---- -apiVersion: v1 -clusters: -- cluster: - certificate-authority-data: \"$CA_CERTIFICATE\" - server: $KUBECONFIG_SERVER - name: \"$MASTER_FQDN\" -contexts: -- context: - cluster: \"$MASTER_FQDN\" - user: \"$MASTER_FQDN-admin\" - name: \"$MASTER_FQDN\" -current-context: \"$MASTER_FQDN\" -kind: Config -users: -- name: \"$MASTER_FQDN-admin\" - user: - client-certificate-data: \"$KUBECONFIG_CERTIFICATE\" - client-key-data: \"$KUBECONFIG_KEY\" -" > $KUBECONFIGFILE - set -x -} - -configClusterAutoscalerAddon() { - CLUSTER_AUTOSCALER_ADDON_FILE=/etc/kubernetes/addons/cluster-autoscaler-deployment.yaml - sed -i "s||$(echo $SERVICE_PRINCIPAL_CLIENT_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $SERVICE_PRINCIPAL_CLIENT_SECRET | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $SUBSCRIPTION_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $TENANT_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $RESOURCE_GROUP | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE -} - -configACIConnectorAddon() { - ACI_CONNECTOR_CREDENTIALS=$(printf "{\"clientId\": \"%s\", \"clientSecret\": \"%s\", \"tenantId\": \"%s\", \"subscriptionId\": \"%s\", \"activeDirectoryEndpointUrl\": \"https://login.microsoftonline.com\",\"resourceManagerEndpointUrl\": \"https://management.azure.com/\", \"activeDirectoryGraphResourceId\": \"https://graph.windows.net/\", \"sqlManagementEndpointUrl\": \"https://management.core.windows.net:8443/\", \"galleryEndpointUrl\": \"https://gallery.azure.com/\", \"managementEndpointUrl\": \"https://management.core.windows.net/\"}" "$SERVICE_PRINCIPAL_CLIENT_ID" "$SERVICE_PRINCIPAL_CLIENT_SECRET" "$TENANT_ID" "$SUBSCRIPTION_ID" | base64 -w 0) - - openssl req -newkey rsa:4096 -new -nodes -x509 -days 3650 -keyout /etc/kubernetes/certs/aci-connector-key.pem -out /etc/kubernetes/certs/aci-connector-cert.pem -subj "/C=US/ST=CA/L=virtualkubelet/O=virtualkubelet/OU=virtualkubelet/CN=virtualkubelet" - ACI_CONNECTOR_KEY=$(base64 /etc/kubernetes/certs/aci-connector-key.pem -w0) - ACI_CONNECTOR_CERT=$(base64 /etc/kubernetes/certs/aci-connector-cert.pem -w0) - - ACI_CONNECTOR_ADDON_FILE=/etc/kubernetes/addons/aci-connector-deployment.yaml - sed -i "s||$ACI_CONNECTOR_CREDENTIALS|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$RESOURCE_GROUP|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$ACI_CONNECTOR_CERT|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$ACI_CONNECTOR_KEY|g" $ACI_CONNECTOR_ADDON_FILE -} - -configAzurePolicyAddon() { - AZURE_POLICY_ADDON_FILE=/etc/kubernetes/addons/azure-policy-deployment.yaml - sed -i "s||/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP|g" $AZURE_POLICY_ADDON_FILE -} - -configGPUDrivers() { - if [[ $OS == $UBUNTU_OS_NAME ]]; then - mkdir -p /opt/{actions,gpu} - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - ctr image pull $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG > /dev/null - retrycmd_if_failure 5 10 600 bash -c "$CTR_GPU_INSTALL_CMD $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG gpuinstall /entrypoint.sh install" - ret=$? - if [[ "$ret" != "0" ]]; then - echo "Failed to install GPU driver, exiting..." - exit $ERR_GPU_DRIVERS_START_FAIL - fi - ctr images rm --sync $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG - else - bash -c "$DOCKER_GPU_INSTALL_CMD $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG install" - ret=$? - if [[ "$ret" != "0" ]]; then - echo "Failed to install GPU driver, exiting..." - exit $ERR_GPU_DRIVERS_START_FAIL - fi - docker rmi $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG - fi - elif [[ $OS == $MARINER_OS_NAME ]]; then - downloadGPUDrivers - installNvidiaContainerRuntime - enableNvidiaPersistenceMode - else - echo "os $OS not supported at this time. skipping configGPUDrivers" - exit 1 - fi - - retrycmd_if_failure 120 5 25 nvidia-modprobe -u -c0 || exit $ERR_GPU_DRIVERS_START_FAIL - retrycmd_if_failure 120 5 300 nvidia-smi || exit $ERR_GPU_DRIVERS_START_FAIL - retrycmd_if_failure 120 5 25 ldconfig || exit $ERR_GPU_DRIVERS_START_FAIL - - if [[ $OS == $MARINER_OS_NAME ]]; then - createNvidiaSymlinkToAllDeviceNodes - fi - - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - retrycmd_if_failure 120 5 25 pkill -SIGHUP containerd || exit $ERR_GPU_DRIVERS_INSTALL_TIMEOUT - else - retrycmd_if_failure 120 5 25 pkill -SIGHUP dockerd || exit $ERR_GPU_DRIVERS_INSTALL_TIMEOUT - fi -} - -validateGPUDrivers() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - retrycmd_if_failure 24 5 25 nvidia-modprobe -u -c0 && echo "gpu driver loaded" || configGPUDrivers || exit $ERR_GPU_DRIVERS_START_FAIL - which nvidia-smi - if [[ $? == 0 ]]; then - SMI_RESULT=$(retrycmd_if_failure 24 5 300 nvidia-smi) - else - SMI_RESULT=$(retrycmd_if_failure 24 5 300 $GPU_DEST/bin/nvidia-smi) - fi - SMI_STATUS=$? - if [[ $SMI_STATUS != 0 ]]; then - if [[ $SMI_RESULT == *"infoROM is corrupted"* ]]; then - exit $ERR_GPU_INFO_ROM_CORRUPTED - else - exit $ERR_GPU_DRIVERS_START_FAIL - fi - else - echo "gpu driver working fine" - fi -} - -ensureGPUDrivers() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - if [[ "${CONFIG_GPU_DRIVER_IF_NEEDED}" = true ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers.configGPUDrivers" configGPUDrivers - else - logs_to_events "AKS.CSE.ensureGPUDrivers.validateGPUDrivers" validateGPUDrivers - fi - if [[ $OS == $UBUNTU_OS_NAME ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers.nvidia-modprobe" "systemctlEnableAndStart nvidia-modprobe" || exit $ERR_GPU_DRIVERS_START_FAIL - fi -} - -disableSSH() { - systemctlDisableAndStop ssh || exit $ERR_DISABLE_SSH -} - -configCredentialProvider() { - CREDENTIAL_PROVIDER_CONFIG_FILE=/var/lib/kubelet/credential-provider-config.yaml - mkdir -p "$(dirname "${CREDENTIAL_PROVIDER_CONFIG_FILE}")" - touch "${CREDENTIAL_PROVIDER_CONFIG_FILE}" - if [[ -n "$AKS_CUSTOM_CLOUD_CONTAINER_REGISTRY_DNS_SUFFIX" ]]; then - tee "${CREDENTIAL_PROVIDER_CONFIG_FILE}" > /dev/null < /dev/null </dev/null | grep -q '.'; then - OS=$(sort -r /etc/*-release | gawk 'match($0, /^(ID_LIKE=(coreos)|ID=(.*))$/, a) { print toupper(a[2] a[3]); exit }') - OS_VERSION=$(sort -r /etc/*-release | gawk 'match($0, /^(VERSION_ID=(.*))$/, a) { print toupper(a[2] a[3]); exit }' | tr -d '"') -else - echo "/etc/*-release not found" -fi - -UBUNTU_OS_NAME="UBUNTU" -MARINER_OS_NAME="MARINER" -MARINER_KATA_OS_NAME="MARINERKATA" -KUBECTL=/usr/local/bin/kubectl -DOCKER=/usr/bin/docker -export GPU_DV="${GPU_DRIVER_VERSION:=}" -export GPU_DEST=/usr/local/nvidia -NVIDIA_DOCKER_VERSION=2.8.0-1 -DOCKER_VERSION=1.13.1-1 -NVIDIA_CONTAINER_RUNTIME_VERSION="3.6.0" -export NVIDIA_DRIVER_IMAGE_SHA="${GPU_IMAGE_SHA:=}" -export NVIDIA_DRIVER_IMAGE_TAG="${GPU_DV}-${NVIDIA_DRIVER_IMAGE_SHA}" -export NVIDIA_DRIVER_IMAGE="mcr.microsoft.com/aks/aks-gpu" -export CTR_GPU_INSTALL_CMD="ctr run --privileged --rm --net-host --with-ns pid:/proc/1/ns/pid --mount type=bind,src=/opt/gpu,dst=/mnt/gpu,options=rbind --mount type=bind,src=/opt/actions,dst=/mnt/actions,options=rbind" -export DOCKER_GPU_INSTALL_CMD="docker run --privileged --net=host --pid=host -v /opt/gpu:/mnt/gpu -v /opt/actions:/mnt/actions --rm" -APT_CACHE_DIR=/var/cache/apt/archives/ -PERMANENT_CACHE_DIR=/root/aptcache/ -EVENTS_LOGGING_DIR=/var/log/azure/Microsoft.Azure.Extensions.CustomScript/events/ -CURL_OUTPUT=/tmp/curl_verbose.out - -retrycmd_if_failure() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout "${@}" && break || \ - if [ $i -eq $retries ]; then - echo Executed \"$@\" $i times; - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} -retrycmd_if_failure_nostdout() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout "${@}" > /dev/null && break || \ - if [ $i -eq $retries ]; then - echo Executed \"$@\" $i times; - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} -retrycmd_nslookup() { - wait_sleep=$1; timeout=$2; total_timeout=$3; record=$4 - start_time=$(date +%s) - while true; do - nslookup -timeout=$timeout -retry=0 $record && break || \ - current_time=$(date +%s) - if [ $((current_time - start_time)) -ge $total_timeout ]; then - echo "Total timeout $total_timeout reached, nslookup -timeout=$timeout -retry=0 $record failed" - return 1 - fi - sleep $wait_sleep - done - current_time=$(date +%s) - echo "Executed nslookup -timeout=$timeout -retry=0 $record for $((current_time - start_time)) seconds"; -} -retrycmd_if_failure_no_stats() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -retrycmd_get_tarball() { - tar_retries=$1; wait_sleep=$2; tarball=$3; url=$4 - echo "${tar_retries} retries" - for i in $(seq 1 $tar_retries); do - tar -tzf $tarball && break || \ - if [ $i -eq $tar_retries ]; then - return 1 - else - timeout 60 curl -fsSLv $url -o $tarball > $CURL_OUTPUT 2>&1 - if [[ $? != 0 ]]; then - cat $CURL_OUTPUT - fi - sleep $wait_sleep - fi - done -} -retrycmd_curl_file() { - curl_retries=$1; wait_sleep=$2; timeout=$3; filepath=$4; url=$5 - echo "${curl_retries} retries" - for i in $(seq 1 $curl_retries); do - [[ -f $filepath ]] && break - if [ $i -eq $curl_retries ]; then - return 1 - else - timeout $timeout curl -fsSLv $url -o $filepath 2>&1 | tee $CURL_OUTPUT >/dev/null - if [[ $? != 0 ]]; then - cat $CURL_OUTPUT - fi - sleep $wait_sleep - fi - done -} -wait_for_file() { - retries=$1; wait_sleep=$2; filepath=$3 - paved=/opt/azure/cloud-init-files.paved - grep -Fq "${filepath}" $paved && return 0 - for i in $(seq 1 $retries); do - grep -Fq '#EOF' $filepath && break - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done - sed -i "/#EOF/d" $filepath - echo $filepath >> $paved -} -systemctl_restart() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl restart $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - systemctl status $svcname --no-pager -l - journalctl -u $svcname - sleep $wait_sleep - fi - done -} -systemctl_stop() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl stop $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -systemctl_disable() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl disable $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -sysctl_reload() { - retries=$1; wait_sleep=$2; timeout=$3 - for i in $(seq 1 $retries); do - timeout $timeout sysctl --system && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -version_gte() { - test "$(printf '%s\n' "$@" | sort -rV | head -n 1)" == "$1" -} - -systemctlEnableAndStart() { - systemctl_restart 100 5 30 $1 - RESTART_STATUS=$? - systemctl status $1 --no-pager -l > /var/log/azure/$1-status.log - if [ $RESTART_STATUS -ne 0 ]; then - echo "$1 could not be started" - return 1 - fi - if ! retrycmd_if_failure 120 5 25 systemctl enable $1; then - echo "$1 could not be enabled by systemctl" - return 1 - fi -} - -systemctlDisableAndStop() { - if systemctl list-units --full --all | grep -q "$1.service"; then - systemctl_stop 20 5 25 $1 || echo "$1 could not be stopped" - systemctl_disable 20 5 25 $1 || echo "$1 could not be disabled" - fi -} - -semverCompare() { - VERSION_A=$(echo $1 | cut -d "+" -f 1) - VERSION_B=$(echo $2 | cut -d "+" -f 1) - [[ "${VERSION_A}" == "${VERSION_B}" ]] && return 0 - sorted=$(echo ${VERSION_A} ${VERSION_B} | tr ' ' '\n' | sort -V ) - highestVersion=$(IFS= echo "${sorted}" | cut -d$'\n' -f2) - [[ "${VERSION_A}" == ${highestVersion} ]] && return 0 - return 1 -} -downloadDebPkgToFile() { - PKG_NAME=$1 - PKG_VERSION=$2 - PKG_DIRECTORY=$3 - mkdir -p $PKG_DIRECTORY - pushd ${PKG_DIRECTORY} - retrycmd_if_failure 10 5 600 apt-get download ${PKG_NAME}=${PKG_VERSION}* - popd -} -apt_get_download() { - retries=$1; wait_sleep=$2; shift && shift; - local ret=0 - pushd $APT_CACHE_DIR || return 1 - for i in $(seq 1 $retries); do - dpkg --configure -a --force-confdef - wait_for_apt_locks - apt-get -o Dpkg::Options::=--force-confold download -y "${@}" && break - if [ $i -eq $retries ]; then ret=1; else sleep $wait_sleep; fi - done - popd || return 1 - return $ret -} -getCPUArch() { - arch=$(uname -m) - if [[ ${arch,,} == "aarch64" || ${arch,,} == "arm64" ]]; then - echo "arm64" - else - echo "amd64" - fi -} -isARM64() { - if [[ $(getCPUArch) == "arm64" ]]; then - echo 1 - else - echo 0 - fi -} - -logs_to_events() { - local task=$1; shift - local eventsFileName=$(date +%s%3N) - - local startTime=$(date +"%F %T.%3N") - ${@} - ret=$? - local endTime=$(date +"%F %T.%3N") - - json_string=$( jq -n \ - --arg Timestamp "${startTime}" \ - --arg OperationId "${endTime}" \ - --arg Version "1.23" \ - --arg TaskName "${task}" \ - --arg EventLevel "Informational" \ - --arg Message "Completed: $*" \ - --arg EventPid "0" \ - --arg EventTid "0" \ - '{Timestamp: $Timestamp, OperationId: $OperationId, Version: $Version, TaskName: $TaskName, EventLevel: $EventLevel, Message: $Message, EventPid: $EventPid, EventTid: $EventTid}' - ) - echo ${json_string} > ${EVENTS_LOGGING_DIR}${eventsFileName}.json - - if [ "$ret" != "0" ]; then - return $ret - fi -} - -should_skip_nvidia_drivers() { - set -x - body=$(curl -fsSL -H "Metadata: true" --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2021-02-01") - ret=$? - if [ "$ret" != "0" ]; then - return $ret - fi - should_skip=$(echo "$body" | jq -e '.compute.tagsList | map(select(.name | test("SkipGpuDriverInstall"; "i")))[0].value // "false" | test("true"; "i")') - echo "$should_skip" -} - -installJq() { - output=$(jq --version) - if [ -n "$output" ]; then - echo "$output" - else - if [[ $OS == $MARINER_OS_NAME ]]; then - sudo tdnf install -y jq && echo "jq was installed: $(jq --version)" - else - apt_get_install 5 1 60 jq && echo "jq was installed: $(jq --version)" - fi - fi -} - - -check_array_size() { - declare -n array_name=$1 - local array_size=${#array_name[@]} - if [[ ${array_size} -gt 0 ]]; then - last_index=$(( ${#array_name[@]} - 1 )) - else - return 1 - fi -} - -capture_benchmark() { - set +x - local title="$1" - title="${title//[[:space:]]/_}" - title="${title//-/_}" - benchmarks+=($title) - check_array_size benchmarks || { echo "Benchmarks array is empty"; return; } - declare -n current_section="${benchmarks[last_index]}" - local is_final_section=${2:-false} - - local current_time=$(date +%s) - local end_timestamp=$(date +%H:%M:%S) - if [[ "$is_final_section" == true ]]; then - local start_timestamp=$script_start_timestamp - local start_time=$script_start_stopwatch - else - local start_timestamp=$section_start_timestamp - local start_time=$section_start_stopwatch - fi - - local difference_in_seconds=$((current_time - start_time)) - local elapsed_hours=$(($difference_in_seconds/3600)) - local elapsed_minutes=$((($difference_in_seconds%3600)/60)) - local elapsed_seconds=$(($difference_in_seconds%60)) - printf -v total_time_elapsed "%02d:%02d:%02d" $elapsed_hours $elapsed_minutes $elapsed_seconds - - current_section+=($start_timestamp) - current_section+=($end_timestamp) - current_section+=($total_time_elapsed) - - unset -n current_section - - section_start_stopwatch=$(date +%s) - section_start_timestamp=$(date +%H:%M:%S) - - set -x -} - -process_benchmarks() { - set +x - check_array_size benchmarks || { echo "Benchmarks array is empty"; return; } - declare -n script_stats="${benchmarks[last_index]}" - - script_object=$(jq -n --arg script_name "$(basename $0)" --arg script_start_timestamp "${script_stats[0]}" --arg end_timestamp "${script_stats[1]}" --arg total_time_elapsed "${script_stats[2]}" '{($script_name): {"overall": {"start_time": $script_start_timestamp, "end_time": $end_timestamp, "total_time_elapsed": $total_time_elapsed}}}') - - unset script_stats[@] - unset -n script_stats - - for ((i=0; i<${#benchmarks[@]} - 1; i+=1)); do - - declare -n section_name="${benchmarks[i]}" - - section_object=$(jq -n --arg section_name "${benchmarks[i]}" --arg section_start_timestamp "${section_name[0]}" --arg end_timestamp "${section_name[1]}" --arg total_time_elapsed "${section_name[2]}" '{($section_name): {"start_time": $section_start_timestamp, "end_time": $end_timestamp, "total_time_elapsed": $total_time_elapsed}}') - - script_object=$(jq -n --argjson script_object "$script_object" --argjson section_object "$section_object" --arg script_name "$(basename $0)" '$script_object | .[$script_name] += $section_object') - - unset section_name[@] - unset -n section_name - - done - - echo "Benchmarks:" - echo "$script_object" | jq -C . - - jq ". += [$script_object]" ${VHD_BUILD_PERF_DATA} > tmp.json && mv tmp.json ${VHD_BUILD_PERF_DATA} - chmod 755 ${VHD_BUILD_PERF_DATA} - set -x -} - -#return proper release metadata for the package based on the os and osVersion -#e.g., For os UBUNTU 18.04, if there is a release "r1804" defined in components.json, then set RELEASE to "r1804" -#Otherwise set RELEASE to "current" -returnRelease() { - local package="$1" - local os="$2" - local osVersion="$3" - RELEASE="current" - local osVersionWithoutDot=$(echo "${osVersion}" | sed 's/\.//g') - #For UBUNTU, if $osVersion is 18.04 and "r1804" is also defined in components.json, then $release is set to "r1804" - #Similarly for 20.04 and 22.04. Otherwise $release is set to .current. - #For MARINER, the release is always set to "current" now. - if [[ "${os}" == "${MARINER_KATA_OS_NAME}" || "${os}" == "${MARINER_OS_NAME}" ]]; then - return 0 - fi - if [[ $(echo "${package}" | jq ".downloadURIs.ubuntu.\"r${osVersionWithoutDot}\"") != "null" ]]; then - RELEASE="\"r${osVersionWithoutDot}\"" - fi -} - -returnPackageVersions() { - local package="$1" - local os="$2" - local osVersion="$3" - RELEASE="current" - returnRelease "${package}" "${os}" "${osVersion}" - local osLowerCase=$(echo "${os}" | tr '[:upper:]' '[:lower:]') - PACKAGE_VERSIONS=() - - #if .downloadURIs.${osLowerCase} exist, then get the versions from there. - #otherwise get the versions from .downloadURIs.default - if [[ $(echo "${package}" | jq ".downloadURIs.${osLowerCase}") != "null" ]]; then - if jq -e ".downloadURIs.${osLowerCase}.${RELEASE}.versions | length == 0" <<< "${package}" > /dev/null; then - return - fi - versions=$(echo "${package}" | jq ".downloadURIs.${osLowerCase}.${RELEASE}.versions[]" -r) - for version in ${versions[@]}; do - PACKAGE_VERSIONS+=("${version}") - done - return - fi - versions=$(echo "${package}" | jq ".downloadURIs.default.${RELEASE}.versions[]" -r) - for version in ${versions[@]}; do - PACKAGE_VERSIONS+=("${version}") - done - return 0 -} - -returnPackageDownloadURL() { - local package=$1 - local os=$2 - local osVersion=$3 - RELEASE="current" - returnRelease "${package}" "${os}" "${osVersion}" - local osLowerCase=$(echo "${os}" | tr '[:upper:]' '[:lower:]') - - #if .downloadURIs.${osLowerCase} exist, then get the downloadURL from there. - #otherwise get the downloadURL from .downloadURIs.default - if [[ $(echo "${package}" | jq ".downloadURIs.${osLowerCase}") != "null" ]]; then - downloadURL=$(echo "${package}" | jq ".downloadURIs.${osLowerCase}.${RELEASE}.downloadURL" -r) - [ "${downloadURL}" = "null" ] && PACKAGE_DOWNLOAD_URL="" || PACKAGE_DOWNLOAD_URL="${downloadURL}" - return - fi - downloadURL=$(echo "${package}" | jq ".downloadURIs.default.${RELEASE}.downloadURL" -r) - [ "${downloadURL}" = "null" ] && PACKAGE_DOWNLOAD_URL="" || PACKAGE_DOWNLOAD_URL="${downloadURL}" - return -} - -#HELPERSEOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line91.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line91.sh deleted file mode 100644 index 84d8f8077d9..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line91.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -o nounset -set -o pipefail - -get-apiserver-ip-from-tags() { - tags=$(curl -sSL -H "Metadata: true" "http://169.254.169.254/metadata/instance/compute/tags?api-version=2019-03-11&format=text") - if [ "$?" == "0" ]; then - IFS=";" read -ra tagList <<< "$tags" - for i in "${tagList[@]}"; do - tagKey=$(cut -d":" -f1 <<<$i) - tagValue=$(cut -d":" -f2 <<<$i) - if echo $tagKey | grep -iq "^aksAPIServerIPAddress$"; then - echo -n "$tagValue" - return - fi - done - fi - echo -n "" -} - -SLEEP_SECONDS=15 -clusterFQDN="${KUBE_API_SERVER_NAME}" -if [[ $clusterFQDN != *.privatelink.* ]]; then - echo "skip reconcile hosts for $clusterFQDN since it's not AKS private cluster" - exit 0 -fi -echo "clusterFQDN: $clusterFQDN" - -while true; do - clusterIP=$(get-apiserver-ip-from-tags) - if [ -z $clusterIP ]; then - sleep "${SLEEP_SECONDS}" - continue - fi - if grep -q "$clusterIP $clusterFQDN" /etc/hosts; then - echo -n "" - else - sudo sed -i "/$clusterFQDN/d" /etc/hosts - echo "$clusterIP $clusterFQDN" | sudo tee -a /etc/hosts > /dev/null - echo "Updated $clusterFQDN to $clusterIP" - fi - sleep "${SLEEP_SECONDS}" -done - -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line98.sh b/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line98.sh deleted file mode 100644 index a529b626472..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+NoSerializeImagePulls/line98.sh +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Reconcile /etc/hosts file for private cluster -[Service] -Type=simple -Restart=on-failure -ExecStart=/bin/bash /opt/azure/containers/reconcilePrivateHosts.sh -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CSECommand b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CSECommand deleted file mode 100644 index c6a8654f7b2..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CSECommand +++ /dev/null @@ -1 +0,0 @@ -PROVISION_OUTPUT="/var/log/azure/cluster-provision-cse-output.log"; echo $(date),$(hostname) > ${PROVISION_OUTPUT}; cloud-init status --wait > /dev/null 2>&1; [ $? -ne 0 ] && echo 'cloud-init failed' >> ${PROVISION_OUTPUT} && exit 1; echo "cloud-init succeeded" >> ${PROVISION_OUTPUT}; ADMINUSER=azureuser MOBY_VERSION= TENANT_ID=tenantID KUBERNETES_VERSION=1.31.0 HYPERKUBE_URL=k8s.gcr.io/hyperkube-amd64:v1.31.0 KUBE_BINARY_URL= CUSTOM_KUBE_BINARY_URL= PRIVATE_KUBE_BINARY_URL="" KUBEPROXY_URL= APISERVER_PUBLIC_KEY= SUBSCRIPTION_ID=subID RESOURCE_GROUP=resourceGroupName LOCATION=southcentralus VM_TYPE=vmss SUBNET=subnet1 NETWORK_SECURITY_GROUP=aks-agentpool-36873793-nsg VIRTUAL_NETWORK=aks-vnet-07752737 VIRTUAL_NETWORK_RESOURCE_GROUP=MC_rg ROUTE_TABLE=aks-agentpool-36873793-routetable PRIMARY_AVAILABILITY_SET= PRIMARY_SCALE_SET=aks-agent2-36873793-vmss SERVICE_PRINCIPAL_CLIENT_ID=ClientID NETWORK_PLUGIN= NETWORK_POLICY= VNET_CNI_PLUGINS_URL=https://acs-mirror.azureedge.net/azure-cni/v1.1.3/binaries/azure-vnet-cni-linux-amd64-v1.1.3.tgz CLOUDPROVIDER_BACKOFF= CLOUDPROVIDER_BACKOFF_MODE= CLOUDPROVIDER_BACKOFF_RETRIES=0 CLOUDPROVIDER_BACKOFF_EXPONENT=0 CLOUDPROVIDER_BACKOFF_DURATION=0 CLOUDPROVIDER_BACKOFF_JITTER=0 CLOUDPROVIDER_RATELIMIT= CLOUDPROVIDER_RATELIMIT_QPS=0 CLOUDPROVIDER_RATELIMIT_QPS_WRITE=0 CLOUDPROVIDER_RATELIMIT_BUCKET=0 CLOUDPROVIDER_RATELIMIT_BUCKET_WRITE=0 LOAD_BALANCER_DISABLE_OUTBOUND_SNAT= USE_MANAGED_IDENTITY_EXTENSION=false USE_INSTANCE_METADATA=false LOAD_BALANCER_SKU= EXCLUDE_MASTER_FROM_STANDARD_LB=true MAXIMUM_LOADBALANCER_RULE_COUNT=0 CONTAINER_RUNTIME= CLI_TOOL= CONTAINERD_DOWNLOAD_URL_BASE=https://storage.googleapis.com/cri-containerd-release/ NETWORK_MODE= KUBE_BINARY_URL= USER_ASSIGNED_IDENTITY_ID=userAssignedID API_SERVER_NAME= IS_VHD=true GPU_NODE=false SGX_NODE=false MIG_NODE=false CONFIG_GPU_DRIVER_IF_NEEDED=true ENABLE_GPU_DEVICE_PLUGIN_IF_NEEDED=false TELEPORTD_PLUGIN_DOWNLOAD_URL= CREDENTIAL_PROVIDER_DOWNLOAD_URL=https://acs-mirror.azureedge.net/cloud-provider-azure/v1.31.0/binaries/azure-acr-credential-provider-linux-amd64-v1.31.0.tar.gz CONTAINERD_VERSION= CONTAINERD_PACKAGE_URL= RUNC_VERSION= RUNC_PACKAGE_URL= ENABLE_HOSTS_CONFIG_AGENT="false" DISABLE_SSH="false" NEEDS_CONTAINERD="false" TELEPORT_ENABLED="false" SHOULD_CONFIGURE_HTTP_PROXY="false" SHOULD_CONFIGURE_HTTP_PROXY_CA="false" HTTP_PROXY_TRUSTED_CA="" SHOULD_CONFIGURE_CUSTOM_CA_TRUST="false" CUSTOM_CA_TRUST_COUNT="0" IS_KRUSTLET="false" GPU_NEEDS_FABRIC_MANAGER="false" NEEDS_DOCKER_LOGIN="false" IPV6_DUAL_STACK_ENABLED="false" OUTBOUND_COMMAND="curl -v --insecure --proxy-insecure https://mcr.microsoft.com/v2/" BLOCK_OUTBOUND_NETWORK="false" ENABLE_UNATTENDED_UPGRADES="true" ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE="false" SHOULD_CONFIG_SWAP_FILE="false" SHOULD_CONFIG_TRANSPARENT_HUGE_PAGE="false" SHOULD_CONFIG_CONTAINERD_ULIMITS="false" CONTAINERD_ULIMITS="" TARGET_CLOUD="AzurePublicCloud" TARGET_ENVIRONMENT="AzurePublicCloud" CUSTOM_ENV_JSON="" IS_CUSTOM_CLOUD="false" AKS_CUSTOM_CLOUD_CONTAINER_REGISTRY_DNS_SUFFIX="" CSE_HELPERS_FILEPATH="/opt/azure/containers/provision_source.sh" CSE_DISTRO_HELPERS_FILEPATH="/opt/azure/containers/provision_source_distro.sh" CSE_INSTALL_FILEPATH="/opt/azure/containers/provision_installs.sh" CSE_DISTRO_INSTALL_FILEPATH="/opt/azure/containers/provision_installs_distro.sh" CSE_CONFIG_FILEPATH="/opt/azure/containers/provision_configs.sh" AZURE_PRIVATE_REGISTRY_SERVER="" HAS_CUSTOM_SEARCH_DOMAIN="false" CUSTOM_SEARCH_DOMAIN_FILEPATH="/opt/azure/containers/setup-custom-search-domains.sh" HTTP_PROXY_URLS="" HTTPS_PROXY_URLS="" NO_PROXY_URLS="" PROXY_VARS="" ENABLE_TLS_BOOTSTRAPPING="false" ENABLE_SECURE_TLS_BOOTSTRAPPING="false" CUSTOM_SECURE_TLS_BOOTSTRAP_AAD_SERVER_APP_ID="" DHCPV6_SERVICE_FILEPATH="/etc/systemd/system/dhcpv6.service" DHCPV6_CONFIG_FILEPATH="/opt/azure/containers/enable-dhcpv6.sh" THP_ENABLED="" THP_DEFRAG="" SERVICE_PRINCIPAL_FILE_CONTENT="U2VjcmV0" KUBELET_CLIENT_CONTENT="" KUBELET_CLIENT_CERT_CONTENT="" KUBELET_CONFIG_FILE_ENABLED="false" KUBELET_CONFIG_FILE_CONTENT="ewogICAgImtpbmQiOiAiS3ViZWxldENvbmZpZ3VyYXRpb24iLAogICAgImFwaVZlcnNpb24iOiAia3ViZWxldC5jb25maWcuazhzLmlvL3YxYmV0YTEiLAogICAgInN0YXRpY1BvZFBhdGgiOiAiL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cyIsCiAgICAiYWRkcmVzcyI6ICIwLjAuMC4wIiwKICAgICJyZWFkT25seVBvcnQiOiAxMDI1NSwKICAgICJ0bHNDZXJ0RmlsZSI6ICIvZXRjL2t1YmVybmV0ZXMvY2VydHMva3ViZWxldHNlcnZlci5jcnQiLAogICAgInRsc1ByaXZhdGVLZXlGaWxlIjogIi9ldGMva3ViZXJuZXRlcy9jZXJ0cy9rdWJlbGV0c2VydmVyLmtleSIsCiAgICAidGxzQ2lwaGVyU3VpdGVzIjogWwogICAgICAgICJUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiLAogICAgICAgICJUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2IiwKICAgICAgICAiVExTX0VDREhFX0VDRFNBX1dJVEhfQ0hBQ0hBMjBfUE9MWTEzMDUiLAogICAgICAgICJUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwKICAgICAgICAiVExTX0VDREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1IiwKICAgICAgICAiVExTX0VDREhFX0VDRFNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwKICAgICAgICAiVExTX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCIsCiAgICAgICAgIlRMU19SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiCiAgICBdLAogICAgInJvdGF0ZUNlcnRpZmljYXRlcyI6IHRydWUsCiAgICAiYXV0aGVudGljYXRpb24iOiB7CiAgICAgICAgIng1MDkiOiB7CiAgICAgICAgICAgICJjbGllbnRDQUZpbGUiOiAiL2V0Yy9rdWJlcm5ldGVzL2NlcnRzL2NhLmNydCIKICAgICAgICB9LAogICAgICAgICJ3ZWJob29rIjogewogICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUKICAgICAgICB9LAogICAgICAgICJhbm9ueW1vdXMiOiB7fQogICAgfSwKICAgICJhdXRob3JpemF0aW9uIjogewogICAgICAgICJtb2RlIjogIldlYmhvb2siLAogICAgICAgICJ3ZWJob29rIjoge30KICAgIH0sCiAgICAiZXZlbnRSZWNvcmRRUFMiOiAwLAogICAgImNsdXN0ZXJEb21haW4iOiAiY2x1c3Rlci5sb2NhbCIsCiAgICAiY2x1c3RlckROUyI6IFsKICAgICAgICAiMTAuMC4wLjEwIgogICAgXSwKICAgICJzdHJlYW1pbmdDb25uZWN0aW9uSWRsZVRpbWVvdXQiOiAiNGgwbTBzIiwKICAgICJub2RlU3RhdHVzVXBkYXRlRnJlcXVlbmN5IjogIjEwcyIsCiAgICAiaW1hZ2VHQ0hpZ2hUaHJlc2hvbGRQZXJjZW50IjogODUsCiAgICAiaW1hZ2VHQ0xvd1RocmVzaG9sZFBlcmNlbnQiOiA4MCwKICAgICJjZ3JvdXBzUGVyUU9TIjogdHJ1ZSwKICAgICJtYXhQb2RzIjogMTEwLAogICAgInBvZFBpZHNMaW1pdCI6IC0xLAogICAgInJlc29sdkNvbmYiOiAiL2V0Yy9yZXNvbHYuY29uZiIsCiAgICAiZXZpY3Rpb25IYXJkIjogewogICAgICAgICJtZW1vcnkuYXZhaWxhYmxlIjogIjc1ME1pIiwKICAgICAgICAibm9kZWZzLmF2YWlsYWJsZSI6ICIxMCUiLAogICAgICAgICJub2RlZnMuaW5vZGVzRnJlZSI6ICI1JSIKICAgIH0sCiAgICAicHJvdGVjdEtlcm5lbERlZmF1bHRzIjogdHJ1ZSwKICAgICJmZWF0dXJlR2F0ZXMiOiB7CiAgICAgICAgIlBvZFByaW9yaXR5IjogdHJ1ZSwKICAgICAgICAiUm90YXRlS3ViZWxldFNlcnZlckNlcnRpZmljYXRlIjogdHJ1ZSwKICAgICAgICAiYSI6IGZhbHNlLAogICAgICAgICJ4IjogZmFsc2UKICAgIH0sCiAgICAiY29udGFpbmVyTG9nTWF4U2l6ZSI6ICI1ME0iLAogICAgInN5c3RlbVJlc2VydmVkIjogewogICAgICAgICJjcHUiOiAiMiIsCiAgICAgICAgIm1lbW9yeSI6ICIxR2kiCiAgICB9LAogICAgImt1YmVSZXNlcnZlZCI6IHsKICAgICAgICAiY3B1IjogIjEwMG0iLAogICAgICAgICJtZW1vcnkiOiAiMTYzOE1pIgogICAgfSwKICAgICJlbmZvcmNlTm9kZUFsbG9jYXRhYmxlIjogWwogICAgICAgICJwb2RzIgogICAgXQp9" SWAP_FILE_SIZE_MB="0" GPU_DRIVER_VERSION="cuda-550.90.07" GPU_IMAGE_SHA="sha-b40b85" GPU_INSTANCE_PROFILE="" CUSTOM_SEARCH_DOMAIN_NAME="" CUSTOM_SEARCH_REALM_USER="" CUSTOM_SEARCH_REALM_PASSWORD="" MESSAGE_OF_THE_DAY="" HAS_KUBELET_DISK_TYPE="false" NEEDS_CGROUPV2="false" TLS_BOOTSTRAP_TOKEN="" KUBELET_FLAGS="--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --container-log-max-size=50M --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=PodPriority=true,RotateKubeletServerCertificate=true,a=false,x=false --image-gc-high-threshold=85 --image-gc-low-threshold=80 --kube-reserved=cpu=100m,memory=1638Mi --max-pods=110 --node-status-update-frequency=10s --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=10255 --resolv-conf=/etc/resolv.conf --rotate-certificates=true --serialize-image-pulls=false --streaming-connection-idle-timeout=4h0m0s --system-reserved=cpu=2,memory=1Gi --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key " NETWORK_POLICY="" KUBELET_NODE_LABELS="agentpool=agent2,kubernetes.azure.com/agentpool=agent2" AZURE_ENVIRONMENT_FILEPATH="" KUBE_CA_CRT="" KUBENET_TEMPLATE="CnsKICAgICJjbmlWZXJzaW9uIjogIjAuMy4xIiwKICAgICJuYW1lIjogImt1YmVuZXQiLAogICAgInBsdWdpbnMiOiBbewogICAgInR5cGUiOiAiYnJpZGdlIiwKICAgICJicmlkZ2UiOiAiY2JyMCIsCiAgICAibXR1IjogMTUwMCwKICAgICJhZGRJZiI6ICJldGgwIiwKICAgICJpc0dhdGV3YXkiOiB0cnVlLAogICAgImlwTWFzcSI6IGZhbHNlLAogICAgInByb21pc2NNb2RlIjogdHJ1ZSwKICAgICJoYWlycGluTW9kZSI6IGZhbHNlLAogICAgImlwYW0iOiB7CiAgICAgICAgInR5cGUiOiAiaG9zdC1sb2NhbCIsCiAgICAgICAgInJhbmdlcyI6IFt7e3JhbmdlICRpLCAkcmFuZ2UgOj0gLlBvZENJRFJSYW5nZXN9fXt7aWYgJGl9fSwge3tlbmR9fVt7InN1Ym5ldCI6ICJ7eyRyYW5nZX19In1de3tlbmR9fV0sCiAgICAgICAgInJvdXRlcyI6IFt7e3JhbmdlICRpLCAkcm91dGUgOj0gLlJvdXRlc319e3tpZiAkaX19LCB7e2VuZH19eyJkc3QiOiAie3skcm91dGV9fSJ9e3tlbmR9fV0KICAgIH0KICAgIH0sCiAgICB7CiAgICAidHlwZSI6ICJwb3J0bWFwIiwKICAgICJjYXBhYmlsaXRpZXMiOiB7InBvcnRNYXBwaW5ncyI6IHRydWV9LAogICAgImV4dGVybmFsU2V0TWFya0NoYWluIjogIktVQkUtTUFSSy1NQVNRIgogICAgfV0KfQo=" CONTAINERD_CONFIG_CONTENT="dmVyc2lvbiA9IDIKb29tX3Njb3JlID0gMApbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJdCiAgc2FuZGJveF9pbWFnZSA9ICIiCiAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmRdCiAgICBkZWZhdWx0X3J1bnRpbWVfbmFtZSA9ICJydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMucnVuY10KICAgICAgcnVudGltZV90eXBlID0gImlvLmNvbnRhaW5lcmQucnVuYy52MiIKICAgIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5jb250YWluZXJkLnJ1bnRpbWVzLnJ1bmMub3B0aW9uc10KICAgICAgQmluYXJ5TmFtZSA9ICIvdXNyL2Jpbi9ydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkXQogICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW5jLnYyIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkLm9wdGlvbnNdCiAgICAgIEJpbmFyeU5hbWUgPSAiL3Vzci9iaW4vcnVuYyIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnldCiAgICBjb25maWdfcGF0aCA9ICIvZXRjL2NvbnRhaW5lcmQvY2VydHMuZCIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnkuaGVhZGVyc10KICAgIFgtTWV0YS1Tb3VyY2UtQ2xpZW50ID0gWyJhenVyZS9ha3MiXQpbbWV0cmljc10KICBhZGRyZXNzID0gIjAuMC4wLjA6MTAyNTciCg==" CONTAINERD_CONFIG_NO_GPU_CONTENT="dmVyc2lvbiA9IDIKb29tX3Njb3JlID0gMApbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJdCiAgc2FuZGJveF9pbWFnZSA9ICIiCiAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmRdCiAgICBkZWZhdWx0X3J1bnRpbWVfbmFtZSA9ICJydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMucnVuY10KICAgICAgcnVudGltZV90eXBlID0gImlvLmNvbnRhaW5lcmQucnVuYy52MiIKICAgIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5jb250YWluZXJkLnJ1bnRpbWVzLnJ1bmMub3B0aW9uc10KICAgICAgQmluYXJ5TmFtZSA9ICIvdXNyL2Jpbi9ydW5jIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkXQogICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW5jLnYyIgogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQucnVudGltZXMudW50cnVzdGVkLm9wdGlvbnNdCiAgICAgIEJpbmFyeU5hbWUgPSAiL3Vzci9iaW4vcnVuYyIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnldCiAgICBjb25maWdfcGF0aCA9ICIvZXRjL2NvbnRhaW5lcmQvY2VydHMuZCIKICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIucmVnaXN0cnkuaGVhZGVyc10KICAgIFgtTWV0YS1Tb3VyY2UtQ2xpZW50ID0gWyJhenVyZS9ha3MiXQpbbWV0cmljc10KICBhZGRyZXNzID0gIjAuMC4wLjA6MTAyNTciCg==" IS_KATA="false" ARTIFACT_STREAMING_ENABLED="false" SYSCTL_CONTENT="IyBUaGlzIGlzIGEgcGFydGlhbCB3b3JrYXJvdW5kIHRvIHRoaXMgdXBzdHJlYW0gS3ViZXJuZXRlcyBpc3N1ZToKIyBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rdWJlcm5ldGVzL2lzc3Vlcy80MTkxNiNpc3N1ZWNvbW1lbnQtMzEyNDI4NzMxCm5ldC5pcHY0LnRjcF9yZXRyaWVzMj04Cm5ldC5jb3JlLm1lc3NhZ2VfYnVyc3Q9ODAKbmV0LmNvcmUubWVzc2FnZV9jb3N0PTQwCm5ldC5jb3JlLnNvbWF4Y29ubj0xNjM4NApuZXQuaXB2NC50Y3BfbWF4X3N5bl9iYWNrbG9nPTE2Mzg0Cm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMT00MDk2Cm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMj04MTkyCm5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMz0xNjM4NAo=" PRIVATE_EGRESS_PROXY_ADDRESS="" ENABLE_IMDS_RESTRICTION="false" INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE="false" /usr/bin/nohup /bin/bash -c "/bin/bash /opt/azure/containers/provision_start.sh" \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CustomData b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CustomData deleted file mode 100644 index 74a70a08ca0..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/CustomData +++ /dev/null @@ -1,314 +0,0 @@ -#cloud-config - -write_files: -- path: /opt/azure/containers/provision_source.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - - -- path: /opt/azure/containers/provision_source_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/9yW8U/bOBTHf89f8ZZZrJ1mQpm4H6i6W6eGOyQEJ7aJk4CL3OQlsZrame1QEPR/P9lN05a2R3f74XRDQk3sr1/8vv7Yz69fBUMugiHTuedhnEvwP8tKxVxkEGuMcixKVDpKuDZK7uscUqng67ASpvI9z2OlGTM1uuqfcVHd9zMUptWGRw8AwIUjrYQZbL8jrVxqI9gY2+9AG6ZMf30o+KTju7ETxk2UShWx0kSFjEfaNSs06iEeJxFPo5TxolIIncMDOILDI2CloTYikA5MWGGjMhf16Qlu3HCewvW1+wj0euDnskh8uL3tgslROIWb9z03QMLLy+j3i7NBdNU/Oz3/+mf/t/D8yyyv4lmcSrwY6TI8C/ufwy0RU/6CYSiSrXZNPW/drWYRJjkvENJKo4Lgjqmg4MMgKUdZYHWLJlaaoODa6KX2mMU5uh6m4pzfYd35IUjwLhBVUcDhh71OFxK5SNnm8OaKcWMRsrAoLJBpBJnaFQI3vTeNXheIJbx374kU6E0tU1GGJqpK60STiV17jrrXOXCvVjVTRLIyZWV6gRmXdrY0Q0NnXfuyMjOHpQIOXABpafwGHSB1uPbK7LdgN1vLUioDg/DTaf88Orm8OP8Sng96QgouDCoWG36Hjdo6DJTGUqQ8s5RSBpSmUsXoGhNMG209ZaAp0AfgQhtWFE3vK2jNBbOcnOfwBAYRyJoL8ASZwhJoCP5freur8PZ4/237qXUd4u31pZr9X0j3u/+2Tfw27O3V28P+xcxsirq3B0OFbLTYS9vFTbfdJkA4UPzW+A3P90i9tJUS0FmYXWis0ThqGutd4ihpUAvvMa4MJvDMJMLB8DHqbafJArPa8DXOSKc7G+jm0SOHXRdRVqZH3ndB5zx1vqw+/G9oq9MGKmFQjrLj44vScCn08XHPXx7rTjZKhaT1CKowluMxikRbXsnjx+kWPH5s/VcUMxbIYj1WeldPjO8EpjFie443Pvl44zdMdV+GqqxUtn50/aRI1TkAmT/MrXUu7EjYf0/SbrjUOf0bKOwlKqrKTLFkzsZKUbO6Zc3GwmYFtBbU5W0HNrZwsTsTu/KwvZg11zOdy4m9MLnWpfL2EicCJz4sp2+/8LwYbvDvR0piU+E2xV1n9Z/k3o4gryC8VggdpDWimwFdcWipDG5Es16gAQ7/YPGIZXii5PiEF4uzaxB+ik5Oz8Ie6Xz3zdxezH85OFhA8WC5mB+45HEeewqUsqKQE5rIiXAz10sXdvIrUIFwsH7BXvEq5d7Uex1enHh/BwAA///v2zzl1gwAAA== - - -- path: /opt/azure/containers/provision_start.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_installs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_redact_cloud_config.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/6xUQW/rNgy++1cQvchGE+edC/hQtG/YaSseslNmCIpNO1ptyZPodsGw/z5IVm0lcbEelktkivz48SNF2Q/aEJxF3yXhLEw7CGMxSX58f3582n9/hgLYx5klSY0NGKxFRfyoNVkyYuCv4xErrRrZcuosJ/2KKl29fjeSkDeyw+whAQCotCJUxB0JKDyX3IoGeadF/V8YBxbCWZndoB3YaNFYVh6+ldOZlQfmubESCvgoygd+PdEHyXrshzTOlyUX6lg0b7JCPhipKjmIjlusDFJqh3C6FWPt6jL1TDpJXh73P/P9r3wy8Z9+++UJCvjbA7HdmzC7Th53rpwOaTcXuF0KZA9fa+UmYCJVHs8oJLQ7O+T0Fy0gn1Wc/HOpTNXpseZTkjT+4IOg0wb0SMNI/iPoQsK0OFksFGCR0pXq81c82zTLEh/zLukEekC1loIZloGw0Ez4fnRir1qQgAKa3KCo0zBbkcPtpN6EBxqNNrA0E6S6wDmw5c6ycmEjG4hHwLFmpYuOpVjcr0SCYiX6M2ebG+z1G6aRLZD/+LmOUsp++P5J1cLUWAuN0X2U6gEY3MMFTgyz0rND5Fym0YNIYik6VDE7m0FRwLfL8o8GxWsyhQW+z2M/OLbT3GE9Sb8NLSQ90Y3H7WpyoqsNsPf7aWiC1Rc8U4iMuS8jjbZE1HE3nolsgHMleuTcVcI474VUnLMJz29gA8W8jfNH0449KnrxN+mctUZbGTmQ1KpgT7rvhaqhkwphJNlJOsNosQbSQYPPGgc1NlJJh2P9yDK4v1DXkkkPdxu4y//QUq29vqzM4B6YV08qEGAHrGQjr2R3KyOH3y/A9ye0OFPrR0twxKVrR2y0wRsUqIRyfpXuOvSOjnin21aqNmdZJGUu6pqLoOGi3t12G4NuXZ/vNvO1wT9HabAu9mbExUznAQtLZrGcsBsK9uIeHulbnrP6X+Q0jdL/xIZOCArfuzO0qNCI62fgGfqJn/UOjWDhDQrTuqUbWPs/x9uGtbi21N11vrJ2vT1+b/8GAAD///cgKleCCAAA - -- path: /opt/azure/containers/provision_send_logs.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5xTTW/bOBC981dwvQdKQERJ9sZIDAiLIPAugqZFkLintjBocSQToEiVpBy7Qf57QfpLbpO0qA/GcPTe8HHmzd9/4bSzJl0IlYJa4XbjllqNEBJNq43DnZFSLEaHYyf4Pl43koIzAHQqoQHlZgYAM4unM4SWzrW42NPpndbyPVOsBhPFCNWaybl1zMF83UhcYA+nBr52YF2E8O5H/p/OyNnx6FGTNM3HF3Q8ovnwkubjtGHlUihI/y110xa+cijc4y2BcTC2eDpkQrV10thkBcYKrcgEk2GWD5M8T0YZOQCfQxT3BOMCT2e0MrqxzghVR6dvoZw5RjmUmkNEOlclFySOUamVY0KBmQuOC3zk0EoozqSMCE2v96BjdMNJ/Cn7Qh2sHTJawrzUqhL1XLEGfqPQvZZwo6xjqoRbYd1JwuMqUXeGOaHV7vSBNdC7k0Mr9cZPd6v8Rw3UtlK4iNDAQehRuCXWLaiIpCtmUikW6SNjNSiXSl2XWkoonTb+YOk30ZIzTMyCxN44PjcJHffR3LcSFyGmBhiP4vCta6VmfO7Trzvn7uMvnTMZDc+H43TVXHl1t7r+I8ucJ9llkuU97hFZSgHKJaU2BmRosuBkgq0zkV8k6v/+ieL4Da7vsb/p6t3D9cP0Tna1UG/d1ROX0ZxmL2P3/ghy+t58Cb1qwvikrpOjGwLzxBxH6vMxXGi+KQ7DPNttExJVf4rUG7izuCjwMMu2BmiNUC4aPHRlCdZWnZSbHQV4cMRgawZYCxdlMQJpoc8k/zEhgWOnd7RAInEPUpF7sK1WFvBWwAQ//azq+TWOf9rkszqh9Jd/EJZ/EO8LBKV5jL4HAAD//yh+BLByBQAA - - -- path: /opt/azure/containers/provision_installs_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - -- path: /opt/azure/containers/provision_configs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/manifest.json - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RSXa+TMBi+51eQujtdK0aj4Q45NeckE044wxtjSKGdNulaAu2mEv67KTrYFmDmZMlu3/d5P56PxnFd1wWFkppwySoKfPdvratvuGAR2TLgu2Cr8l/LAZgtmjCO1sFDhJO77AtOnh7iqH1JfpuKLU96j8E6vO8RkLIcvBpOULWXQhG6UgXRXEl7CqlSo+EUOmDqscE0WdmZH1qXtY+QfRPmQuWwUBWDey6p2tdQMt210BkNNEMDLZr0Yxqt0yyM73AUfMYtElyan5b7Y5oFSXjfni+c1cXkRmrTr03wCgdPuDUzeh3fOtdux6qaK1kD3/367ahecinZqZVd3fvw+q3VyoPvobf0QN9tj4YZ/c560LsD6h8CVEYWFzJiIdmiSdIonOLf9f6f52RG7Knrp6PbOkoA5VxJXkyl4PrMn++wB7034wZzWWsixNg4ZRtihB7dcBIDueOUkyH2lrrmXQgmonHJzxnzJgUZe4lW3GJu+Eim2bYURN9EDKd1XuD4k/MnAAD//39cbrrZBQAA - -- path: /opt/azure/containers/init-aks-custom-cloud.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - - -- path: /opt/azure/containers/reconcilePrivateHosts.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3SSb0/zNhTF3/tTHEy0AZKblo1JFDLWjaBV/OuI4A1ilUluqEVqB9vp2AP97o+ShpI+EnkTWz7+Hd9z7/ZW+Kh0+CjdjDFHHsJAm0o78h/bUpWUS1Uw9kReyFI5sguyQpUit2YuvHxyO7t4Y0C9jIKdtLIFhEsuIP4GvyQvM+nlEN5WxMFn3pfDMBz8dtjbP/i11/7DeasLlXZe6pTC1MzLylNYY09kqcSCrFNGR/v9waHo/yIGg59yY+fSR55ePd9lgMpxDx6ccEQReJ/j4Qh+RpoBwPgsifgRhyWZQVhZP/hCOY/j42PwoPbhjTA3FgpKgwdvreb+j4clP0JmGkFT6zn931TrITI+5BD5oCYFavdTcyeLin5Q7W+qVA5KZwbBCol3PFkqIdQL+L/y2Y0m46SJfDwZZZkl5wLeKar+mvtCr2poLPn6zJKv7Ic0V80iM5pYu1vf5WzJWHIRx5NpEv91fXWaRIMDlhaV82TP/jm9injwdn77ZzwdTcbTJL65i2+mV6PLeMlZHfs9go4YWxH2eqVVC+mpUPq5t4eHz2Y0rtw9qxKWUqNTVRBmxnnXhL9BckqnBOV/dtDGY3SeoOWildXV0qvy6LNcsRW7Qxhu8Dhj/81qu3oe2462x+NJFOx8PebrARPf1sTxZGPEXEFU1mOzEeRy1Y7UaK90tY5e5W2rX8A7vI3HIiSfhk0yHZtO0wAqHK3Mq8zAUQahwMMuJsy6oE/E17bvK5ongpCdu/gdYUaLUFdF0eHclpn0lG02zptOTPyj6i8jaqaSbcfXZ+x7AAAA//92UkeEmAQAAA== - -- path: /etc/systemd/system/reconcile-private-hosts.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTOMU4DMRCF4d6n8AUSn2AbBBJ0KAFRrLaYDG/ZkZyxNTOOCKdHAaV8r/m/+V0llvQIZ5Me0nQ6gJuyVOSC4LI1D8/rba/Ncje5UCBzHR6wNB9hF2Es6e3aMbmce0U6wIMspqa7laQOQ3r6Bh//znISLSfyLZfWo9DPMBRuGiQK82J3wOt/6/km2PuW5hf1oFqX9EEa+Hy4TudRQ3bDYfsg+0L8BgAA//8Sy/8V0QAAAA== - -- path: /etc/systemd/system/kubelet.service - permissions: "0600" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4yUz2/aMBTH7/krnlAP28H11u1W5QBtqFAZVAS0A0XIcR7lCecF2S+03br/fQqBbrS0ak6x/fn+iPTi6YRJZtElButpLVRyfF1l6FCii5JzqndujCyTBwoSYl0Fr11pjdMZsV7t0J+GJcSMcl/6lSrZEeOpGH+HArZkMcTo89OAfkMWo/ZC0H8cj6Zp8zaLRhjEeImNuzePYb9M0cZnUcIb8iUXyNIlh7FGsTrHhamcPDdNK2sxhOSBJBUjVYi/fv8WJQ9o09rpxmO8/bLMhCXoci3a/Ko86udaYW91GpZHdMUqJw9qDXpjvHaUPSd/hLVMb3VRFlq0gCmcfCrKigWe4M7jGm5bL5NuW/AE9xaU+wzKIXyBGZyDLJGhid3KlcqI81c1X2+cw4Jax9rvbAqzQhWWxuNrt+hQp3SolZiJyRwGUAJsag9HQY6itH6JclWgJ7sX/VO9MZtwG8HuUQq5dlP1YKE/OOEyR+VMhi7ErZPf15NO0k/G88HwMpn3252kn/5pHQg28dnhunRVgWrtqjtilZNv5q9u4RkFg26IBgj/aU/2YeN+Ou8Mh+N0PGrfzLv99lV6DLsYDrq9q3m310/ehcbt3iAZXX6AmY8mg3HvR2N3lLwaDSfvVNoeRNG0x0GMc7PthYB55zEuKiekqoB+94NHfwMAAP//toiZ8HIEAAA= - -- path: /etc/systemd/system/mig-partition.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TOwWqDQBDG8fs+xR56NZs8gAfbWhFaK7HSg0iYmIkZ0FmZnQ1NS9+9mEuvf358fF3LpL15xjAILUqe02xZppt9Kws7eD7TGAXWbj3b6konApvttltb1K0xXYNypQF7s8egIJp6Ts5AUxQ0+RcOzRprwdTFIO5I7Pi+kYSZbDLTaHf/Lr2DI4SLdX5RB99R0A2eFYhRgptpTBYQpfXQJlzsw09Rt4eyaj6y6ik/1Pv3l/I1/zWmKzkoTFNvPoEVT4+3dI6TUhIDykZBRlTzFwAA///GvdrK/QAAAA== - -- path: /opt/azure/containers/mig-partition.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4SS0YubQBDG3/0rvpp76BVTa3ulXI4+lN41CE0MJelrWddRh5pd2V1tQsj/XjRcIiSgDMLOzu+bj5mdvAlTVmEqbOl5k2Wyfpnhe2MMKVftAyxbzlig4tQIs8eWi2ktjKMMb0vnajsLw4Jd2aTvpd6Gy9/xc/wtvFTdQwqltMM/bf6iNromU+2RkhSNJegcriToxmWi05yvNsgMt2TQkrGslTdZJ8/JDBtLw+avfpxGpnuN7oIdawWROzJ9TqS6JbC1TfdHzjvK4C3i+Z/Vr+RH/PPl690hOnpSWMLdYZA/ghU8APAX8Twq/Pv+0H2qH8jUbrnzg6ksGNFjcBVn4OnpLPRxVOgh6OMW/GkMfgxuNn0Y4z7for6MUR8GFE6zenchSJYafrd4gVZUfFotK+uEktQ9hJwr8i/1O3aIhkbICuldNZb8PwAA//+R/AassAIAAA== - - -- path: /opt/azure/containers/ubuntu-snapshot-update.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RWTY/bNhC981fMqkK0LiIr26BF60A5tMipuXWLArVdgZZGFrsyqZBDbxrH/70gKctf2sVeil4MyvM4M3zz9KhvbjJrdLYSMkO5hRU3DWMGCVIFUllpkMIjMmaU1SVCpjrK+BerMSuVJC4kapN1Wm2FEUoWAVZUwpBWU5fPSk6EssKqsN1a8wpvJ7BjABpJCzT53RsGUCsNAoSE+NbgJ7iDuA9P3kGlGADAMVHaJ4J0C69ewUojf/AQUcMcYgEpfhoSwPIdUIPSA3xVqyXc+UdsDYJpETv43v9RCwZQKYkMAMtGwYfPWFrC6qQ6HKrHAkhs0LA9Y2W9LhpuCtWRULI/ocvXYh6HYiGUx9/5p1ZIzN1hK0glRNlfcYjPMugiiGK3M5p46NwjYrcjguWhmkF6ebUtby3m8dsDSzdw3vChIER9G9EZaT0Zh+AMYp8wgvfvDzsHPoct/mgCEpMlQ9ZkNv02Pj4PiZJsnZxlqoU756+///zhl/uPeeR12qqSt16tD3aFJbWQpn6lZC3WkG25zlqx8tEWKTvGooN+i1YYKjpOTZ4hlRnvKAsRM3WhM9iKlw+2ewY9DQhWtspWhWP0iPX/hd9pWa8Ze2xEizCHG0jr53p1eu0V70lP/uCChFz7V+T+42+wUooMad51Qq4TDwwSfsu8cplUFRaSb5y+GmXILSfMvxvpF4ji3QDYR2dvRxhyyaVUBGskcEBwwH68nwXBHavFeY1eG8NfEXwF0pDMZ7brUM+WiVu36tGvJ4ytVVuhLPzLQ3zT5fFt3I/6WPa0TWdIfxslPb3RbrpB4hUnPvWtciclM08ch1oioVlMvUUtpqXaZK3YYtpxKhsh12monQ61k+U+OiPnsrlRjgIIBhAIA440g/QazIPowFWFQ9UT+t44+p5MMoOxBhgrrdYo6f+hrC8+zpmzjt1Ve+PCCqirA4/sZoOdz5+YSZ4/WXg56l0921xWMNaI2wKGb/C1G6Q7N5AKA4yOmcIEe4Ny74Fqq+LEM/L4tuQE8e7SbvYTdvTDhqibLbJFuEinXJeN2OLUrqwk6wawyMJ6kXms8WAjeWcaRaO4ZJQlb6sjzVz08oL8i9v5m/Sn5WL342J/3y9/WOz/XEz+ow77+4t3VHQaDeot9kQbD+sBRbjZSFu8uBWdsM58eQ/xLoSOq7B9z5jEx5fOcVDlxez3Edx4UV7kupTk4So93x3B+4tyJ9fP/mTj6E3kBGy7ihNWsyDXStT1MwnHjgZfnW9b9ML2HwmO/TVSEVJfneE8DDUXLVaXV4VPdP0ReJXsGvJEQjYYX29lCGmqtqgftSAcccKjyQWPe4nF5SNiZcG3DyrvCYdSbboW3TeisWWJxtS2bf9h/wYAAP//2imkv10LAAA= - -- path: /etc/systemd/system/snapshot-update.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/yzMvQ3CQAxA4f6myALhJrgOJjhSRSnMYSlubMs/CJgeEaV7xdO3LkyxlSv6MNIg4dYZ1HeJadEnBE4d7UUDS1nP2sr9o9iE8b+V2xtHD7BoVTQqfNOwDuEAYjSv+UiOnP1k5zzYi++/AAAA//9JR72LfAAAAA== - -- path: /etc/systemd/system/snapshot-update.timer - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TMPapCMRBA4X5WkQ28hy4ghRcbqwv+YBFSDMmgA8kkZCbC3b2Ihe058IWbsEU4kqbB3biJP09Rp4Jdn83c7BmN3He7ToNb5oSlbADhypVGhFWW1uxCye93lQVW+aiHZPyiX4VwEjUsJcIdxSgvm6+zGP9NpfFvOB5k7wAAAP//XnoOYJAAAAA= - - -- path: /opt/azure/containers/bind-mount.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/2SP3UrzQBCGz+cqptOcfSx7AR89ESMEayqaHomUTTMhS5LdsD+xKL13qWJNzOHDM/POO+uVjN7JUhvJZsRS+QY8BxQW2Tk+6fCDxkbj+YqDHrhWuvvmE8Aa4GG3z4vD4y7Liw3J3gSpWk8A9/ubdJsWh5lPPiZ4lm0sueNA1+Hb7GlDclROdrr81dC3lXYoBvyTQADPaV5kebo93GXbdEPSDkGq9+hYHq0JSht2/vJqJTyboA13BLrGF1yhYKRktk/4+h9DwwYQEfsRKZlUI6Rkcp2+hoKNx2aRA7Wet57EnAl6G01AIS69pnb222IN4dj0tkL1723hPgMAAP//gwnZGtQBAAA= - -- path: /etc/systemd/system/bind-mount.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/xzNMW7CQBCF4X5O4QuYPYGLoFCkBUUpLBdj+xFGWc+i2bcR5PQRrv9f+sZPN07yjrqE3WnFh6P52m2lObufNiOD3apUGS+IX1swyRmVGhyK91e13AJyxqbmb1ciTg/j8ESV0wPLZR/TbJ5mrbculTuT/rVAWopTzRH1ldd+Jw/1JjJ+eKXmPMmXOrEen8PWMq1vFXGgxjco/wEAAP//HvlBProAAAA= - -- path: /etc/systemd/system/dhcpv6.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTNsc6CMBAH8P1e45uh27d10IiJkwMaB8JQy19prNfmeqD49A7EJ/h1Zw7a0w7FS8gaEluwu0YMo8/zP21uCrEMfSV5VIljYNTq5A4l6lrIHDx6Oi0ZNjHKmJSaN3yrTtSalNW4zyQwPrG6wJBiVqBahbqMRN2Bi7oYe7o4VgzbxT6nqKGaCuTH/TXHPX0DAAD//wVR54mwAAAA - -- path: /opt/azure/containers/enable-dhcpv6.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3RS3WqcQBS+n6f4apZNezG6W4g3TQPFaCpdFMKG3hTEHY/rUDNjnZlNYOO7F9cKbbq58XD+vh/PXLwLnOmDnVQBqQN2pWkYM2TBaQoaneyoLmU75Y6x26/RJo2zbVhEeZYUSbqJPwdkRVA1ohs/rSRlQ19oVbNokz/cFmmWbosouZvmFNkn3f8MpLLU16Ug41fB1YqLVruKSyWtL+o9Yz2VFXgPXuHyElm8/Z7ffzuRpncP91+2aZ7h+hpxHuHlBbZ3xOQIB7LNClKRDVE6qxkAuA6mJepwNaezUvA1eAguarxlA7ytERzKPmjl7vXAyOa3VBoy4IeJfNYT5xFjZVUVsi6UtgU9S2PN+w84nlTse+rAfz0n8BbH9eCN4ePgjeskGj1Xb27+NNjA2NSItKrl3vVS7Ucj3SGE7/seY1Y70bxtZLnEf3LgWflI2lmsV588LI5nLjyMmz9Oos/sL45nrzOMYP++gL9wjKs0ZF3pJzX9tOVyrrnuVHlttrRSKwj92LVkyWMXcZ6w3wEAAP//V01dfMMCAAA= - -- path: /etc/systemd/system/docker.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStart= - ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip= - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/docker/daemon.json - permissions: "0644" - owner: root - content: | - { - "live-restore": true, - "log-driver": "json-file", - "log-opts": { - "max-size": "50m", - "max-file": "5" - } - } - -- path: /etc/systemd/system/containerd.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/crictl.yaml - permissions: "0644" - owner: root - content: | - runtime-endpoint: unix:///run/containerd/containerd.sock - #EOF - -- path: /etc/systemd/system/ensure-no-dup.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zyNvUoEQRCE83mKBuO9AfMNDjxTwcXouGB+ar3GvZ6hu0fEpxeV26z4qqjv/Cbsl/AEK8rducl8rJUq6uiE7ClvIB0bjNam9DEyBE5Zub6DWKhru7GV0YbRrVWE4+rQuTTxxAKtB4N+crkXvw8bfKfn5T9cwivMk/rcZFoTb0NxRwvK/BhOXyjL3yJmlpiTXSm27jF9D0XcjRYhNhSTtKmOfrBreDi9PIefAAAA//+1G3Iw6wAAAA== - -- path: /opt/azure/containers/ensure-no-dup.sh - permissions: "0755" - owner: root - encoding: gzip - content: !!binary | - H4sIAAAAAAAA/7yVX2/aPBTG7/MpnqZIL7yTE7r1ZpvYhCiTqpWC+ueKcmHiA3EV7NR26Fjhu08hYYM23eik9Q6c4/M753mOjg8PwrFU4Zjb2PM8Gjs+TsiCOUxk4siAnaH99ZKddE+uB2xw0e+dXnbw9lMoaB6qLEk8OcFwiNpnMLpDE6PRR7iYlAcAFMUa/tP7JksIPDHExQKWnF9Ef5MOTW8iy5wHYBOE5KIwUjJU5AIRHjVZpJXjUpERLD+LtJok0roqcqQk8u9yCqUdshQLckEQ5CSppiBuksUW/CiHe2MjxZTO+YxatXrE3QtqwBK3d2AGfpAm2VQqOxxhCUsJRa4euEVKaLVw4xeMG7+BJYLij9/wUqNn0kY9LV4LvUX0G6Xufu1h63jl46AF35mM/CqNi3SoPfySbbVWWyqUaTKdWcy0oN9Iv/Z9x3i7sGGUcGvz3sOd/CEXwpC1L6pnT/dL+08HrVpdpshJsLG+f5RxiamhFKyr4UtFDvVhk70f/X8TNB7erYrf/k5UVcBGcvY9V31DXu0vtNBk193FfE7gCjKdH6OU54+9plpcZmNFri2EeaWJkymfBXZNfdT+TjXVGkQ6S8S6X0GOzEwqgotlLoGg/yxSLZADUABguJoSJkbP8Hwjey6EXruzkWiP0Wx4XlEyFyLP/HQJlssWUcyl8it373nFtcrAdkUgS3E6mB+D2Z8z02t3VmAac3LxGzAmU2ZNhK3JA7tFu9PpDq7+CWfX4hx2ctEfPIPqX18Nrq/WFT1VoVRXZy7N3No7RffJIh99EhUX8ifHfqiW+WyD2n7X/uYtLDfZYbf/5UcAAAD//4wWzb9ZBwAA - -- path: /etc/systemd/system/teleportd.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=teleportd teleport runtime - After=network.target - [Service] - ExecStart=/usr/local/bin/teleportd --metrics --aksConfig /etc/kubernetes/azure.json - Delegate=yes - KillMode=process - Restart=always - LimitNPROC=infinity - LimitCORE=infinity - LimitNOFILE=1048576 - TasksMax=infinity - [Install] - WantedBy=multi-user.target - #EOF - -- path: /etc/systemd/system/nvidia-modprobe.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=Installs and loads Nvidia GPU kernel module - [Service] - Type=oneshot - RemainAfterExit=true - ExecStartPre=/bin/sh -c "dkms autoinstall --verbose" - ExecStart=/bin/sh -c "nvidia-modprobe -u -c0" - ExecStartPost=/bin/sh -c "sleep 10 && systemctl restart kubelet" - [Install] - WantedBy=multi-user.target - -- path: /etc/default/kubelet - permissions: "0644" - owner: root - content: | - KUBELET_FLAGS=--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --container-log-max-size=50M --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=PodPriority=true,RotateKubeletServerCertificate=true,a=false,x=false --image-gc-high-threshold=85 --image-gc-low-threshold=80 --kube-reserved=cpu=100m,memory=1638Mi --max-pods=110 --node-status-update-frequency=10s --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=10255 --resolv-conf=/etc/resolv.conf --rotate-certificates=true --serialize-image-pulls=false --streaming-connection-idle-timeout=4h0m0s --system-reserved=cpu=2,memory=1Gi --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key - KUBELET_REGISTER_SCHEDULABLE=true - NETWORK_POLICY= - KUBELET_NODE_LABELS=agentpool=agent2,kubernetes.azure.com/agentpool=agent2 - -- path: /var/lib/kubelet/kubeconfig - permissions: "0644" - owner: root - content: | - apiVersion: v1 - kind: Config - clusters: - - name: localcluster - cluster: - certificate-authority: /etc/kubernetes/certs/ca.crt - server: https://:443 - users: - - name: client - user: - client-certificate: /etc/kubernetes/certs/client.crt - client-key: /etc/kubernetes/certs/client.key - contexts: - - context: - cluster: localcluster - user: client - name: localclustercontext - current-context: localclustercontext - -- path: /opt/azure/containers/kubelet.sh - permissions: "0755" - owner: root - content: | - #!/bin/bash - # - # - # - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 80 -j DROP - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 32526 -j DROP - -- path: /etc/kubernetes/certs/ca.crt - permissions: "0600" - encoding: base64 - owner: root - content: | - - -- path: /opt/azure/containers/setup-custom-search-domains.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5yQQYsaQRCF7/MrKsZDcmjbFSTXDDpBQVeZUQK5NGVPjXbs6Zauko3Z+N/D7uwlq6dcCurx3uPxffygdy7oHfIhYxJQvzKO52QJev3nSVWYWbFYF2Vlvs0XxTrfzK69d4bpvNqUq3u+jOwhQg+gDqyYMNkD9J8n22qzWpqqyMvJzExXy3z+aB7zZXHtwR8QIlAImsTqQPIU01G7IJQatMSDWo+Hyvp4rpULTga22Wd8YaHWijeJWDAJjIYwhochvBW4sM+e0IlpYjJ4EuOjPXKWSNLFtrVxjWnQ+XOil9AYHkZDwJOo/QuPC7jAgt5DIvRtDczcHSUxegbGdofKxraNoXv+lU4XOcQwGnx5k73bMZzQHnFPRyf3lnXc3qMqi3yxNOu8qr6vyukrrddJ8DO6AGp7w7YLbKuivH7tf7pfesM/gUb1W4PO1Q/9Gf4zl/0NAAD///uJhCVYAgAA \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line105.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line105.sh deleted file mode 100644 index 5aec7b9068c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line105.sh +++ /dev/null @@ -1,34 +0,0 @@ -[Unit] -Description=Kubelet -ConditionPathExists=/usr/local/bin/kubelet -Wants=network-online.target containerd.service -After=network-online.target containerd.service - -[Service] -Restart=always -RestartSec=2 -EnvironmentFile=/etc/default/kubelet -SuccessExitStatus=143 -ExecStartPre=/bin/bash /opt/azure/containers/kubelet.sh -ExecStartPre=/bin/mkdir -p /var/lib/kubelet -ExecStartPre=/bin/mkdir -p /var/lib/cni -ExecStartPre=/bin/bash -c "if [ $(mount | grep \"/var/lib/kubelet\" | wc -l) -le 0 ] ; then /bin/mount --bind /var/lib/kubelet /var/lib/kubelet ; fi" -ExecStartPre=/bin/mount --make-shared /var/lib/kubelet - -ExecStartPre=-/sbin/ebtables -t nat --list -ExecStartPre=-/sbin/iptables -t nat --numeric --list - -ExecStart=/usr/local/bin/kubelet \ - --enable-server \ - --node-labels="${KUBELET_NODE_LABELS}" \ - --v=2 \ - --volume-plugin-dir=/etc/kubernetes/volumeplugins \ - $KUBELET_TLS_BOOTSTRAP_FLAGS \ - $KUBELET_CONFIG_FILE_FLAGS \ - $KUBELET_CONTAINERD_FLAGS \ - $KUBELET_CONTAINER_RUNTIME_FLAG \ - $KUBELET_CGROUP_FLAGS \ - $KUBELET_FLAGS - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line112.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line112.sh deleted file mode 100644 index b02cff3e054..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line112.sh +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Apply MIG configuration on Nvidia A100 GPU - -[Service] -Restart=on-failure -ExecStartPre=/usr/bin/nvidia-smi -mig 1 -ExecStart=/bin/bash /opt/azure/containers/mig-partition.sh ${GPU_INSTANCE_PROFILE} - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line119.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line119.sh deleted file mode 100644 index d60b92d68b2..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line119.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -#NOTE: Currently, Nvidia library mig-parted (https://github.com/NVIDIA/mig-parted) cannot work properly because of the outdated GPU driver version -#TODO: Use mig-parted library to do the partition after the above issue is fixed -MIG_PROFILE=${1} -case ${MIG_PROFILE} in - "MIG1g") - nvidia-smi mig -cgi 19,19,19,19,19,19,19 - ;; - "MIG2g") - nvidia-smi mig -cgi 14,14,14 - ;; - "MIG3g") - nvidia-smi mig -cgi 9,9 - ;; - "MIG4g") - nvidia-smi mig -cgi 5 - ;; - "MIG7g") - nvidia-smi mig -cgi 0 - ;; - *) - echo "not a valid GPU instance profile" - exit 1 - ;; -esac -nvidia-smi mig -cci \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line127.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line127.sh deleted file mode 100644 index 7605397f84c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line127.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash - -set -o nounset -set -e - -source /opt/azure/containers/provision_source_distro.sh - -unattended_upgrade() { - retries=10 - for i in $(seq 1 $retries); do - unattended-upgrade -v && break - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed unattended upgrade $i times -} - -cfg_has_option() { - file=$1 - option=$2 - line=$(sed -n "/^$option:/ p" "$file") - [ -n "$line" ] -} - -cfg_set_option() { - file=$1 - option=$2 - value=$3 - if ! cfg_has_option "$file" "$option"; then - echo "$option: $value" >> "$file" - else - sed -i 's/'"$option"':.*$/'"$option: $value"'/g' "$file" - fi -} - -KUBECTL="/usr/local/bin/kubectl --kubeconfig /var/lib/kubelet/kubeconfig" - -source_list_path=/etc/apt/sources.list -source_list_backup_path=/etc/apt/sources.list.backup -cloud_cfg_path=/etc/cloud/cloud.cfg - -while [ ! -f /var/lib/kubelet/kubeconfig ]; do - echo 'Waiting for TLS bootstrapping' - sleep 3 -done - -node_name=$(hostname) -if [ -z "${node_name}" ]; then - echo "cannot get node name" - exit 1 -fi - -node_name=$(echo "$node_name" | tr '[:upper:]' '[:lower:]') - -golden_timestamp=$($KUBECTL get node ${node_name} -o jsonpath="{.metadata.annotations['kubernetes\.azure\.com/live-patching-golden-timestamp']}") -if [ -z "${golden_timestamp}" ]; then - echo "golden timestamp is not set, skip live patching" - exit 0 -fi -echo "golden timestamp is: ${golden_timestamp}" - -current_timestamp=$($KUBECTL get node ${node_name} -o jsonpath="{.metadata.annotations['kubernetes\.azure\.com/live-patching-current-timestamp']}") -if [ -n "${current_timestamp}" ]; then - echo "current timestamp is: ${current_timestamp}" - - if [[ "${golden_timestamp}" == "${current_timestamp}" ]]; then - echo "golden and current timestamp is the same, nothing to patch" - exit 0 - fi -fi - -old_source_list=$(cat ${source_list_path}) -sed -i 's/http:\/\/azure.archive.ubuntu.com\/ubuntu\//https:\/\/snapshot.ubuntu.com\/ubuntu\/'"${golden_timestamp}"'/g' ${source_list_path} -sed -i 's/https:\/\/snapshot.ubuntu.com\/ubuntu\/\([0-9]\{8\}T[0-9]\{6\}Z\)/https:\/\/snapshot.ubuntu.com\/ubuntu\/'"${golden_timestamp}"'/g' ${source_list_path} -option=apt_preserve_sources_list -option_value=true -cfg_set_option ${cloud_cfg_path} ${option} ${option_value} - -new_source_list=$(cat ${source_list_path}) -if [[ "${old_source_list}" != "${new_source_list}" ]]; then - echo "$old_source_list" > ${source_list_backup_path} - echo "/etc/apt/sources.list is updated:" - diff ${source_list_backup_path} ${source_list_path} || true -fi - -if ! apt_get_update; then - echo "apt_get_update failed" - exit 1 -fi -if ! unattended_upgrade; then - echo "unattended_upgrade failed" - exit 1 -fi - -$KUBECTL annotate --overwrite node ${node_name} kubernetes.azure.com/live-patching-current-timestamp=${golden_timestamp} - -echo snapshot update completed successfully diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line134.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line134.sh deleted file mode 100644 index 15be92f982a..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line134.sh +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=Snapshot Update Service - -[Service] -Type=oneshot -ExecStart=/opt/azure/containers/ubuntu-snapshot-update.sh \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line141.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line141.sh deleted file mode 100644 index 2f855de5428..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line141.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Runs snapshot update script periodically - -[Timer] -OnBootSec=10min -OnUnitActiveSec=10min - -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line149.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line149.sh deleted file mode 100644 index 4d6cb87b4cd..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line149.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -set -o errexit -set -o nounset -set -o pipefail -set -x - -# - -MOUNT_POINT="/mnt/aks" - -KUBELET_MOUNT_POINT="${MOUNT_POINT}/kubelet" -KUBELET_DIR="/var/lib/kubelet" - -mkdir -p "${MOUNT_POINT}" - -SENTINEL_FILE="/opt/azure/containers/bind-sentinel" -if [ ! -e "$SENTINEL_FILE" ]; then - mv "$KUBELET_DIR" "$MOUNT_POINT" - touch "$SENTINEL_FILE" -fi - -mkdir -p "${KUBELET_DIR}" -mount --bind "${KUBELET_MOUNT_POINT}" "${KUBELET_DIR}" -chmod a+w "${KUBELET_DIR}" \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line156.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line156.sh deleted file mode 100644 index 93bf4b6968a..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line156.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Bind mount kubelet data -[Service] -Restart=on-failure -RemainAfterExit=yes -ExecStart=/bin/bash /opt/azure/containers/bind-mount.sh - -[Install] -WantedBy=multi-user.target diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line163.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line163.sh deleted file mode 100644 index 7cc1e25064c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line163.sh +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=enabledhcpv6 -After=network-online.target - -[Service] -Type=oneshot -ExecStart=/opt/azure/containers/enable-dhcpv6.sh - -[Install] -WantedBy=multi-user.target -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line170.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line170.sh deleted file mode 100644 index e13d68920d0..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line170.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -o pipefail -set -u - -DHCLIENT6_CONF_FILE=/etc/dhcp/dhclient6.conf -CLOUD_INIT_CFG=/etc/network/interfaces.d/50-cloud-init.cfg - -read -r -d '' NETWORK_CONFIGURATION << EOC || true -iface eth0 inet6 auto - up sleep 5 - up dhclient -1 -6 -cf /etc/dhcp/dhclient6.conf -lf /var/lib/dhcp/dhclient6.eth0.leases -v eth0 || true -EOC - -add_if_not_exists() { - grep -qxF "${1}" "${2}" || echo "${1}" >> "${2}" -} - -echo "Configuring dhcpv6 ..." - -touch /etc/dhcp/dhclient6.conf && add_if_not_exists "timeout 10;" ${DHCLIENT6_CONF_FILE} && \ - add_if_not_exists "${NETWORK_CONFIGURATION}" ${CLOUD_INIT_CFG} && \ - sudo ifdown eth0 && sudo ifup eth0 - -echo "Configuration complete" -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line18.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line18.sh deleted file mode 100644 index 6cff2327aeb..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line18.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -echo "Sourcing cse_helpers_distro.sh for Ubuntu" - - -aptmarkWALinuxAgent() { - echo $(date),$(hostname), startAptmarkWALinuxAgent "$1" - wait_for_apt_locks - retrycmd_if_failure 120 5 25 apt-mark $1 walinuxagent || \ - if [[ "$1" == "hold" ]]; then - exit $ERR_HOLD_WALINUXAGENT - elif [[ "$1" == "unhold" ]]; then - exit $ERR_RELEASE_HOLD_WALINUXAGENT - fi - echo $(date),$(hostname), endAptmarkWALinuxAgent "$1" -} - -wait_for_apt_locks() { - while fuser /var/lib/dpkg/lock /var/lib/apt/lists/lock /var/cache/apt/archives/lock >/dev/null 2>&1; do - echo 'Waiting for release of apt locks' - sleep 3 - done -} -apt_get_update() { - retries=10 - apt_update_output=/tmp/apt-get-update.out - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get -f -y install - ! (apt-get update 2>&1 | tee $apt_update_output | grep -E "^([WE]:.*)|([Ee][Rr][Rr][Oo][Rr].*)$") && \ - cat $apt_update_output && break || \ - cat $apt_update_output - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed apt-get update $i times - wait_for_apt_locks -} -apt_get_install() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get install -o Dpkg::Options::="--force-confold" --no-install-recommends -y ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - apt_get_update - fi - done - echo Executed apt-get install --no-install-recommends -y \"$@\" $i times; - wait_for_apt_locks -} -apt_get_purge() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - timeout $timeout apt-get purge -o Dpkg::Options::="--force-confold" -y ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done - echo Executed apt-get purge -y \"$@\" $i times; - wait_for_apt_locks -} -apt_get_dist_upgrade() { - retries=10 - apt_dist_upgrade_output=/tmp/apt-get-dist-upgrade.out - for i in $(seq 1 $retries); do - wait_for_apt_locks - export DEBIAN_FRONTEND=noninteractive - dpkg --configure -a --force-confdef - apt-get -f -y install - apt-mark showhold - ! (apt-get -o Dpkg::Options::="--force-confnew" dist-upgrade -y 2>&1 | tee $apt_dist_upgrade_output | grep -E "^([WE]:.*)|([Ee][Rr][Rr][Oo][Rr].*)$") && \ - cat $apt_dist_upgrade_output && break || \ - cat $apt_dist_upgrade_output - if [ $i -eq $retries ]; then - return 1 - else sleep 5 - fi - done - echo Executed apt-get dist-upgrade $i times - wait_for_apt_locks -} -installDebPackageFromFile() { - DEB_FILE=$1 - wait_for_apt_locks - retrycmd_if_failure 10 5 600 apt-get -y -f install ${DEB_FILE} --allow-downgrades - if [[ $? -ne 0 ]]; then - return 1 - fi -} -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line215.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line215.sh deleted file mode 100644 index ceb0ddeb979..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line215.sh +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Add dedup ebtable rules for kubenet bridge in promiscuous mode -After=containerd.service -After=kubelet.service -[Service] -Restart=on-failure -RestartSec=2 -ExecStart=/bin/bash /opt/azure/containers/ensure-no-dup.sh -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line222.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line222.sh deleted file mode 100644 index c606af08d4c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line222.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - - -ebtables -t filter -L AKS-DEDUP-PROMISC 2>/dev/null -if [[ $? -eq 0 ]]; then - echo "AKS-DEDUP-PROMISC rule already set" - exit 0 -fi -if [[ ! -f /etc/cni/net.d/10-containerd-net.conflist ]]; then - echo "cni config not up yet...exiting early" - exit 1 -fi - -bridgeName=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .bridge") -promiscMode=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .promiscMode") -if [[ "${promiscMode}" != "true" ]]; then - echo "bridge ${bridgeName} not in promiscuous mode...exiting early" - exit 0 -fi - -if [[ ! -f /sys/class/net/${bridgeName}/address ]]; then - echo "bridge ${bridgeName} not up yet...exiting early" - exit 1 -fi - - -bridgeIP=$(ip addr show ${bridgeName} | grep -Eo "inet ([0-9]*\.){3}[0-9]*" | grep -Eo "([0-9]*\.){3}[0-9]*") -if [[ -z "${bridgeIP}" ]]; then - echo "bridge ${bridgeName} does not have an ipv4 address...exiting early" - exit 1 -fi - -podSubnetAddr=$(cat /etc/cni/net.d/10-containerd-net.conflist | jq -r ".plugins[] | select(.type == \"bridge\") | .ipam.subnet") -if [[ -z "${podSubnetAddr}" ]]; then - echo "could not determine this node's pod ipam subnet range from 10-containerd-net.conflist...exiting early" - exit 1 -fi - -bridgeMAC=$(cat /sys/class/net/${bridgeName}/address) - -echo "adding AKS-DEDUP-PROMISC ebtable chain" -ebtables -t filter -N AKS-DEDUP-PROMISC -ebtables -t filter -A AKS-DEDUP-PROMISC -p IPv4 -s ${bridgeMAC} -o veth+ --ip-src ${bridgeIP} -j ACCEPT -ebtables -t filter -A AKS-DEDUP-PROMISC -p IPv4 -s ${bridgeMAC} -o veth+ --ip-src ${podSubnetAddr} -j DROP -ebtables -t filter -A OUTPUT -j AKS-DEDUP-PROMISC - -echo "outputting newly added AKS-DEDUP-PROMISC rules:" -ebtables -t filter -L OUTPUT 2>/dev/null -ebtables -t filter -L AKS-DEDUP-PROMISC 2>/dev/null -exit 0 -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line26.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line26.sh deleted file mode 100644 index 55b4d474be0..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line26.sh +++ /dev/null @@ -1,89 +0,0 @@ -CSE_STARTTIME=$(date) -CSE_STARTTIME_FORMATTED=$(date +"%F %T.%3N") -timeout -k5s 15m /bin/bash /opt/azure/containers/provision.sh >> /var/log/azure/cluster-provision.log 2>&1 -EXIT_CODE=$? -systemctl --no-pager -l status kubelet >> /var/log/azure/cluster-provision-cse-output.log 2>&1 -OUTPUT=$(tail -c 3000 "/var/log/azure/cluster-provision.log") -KERNEL_STARTTIME=$(systemctl show -p KernelTimestamp | sed -e "s/KernelTimestamp=//g" || true) -KERNEL_STARTTIME_FORMATTED=$(date -d "${KERNEL_STARTTIME}" +"%F %T.%3N" ) -CLOUDINITLOCAL_STARTTIME=$(systemctl show cloud-init-local -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINITLOCAL_STARTTIME_FORMATTED=$(date -d "${CLOUDINITLOCAL_STARTTIME}" +"%F %T.%3N" ) -CLOUDINIT_STARTTIME=$(systemctl show cloud-init -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINIT_STARTTIME_FORMATTED=$(date -d "${CLOUDINIT_STARTTIME}" +"%F %T.%3N" ) -CLOUDINITFINAL_STARTTIME=$(systemctl show cloud-final -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -CLOUDINITFINAL_STARTTIME_FORMATTED=$(date -d "${CLOUDINITFINAL_STARTTIME}" +"%F %T.%3N" ) -NETWORKD_STARTTIME=$(systemctl show systemd-networkd -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -NETWORKD_STARTTIME_FORMATTED=$(date -d "${NETWORKD_STARTTIME}" +"%F %T.%3N" ) -GUEST_AGENT_STARTTIME=$(systemctl show walinuxagent.service -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -GUEST_AGENT_STARTTIME_FORMATTED=$(date -d "${GUEST_AGENT_STARTTIME}" +"%F %T.%3N" ) -KUBELET_START_TIME=$(systemctl show kubelet.service -p ExecMainStartTimestamp | sed -e "s/ExecMainStartTimestamp=//g" || true) -KUBELET_START_TIME_FORMATTED=$(date -d "${KUBELET_START_TIME}" +"%F %T.%3N" ) -KUBELET_READY_TIME_FORMATTED="$(date -d "$(journalctl -u kubelet | grep NodeReady | cut -d' ' -f1-3)" +"%F %T.%3N")" -SYSTEMD_SUMMARY=$(systemd-analyze || true) -CSE_ENDTIME_FORMATTED=$(date +"%F %T.%3N") -EVENTS_LOGGING_DIR=/var/log/azure/Microsoft.Azure.Extensions.CustomScript/events/ -EVENTS_FILE_NAME=$(date +%s%3N) -EXECUTION_DURATION=$(echo $(($(date +%s) - $(date -d "$CSE_STARTTIME" +%s)))) - -JSON_STRING=$( jq -n \ - --arg ec "$EXIT_CODE" \ - --arg op "$OUTPUT" \ - --arg er "" \ - --arg ed "$EXECUTION_DURATION" \ - --arg ks "$KERNEL_STARTTIME" \ - --arg cinitl "$CLOUDINITLOCAL_STARTTIME" \ - --arg cinit "$CLOUDINIT_STARTTIME" \ - --arg cf "$CLOUDINITFINAL_STARTTIME" \ - --arg ns "$NETWORKD_STARTTIME" \ - --arg cse "$CSE_STARTTIME" \ - --arg ga "$GUEST_AGENT_STARTTIME" \ - --arg ss "$SYSTEMD_SUMMARY" \ - --arg kubelet "$KUBELET_START_TIME" \ - '{ExitCode: $ec, Output: $op, Error: $er, ExecDuration: $ed, KernelStartTime: $ks, CloudInitLocalStartTime: $cinitl, CloudInitStartTime: $cinit, CloudFinalStartTime: $cf, NetworkdStartTime: $ns, CSEStartTime: $cse, GuestAgentStartTime: $ga, SystemdSummary: $ss, BootDatapoints: { KernelStartTime: $ks, CSEStartTime: $cse, GuestAgentStartTime: $ga, KubeletStartTime: $kubelet }}' ) -mkdir -p /var/log/azure/aks -echo $JSON_STRING | tee /var/log/azure/aks/provision.json - -message_string=$( jq -n \ ---arg EXECUTION_DURATION "${EXECUTION_DURATION}" \ ---arg EXIT_CODE "${EXIT_CODE}" \ ---arg KERNEL_STARTTIME_FORMATTED "${KERNEL_STARTTIME_FORMATTED}" \ ---arg CLOUDINITLOCAL_STARTTIME_FORMATTED "${CLOUDINITLOCAL_STARTTIME_FORMATTED}" \ ---arg CLOUDINIT_STARTTIME_FORMATTED "${CLOUDINIT_STARTTIME_FORMATTED}" \ ---arg CLOUDINITFINAL_STARTTIME_FORMATTED "${CLOUDINITFINAL_STARTTIME_FORMATTED}" \ ---arg NETWORKD_STARTTIME_FORMATTED "${NETWORKD_STARTTIME_FORMATTED}" \ ---arg GUEST_AGENT_STARTTIME_FORMATTED "${GUEST_AGENT_STARTTIME_FORMATTED}" \ ---arg KUBELET_START_TIME_FORMATTED "${KUBELET_START_TIME_FORMATTED}" \ ---arg KUBELET_READY_TIME_FORMATTED "${KUBELET_READY_TIME_FORMATTED}" \ -'{ExitCode: $EXIT_CODE, E2E: $EXECUTION_DURATION, KernelStartTime: $KERNEL_STARTTIME_FORMATTED, CloudInitLocalStartTime: $CLOUDINITLOCAL_STARTTIME_FORMATTED, CloudInitStartTime: $CLOUDINIT_STARTTIME_FORMATTED, CloudFinalStartTime: $CLOUDINITFINAL_STARTTIME_FORMATTED, NetworkdStartTime: $NETWORKD_STARTTIME_FORMATTED, GuestAgentStartTime: $GUEST_AGENT_STARTTIME_FORMATTED, KubeletStartTime: $KUBELET_START_TIME_FORMATTED, KubeletReadyTime: $KUBELET_READY_TIME_FORMATTED } | tostring' -) -message_string=$(echo $message_string | sed 's/\\//g' | sed 's/^.\(.*\).$/\1/') - -EVENT_JSON=$( jq -n \ - --arg Timestamp "${CSE_STARTTIME_FORMATTED}" \ - --arg OperationId "${CSE_ENDTIME_FORMATTED}" \ - --arg Version "1.23" \ - --arg TaskName "AKS.CSE.cse_start" \ - --arg EventLevel "${eventlevel}" \ - --arg Message "${message_string}" \ - --arg EventPid "0" \ - --arg EventTid "0" \ - '{Timestamp: $Timestamp, OperationId: $OperationId, Version: $Version, TaskName: $TaskName, EventLevel: $EventLevel, Message: $Message, EventPid: $EventPid, EventTid: $EventTid}' -) -echo ${EVENT_JSON} > ${EVENTS_LOGGING_DIR}${EVENTS_FILE_NAME}.json - -upload_logs() { - if test -x /opt/azure/containers/aks-log-collector.sh; then - /opt/azure/containers/aks-log-collector.sh >/var/log/azure/aks/cse-aks-log-collector.log 2>&1 - else - PYTHONPATH=$(find /var/lib/waagent -name WALinuxAgent\*.egg | sort -rV | head -n1) - python3 $PYTHONPATH -collect-logs -full >/dev/null 2>&1 - python3 /opt/azure/containers/provision_send_logs.py >/dev/null 2>&1 - fi -} -if [ $EXIT_CODE -ne 0 ]; then - upload_logs -else - upload_logs & -fi - -exit $EXIT_CODE \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line314.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line314.sh deleted file mode 100644 index 21f8bec58d6..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line314.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -x -source "${CSE_HELPERS_FILEPATH}" -source "${CSE_DISTRO_HELPERS_FILEPATH}" - -echo " dns-search ${CUSTOM_SEARCH_DOMAIN_NAME}" | tee -a /etc/network/interfaces.d/50-cloud-init.cfg -systemctl_restart 20 5 10 networking -wait_for_apt_locks -retrycmd_if_failure 10 5 120 apt-get -y install realmd sssd sssd-tools samba-common samba samba-common python2.7 samba-libs packagekit -wait_for_apt_locks -echo "${CUSTOM_SEARCH_REALM_PASSWORD}" | realm join -U ${CUSTOM_SEARCH_REALM_USER}@$(echo "${CUSTOM_SEARCH_DOMAIN_NAME}" | tr /a-z/ /A-Z/) $(echo "${CUSTOM_SEARCH_DOMAIN_NAME}" | tr /a-z/ /A-Z/) diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line33.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line33.sh deleted file mode 100644 index 6357bdbe386..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line33.sh +++ /dev/null @@ -1,368 +0,0 @@ -#!/bin/bash -ERR_FILE_WATCH_TIMEOUT=6 -set -x -if [ -f /opt/azure/containers/provision.complete ]; then - echo "Already ran to success exiting..." - exit 0 -fi - -aptmarkWALinuxAgent hold & - -LOG_DIR=/var/log/azure/aks -mkdir -p ${LOG_DIR} -ln -s /var/log/azure/cluster-provision.log \ - /var/log/azure/cluster-provision-cse-output.log \ - /opt/azure/*.json \ - /opt/azure/cloud-init-files.paved \ - /opt/azure/vhd-install.complete \ - ${LOG_DIR}/ - -python3 /opt/azure/containers/provision_redact_cloud_config.py \ - --cloud-config-path /var/lib/cloud/instance/cloud-config.txt \ - --output-path ${LOG_DIR}/cloud-config.txt - -UBUNTU_RELEASE=$(lsb_release -r -s) -if [[ ${UBUNTU_RELEASE} == "16.04" ]]; then - sudo apt-get -y autoremove chrony - echo $? - sudo systemctl restart systemd-timesyncd -fi - -echo $(date),$(hostname), startcustomscript>>/opt/m - -for i in $(seq 1 3600); do - if [ -s "${CSE_HELPERS_FILEPATH}" ]; then - grep -Fq '#HELPERSEOF' "${CSE_HELPERS_FILEPATH}" && break - fi - if [ $i -eq 3600 ]; then - exit $ERR_FILE_WATCH_TIMEOUT - else - sleep 1 - fi -done -sed -i "/#HELPERSEOF/d" "${CSE_HELPERS_FILEPATH}" -source "${CSE_HELPERS_FILEPATH}" - -source "${CSE_DISTRO_HELPERS_FILEPATH}" -source "${CSE_INSTALL_FILEPATH}" -source "${CSE_DISTRO_INSTALL_FILEPATH}" -source "${CSE_CONFIG_FILEPATH}" - -if [[ "${DISABLE_SSH}" == "true" ]]; then - disableSSH || exit $ERR_DISABLE_SSH -fi - -echo "private egress proxy address is '${PRIVATE_EGRESS_PROXY_ADDRESS}'" - -if [[ "${SHOULD_CONFIGURE_HTTP_PROXY}" == "true" ]]; then - if [[ "${SHOULD_CONFIGURE_HTTP_PROXY_CA}" == "true" ]]; then - configureHTTPProxyCA || exit $ERR_UPDATE_CA_CERTS - fi - configureEtcEnvironment -fi - - -if [[ "${SHOULD_CONFIGURE_CUSTOM_CA_TRUST}" == "true" ]]; then - configureCustomCaCertificate || exit $ERR_UPDATE_CA_CERTS -fi - -if [[ -n "${OUTBOUND_COMMAND}" ]]; then - if [[ -n "${PROXY_VARS}" ]]; then - eval $PROXY_VARS - fi - retrycmd_if_failure 50 1 5 $OUTBOUND_COMMAND >> /var/log/azure/cluster-provision-cse-output.log 2>&1 || exit $ERR_OUTBOUND_CONN_FAIL; -fi - -source /etc/os-release - -if [[ ${ID} != "mariner" ]]; then - echo "Removing man-db auto-update flag file..." - logs_to_events "AKS.CSE.removeManDbAutoUpdateFlagFile" removeManDbAutoUpdateFlagFile -fi - -export -f should_skip_nvidia_drivers -skip_nvidia_driver_install=$(retrycmd_if_failure_no_stats 10 1 10 bash -cx should_skip_nvidia_drivers) -ret=$? -if [[ "$ret" != "0" ]]; then - echo "Failed to determine if nvidia driver install should be skipped" - exit $ERR_NVIDIA_DRIVER_INSTALL -fi - -if [[ "${GPU_NODE}" != "true" ]] || [[ "${skip_nvidia_driver_install}" == "true" ]]; then - logs_to_events "AKS.CSE.cleanUpGPUDrivers" cleanUpGPUDrivers -fi - -logs_to_events "AKS.CSE.disableSystemdResolved" disableSystemdResolved - -logs_to_events "AKS.CSE.configureAdminUser" configureAdminUser - -VHD_LOGS_FILEPATH=/opt/azure/vhd-install.complete -if [ -f $VHD_LOGS_FILEPATH ]; then - echo "detected golden image pre-install" - logs_to_events "AKS.CSE.cleanUpContainerImages" cleanUpContainerImages - FULL_INSTALL_REQUIRED=false -else - if [[ "${IS_VHD}" = true ]]; then - echo "Using VHD distro but file $VHD_LOGS_FILEPATH not found" - exit $ERR_VHD_FILE_NOT_FOUND - fi - FULL_INSTALL_REQUIRED=true -fi - -if [[ $OS == $UBUNTU_OS_NAME ]] && [ "$FULL_INSTALL_REQUIRED" = "true" ]; then - logs_to_events "AKS.CSE.installDeps" installDeps -else - echo "Golden image; skipping dependencies installation" -fi - -logs_to_events "AKS.CSE.installContainerRuntime" installContainerRuntime -if [ "${NEEDS_CONTAINERD}" == "true" ] && [ "${TELEPORT_ENABLED}" == "true" ]; then - logs_to_events "AKS.CSE.installTeleportdPlugin" installTeleportdPlugin -fi - -setupCNIDirs - -logs_to_events "AKS.CSE.installNetworkPlugin" installNetworkPlugin - -if [ "${IS_KRUSTLET}" == "true" ]; then - logs_to_events "AKS.CSE.downloadKrustlet" downloadContainerdWasmShims -fi - -if [ "${ENABLE_SECURE_TLS_BOOTSTRAPPING}" == "true" ]; then - logs_to_events "AKS.CSE.downloadSecureTLSBootstrapKubeletExecPlugin" downloadSecureTLSBootstrapKubeletExecPlugin -fi - -REBOOTREQUIRED=false - -echo $(date),$(hostname), "Start configuring GPU drivers" -if [[ "${GPU_NODE}" = true ]] && [[ "${skip_nvidia_driver_install}" != "true" ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers" ensureGPUDrivers - if [[ "${ENABLE_GPU_DEVICE_PLUGIN_IF_NEEDED}" = true ]]; then - if [[ "${MIG_NODE}" == "true" ]] && [[ -f "/etc/systemd/system/nvidia-device-plugin.service" ]]; then - mkdir -p "/etc/systemd/system/nvidia-device-plugin.service.d" - tee "/etc/systemd/system/nvidia-device-plugin.service.d/10-mig_strategy.conf" > /dev/null <<'EOF' -[Service] -Environment="MIG_STRATEGY=--mig-strategy single" -ExecStart= -ExecStart=/usr/local/nvidia/bin/nvidia-device-plugin $MIG_STRATEGY -EOF - fi - logs_to_events "AKS.CSE.start.nvidia-device-plugin" "systemctlEnableAndStart nvidia-device-plugin" || exit $ERR_GPU_DEVICE_PLUGIN_START_FAIL - else - logs_to_events "AKS.CSE.stop.nvidia-device-plugin" "systemctlDisableAndStop nvidia-device-plugin" - fi - - if [[ "${GPU_NEEDS_FABRIC_MANAGER}" == "true" ]]; then - if [[ $OS == $MARINER_OS_NAME ]]; then - logs_to_events "AKS.CSE.installNvidiaFabricManager" installNvidiaFabricManager - fi - logs_to_events "AKS.CSE.nvidia-fabricmanager" "systemctlEnableAndStart nvidia-fabricmanager" || exit $ERR_GPU_DRIVERS_START_FAIL - fi - - if [[ "${MIG_NODE}" == "true" ]]; then - REBOOTREQUIRED=true - - logs_to_events "AKS.CSE.ensureMigPartition" ensureMigPartition - fi -fi - -echo $(date),$(hostname), "End configuring GPU drivers" - -if [ "${NEEDS_DOCKER_LOGIN}" == "true" ]; then - set +x - docker login -u $SERVICE_PRINCIPAL_CLIENT_ID -p $SERVICE_PRINCIPAL_CLIENT_SECRET "${AZURE_PRIVATE_REGISTRY_SERVER}" - set -x -fi - -if [ "${ENABLE_IMDS_RESTRICTION}" == "true" ]; then - logs_to_events "AKS.CSE.ensureIMDSRestrictionRule" ensureIMDSRestrictionRule "${INSERT_IMDS_RESTRICTION_RULE_TO_MANGLE_TABLE}" -else - logs_to_events "AKS.CSE.disableIMDSRestriction" disableIMDSRestriction -fi - -logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy" installKubeletKubectlAndKubeProxy - -createKubeManifestDir - -if [ "${HAS_CUSTOM_SEARCH_DOMAIN}" == "true" ]; then - "${CUSTOM_SEARCH_DOMAIN_FILEPATH}" > /opt/azure/containers/setup-custom-search-domain.log 2>&1 || exit $ERR_CUSTOM_SEARCH_DOMAINS_FAIL -fi - - -mkdir -p "/etc/systemd/system/kubelet.service.d" - -logs_to_events "AKS.CSE.configureK8s" configureK8s - -logs_to_events "AKS.CSE.configureCNI" configureCNI - -if [ "${IPV6_DUAL_STACK_ENABLED}" == "true" ]; then - logs_to_events "AKS.CSE.ensureDHCPv6" ensureDHCPv6 -fi - -if [[ $OS == $MARINER_OS_NAME ]]; then - logs_to_events "AKS.CSE.configureSystemdUseDomains" configureSystemdUseDomains -fi - -if [ "${NEEDS_CONTAINERD}" == "true" ]; then - logs_to_events "AKS.CSE.ensureContainerd" ensureContainerd -else - logs_to_events "AKS.CSE.ensureDocker" ensureDocker -fi - -if [[ "${MESSAGE_OF_THE_DAY}" != "" ]]; then - echo "${MESSAGE_OF_THE_DAY}" | base64 -d > /etc/motd -fi - -if [[ "${TARGET_CLOUD}" == "AzureChinaCloud" ]]; then - retagMCRImagesForChina -fi - -if [[ "${ENABLE_HOSTS_CONFIG_AGENT}" == "true" ]]; then - logs_to_events "AKS.CSE.configPrivateClusterHosts" configPrivateClusterHosts -fi - -if [ "${SHOULD_CONFIG_TRANSPARENT_HUGE_PAGE}" == "true" ]; then - logs_to_events "AKS.CSE.configureTransparentHugePage" configureTransparentHugePage -fi - -if [ "${SHOULD_CONFIG_SWAP_FILE}" == "true" ]; then - logs_to_events "AKS.CSE.configureSwapFile" configureSwapFile -fi - -if [ "${NEEDS_CGROUPV2}" == "true" ]; then - tee "/etc/systemd/system/kubelet.service.d/10-cgroupv2.conf" > /dev/null < /etc/containerd/kubenet_template.conf - - tee "/etc/systemd/system/kubelet.service.d/10-containerd-base-flag.conf" > /dev/null <<'EOF' -[Service] -Environment="KUBELET_CONTAINERD_FLAGS=--runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --runtime-cgroups=/system.slice/containerd.service" -EOF - - if ! semverCompare ${KUBERNETES_VERSION:-"0.0.0"} "1.27.0"; then - tee "/etc/systemd/system/kubelet.service.d/10-container-runtime-flag.conf" > /dev/null <<'EOF' -[Service] -Environment="KUBELET_CONTAINER_RUNTIME_FLAG=--container-runtime=remote" -EOF - fi -fi - -if [ "${HAS_KUBELET_DISK_TYPE}" == "true" ]; then - tee "/etc/systemd/system/kubelet.service.d/10-bindmount.conf" > /dev/null < /sys/bus/vmbus/drivers/hv_util/unbind - sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local - fi -fi - -VALIDATION_ERR=0 - -API_SERVER_CONN_RETRIES=50 -if [[ $API_SERVER_NAME == *.privatelink.* ]]; then - API_SERVER_CONN_RETRIES=100 -fi -if ! [[ ${API_SERVER_NAME} =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - API_SERVER_DNS_RETRY_TIMEOUT=300 - if [[ $API_SERVER_NAME == *.privatelink.* ]]; then - API_SERVER_DNS_RETRY_TIMEOUT=600 - fi - if [[ "${ENABLE_HOSTS_CONFIG_AGENT}" != "true" ]]; then - RES=$(logs_to_events "AKS.CSE.apiserverNslookup" "retrycmd_nslookup 1 15 ${API_SERVER_DNS_RETRY_TIMEOUT} ${API_SERVER_NAME}") - STS=$? - else - STS=0 - fi - if [[ $STS != 0 ]]; then - time nslookup ${API_SERVER_NAME} - if [[ $RES == *"168.63.129.16"* ]]; then - VALIDATION_ERR=$ERR_K8S_API_SERVER_AZURE_DNS_LOOKUP_FAIL - else - VALIDATION_ERR=$ERR_K8S_API_SERVER_DNS_LOOKUP_FAIL - fi - else - logs_to_events "AKS.CSE.apiserverNC" "retrycmd_if_failure ${API_SERVER_CONN_RETRIES} 1 10 nc -vz ${API_SERVER_NAME} 443" || time nc -vz ${API_SERVER_NAME} 443 || VALIDATION_ERR=$ERR_K8S_API_SERVER_CONN_FAIL - fi -else - logs_to_events "AKS.CSE.apiserverNC" "retrycmd_if_failure ${API_SERVER_CONN_RETRIES} 1 10 nc -vz ${API_SERVER_NAME} 443" || time nc -vz ${API_SERVER_NAME} 443 || VALIDATION_ERR=$ERR_K8S_API_SERVER_CONN_FAIL -fi - -if [[ ${ID} != "mariner" ]]; then - echo "Recreating man-db auto-update flag file and kicking off man-db update process at $(date)" - createManDbAutoUpdateFlagFile - /usr/bin/mandb && echo "man-db finished updates at $(date)" & -fi - -if $REBOOTREQUIRED; then - echo 'reboot required, rebooting node in 1 minute' - /bin/bash -c "shutdown -r 1 &" - if [[ $OS == $UBUNTU_OS_NAME ]]; then - aptmarkWALinuxAgent unhold & - fi -else - if [[ $OS == $UBUNTU_OS_NAME ]]; then - if [ "${ENABLE_UNATTENDED_UPGRADES}" == "true" ]; then - UU_CONFIG_DIR="/etc/apt/apt.conf.d/99periodic" - mkdir -p "$(dirname "${UU_CONFIG_DIR}")" - touch "${UU_CONFIG_DIR}" - chmod 0644 "${UU_CONFIG_DIR}" - echo 'APT::Periodic::Update-Package-Lists "1";' >> "${UU_CONFIG_DIR}" - echo 'APT::Periodic::Unattended-Upgrade "1";' >> "${UU_CONFIG_DIR}" - systemctl unmask apt-daily.service apt-daily-upgrade.service - systemctl enable apt-daily.service apt-daily-upgrade.service - systemctl enable apt-daily.timer apt-daily-upgrade.timer - systemctl restart --no-block apt-daily.timer apt-daily-upgrade.timer - systemctl restart --no-block apt-daily.service - - fi - aptmarkWALinuxAgent unhold & - elif [[ $OS == $MARINER_OS_NAME ]]; then - if [ "${ENABLE_UNATTENDED_UPGRADES}" == "true" ]; then - if [ "${IS_KATA}" == "true" ]; then - echo 'EnableUnattendedUpgrade is not supported by kata images, will not be enabled' - else - systemctl disable dnf-automatic-notifyonly.timer - systemctl stop dnf-automatic-notifyonly.timer - systemctl unmask dnf-automatic-install.service || exit $ERR_SYSTEMCTL_START_FAIL - systemctl unmask dnf-automatic-install.timer || exit $ERR_SYSTEMCTL_START_FAIL - systemctlEnableAndStart dnf-automatic-install.timer || exit $ERR_SYSTEMCTL_START_FAIL - fi - fi - fi -fi - -echo "Custom script finished. API server connection check code:" $VALIDATION_ERR -echo $(date),$(hostname), endcustomscript>>/opt/m -mkdir -p /opt/azure/containers && touch /opt/azure/containers/provision.complete - -exit $VALIDATION_ERR - - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line40.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line40.sh deleted file mode 100644 index 1c74ace1058..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line40.sh +++ /dev/null @@ -1,588 +0,0 @@ -#!/bin/bash - -CC_SERVICE_IN_TMP=/opt/azure/containers/cc-proxy.service.in -CC_SOCKET_IN_TMP=/opt/azure/containers/cc-proxy.socket.in -CNI_CONFIG_DIR="/etc/cni/net.d" -CNI_BIN_DIR="/opt/cni/bin" -#TODO pull this out of componetns.json too? -CNI_DOWNLOADS_DIR="/opt/cni/downloads" -CRICTL_DOWNLOAD_DIR="/opt/crictl/downloads" -CRICTL_BIN_DIR="/usr/local/bin" -CONTAINERD_DOWNLOADS_DIR="/opt/containerd/downloads" -RUNC_DOWNLOADS_DIR="/opt/runc/downloads" -K8S_DOWNLOADS_DIR="/opt/kubernetes/downloads" -K8S_PRIVATE_PACKAGES_CACHE_DIR="/opt/kubernetes/downloads/private-packages" -UBUNTU_RELEASE=$(lsb_release -r -s) -SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR="/opt/azure/tlsbootstrap" -SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION="v0.1.0-alpha.2" -TELEPORTD_PLUGIN_DOWNLOAD_DIR="/opt/teleportd/downloads" -CREDENTIAL_PROVIDER_DOWNLOAD_DIR="/opt/credentialprovider/downloads" -CREDENTIAL_PROVIDER_BIN_DIR="/var/lib/kubelet/credential-provider" -TELEPORTD_PLUGIN_BIN_DIR="/usr/local/bin" -CONTAINERD_WASM_VERSIONS="v0.3.0 v0.5.1 v0.8.0" -MANIFEST_FILEPATH="/opt/azure/manifest.json" -COMPONENTS_FILEPATH="/opt/azure/components.json" -MAN_DB_AUTO_UPDATE_FLAG_FILEPATH="/var/lib/man-db/auto-update" -CURL_OUTPUT=/tmp/curl_verbose.out -UBUNTU_OS_NAME="UBUNTU" -MARINER_OS_NAME="MARINER" - -removeManDbAutoUpdateFlagFile() { - rm -f $MAN_DB_AUTO_UPDATE_FLAG_FILEPATH -} - -createManDbAutoUpdateFlagFile() { - touch $MAN_DB_AUTO_UPDATE_FLAG_FILEPATH -} - -cleanupContainerdDlFiles() { - rm -rf $CONTAINERD_DOWNLOADS_DIR -} - -installContainerdWithComponentsJson() { - os=${UBUNTU_OS_NAME} - if [[ -z "$UBUNTU_RELEASE" ]]; then - os=${MARINER_OS_NAME} - os_version="current" - else - os_version="${UBUNTU_RELEASE}" - fi - - containerdPackage=$(jq ".Packages" "$COMPONENTS_FILEPATH" | jq ".[] | select(.name == \"containerd\")") || exit $ERR_CONTAINERD_VERSION_INVALID - PACKAGE_VERSIONS=() - if [[ "${os}" == "${MARINER_OS_NAME}" && "${IS_KATA}" == "true" ]]; then - os=${MARINER_KATA_OS_NAME} - fi - returnPackageVersions "${containerdPackage}" "${os}" "${os_version}" - - #Containerd's versions array is expected to have only one element. - #If it has more than one element, we will install the last element in the array. - if [[ ${#PACKAGE_VERSIONS[@]} -gt 1 ]]; then - echo "WARNING: containerd package versions array has more than one element. Installing the last element in the array." - fi - if [[ ${#PACKAGE_VERSIONS[@]} -eq 0 || ${PACKAGE_VERSIONS[0]} == "" ]]; then - echo "INFO: containerd package versions array is either empty or the first element is . Skipping containerd installation." - return 0 - fi - IFS=$'\n' sortedPackageVersions=($(sort -V <<<"${PACKAGE_VERSIONS[*]}")) - unset IFS - array_size=${#sortedPackageVersions[@]} - [[ $((array_size-1)) -lt 0 ]] && last_index=0 || last_index=$((array_size-1)) - packageVersion=${sortedPackageVersions[${last_index}]} - containerdMajorMinorPatchVersion="$(echo "$packageVersion" | cut -d- -f1)" - containerdHotFixVersion="$(echo "$packageVersion" | cut -d- -s -f2)" - if [ -z "$containerdMajorMinorPatchVersion" ] || [ "$containerdMajorMinorPatchVersion" == "null" ] || [ "$containerdHotFixVersion" == "null" ]; then - echo "invalid containerd version: $packageVersion" - exit $ERR_CONTAINERD_VERSION_INVALID - fi - logs_to_events "AKS.CSE.installContainerRuntime.installStandaloneContainerd" "installStandaloneContainerd ${containerdMajorMinorPatchVersion} ${containerdHotFixVersion}" - echo "in installContainerRuntime - CONTAINERD_VERSION = ${packageVersion}" - -} - -installContainerdWithManifestJson() { - local containerd_version - if [ -f "$MANIFEST_FILEPATH" ]; then - local containerd_version - containerd_version="$(jq -r .containerd.edge "$MANIFEST_FILEPATH")" - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - containerd_version="$(jq -r '.containerd.pinned."1804"' "$MANIFEST_FILEPATH")" - fi - else - echo "WARNING: containerd version not found in manifest, defaulting to hardcoded." - fi - containerd_patch_version="$(echo "$containerd_version" | cut -d- -f1)" - containerd_revision="$(echo "$containerd_version" | cut -d- -f2)" - if [ -z "$containerd_patch_version" ] || [ "$containerd_patch_version" == "null" ] || [ "$containerd_revision" == "null" ]; then - echo "invalid container version: $containerd_version" - exit $ERR_CONTAINERD_INSTALL_TIMEOUT - fi - logs_to_events "AKS.CSE.installContainerRuntime.installStandaloneContainerd" "installStandaloneContainerd ${containerd_patch_version} ${containerd_revision}" - echo "in installContainerRuntime - CONTAINERD_VERSION = ${containerd_patch_version}" -} - -installContainerRuntime() { - echo "in installContainerRuntime - KUBERNETES_VERSION = ${KUBERNETES_VERSION}" - if [[ "${NEEDS_CONTAINERD}" != "true" ]]; then - installMoby - fi - if [ -f "$COMPONENTS_FILEPATH" ] && jq '.Packages[] | select(.name == "containerd")' < $COMPONENTS_FILEPATH > /dev/null; then - echo "Package \"containerd\" exists in $COMPONENTS_FILEPATH." - installContainerdWithComponentsJson - return - fi - echo "Package \"containerd\" does not exist in $COMPONENTS_FILEPATH." - installContainerdWithManifestJson -} - -installNetworkPlugin() { - if [[ "${NETWORK_PLUGIN}" = "azure" ]]; then - installAzureCNI - fi - installCNI #reference plugins. Mostly for kubenet but loopback plugin is used by containerd until containerd 2 - rm -rf $CNI_DOWNLOADS_DIR & -} - - -downloadCredentalProvider() { - mkdir -p $CREDENTIAL_PROVIDER_DOWNLOAD_DIR - CREDENTIAL_PROVIDER_TGZ_TMP=${CREDENTIAL_PROVIDER_DOWNLOAD_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$CREDENTIAL_PROVIDER_DOWNLOAD_DIR/$CREDENTIAL_PROVIDER_TGZ_TMP" "$CREDENTIAL_PROVIDER_DOWNLOAD_URL" || exit $ERR_CREDENTIAL_PROVIDER_DOWNLOAD_TIMEOUT -} - -installCredentalProvider() { - logs_to_events "AKS.CSE.installCredentalProvider.downloadCredentalProvider" downloadCredentalProvider - tar -xzf "$CREDENTIAL_PROVIDER_DOWNLOAD_DIR/${CREDENTIAL_PROVIDER_TGZ_TMP}" -C $CREDENTIAL_PROVIDER_DOWNLOAD_DIR - mkdir -p "${CREDENTIAL_PROVIDER_BIN_DIR}" - chown -R root:root "${CREDENTIAL_PROVIDER_BIN_DIR}" - mv "${CREDENTIAL_PROVIDER_DOWNLOAD_DIR}/azure-acr-credential-provider" "${CREDENTIAL_PROVIDER_BIN_DIR}/acr-credential-provider" - chmod 755 "${CREDENTIAL_PROVIDER_BIN_DIR}/acr-credential-provider" - rm -rf ${CREDENTIAL_PROVIDER_DOWNLOAD_DIR} -} - -downloadSecureTLSBootstrapKubeletExecPlugin() { - local plugin_url="https://k8sreleases.blob.core.windows.net/aks-tls-bootstrap-client/${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION}/linux/amd64/tls-bootstrap-client" - if [[ $(isARM64) == 1 ]]; then - plugin_url="https://k8sreleases.blob.core.windows.net/aks-tls-bootstrap-client/${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_VERSION}/linux/arm64/tls-bootstrap-client" - fi - - mkdir -p $SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR - plugin_download_path="${SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR}/tls-bootstrap-client" - - if [ ! -f "$plugin_download_path" ]; then - retrycmd_if_failure 30 5 60 curl -fSL -o "$plugin_download_path" "$plugin_url" || exit $ERR_DOWNLOAD_SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_TIMEOUT - chown -R root:root "$SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR" - chmod -R 755 "$SECURE_TLS_BOOTSTRAP_KUBELET_EXEC_PLUGIN_DOWNLOAD_DIR" - fi -} - -downloadContainerdWasmShims() { - declare -a wasmShimPids=() - for shim_version in $CONTAINERD_WASM_VERSIONS; do - binary_version="$(echo "${shim_version}" | tr . -)" - local containerd_wasm_filepath="/usr/local/bin" - local containerd_wasm_url="https://acs-mirror.azureedge.net/containerd-wasm-shims/${shim_version}/linux/amd64" - if [[ $(isARM64) == 1 ]]; then - containerd_wasm_url="https://acs-mirror.azureedge.net/containerd-wasm-shims/${shim_version}/linux/arm64" - fi - - if [ ! -f "$containerd_wasm_filepath/containerd-shim-spin-${shim_version}" ] || [ ! -f "$containerd_wasm_filepath/containerd-shim-slight-${shim_version}" ]; then - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-spin-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-spin-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-slight-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-slight-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - if [ "$shim_version" == "v0.8.0" ]; then - retrycmd_if_failure 30 5 60 curl -fSLv -o "$containerd_wasm_filepath/containerd-shim-wws-${binary_version}-v1" "$containerd_wasm_url/containerd-shim-wws-v1" 2>&1 | tee $CURL_OUTPUT >/dev/null | grep -E "^(curl:.*)|([eE]rr.*)$" && (cat $CURL_OUTPUT && exit $ERR_KRUSTLET_DOWNLOAD_TIMEOUT) & - wasmShimPids+=($!) - fi - fi - done - wait ${wasmShimPids[@]} - for shim_version in $CONTAINERD_WASM_VERSIONS; do - binary_version="$(echo "${shim_version}" | tr . -)" - chmod 755 "$containerd_wasm_filepath/containerd-shim-spin-${binary_version}-v1" - chmod 755 "$containerd_wasm_filepath/containerd-shim-slight-${binary_version}-v1" - if [ "$shim_version" == "v0.8.0" ]; then - chmod 755 "$containerd_wasm_filepath/containerd-shim-wws-${binary_version}-v1" - fi - done -} - -installOras() { - ORAS_DOWNLOAD_DIR="/opt/oras/downloads" - ORAS_EXTRACTED_DIR=${1} - ORAS_DOWNLOAD_URL=${2} - ORAS_VERSION=${3} - - mkdir -p $ORAS_DOWNLOAD_DIR - - echo "Installing Oras version $ORAS_VERSION..." - ORAS_TMP=${ORAS_DOWNLOAD_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" ${ORAS_DOWNLOAD_URL} || exit $ERR_ORAS_DOWNLOAD_ERROR - - if [ ! -f "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" ]; then - echo "File $ORAS_DOWNLOAD_DIR/${ORAS_TMP} does not exist." - exit $ERR_ORAS_DOWNLOAD_ERROR - fi - - echo "File $ORAS_DOWNLOAD_DIR/${ORAS_TMP} exists." - sudo tar -zxf "$ORAS_DOWNLOAD_DIR/${ORAS_TMP}" -C $ORAS_EXTRACTED_DIR/ - rm -r "$ORAS_DOWNLOAD_DIR" - echo "Oras version $ORAS_VERSION installed successfully." - -} - -evalPackageDownloadURL() { - local url=${1:-} - if [[ -n "$url" ]]; then - eval "result=${url}" - echo $result - return - fi - echo "" -} - -downloadAzureCNI() { - mkdir -p ${1-$:CNI_DOWNLOADS_DIR} - VNET_CNI_PLUGINS_URL=${2:-$VNET_CNI_PLUGINS_URL} - if [[ -z "$VNET_CNI_PLUGINS_URL" ]]; then - echo "VNET_CNI_PLUGINS_URL is not set. Exiting..." - return - fi - CNI_TGZ_TMP=${VNET_CNI_PLUGINS_URL##*/} # Use bash builtin # - retrycmd_get_tarball 120 5 "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" ${VNET_CNI_PLUGINS_URL} || exit $ERR_CNI_DOWNLOAD_TIMEOUT -} - -downloadCrictl() { - #if $1 is empty, take ${CRICTL_DOWNLOAD_DIR} as default value. Otherwise take $1 as the value - downloadDir=${1:-${CRICTL_DOWNLOAD_DIR}} - mkdir -p $downloadDir - url=${2} - crictlTgzTmp=${url##*/} - retrycmd_curl_file 10 5 60 "$downloadDir/${crictlTgzTmp}" ${url} || exit $ERR_CRICTL_DOWNLOAD_TIMEOUT -} - -installCrictl() { - CPU_ARCH=$(getCPUArch) - currentVersion=$(crictl --version 2>/dev/null | sed 's/crictl version //g') - if [[ "${currentVersion}" != "" ]]; then - echo "version ${currentVersion} of crictl already installed. skipping installCrictl of target version ${KUBERNETES_VERSION%.*}.0" - else - CRICTL_TGZ_TEMP="crictl-v${CRICTL_VERSION}-linux-${CPU_ARCH}.tar.gz" - if [[ ! -f "$CRICTL_DOWNLOAD_DIR/${CRICTL_TGZ_TEMP}" ]]; then - rm -rf ${CRICTL_DOWNLOAD_DIR} - echo "pre-cached crictl not found: skipping installCrictl" - return 1 - fi - echo "Unpacking crictl into ${CRICTL_BIN_DIR}" - tar zxvf "$CRICTL_DOWNLOAD_DIR/${CRICTL_TGZ_TEMP}" -C ${CRICTL_BIN_DIR} - chown root:root $CRICTL_BIN_DIR/crictl - chmod 755 $CRICTL_BIN_DIR/crictl - fi -} - -downloadTeleportdPlugin() { - DOWNLOAD_URL=$1 - TELEPORTD_VERSION=$2 - if [[ $(isARM64) == 1 ]]; then - return - fi - - if [[ -z ${DOWNLOAD_URL} ]]; then - echo "download url parameter for downloadTeleportdPlugin was not given" - exit $ERR_TELEPORTD_DOWNLOAD_ERR - fi - if [[ -z ${TELEPORTD_VERSION} ]]; then - echo "teleportd version not given" - exit $ERR_TELEPORTD_DOWNLOAD_ERR - fi - mkdir -p $TELEPORTD_PLUGIN_DOWNLOAD_DIR - retrycmd_curl_file 10 5 60 "${TELEPORTD_PLUGIN_DOWNLOAD_DIR}/teleportd-v${TELEPORTD_VERSION}" "${DOWNLOAD_URL}/v${TELEPORTD_VERSION}/teleportd" || exit ${ERR_TELEPORTD_DOWNLOAD_ERR} -} - -installTeleportdPlugin() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - CURRENT_VERSION=$(teleportd --version 2>/dev/null | sed 's/teleportd version v//g') - local TARGET_VERSION="0.8.0" - if semverCompare ${CURRENT_VERSION:-"0.0.0"} ${TARGET_VERSION}; then - echo "currently installed teleportd version ${CURRENT_VERSION} is greater than (or equal to) target base version ${TARGET_VERSION}. skipping installTeleportdPlugin." - else - downloadTeleportdPlugin ${TELEPORTD_PLUGIN_DOWNLOAD_URL} ${TARGET_VERSION} - mv "${TELEPORTD_PLUGIN_DOWNLOAD_DIR}/teleportd-v${TELEPORTD_VERSION}" "${TELEPORTD_PLUGIN_BIN_DIR}/teleportd" || exit ${ERR_TELEPORTD_INSTALL_ERR} - chmod 755 "${TELEPORTD_PLUGIN_BIN_DIR}/teleportd" || exit ${ERR_TELEPORTD_INSTALL_ERR} - fi - rm -rf ${TELEPORTD_PLUGIN_DOWNLOAD_DIR} -} - -setupCNIDirs() { - mkdir -p $CNI_BIN_DIR - chown -R root:root $CNI_BIN_DIR - chmod -R 755 $CNI_BIN_DIR - - mkdir -p $CNI_CONFIG_DIR - chown -R root:root $CNI_CONFIG_DIR - chmod 755 $CNI_CONFIG_DIR -} - - -installCNI() { - - if [ ! -f "$COMPONENTS_FILEPATH" ] || ! jq '.Packages[] | select(.name == "cni-plugins")' < $COMPONENTS_FILEPATH > /dev/null; then - echo "WARNING: no cni-plugins components present falling back to hard coded download of 1.4.1. This should error eventually" - retrycmd_get_tarball 120 5 "${CNI_DOWNLOADS_DIR}/refcni.tar.gz" "https://acs-mirror.azureedge.net/cni-plugins/v1.4.1/binaries/cni-plugins-linux-amd64-v1.4.1.tgz" || exit - tar -xzf "${CNI_DOWNLOADS_DIR}/refcni.tar.gz" -C $CNI_BIN_DIR - return - fi - - #always just use what is listed in components.json so we don't have to sync. - cniPackage=$(jq ".Packages" "$COMPONENTS_FILEPATH" | jq ".[] | select(.name == \"cni-plugins\")") || exit $ERR_CNI_VERSION_INVALID - - #CNI doesn't really care about this but wanted to reuse returnPackageVersions which requires it. - os=${UBUNTU_OS_NAME} - if [[ -z "$UBUNTU_RELEASE" ]]; then - os=${MARINER_OS_NAME} - os_version="current" - fi - os_version="${UBUNTU_RELEASE}" - if [[ "${os}" == "${MARINER_OS_NAME}" && "${IS_KATA}" == "true" ]]; then - os=${MARINER_KATA_OS_NAME} - fi - PACKAGE_VERSIONS=() - returnPackageVersions "${cniPackage}" "${os}" "${os_version}" - - #should change to ne - if [[ ${#PACKAGE_VERSIONS[@]} -gt 1 ]]; then - echo "WARNING: containerd package versions array has more than one element. Installing the last element in the array." - exit $ERR_CONTAINERD_VERSION_INVALID - fi - packageVersion=${PACKAGE_VERSIONS[0]} - - if [[ $(isARM64) == 1 ]]; then - CNI_DIR_TMP="cni-plugins-linux-arm64-v${packageVersion}" - else - CNI_DIR_TMP="cni-plugins-linux-amd64-v${packageVersion}" - fi - - if [[ -d "$CNI_DOWNLOADS_DIR/${CNI_DIR_TMP}" ]]; then - #not clear to me when this would ever happen. assume its related to the line above Latest VHD should have the untar, older should have the tgz. - mv ${CNI_DOWNLOADS_DIR}/${CNI_DIR_TMP}/* $CNI_BIN_DIR - else - echo "CNI tarball should already be unzipped by components.json" - exit $ERR_CNI_VERSION_INVALID - fi - - chown -R root:root $CNI_BIN_DIR -} - -installAzureCNI() { - CNI_TGZ_TMP=${VNET_CNI_PLUGINS_URL##*/} # Use bash builtin # - CNI_DIR_TMP=${CNI_TGZ_TMP%.tgz} - - if [[ -d "$CNI_DOWNLOADS_DIR/${CNI_DIR_TMP}" ]]; then - mv ${CNI_DOWNLOADS_DIR}/${CNI_DIR_TMP}/* $CNI_BIN_DIR - else - if [[ ! -f "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" ]]; then - logs_to_events "AKS.CSE.installAzureCNI.downloadAzureCNI" downloadAzureCNI - fi - - tar -xzf "$CNI_DOWNLOADS_DIR/${CNI_TGZ_TMP}" -C $CNI_BIN_DIR - fi - - chown -R root:root $CNI_BIN_DIR -} - -extractKubeBinaries() { - local k8s_version="$1" - local kube_binary_url="$2" - local is_private_url="$3" - local k8s_downloads_dir="$4" - - local k8s_tgz_tmp_filename=${kube_binary_url##*/} - - if [[ $is_private_url == true ]]; then - k8s_tgz_tmp="${K8S_PRIVATE_PACKAGES_CACHE_DIR}/${k8s_tgz_tmp_filename}" - - if [[ ! -f "${k8s_tgz_tmp}" ]]; then - echo "cached package ${k8s_tgz_tmp} not found" - return 1 - fi - - echo "cached package ${k8s_tgz_tmp} found, will extract that" - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* - else - k8s_tgz_tmp="${k8s_downloads_dir}/${k8s_tgz_tmp_filename}" - mkdir -p ${k8s_downloads_dir} - - retrycmd_get_tarball 120 5 "${k8s_tgz_tmp}" ${kube_binary_url} || exit $ERR_K8S_DOWNLOAD_TIMEOUT - if [[ ! -f ${k8s_tgz_tmp} ]]; then - exit "$ERR_K8S_DOWNLOAD_TIMEOUT" - fi - fi - - tar --transform="s|.*|&-${k8s_version}|" --show-transformed-names -xzvf "${k8s_tgz_tmp}" \ - --strip-components=3 -C /usr/local/bin kubernetes/node/bin/kubelet kubernetes/node/bin/kubectl || exit $ERR_K8S_INSTALL_ERR - if [[ ! -f /usr/local/bin/kubectl-${k8s_version} ]] || [[ ! -f /usr/local/bin/kubelet-${k8s_version} ]]; then - exit $ERR_K8S_INSTALL_ERR - fi - - if [[ $is_private_url == false ]]; then - rm -f "${k8s_tgz_tmp}" - fi -} - -installKubeletKubectlAndKubeProxy() { - CUSTOM_KUBE_BINARY_DOWNLOAD_URL="${CUSTOM_KUBE_BINARY_URL:=}" - PRIVATE_KUBE_BINARY_DOWNLOAD_URL="${PRIVATE_KUBE_BINARY_URL:=}" - echo "using private url: ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL}, custom url: ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL}" - install_default_if_missing=true - - if [[ ! -z ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL} ]]; then - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* - - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${CUSTOM_KUBE_BINARY_DOWNLOAD_URL} false - install_default_if_missing=false - elif [[ ! -z ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL} ]]; then - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${PRIVATE_KUBE_BINARY_DOWNLOAD_URL} true - fi - - if [[ ! -f "/usr/local/bin/kubectl-${KUBERNETES_VERSION}" ]] || [[ ! -f "/usr/local/bin/kubelet-${KUBERNETES_VERSION}" ]]; then - if [[ "$install_default_if_missing" == true ]]; then - #TODO: remove the condition check on KUBE_BINARY_URL once RP change is released - if (($(echo ${KUBERNETES_VERSION} | cut -d"." -f2) >= 17)) && [ -n "${KUBE_BINARY_URL}" ]; then - logs_to_events "AKS.CSE.installKubeletKubectlAndKubeProxy.extractKubeBinaries" extractKubeBinaries ${KUBERNETES_VERSION} ${KUBE_BINARY_URL} false - fi - fi - fi - mv "/usr/local/bin/kubelet-${KUBERNETES_VERSION}" "/usr/local/bin/kubelet" - mv "/usr/local/bin/kubectl-${KUBERNETES_VERSION}" "/usr/local/bin/kubectl" - - chmod a+x /usr/local/bin/kubelet /usr/local/bin/kubectl - rm -rf /usr/local/bin/kubelet-* /usr/local/bin/kubectl-* /home/hyperkube-downloads & -} - -pullContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - echo "pulling the image ${CONTAINER_IMAGE_URL} using ${CLI_TOOL}" - if [[ ${CLI_TOOL} == "ctr" ]]; then - logs_to_events "AKS.CSE.imagepullctr.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure_nostdout 2 1 120 ctr --namespace k8s.io image pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via ctr" && exit $ERR_CONTAINERD_CTR_IMG_PULL_TIMEOUT) - elif [[ ${CLI_TOOL} == "crictl" ]]; then - logs_to_events "AKS.CSE.imagepullcrictl.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure 2 1 120 crictl pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via crictl" && exit $ERR_CONTAINERD_CRICTL_IMG_PULL_TIMEOUT) - else - logs_to_events "AKS.CSE.imagepull.${CONTAINER_IMAGE_URL}" "retrycmd_if_failure 2 1 120 docker pull $CONTAINER_IMAGE_URL" || (echo "timed out pulling image ${CONTAINER_IMAGE_URL} via docker" && exit $ERR_DOCKER_IMG_PULL_TIMEOUT) - fi -} - -retagContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - RETAG_IMAGE_URL=$3 - echo "retagging from ${CONTAINER_IMAGE_URL} to ${RETAG_IMAGE_URL} using ${CLI_TOOL}" - if [[ ${CLI_TOOL} == "ctr" ]]; then - ctr --namespace k8s.io image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - elif [[ ${CLI_TOOL} == "crictl" ]]; then - crictl image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - else - docker image tag $CONTAINER_IMAGE_URL $RETAG_IMAGE_URL - fi -} - -retagMCRImagesForChina() { - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - allMCRImages=($(ctr --namespace k8s.io images list | grep '^mcr.microsoft.com/' | awk '{print $1}')) - else - allMCRImages=($(docker images | grep '^mcr.microsoft.com/' | awk '{str = sprintf("%s:%s", $1, $2)} {print str}')) - fi - if [[ "${allMCRImages}" == "" ]]; then - echo "failed to find mcr images for retag" - return - fi - for mcrImage in ${allMCRImages[@]+"${allMCRImages[@]}"}; do - retagMCRImage=$(echo ${mcrImage} | sed -e 's/^mcr.microsoft.com/mcr.azk8s.cn/g') - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - retagContainerImage "ctr" ${mcrImage} ${retagMCRImage} - else - retagContainerImage "docker" ${mcrImage} ${retagMCRImage} - fi - done -} - -removeContainerImage() { - CLI_TOOL=$1 - CONTAINER_IMAGE_URL=$2 - if [[ "${CLI_TOOL}" == "docker" ]]; then - docker image rm $CONTAINER_IMAGE_URL - else - crictl rmi $CONTAINER_IMAGE_URL - fi -} - -cleanUpImages() { - local targetImage=$1 - export targetImage - function cleanupImagesRun() { - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - if [[ "${CLI_TOOL}" == "crictl" ]]; then - images_to_delete=$(crictl images | awk '{print $1":"$2}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - else - images_to_delete=$(ctr --namespace k8s.io images list | awk '{print $1}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - fi - else - images_to_delete=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep -vE "${KUBERNETES_VERSION}$|${KUBERNETES_VERSION}.[0-9]+$|${KUBERNETES_VERSION}-|${KUBERNETES_VERSION}_" | grep ${targetImage} | tr ' ' '\n') - fi - local exit_code=$? - if [[ $exit_code != 0 ]]; then - exit $exit_code - elif [[ "${images_to_delete}" != "" ]]; then - echo "${images_to_delete}" | while read image; do - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - removeContainerImage ${CLI_TOOL} ${image} - else - removeContainerImage "docker" ${image} - fi - done - fi - } - export -f cleanupImagesRun - retrycmd_if_failure 10 5 120 bash -c cleanupImagesRun -} - -cleanUpKubeProxyImages() { - echo $(date),$(hostname), startCleanUpKubeProxyImages - cleanUpImages "kube-proxy" - echo $(date),$(hostname), endCleanUpKubeProxyImages -} - -cleanupRetaggedImages() { - if [[ "${TARGET_CLOUD}" != "AzureChinaCloud" ]]; then - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - if [[ "${CLI_TOOL}" == "crictl" ]]; then - images_to_delete=$(crictl images | awk '{print $1":"$2}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - else - images_to_delete=$(ctr --namespace k8s.io images list | awk '{print $1}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - fi - else - images_to_delete=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^mcr.azk8s.cn/' | tr ' ' '\n') - fi - if [[ "${images_to_delete}" != "" ]]; then - echo "${images_to_delete}" | while read image; do - if [ "${NEEDS_CONTAINERD}" == "true" ]; then - removeContainerImage "ctr" ${image} - else - removeContainerImage "docker" ${image} - fi - done - fi - else - echo "skipping container cleanup for AzureChinaCloud" - fi -} - -cleanUpContainerImages() { - export KUBERNETES_VERSION - export CLI_TOOL - export -f retrycmd_if_failure - export -f removeContainerImage - export -f cleanUpImages - export -f cleanUpKubeProxyImages - bash -c cleanUpKubeProxyImages & -} - -cleanUpContainerd() { - rm -Rf $CONTAINERD_DOWNLOADS_DIR -} - -overrideNetworkConfig() { - CONFIG_FILEPATH="/etc/cloud/cloud.cfg.d/80_azure_net_config.cfg" - touch ${CONFIG_FILEPATH} - cat <>${CONFIG_FILEPATH} -datasource: - Azure: - apply_network_config: false -EOF -} - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line47.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line47.sh deleted file mode 100644 index b6b6cad0f98..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line47.sh +++ /dev/null @@ -1,63 +0,0 @@ -import yaml -import argparse - -REDACTED = 'REDACTED' - -def redact_bootstrap_kubeconfig_tls_token(bootstrap_kubeconfig_write_file): - content_yaml = yaml.safe_load(bootstrap_kubeconfig_write_file['content']) - content_yaml['users'][0]['user']['token'] = REDACTED - bootstrap_kubeconfig_write_file['content'] = yaml.dump(content_yaml) - - -def redact_service_principal_secret(sp_secret_write_file): - sp_secret_write_file['content'] = REDACTED - - -PATH_TO_REDACT_FUNC = { - '/var/lib/kubelet/bootstrap-kubeconfig': redact_bootstrap_kubeconfig_tls_token, - '/etc/kubernetes/sp.txt': redact_service_principal_secret -} - - -def redact_cloud_config(cloud_config_path, output_path): - target_paths = set(PATH_TO_REDACT_FUNC.keys()) - - with open(cloud_config_path, 'r') as f: - cloud_config_data = f.read() - cloud_config = yaml.safe_load(cloud_config_data) - - for write_file in cloud_config['write_files']: - if write_file['path'] in target_paths: - target_path = write_file['path'] - target_paths.remove(target_path) - - print('Redacting secrets from write_file: ' + target_path) - PATH_TO_REDACT_FUNC[target_path](write_file) - - if len(target_paths) == 0: - break - - - print('Dumping redacted cloud-config to: ' + output_path) - with open(output_path, 'w+') as output_file: - output_file.write(yaml.dump(cloud_config)) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser( - description='Command line utility used to redact secrets from write_file definitions for ' + - str([", ".join(PATH_TO_REDACT_FUNC)]) + ' within a specified cloud-config.txt. \ - These secrets must be redacted before cloud-config.txt can be collected for logging.') - parser.add_argument( - "--cloud-config-path", - required=True, - type=str, - help='Path to cloud-config.txt to redact') - parser.add_argument( - "--output-path", - required=True, - type=str, - help='Path to the newly generated cloud-config.txt with redacted secrets') - - args = parser.parse_args() - redact_cloud_config(args.cloud_config_path, args.output_path) \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line54.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line54.sh deleted file mode 100644 index 14d099727b1..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line54.sh +++ /dev/null @@ -1,44 +0,0 @@ -#! /usr/bin/env python3 - -import urllib3 -import uuid -import xml.etree.ElementTree as ET - -http = urllib3.PoolManager() - -goal_state_xml = http.request( - 'GET', - 'http://168.63.129.16/machine/?comp=goalstate', - headers={ - 'x-ms-version': '2012-11-30' - } - ) -goal_state = ET.fromstring(goal_state_xml.data.decode('utf-8')) -container_id = goal_state.findall('./Container/ContainerId')[0].text -role_config_name = goal_state.findall('./Container/RoleInstanceList/RoleInstance/Configuration/ConfigName')[0].text -deployment_id = role_config_name.split('.')[0] - -with open('/var/lib/waagent/logcollector/logs.zip', 'rb') as logs: - logs_data = logs.read() - upload_logs = http.request( - 'PUT', - 'http://168.63.129.16:32526/vmAgentLog', - headers={ - 'x-ms-version': '2015-09-01', - 'x-ms-client-correlationid': str(uuid.uuid4()), - 'x-ms-client-name': 'AKSCSEPlugin', - 'x-ms-client-version': '0.1.0', - 'x-ms-containerid': container_id, - 'x-ms-vmagentlog-deploymentid': deployment_id, - }, - body=logs_data, - ) - -if upload_logs.status == 200: - print("Successfully uploaded logs") - exit(0) -else: - print('Failed to upload logs') - print(f'Response status: {upload_logs.status}') - print(f'Response body:\n{upload_logs.data.decode("utf-8")}') - exit(1) diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line62.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line62.sh deleted file mode 100644 index 1bc19fc978e..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line62.sh +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash - -echo "Sourcing cse_install_distro.sh for Ubuntu" - -removeMoby() { - apt_get_purge 10 5 300 moby-engine moby-cli -} - -removeContainerd() { - apt_get_purge 10 5 300 moby-containerd -} - -installDeps() { - if [[ $(isARM64) == 1 ]]; then - wait_for_apt_locks - retrycmd_if_failure_no_stats 120 5 25 curl -fsSL https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/packages-microsoft-prod.deb > /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_DOWNLOAD_TIMEOUT - else - retrycmd_if_failure_no_stats 120 5 25 curl -fsSL https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/packages-microsoft-prod.deb > /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_DOWNLOAD_TIMEOUT - fi - retrycmd_if_failure 60 5 10 dpkg -i /tmp/packages-microsoft-prod.deb || exit $ERR_MS_PROD_DEB_PKG_ADD_FAIL - - aptmarkWALinuxAgent hold - apt_get_update || exit $ERR_APT_UPDATE_TIMEOUT - - pkg_list=(ca-certificates ceph-common cgroup-lite cifs-utils conntrack cracklib-runtime ebtables ethtool git glusterfs-client htop init-system-helpers inotify-tools iotop iproute2 ipset iptables nftables jq libpam-pwquality libpwquality-tools mount nfs-common pigz socat sysfsutils sysstat util-linux xz-utils netcat-openbsd zip rng-tools kmod gcc make dkms initramfs-tools linux-headers-$(uname -r) linux-modules-extra-$(uname -r)) - - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - pkg_list+=(dnsutils) - else - pkg_list+=(bind9-dnsutils) - fi - - local OSVERSION - OSVERSION=$(grep DISTRIB_RELEASE /etc/*-release| cut -f 2 -d "=") - BLOBFUSE_VERSION="1.4.5" - BLOBFUSE2_VERSION="2.3.0" - - if [ "${OSVERSION}" == "18.04" ]; then - BLOBFUSE2_VERSION="2.2.0" - fi - - pkg_list+=(blobfuse2=${BLOBFUSE2_VERSION}) - if [[ "${OSVERSION}" == "22.04" || "${OSVERSION}" == "24.04" ]]; then - pkg_list+=(fuse3) - else - pkg_list+=(blobfuse=${BLOBFUSE_VERSION} fuse) - fi - - for apt_package in ${pkg_list[*]}; do - if ! apt_get_install 30 1 600 $apt_package; then - journalctl --no-pager -u $apt_package - exit $ERR_APT_INSTALL_TIMEOUT - fi - done -} - -updateAptWithMicrosoftPkg() { - retrycmd_if_failure_no_stats 120 5 25 curl https://packages.microsoft.com/config/ubuntu/${UBUNTU_RELEASE}/prod.list > /tmp/microsoft-prod.list || exit $ERR_MOBY_APT_LIST_TIMEOUT - retrycmd_if_failure 10 5 10 cp /tmp/microsoft-prod.list /etc/apt/sources.list.d/ || exit $ERR_MOBY_APT_LIST_TIMEOUT - if [[ ${UBUNTU_RELEASE} == "18.04" ]]; then { - echo "deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/18.04/multiarch/prod testing main" > /etc/apt/sources.list.d/microsoft-prod-testing.list - } - elif [[ ${UBUNTU_RELEASE} == "20.04" || ${UBUNTU_RELEASE} == "22.04" || ${UBUNTU_RELEASE} == "24.04" ]]; then { - echo "deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/${UBUNTU_RELEASE}/prod testing main" > /etc/apt/sources.list.d/microsoft-prod-testing.list - } - fi - - retrycmd_if_failure_no_stats 120 5 25 curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg || exit $ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT - retrycmd_if_failure 10 5 10 cp /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ || exit $ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT - apt_get_update || exit $ERR_APT_UPDATE_TIMEOUT -} - -cleanUpGPUDrivers() { - rm -Rf $GPU_DEST /opt/gpu -} - -installContainerd() { - packageVersion="${3:-}" - containerdMajorMinorPatchVersion="$(echo "$packageVersion" | cut -d- -f1)" - containerdHotFixVersion="$(echo "$packageVersion" | cut -d- -f2)" - CONTAINERD_DOWNLOADS_DIR="${1:-$CONTAINERD_DOWNLOADS_DIR}" - eval containerdOverrideDownloadURL="${2:-}" - - if [[ ! -z ${containerdOverrideDownloadURL} ]]; then - installContainerdFromOverride ${containerdOverrideDownloadURL} || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - installContainerdWithAptGet "${containerdMajorMinorPatchVersion}" "${containerdHotFixVersion}" "${CONTAINERD_DOWNLOADS_DIR}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT -} - -installContainerdFromOverride() { - containerdOverrideDownloadURL=$1 - echo "Installing containerd from user input: ${containerdOverrideDownloadURL}" - logs_to_events "AKS.CSE.installContainerRuntime.removeMoby" removeMoby - logs_to_events "AKS.CSE.installContainerRuntime.removeContainerd" removeContainerd - logs_to_events "AKS.CSE.installContainerRuntime.downloadContainerdFromURL" downloadContainerdFromURL "${containerdOverrideDownloadURL}" - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${CONTAINERD_DEB_FILE}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - echo "Succeeded to install containerd from user input: ${containerdOverrideDownloadURL}" - return 0 -} - -installContainerdWithAptGet() { - local containerdMajorMinorPatchVersion="${1}" - local containerdHotFixVersion="${2}" - CONTAINERD_DOWNLOADS_DIR="${3:-$CONTAINERD_DOWNLOADS_DIR}" - currentVersion=$(containerd -version | cut -d " " -f 3 | sed 's|v||' | cut -d "+" -f 1) - - if [ -z "$currentVersion" ]; then - currentVersion="0.0.0" - fi - - currentMajorMinor="$(echo $currentVersion | tr '.' '\n' | head -n 2 | paste -sd.)" - desiredMajorMinor="$(echo $containerdMajorMinorPatchVersion | tr '.' '\n' | head -n 2 | paste -sd.)" - semverCompare "$currentVersion" "$containerdMajorMinorPatchVersion" - hasGreaterVersion="$?" - - if [[ "$hasGreaterVersion" == "0" ]] && [[ "$currentMajorMinor" == "$desiredMajorMinor" ]]; then - echo "currently installed containerd version ${currentVersion} matches major.minor with higher patch ${containerdMajorMinorPatchVersion}. skipping installStandaloneContainerd." - else - echo "installing containerd version ${containerdMajorMinorPatchVersion}" - logs_to_events "AKS.CSE.installContainerRuntime.removeMoby" removeMoby - logs_to_events "AKS.CSE.installContainerRuntime.removeContainerd" removeContainerd - containerdDebFile="$(ls ${CONTAINERD_DOWNLOADS_DIR}/moby-containerd_${containerdMajorMinorPatchVersion}*)" - if [[ -f "${containerdDebFile}" ]]; then - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${containerdDebFile}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - logs_to_events "AKS.CSE.installContainerRuntime.downloadContainerdFromVersion" "downloadContainerdFromVersion ${containerdMajorMinorPatchVersion} ${containerdHotFixVersion}" - containerdDebFile="$(ls ${CONTAINERD_DOWNLOADS_DIR}/moby-containerd_${containerdMajorMinorPatchVersion}*)" - if [[ -z "${containerdDebFile}" ]]; then - echo "Failed to locate cached containerd deb" - exit $ERR_CONTAINERD_INSTALL_TIMEOUT - fi - logs_to_events "AKS.CSE.installContainerRuntime.installDebPackageFromFile" "installDebPackageFromFile ${containerdDebFile}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi -} - -installStandaloneContainerd() { - UBUNTU_RELEASE=$(lsb_release -r -s) - UBUNTU_CODENAME=$(lsb_release -c -s) - CONTAINERD_VERSION=$1 - CONTAINERD_PATCH_VERSION="${2:-1}" - - CONTAINERD_PACKAGE_URL="${CONTAINERD_PACKAGE_URL:=}" - if [[ ! -z ${CONTAINERD_PACKAGE_URL} ]]; then - installContainerdFromOverride ${CONTAINERD_PACKAGE_URL} || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - return 0 - fi - - #if there is no containerd_version input from RP, use hardcoded version - if [[ -z ${CONTAINERD_VERSION} ]]; then - CONTAINERD_VERSION="1.7.15" - if [ "${UBUNTU_RELEASE}" == "18.04" ]; then - CONTAINERD_VERSION="1.7.1" - fi - CONTAINERD_PATCH_VERSION="1" - echo "Containerd Version not specified, using default version: ${CONTAINERD_VERSION}-${CONTAINERD_PATCH_VERSION}" - else - echo "Using specified Containerd Version: ${CONTAINERD_VERSION}-${CONTAINERD_PATCH_VERSION}" - fi - - installContainerdWithAptGet "${CONTAINERD_VERSION}" "${CONTAINERD_PATCH_VERSION}" || exit $ERR_CONTAINERD_INSTALL_TIMEOUT -} - -downloadContainerdFromVersion() { - CONTAINERD_VERSION=$1 - mkdir -p $CONTAINERD_DOWNLOADS_DIR - updateAptWithMicrosoftPkg - apt_get_download 20 30 moby-containerd=${CONTAINERD_VERSION}* || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - cp -al ${APT_CACHE_DIR}moby-containerd_${CONTAINERD_VERSION}* $CONTAINERD_DOWNLOADS_DIR/ || exit $ERR_CONTAINERD_INSTALL_TIMEOUT - echo "Succeeded to download containerd version ${CONTAINERD_VERSION}" -} - -downloadContainerdFromURL() { - CONTAINERD_DOWNLOAD_URL=$1 - mkdir -p $CONTAINERD_DOWNLOADS_DIR - CONTAINERD_DEB_TMP=${CONTAINERD_DOWNLOAD_URL##*/} - retrycmd_curl_file 120 5 60 "$CONTAINERD_DOWNLOADS_DIR/${CONTAINERD_DEB_TMP}" ${CONTAINERD_DOWNLOAD_URL} || exit $ERR_CONTAINERD_DOWNLOAD_TIMEOUT - CONTAINERD_DEB_FILE="$CONTAINERD_DOWNLOADS_DIR/${CONTAINERD_DEB_TMP}" -} - -installMoby() { - ensureRunc ${RUNC_VERSION:-""} - CURRENT_VERSION=$(dockerd --version | grep "Docker version" | cut -d "," -f 1 | cut -d " " -f 3 | cut -d "+" -f 1) - local MOBY_VERSION="19.03.14" - local MOBY_CONTAINERD_VERSION="1.4.13" - if semverCompare ${CURRENT_VERSION:-"0.0.0"} ${MOBY_VERSION}; then - echo "currently installed moby-docker version ${CURRENT_VERSION} is greater than (or equal to) target base version ${MOBY_VERSION}. skipping installMoby." - else - removeMoby - updateAptWithMicrosoftPkg - MOBY_CLI=${MOBY_VERSION} - if [[ "${MOBY_CLI}" == "3.0.4" ]]; then - MOBY_CLI="3.0.3" - fi - apt_get_install 20 30 120 moby-engine=${MOBY_VERSION}* moby-cli=${MOBY_CLI}* moby-containerd=${MOBY_CONTAINERD_VERSION}* --allow-downgrades || exit $ERR_MOBY_INSTALL_TIMEOUT - fi -} - -ensureRunc() { - RUNC_PACKAGE_URL=${2:-""} - RUNC_DOWNLOADS_DIR=${3:-$RUNC_DOWNLOADS_DIR} - if [[ ! -z ${RUNC_PACKAGE_URL} ]]; then - echo "Installing runc from user input: ${RUNC_PACKAGE_URL}" - mkdir -p $RUNC_DOWNLOADS_DIR - RUNC_DEB_TMP=${RUNC_PACKAGE_URL##*/} - RUNC_DEB_FILE="$RUNC_DOWNLOADS_DIR/${RUNC_DEB_TMP}" - retrycmd_curl_file 120 5 60 ${RUNC_DEB_FILE} ${RUNC_PACKAGE_URL} || exit $ERR_RUNC_DOWNLOAD_TIMEOUT - installDebPackageFromFile ${RUNC_DEB_FILE} || exit $ERR_RUNC_INSTALL_TIMEOUT - echo "Succeeded to install runc from user input: ${RUNC_PACKAGE_URL}" - return 0 - fi - - TARGET_VERSION=${1:-""} - - if [[ $(isARM64) == 1 ]]; then - if [[ ${TARGET_VERSION} == "1.0.0-rc92" || ${TARGET_VERSION} == "1.0.0-rc95" ]]; then - return - fi - fi - - CPU_ARCH=$(getCPUArch) #amd64 or arm64 - CURRENT_VERSION=$(runc --version | head -n1 | sed 's/runc version //') - CLEANED_TARGET_VERSION=${TARGET_VERSION} - - CURRENT_VERSION=${CURRENT_VERSION%-*} - CLEANED_TARGET_VERSION=${CLEANED_TARGET_VERSION%-*} - - if [ "${CURRENT_VERSION}" == "${CLEANED_TARGET_VERSION}" ]; then - echo "target moby-runc version ${CLEANED_TARGET_VERSION} is already installed. skipping installRunc." - return - fi - if [ -f $VHD_LOGS_FILEPATH ]; then - RUNC_DEB_PATTERN="moby-runc_*.deb" - RUNC_DEB_FILE=$(find ${RUNC_DOWNLOADS_DIR} -type f -iname "${RUNC_DEB_PATTERN}" | sort -V | tail -n1) - if [[ -f "${RUNC_DEB_FILE}" ]]; then - installDebPackageFromFile ${RUNC_DEB_FILE} || exit $ERR_RUNC_INSTALL_TIMEOUT - return 0 - fi - fi - apt_get_install 20 30 120 moby-runc=${TARGET_VERSION}* --allow-downgrades || exit $ERR_RUNC_INSTALL_TIMEOUT -} - -#EOF \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line70.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line70.sh deleted file mode 100644 index 3167cc81748..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line70.sh +++ /dev/null @@ -1,822 +0,0 @@ -#!/bin/bash -NODE_INDEX=$(hostname | tail -c 2) -NODE_NAME=$(hostname) - -configureAdminUser(){ - chage -E -1 -I -1 -m 0 -M 99999 "${ADMINUSER}" - chage -l "${ADMINUSER}" -} - -configPrivateClusterHosts() { - mkdir -p /etc/systemd/system/reconcile-private-hosts.service.d/ - touch /etc/systemd/system/reconcile-private-hosts.service.d/10-fqdn.conf - tee /etc/systemd/system/reconcile-private-hosts.service.d/10-fqdn.conf > /dev/null < /sys/kernel/mm/transparent_hugepage/enabled - echo "kernel/mm/transparent_hugepage/enabled=${THP_ENABLED}" >> ${ETC_SYSFS_CONF} - fi - if [[ "${THP_DEFRAG}" != "" ]]; then - echo "${THP_DEFRAG}" > /sys/kernel/mm/transparent_hugepage/defrag - echo "kernel/mm/transparent_hugepage/defrag=${THP_DEFRAG}" >> ${ETC_SYSFS_CONF} - fi -} - -configureSystemdUseDomains() { - NETWORK_CONFIG_FILE="/etc/systemd/networkd.conf" - - if awk '/^\[DHCPv4\]/{flag=1; next} /^\[/{flag=0} flag && /#UseDomains=no/' "$NETWORK_CONFIG_FILE"; then - sed -i '/^\[DHCPv4\]/,/^\[/ s/#UseDomains=no/UseDomains=yes/' $NETWORK_CONFIG_FILE - fi - - if [ "${IPV6_DUAL_STACK_ENABLED}" == "true" ]; then - if awk '/^\[DHCPv6\]/{flag=1; next} /^\[/{flag=0} flag && /#UseDomains=no/' "$NETWORK_CONFIG_FILE"; then - sed -i '/^\[DHCPv6\]/,/^\[/ s/#UseDomains=no/UseDomains=yes/' $NETWORK_CONFIG_FILE - fi - fi - - systemctl restart systemd-networkd - - systemctl restart rsyslog -} - -configureSwapFile() { - swap_size_kb=$(expr ${SWAP_FILE_SIZE_MB} \* 1000) - swap_location="" - - if [[ -L /dev/disk/azure/resource-part1 ]]; then - resource_disk_path=$(findmnt -nr -o target -S $(readlink -f /dev/disk/azure/resource-part1)) - disk_free_kb=$(df ${resource_disk_path} | sed 1d | awk '{print $4}') - if [[ ${disk_free_kb} -gt ${swap_size_kb} ]]; then - echo "Will use resource disk for swap file" - swap_location=${resource_disk_path}/swapfile - else - echo "Insufficient disk space on resource disk to create swap file: request ${swap_size_kb} free ${disk_free_kb}, attempting to fall back to OS disk..." - fi - fi - - if [[ -z "${swap_location}" ]]; then - os_device=$(readlink -f /dev/disk/azure/root) - disk_free_kb=$(df -P / | sed 1d | awk '{print $4}') - if [[ ${disk_free_kb} -gt ${swap_size_kb} ]]; then - echo "Will use OS disk for swap file" - swap_location=/swapfile - else - echo "Insufficient disk space on OS device ${os_device} to create swap file: request ${swap_size_kb} free ${disk_free_kb}" - exit $ERR_SWAP_CREATE_INSUFFICIENT_DISK_SPACE - fi - fi - - echo "Swap file will be saved to: ${swap_location}" - retrycmd_if_failure 24 5 25 fallocate -l ${swap_size_kb}K ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - chmod 600 ${swap_location} - retrycmd_if_failure 24 5 25 mkswap ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - retrycmd_if_failure 24 5 25 swapon ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - retrycmd_if_failure 24 5 25 swapon --show | grep ${swap_location} || exit $ERR_SWAP_CREATE_FAIL - echo "${swap_location} none swap sw 0 0" >> /etc/fstab -} - -configureEtcEnvironment() { - mkdir -p /etc/systemd/system.conf.d/ - touch /etc/systemd/system.conf.d/proxy.conf - chmod 0644 /etc/systemd/system.conf.d/proxy.conf - - mkdir -p /etc/apt/apt.conf.d - touch /etc/apt/apt.conf.d/95proxy - chmod 0644 /etc/apt/apt.conf.d/95proxy - - echo "[Manager]" >> /etc/systemd/system.conf.d/proxy.conf - if [ "${HTTP_PROXY_URLS}" != "" ]; then - echo "HTTP_PROXY=${HTTP_PROXY_URLS}" >> /etc/environment - echo "http_proxy=${HTTP_PROXY_URLS}" >> /etc/environment - echo "Acquire::http::proxy \"${HTTP_PROXY_URLS}\";" >> /etc/apt/apt.conf.d/95proxy - echo "DefaultEnvironment=\"HTTP_PROXY=${HTTP_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"http_proxy=${HTTP_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - if [ "${HTTPS_PROXY_URLS}" != "" ]; then - echo "HTTPS_PROXY=${HTTPS_PROXY_URLS}" >> /etc/environment - echo "https_proxy=${HTTPS_PROXY_URLS}" >> /etc/environment - echo "Acquire::https::proxy \"${HTTPS_PROXY_URLS}\";" >> /etc/apt/apt.conf.d/95proxy - echo "DefaultEnvironment=\"HTTPS_PROXY=${HTTPS_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"https_proxy=${HTTPS_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - if [ "${NO_PROXY_URLS}" != "" ]; then - echo "NO_PROXY=${NO_PROXY_URLS}" >> /etc/environment - echo "no_proxy=${NO_PROXY_URLS}" >> /etc/environment - echo "DefaultEnvironment=\"NO_PROXY=${NO_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - echo "DefaultEnvironment=\"no_proxy=${NO_PROXY_URLS}\"" >> /etc/systemd/system.conf.d/proxy.conf - fi - - mkdir -p "/etc/systemd/system/kubelet.service.d" - tee "/etc/systemd/system/kubelet.service.d/10-httpproxy.conf" > /dev/null <<'EOF' -[Service] -EnvironmentFile=/etc/environment -EOF -} - -configureHTTPProxyCA() { - if [[ $OS == $MARINER_OS_NAME ]]; then - cert_dest="/usr/share/pki/ca-trust-source/anchors" - update_cmd="update-ca-trust" - else - cert_dest="/usr/local/share/ca-certificates" - update_cmd="update-ca-certificates" - fi - HTTP_PROXY_TRUSTED_CA=$(echo "${HTTP_PROXY_TRUSTED_CA}" | xargs) - echo "${HTTP_PROXY_TRUSTED_CA}" | base64 -d > "${cert_dest}/proxyCA.crt" || exit $ERR_UPDATE_CA_CERTS - $update_cmd || exit $ERR_UPDATE_CA_CERTS -} - -configureCustomCaCertificate() { - mkdir -p /opt/certs - for i in $(seq 0 $((${CUSTOM_CA_TRUST_COUNT} - 1))); do - declare varname=CUSTOM_CA_CERT_${i} - echo "${!varname}" | base64 -d > /opt/certs/00000000000000cert${i}.crt - done - systemctl restart update_certs.service || exit $ERR_UPDATE_CA_CERTS - systemctl restart containerd -} - -configureContainerdUlimits() { - CONTAINERD_ULIMIT_DROP_IN_FILE_PATH="/etc/systemd/system/containerd.service.d/set_ulimits.conf" - touch "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" - chmod 0600 "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" - tee "${CONTAINERD_ULIMIT_DROP_IN_FILE_PATH}" > /dev/null < /etc/kubernetes/certs/client.key - fi - if [ -n "${KUBELET_CLIENT_CERT_CONTENT}" ]; then - echo "${KUBELET_CLIENT_CERT_CONTENT}" | base64 -d > /etc/kubernetes/certs/client.crt - fi - if [ -n "${SERVICE_PRINCIPAL_FILE_CONTENT}" ]; then - echo "${SERVICE_PRINCIPAL_FILE_CONTENT}" | base64 -d > /etc/kubernetes/sp.txt - fi - - set +x - echo "${APISERVER_PUBLIC_KEY}" | base64 --decode > "${APISERVER_PUBLIC_KEY_PATH}" - SP_FILE="/etc/kubernetes/sp.txt" - SERVICE_PRINCIPAL_CLIENT_SECRET="$(cat "$SP_FILE")" - SERVICE_PRINCIPAL_CLIENT_SECRET=${SERVICE_PRINCIPAL_CLIENT_SECRET//\\/\\\\} - SERVICE_PRINCIPAL_CLIENT_SECRET=${SERVICE_PRINCIPAL_CLIENT_SECRET//\"/\\\"} - rm "$SP_FILE" - cat << EOF > "${AZURE_JSON_PATH}" -{ - "cloud": "${TARGET_CLOUD}", - "tenantId": "${TENANT_ID}", - "subscriptionId": "${SUBSCRIPTION_ID}", - "aadClientId": "${SERVICE_PRINCIPAL_CLIENT_ID}", - "aadClientSecret": "${SERVICE_PRINCIPAL_CLIENT_SECRET}", - "resourceGroup": "${RESOURCE_GROUP}", - "location": "${LOCATION}", - "vmType": "${VM_TYPE}", - "subnetName": "${SUBNET}", - "securityGroupName": "${NETWORK_SECURITY_GROUP}", - "vnetName": "${VIRTUAL_NETWORK}", - "vnetResourceGroup": "${VIRTUAL_NETWORK_RESOURCE_GROUP}", - "routeTableName": "${ROUTE_TABLE}", - "primaryAvailabilitySetName": "${PRIMARY_AVAILABILITY_SET}", - "primaryScaleSetName": "${PRIMARY_SCALE_SET}", - "cloudProviderBackoffMode": "${CLOUDPROVIDER_BACKOFF_MODE}", - "cloudProviderBackoff": ${CLOUDPROVIDER_BACKOFF}, - "cloudProviderBackoffRetries": ${CLOUDPROVIDER_BACKOFF_RETRIES}, - "cloudProviderBackoffExponent": ${CLOUDPROVIDER_BACKOFF_EXPONENT}, - "cloudProviderBackoffDuration": ${CLOUDPROVIDER_BACKOFF_DURATION}, - "cloudProviderBackoffJitter": ${CLOUDPROVIDER_BACKOFF_JITTER}, - "cloudProviderRateLimit": ${CLOUDPROVIDER_RATELIMIT}, - "cloudProviderRateLimitQPS": ${CLOUDPROVIDER_RATELIMIT_QPS}, - "cloudProviderRateLimitBucket": ${CLOUDPROVIDER_RATELIMIT_BUCKET}, - "cloudProviderRateLimitQPSWrite": ${CLOUDPROVIDER_RATELIMIT_QPS_WRITE}, - "cloudProviderRateLimitBucketWrite": ${CLOUDPROVIDER_RATELIMIT_BUCKET_WRITE}, - "useManagedIdentityExtension": ${USE_MANAGED_IDENTITY_EXTENSION}, - "userAssignedIdentityID": "${USER_ASSIGNED_IDENTITY_ID}", - "useInstanceMetadata": ${USE_INSTANCE_METADATA}, - "loadBalancerSku": "${LOAD_BALANCER_SKU}", - "disableOutboundSNAT": ${LOAD_BALANCER_DISABLE_OUTBOUND_SNAT}, - "excludeMasterFromStandardLB": ${EXCLUDE_MASTER_FROM_STANDARD_LB}, - "providerVaultName": "${KMS_PROVIDER_VAULT_NAME}", - "maximumLoadBalancerRuleCount": ${MAXIMUM_LOADBALANCER_RULE_COUNT}, - "providerKeyName": "k8s", - "providerKeyVersion": "" -} -EOF - set -x - if [[ "${CLOUDPROVIDER_BACKOFF_MODE}" = "v2" ]]; then - sed -i "/cloudProviderBackoffExponent/d" /etc/kubernetes/azure.json - sed -i "/cloudProviderBackoffJitter/d" /etc/kubernetes/azure.json - fi - - configureKubeletServerCert - if [ "${IS_CUSTOM_CLOUD}" == "true" ]; then - set +x - AKS_CUSTOM_CLOUD_JSON_PATH="/etc/kubernetes/${TARGET_ENVIRONMENT}.json" - touch "${AKS_CUSTOM_CLOUD_JSON_PATH}" - chmod 0600 "${AKS_CUSTOM_CLOUD_JSON_PATH}" - chown root:root "${AKS_CUSTOM_CLOUD_JSON_PATH}" - - echo "${CUSTOM_ENV_JSON}" | base64 -d > "${AKS_CUSTOM_CLOUD_JSON_PATH}" - set -x - fi - - if [ "${KUBELET_CONFIG_FILE_ENABLED}" == "true" ]; then - set +x - KUBELET_CONFIG_JSON_PATH="/etc/default/kubeletconfig.json" - touch "${KUBELET_CONFIG_JSON_PATH}" - chmod 0600 "${KUBELET_CONFIG_JSON_PATH}" - chown root:root "${KUBELET_CONFIG_JSON_PATH}" - echo "${KUBELET_CONFIG_FILE_CONTENT}" | base64 -d > "${KUBELET_CONFIG_JSON_PATH}" - set -x - KUBELET_CONFIG_DROP_IN="/etc/systemd/system/kubelet.service.d/10-componentconfig.conf" - touch "${KUBELET_CONFIG_DROP_IN}" - chmod 0600 "${KUBELET_CONFIG_DROP_IN}" - tee "${KUBELET_CONFIG_DROP_IN}" > /dev/null < /etc/modules-load.d/br_netfilter.conf - configureCNIIPTables -} - -configureCNIIPTables() { - if [[ "${NETWORK_PLUGIN}" = "azure" ]]; then - mv $CNI_BIN_DIR/10-azure.conflist $CNI_CONFIG_DIR/ - chmod 600 $CNI_CONFIG_DIR/10-azure.conflist - if [[ "${NETWORK_POLICY}" == "calico" ]]; then - sed -i 's#"mode":"bridge"#"mode":"transparent"#g' $CNI_CONFIG_DIR/10-azure.conflist - elif [[ "${NETWORK_POLICY}" == "" || "${NETWORK_POLICY}" == "none" ]] && [[ "${NETWORK_MODE}" == "transparent" ]]; then - sed -i 's#"mode":"bridge"#"mode":"transparent"#g' $CNI_CONFIG_DIR/10-azure.conflist - fi - /sbin/ebtables -t nat --list - fi -} - -disableSystemdResolved() { - ls -ltr /etc/resolv.conf - cat /etc/resolv.conf - UBUNTU_RELEASE=$(lsb_release -r -s) - if [[ "${UBUNTU_RELEASE}" == "18.04" || "${UBUNTU_RELEASE}" == "20.04" || "${UBUNTU_RELEASE}" == "22.04" || "${UBUNTU_RELEASE}" == "24.04" ]]; then - echo "Ingoring systemd-resolved query service but using its resolv.conf file" - echo "This is the simplest approach to workaround resolved issues without completely uninstall it" - [ -f /run/systemd/resolve/resolv.conf ] && sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf - ls -ltr /etc/resolv.conf - cat /etc/resolv.conf - fi -} - -ensureContainerd() { - if [ "${TELEPORT_ENABLED}" == "true" ]; then - ensureTeleportd - fi - mkdir -p "/etc/systemd/system/containerd.service.d" - tee "/etc/systemd/system/containerd.service.d/exec_start.conf" > /dev/null < /etc/containerd/config.toml || exit $ERR_FILE_WATCH_TIMEOUT - else - echo "Generating containerd config..." - echo "${CONTAINERD_CONFIG_CONTENT}" | base64 -d > /etc/containerd/config.toml || exit $ERR_FILE_WATCH_TIMEOUT - fi - - tee "/etc/sysctl.d/99-force-bridge-forward.conf" > /dev/null < "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_REGISTER_SCHEDULABLE=true" >> "${KUBELET_DEFAULT_FILE}" - echo "NETWORK_POLICY=${NETWORK_POLICY}" >> "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_IMAGE=${KUBELET_IMAGE}" >> "${KUBELET_DEFAULT_FILE}" - echo "KUBELET_NODE_LABELS=${KUBELET_NODE_LABELS}" >> "${KUBELET_DEFAULT_FILE}" - if [ -n "${AZURE_ENVIRONMENT_FILEPATH}" ]; then - echo "AZURE_ENVIRONMENT_FILEPATH=${AZURE_ENVIRONMENT_FILEPATH}" >> "${KUBELET_DEFAULT_FILE}" - fi - chmod 0600 "${KUBELET_DEFAULT_FILE}" - - KUBE_CA_FILE="/etc/kubernetes/certs/ca.crt" - mkdir -p "$(dirname "${KUBE_CA_FILE}")" - echo "${KUBE_CA_CRT}" | base64 -d > "${KUBE_CA_FILE}" - chmod 0600 "${KUBE_CA_FILE}" - - if [ "${ENABLE_SECURE_TLS_BOOTSTRAPPING}" == "true" ] || [ "${ENABLE_TLS_BOOTSTRAPPING}" == "true" ]; then - KUBELET_TLS_DROP_IN="/etc/systemd/system/kubelet.service.d/10-tlsbootstrap.conf" - mkdir -p "$(dirname "${KUBELET_TLS_DROP_IN}")" - touch "${KUBELET_TLS_DROP_IN}" - chmod 0600 "${KUBELET_TLS_DROP_IN}" - tee "${KUBELET_TLS_DROP_IN}" > /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < /dev/null < "${SYSCTL_CONFIG_FILE}" - retrycmd_if_failure 24 5 25 sysctl --system -} - -ensureK8sControlPlane() { - if $REBOOTREQUIRED || [ "$NO_OUTBOUND" = "true" ]; then - return - fi - retrycmd_if_failure 120 5 25 $KUBECTL 2>/dev/null cluster-info || exit $ERR_K8S_RUNNING_TIMEOUT -} - -createKubeManifestDir() { - KUBEMANIFESTDIR=/etc/kubernetes/manifests - mkdir -p $KUBEMANIFESTDIR -} - -writeKubeConfig() { - KUBECONFIGDIR=/home/$ADMINUSER/.kube - KUBECONFIGFILE=$KUBECONFIGDIR/config - mkdir -p $KUBECONFIGDIR - touch $KUBECONFIGFILE - chown $ADMINUSER:$ADMINUSER $KUBECONFIGDIR - chown $ADMINUSER:$ADMINUSER $KUBECONFIGFILE - chmod 700 $KUBECONFIGDIR - chmod 600 $KUBECONFIGFILE - set +x - echo " ---- -apiVersion: v1 -clusters: -- cluster: - certificate-authority-data: \"$CA_CERTIFICATE\" - server: $KUBECONFIG_SERVER - name: \"$MASTER_FQDN\" -contexts: -- context: - cluster: \"$MASTER_FQDN\" - user: \"$MASTER_FQDN-admin\" - name: \"$MASTER_FQDN\" -current-context: \"$MASTER_FQDN\" -kind: Config -users: -- name: \"$MASTER_FQDN-admin\" - user: - client-certificate-data: \"$KUBECONFIG_CERTIFICATE\" - client-key-data: \"$KUBECONFIG_KEY\" -" > $KUBECONFIGFILE - set -x -} - -configClusterAutoscalerAddon() { - CLUSTER_AUTOSCALER_ADDON_FILE=/etc/kubernetes/addons/cluster-autoscaler-deployment.yaml - sed -i "s||$(echo $SERVICE_PRINCIPAL_CLIENT_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $SERVICE_PRINCIPAL_CLIENT_SECRET | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $SUBSCRIPTION_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $TENANT_ID | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE - sed -i "s||$(echo $RESOURCE_GROUP | base64)|g" $CLUSTER_AUTOSCALER_ADDON_FILE -} - -configACIConnectorAddon() { - ACI_CONNECTOR_CREDENTIALS=$(printf "{\"clientId\": \"%s\", \"clientSecret\": \"%s\", \"tenantId\": \"%s\", \"subscriptionId\": \"%s\", \"activeDirectoryEndpointUrl\": \"https://login.microsoftonline.com\",\"resourceManagerEndpointUrl\": \"https://management.azure.com/\", \"activeDirectoryGraphResourceId\": \"https://graph.windows.net/\", \"sqlManagementEndpointUrl\": \"https://management.core.windows.net:8443/\", \"galleryEndpointUrl\": \"https://gallery.azure.com/\", \"managementEndpointUrl\": \"https://management.core.windows.net/\"}" "$SERVICE_PRINCIPAL_CLIENT_ID" "$SERVICE_PRINCIPAL_CLIENT_SECRET" "$TENANT_ID" "$SUBSCRIPTION_ID" | base64 -w 0) - - openssl req -newkey rsa:4096 -new -nodes -x509 -days 3650 -keyout /etc/kubernetes/certs/aci-connector-key.pem -out /etc/kubernetes/certs/aci-connector-cert.pem -subj "/C=US/ST=CA/L=virtualkubelet/O=virtualkubelet/OU=virtualkubelet/CN=virtualkubelet" - ACI_CONNECTOR_KEY=$(base64 /etc/kubernetes/certs/aci-connector-key.pem -w0) - ACI_CONNECTOR_CERT=$(base64 /etc/kubernetes/certs/aci-connector-cert.pem -w0) - - ACI_CONNECTOR_ADDON_FILE=/etc/kubernetes/addons/aci-connector-deployment.yaml - sed -i "s||$ACI_CONNECTOR_CREDENTIALS|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$RESOURCE_GROUP|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$ACI_CONNECTOR_CERT|g" $ACI_CONNECTOR_ADDON_FILE - sed -i "s||$ACI_CONNECTOR_KEY|g" $ACI_CONNECTOR_ADDON_FILE -} - -configAzurePolicyAddon() { - AZURE_POLICY_ADDON_FILE=/etc/kubernetes/addons/azure-policy-deployment.yaml - sed -i "s||/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP|g" $AZURE_POLICY_ADDON_FILE -} - -configGPUDrivers() { - if [[ $OS == $UBUNTU_OS_NAME ]]; then - mkdir -p /opt/{actions,gpu} - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - ctr image pull $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG > /dev/null - retrycmd_if_failure 5 10 600 bash -c "$CTR_GPU_INSTALL_CMD $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG gpuinstall /entrypoint.sh install" - ret=$? - if [[ "$ret" != "0" ]]; then - echo "Failed to install GPU driver, exiting..." - exit $ERR_GPU_DRIVERS_START_FAIL - fi - ctr images rm --sync $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG - else - bash -c "$DOCKER_GPU_INSTALL_CMD $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG install" - ret=$? - if [[ "$ret" != "0" ]]; then - echo "Failed to install GPU driver, exiting..." - exit $ERR_GPU_DRIVERS_START_FAIL - fi - docker rmi $NVIDIA_DRIVER_IMAGE:$NVIDIA_DRIVER_IMAGE_TAG - fi - elif [[ $OS == $MARINER_OS_NAME ]]; then - downloadGPUDrivers - installNvidiaContainerRuntime - enableNvidiaPersistenceMode - else - echo "os $OS not supported at this time. skipping configGPUDrivers" - exit 1 - fi - - retrycmd_if_failure 120 5 25 nvidia-modprobe -u -c0 || exit $ERR_GPU_DRIVERS_START_FAIL - retrycmd_if_failure 120 5 300 nvidia-smi || exit $ERR_GPU_DRIVERS_START_FAIL - retrycmd_if_failure 120 5 25 ldconfig || exit $ERR_GPU_DRIVERS_START_FAIL - - if [[ $OS == $MARINER_OS_NAME ]]; then - createNvidiaSymlinkToAllDeviceNodes - fi - - if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then - retrycmd_if_failure 120 5 25 pkill -SIGHUP containerd || exit $ERR_GPU_DRIVERS_INSTALL_TIMEOUT - else - retrycmd_if_failure 120 5 25 pkill -SIGHUP dockerd || exit $ERR_GPU_DRIVERS_INSTALL_TIMEOUT - fi -} - -validateGPUDrivers() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - retrycmd_if_failure 24 5 25 nvidia-modprobe -u -c0 && echo "gpu driver loaded" || configGPUDrivers || exit $ERR_GPU_DRIVERS_START_FAIL - which nvidia-smi - if [[ $? == 0 ]]; then - SMI_RESULT=$(retrycmd_if_failure 24 5 300 nvidia-smi) - else - SMI_RESULT=$(retrycmd_if_failure 24 5 300 $GPU_DEST/bin/nvidia-smi) - fi - SMI_STATUS=$? - if [[ $SMI_STATUS != 0 ]]; then - if [[ $SMI_RESULT == *"infoROM is corrupted"* ]]; then - exit $ERR_GPU_INFO_ROM_CORRUPTED - else - exit $ERR_GPU_DRIVERS_START_FAIL - fi - else - echo "gpu driver working fine" - fi -} - -ensureGPUDrivers() { - if [[ $(isARM64) == 1 ]]; then - return - fi - - if [[ "${CONFIG_GPU_DRIVER_IF_NEEDED}" = true ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers.configGPUDrivers" configGPUDrivers - else - logs_to_events "AKS.CSE.ensureGPUDrivers.validateGPUDrivers" validateGPUDrivers - fi - if [[ $OS == $UBUNTU_OS_NAME ]]; then - logs_to_events "AKS.CSE.ensureGPUDrivers.nvidia-modprobe" "systemctlEnableAndStart nvidia-modprobe" || exit $ERR_GPU_DRIVERS_START_FAIL - fi -} - -disableSSH() { - systemctlDisableAndStop ssh || exit $ERR_DISABLE_SSH -} - -configCredentialProvider() { - CREDENTIAL_PROVIDER_CONFIG_FILE=/var/lib/kubelet/credential-provider-config.yaml - mkdir -p "$(dirname "${CREDENTIAL_PROVIDER_CONFIG_FILE}")" - touch "${CREDENTIAL_PROVIDER_CONFIG_FILE}" - if [[ -n "$AKS_CUSTOM_CLOUD_CONTAINER_REGISTRY_DNS_SUFFIX" ]]; then - tee "${CREDENTIAL_PROVIDER_CONFIG_FILE}" > /dev/null < /dev/null </dev/null | grep -q '.'; then - OS=$(sort -r /etc/*-release | gawk 'match($0, /^(ID_LIKE=(coreos)|ID=(.*))$/, a) { print toupper(a[2] a[3]); exit }') - OS_VERSION=$(sort -r /etc/*-release | gawk 'match($0, /^(VERSION_ID=(.*))$/, a) { print toupper(a[2] a[3]); exit }' | tr -d '"') -else - echo "/etc/*-release not found" -fi - -UBUNTU_OS_NAME="UBUNTU" -MARINER_OS_NAME="MARINER" -MARINER_KATA_OS_NAME="MARINERKATA" -KUBECTL=/usr/local/bin/kubectl -DOCKER=/usr/bin/docker -export GPU_DV="${GPU_DRIVER_VERSION:=}" -export GPU_DEST=/usr/local/nvidia -NVIDIA_DOCKER_VERSION=2.8.0-1 -DOCKER_VERSION=1.13.1-1 -NVIDIA_CONTAINER_RUNTIME_VERSION="3.6.0" -export NVIDIA_DRIVER_IMAGE_SHA="${GPU_IMAGE_SHA:=}" -export NVIDIA_DRIVER_IMAGE_TAG="${GPU_DV}-${NVIDIA_DRIVER_IMAGE_SHA}" -export NVIDIA_DRIVER_IMAGE="mcr.microsoft.com/aks/aks-gpu" -export CTR_GPU_INSTALL_CMD="ctr run --privileged --rm --net-host --with-ns pid:/proc/1/ns/pid --mount type=bind,src=/opt/gpu,dst=/mnt/gpu,options=rbind --mount type=bind,src=/opt/actions,dst=/mnt/actions,options=rbind" -export DOCKER_GPU_INSTALL_CMD="docker run --privileged --net=host --pid=host -v /opt/gpu:/mnt/gpu -v /opt/actions:/mnt/actions --rm" -APT_CACHE_DIR=/var/cache/apt/archives/ -PERMANENT_CACHE_DIR=/root/aptcache/ -EVENTS_LOGGING_DIR=/var/log/azure/Microsoft.Azure.Extensions.CustomScript/events/ -CURL_OUTPUT=/tmp/curl_verbose.out - -retrycmd_if_failure() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout "${@}" && break || \ - if [ $i -eq $retries ]; then - echo Executed \"$@\" $i times; - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} -retrycmd_if_failure_nostdout() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout "${@}" > /dev/null && break || \ - if [ $i -eq $retries ]; then - echo Executed \"$@\" $i times; - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} -retrycmd_nslookup() { - wait_sleep=$1; timeout=$2; total_timeout=$3; record=$4 - start_time=$(date +%s) - while true; do - nslookup -timeout=$timeout -retry=0 $record && break || \ - current_time=$(date +%s) - if [ $((current_time - start_time)) -ge $total_timeout ]; then - echo "Total timeout $total_timeout reached, nslookup -timeout=$timeout -retry=0 $record failed" - return 1 - fi - sleep $wait_sleep - done - current_time=$(date +%s) - echo "Executed nslookup -timeout=$timeout -retry=0 $record for $((current_time - start_time)) seconds"; -} -retrycmd_if_failure_no_stats() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout ${@} && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -retrycmd_get_tarball() { - tar_retries=$1; wait_sleep=$2; tarball=$3; url=$4 - echo "${tar_retries} retries" - for i in $(seq 1 $tar_retries); do - tar -tzf $tarball && break || \ - if [ $i -eq $tar_retries ]; then - return 1 - else - timeout 60 curl -fsSLv $url -o $tarball > $CURL_OUTPUT 2>&1 - if [[ $? != 0 ]]; then - cat $CURL_OUTPUT - fi - sleep $wait_sleep - fi - done -} -retrycmd_curl_file() { - curl_retries=$1; wait_sleep=$2; timeout=$3; filepath=$4; url=$5 - echo "${curl_retries} retries" - for i in $(seq 1 $curl_retries); do - [[ -f $filepath ]] && break - if [ $i -eq $curl_retries ]; then - return 1 - else - timeout $timeout curl -fsSLv $url -o $filepath 2>&1 | tee $CURL_OUTPUT >/dev/null - if [[ $? != 0 ]]; then - cat $CURL_OUTPUT - fi - sleep $wait_sleep - fi - done -} -wait_for_file() { - retries=$1; wait_sleep=$2; filepath=$3 - paved=/opt/azure/cloud-init-files.paved - grep -Fq "${filepath}" $paved && return 0 - for i in $(seq 1 $retries); do - grep -Fq '#EOF' $filepath && break - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done - sed -i "/#EOF/d" $filepath - echo $filepath >> $paved -} -systemctl_restart() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl restart $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - systemctl status $svcname --no-pager -l - journalctl -u $svcname - sleep $wait_sleep - fi - done -} -systemctl_stop() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl stop $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -systemctl_disable() { - retries=$1; wait_sleep=$2; timeout=$3 svcname=$4 - for i in $(seq 1 $retries); do - timeout $timeout systemctl daemon-reload - timeout $timeout systemctl disable $svcname && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -sysctl_reload() { - retries=$1; wait_sleep=$2; timeout=$3 - for i in $(seq 1 $retries); do - timeout $timeout sysctl --system && break || \ - if [ $i -eq $retries ]; then - return 1 - else - sleep $wait_sleep - fi - done -} -version_gte() { - test "$(printf '%s\n' "$@" | sort -rV | head -n 1)" == "$1" -} - -systemctlEnableAndStart() { - systemctl_restart 100 5 30 $1 - RESTART_STATUS=$? - systemctl status $1 --no-pager -l > /var/log/azure/$1-status.log - if [ $RESTART_STATUS -ne 0 ]; then - echo "$1 could not be started" - return 1 - fi - if ! retrycmd_if_failure 120 5 25 systemctl enable $1; then - echo "$1 could not be enabled by systemctl" - return 1 - fi -} - -systemctlDisableAndStop() { - if systemctl list-units --full --all | grep -q "$1.service"; then - systemctl_stop 20 5 25 $1 || echo "$1 could not be stopped" - systemctl_disable 20 5 25 $1 || echo "$1 could not be disabled" - fi -} - -semverCompare() { - VERSION_A=$(echo $1 | cut -d "+" -f 1) - VERSION_B=$(echo $2 | cut -d "+" -f 1) - [[ "${VERSION_A}" == "${VERSION_B}" ]] && return 0 - sorted=$(echo ${VERSION_A} ${VERSION_B} | tr ' ' '\n' | sort -V ) - highestVersion=$(IFS= echo "${sorted}" | cut -d$'\n' -f2) - [[ "${VERSION_A}" == ${highestVersion} ]] && return 0 - return 1 -} -downloadDebPkgToFile() { - PKG_NAME=$1 - PKG_VERSION=$2 - PKG_DIRECTORY=$3 - mkdir -p $PKG_DIRECTORY - pushd ${PKG_DIRECTORY} - retrycmd_if_failure 10 5 600 apt-get download ${PKG_NAME}=${PKG_VERSION}* - popd -} -apt_get_download() { - retries=$1; wait_sleep=$2; shift && shift; - local ret=0 - pushd $APT_CACHE_DIR || return 1 - for i in $(seq 1 $retries); do - dpkg --configure -a --force-confdef - wait_for_apt_locks - apt-get -o Dpkg::Options::=--force-confold download -y "${@}" && break - if [ $i -eq $retries ]; then ret=1; else sleep $wait_sleep; fi - done - popd || return 1 - return $ret -} -getCPUArch() { - arch=$(uname -m) - if [[ ${arch,,} == "aarch64" || ${arch,,} == "arm64" ]]; then - echo "arm64" - else - echo "amd64" - fi -} -isARM64() { - if [[ $(getCPUArch) == "arm64" ]]; then - echo 1 - else - echo 0 - fi -} - -logs_to_events() { - local task=$1; shift - local eventsFileName=$(date +%s%3N) - - local startTime=$(date +"%F %T.%3N") - ${@} - ret=$? - local endTime=$(date +"%F %T.%3N") - - json_string=$( jq -n \ - --arg Timestamp "${startTime}" \ - --arg OperationId "${endTime}" \ - --arg Version "1.23" \ - --arg TaskName "${task}" \ - --arg EventLevel "Informational" \ - --arg Message "Completed: $*" \ - --arg EventPid "0" \ - --arg EventTid "0" \ - '{Timestamp: $Timestamp, OperationId: $OperationId, Version: $Version, TaskName: $TaskName, EventLevel: $EventLevel, Message: $Message, EventPid: $EventPid, EventTid: $EventTid}' - ) - echo ${json_string} > ${EVENTS_LOGGING_DIR}${eventsFileName}.json - - if [ "$ret" != "0" ]; then - return $ret - fi -} - -should_skip_nvidia_drivers() { - set -x - body=$(curl -fsSL -H "Metadata: true" --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2021-02-01") - ret=$? - if [ "$ret" != "0" ]; then - return $ret - fi - should_skip=$(echo "$body" | jq -e '.compute.tagsList | map(select(.name | test("SkipGpuDriverInstall"; "i")))[0].value // "false" | test("true"; "i")') - echo "$should_skip" -} - -installJq() { - output=$(jq --version) - if [ -n "$output" ]; then - echo "$output" - else - if [[ $OS == $MARINER_OS_NAME ]]; then - sudo tdnf install -y jq && echo "jq was installed: $(jq --version)" - else - apt_get_install 5 1 60 jq && echo "jq was installed: $(jq --version)" - fi - fi -} - - -check_array_size() { - declare -n array_name=$1 - local array_size=${#array_name[@]} - if [[ ${array_size} -gt 0 ]]; then - last_index=$(( ${#array_name[@]} - 1 )) - else - return 1 - fi -} - -capture_benchmark() { - set +x - local title="$1" - title="${title//[[:space:]]/_}" - title="${title//-/_}" - benchmarks+=($title) - check_array_size benchmarks || { echo "Benchmarks array is empty"; return; } - declare -n current_section="${benchmarks[last_index]}" - local is_final_section=${2:-false} - - local current_time=$(date +%s) - local end_timestamp=$(date +%H:%M:%S) - if [[ "$is_final_section" == true ]]; then - local start_timestamp=$script_start_timestamp - local start_time=$script_start_stopwatch - else - local start_timestamp=$section_start_timestamp - local start_time=$section_start_stopwatch - fi - - local difference_in_seconds=$((current_time - start_time)) - local elapsed_hours=$(($difference_in_seconds/3600)) - local elapsed_minutes=$((($difference_in_seconds%3600)/60)) - local elapsed_seconds=$(($difference_in_seconds%60)) - printf -v total_time_elapsed "%02d:%02d:%02d" $elapsed_hours $elapsed_minutes $elapsed_seconds - - current_section+=($start_timestamp) - current_section+=($end_timestamp) - current_section+=($total_time_elapsed) - - unset -n current_section - - section_start_stopwatch=$(date +%s) - section_start_timestamp=$(date +%H:%M:%S) - - set -x -} - -process_benchmarks() { - set +x - check_array_size benchmarks || { echo "Benchmarks array is empty"; return; } - declare -n script_stats="${benchmarks[last_index]}" - - script_object=$(jq -n --arg script_name "$(basename $0)" --arg script_start_timestamp "${script_stats[0]}" --arg end_timestamp "${script_stats[1]}" --arg total_time_elapsed "${script_stats[2]}" '{($script_name): {"overall": {"start_time": $script_start_timestamp, "end_time": $end_timestamp, "total_time_elapsed": $total_time_elapsed}}}') - - unset script_stats[@] - unset -n script_stats - - for ((i=0; i<${#benchmarks[@]} - 1; i+=1)); do - - declare -n section_name="${benchmarks[i]}" - - section_object=$(jq -n --arg section_name "${benchmarks[i]}" --arg section_start_timestamp "${section_name[0]}" --arg end_timestamp "${section_name[1]}" --arg total_time_elapsed "${section_name[2]}" '{($section_name): {"start_time": $section_start_timestamp, "end_time": $end_timestamp, "total_time_elapsed": $total_time_elapsed}}') - - script_object=$(jq -n --argjson script_object "$script_object" --argjson section_object "$section_object" --arg script_name "$(basename $0)" '$script_object | .[$script_name] += $section_object') - - unset section_name[@] - unset -n section_name - - done - - echo "Benchmarks:" - echo "$script_object" | jq -C . - - jq ". += [$script_object]" ${VHD_BUILD_PERF_DATA} > tmp.json && mv tmp.json ${VHD_BUILD_PERF_DATA} - chmod 755 ${VHD_BUILD_PERF_DATA} - set -x -} - -#return proper release metadata for the package based on the os and osVersion -#e.g., For os UBUNTU 18.04, if there is a release "r1804" defined in components.json, then set RELEASE to "r1804" -#Otherwise set RELEASE to "current" -returnRelease() { - local package="$1" - local os="$2" - local osVersion="$3" - RELEASE="current" - local osVersionWithoutDot=$(echo "${osVersion}" | sed 's/\.//g') - #For UBUNTU, if $osVersion is 18.04 and "r1804" is also defined in components.json, then $release is set to "r1804" - #Similarly for 20.04 and 22.04. Otherwise $release is set to .current. - #For MARINER, the release is always set to "current" now. - if [[ "${os}" == "${MARINER_KATA_OS_NAME}" || "${os}" == "${MARINER_OS_NAME}" ]]; then - return 0 - fi - if [[ $(echo "${package}" | jq ".downloadURIs.ubuntu.\"r${osVersionWithoutDot}\"") != "null" ]]; then - RELEASE="\"r${osVersionWithoutDot}\"" - fi -} - -returnPackageVersions() { - local package="$1" - local os="$2" - local osVersion="$3" - RELEASE="current" - returnRelease "${package}" "${os}" "${osVersion}" - local osLowerCase=$(echo "${os}" | tr '[:upper:]' '[:lower:]') - PACKAGE_VERSIONS=() - - #if .downloadURIs.${osLowerCase} exist, then get the versions from there. - #otherwise get the versions from .downloadURIs.default - if [[ $(echo "${package}" | jq ".downloadURIs.${osLowerCase}") != "null" ]]; then - if jq -e ".downloadURIs.${osLowerCase}.${RELEASE}.versions | length == 0" <<< "${package}" > /dev/null; then - return - fi - versions=$(echo "${package}" | jq ".downloadURIs.${osLowerCase}.${RELEASE}.versions[]" -r) - for version in ${versions[@]}; do - PACKAGE_VERSIONS+=("${version}") - done - return - fi - versions=$(echo "${package}" | jq ".downloadURIs.default.${RELEASE}.versions[]" -r) - for version in ${versions[@]}; do - PACKAGE_VERSIONS+=("${version}") - done - return 0 -} - -returnPackageDownloadURL() { - local package=$1 - local os=$2 - local osVersion=$3 - RELEASE="current" - returnRelease "${package}" "${os}" "${osVersion}" - local osLowerCase=$(echo "${os}" | tr '[:upper:]' '[:lower:]') - - #if .downloadURIs.${osLowerCase} exist, then get the downloadURL from there. - #otherwise get the downloadURL from .downloadURIs.default - if [[ $(echo "${package}" | jq ".downloadURIs.${osLowerCase}") != "null" ]]; then - downloadURL=$(echo "${package}" | jq ".downloadURIs.${osLowerCase}.${RELEASE}.downloadURL" -r) - [ "${downloadURL}" = "null" ] && PACKAGE_DOWNLOAD_URL="" || PACKAGE_DOWNLOAD_URL="${downloadURL}" - return - fi - downloadURL=$(echo "${package}" | jq ".downloadURIs.default.${RELEASE}.downloadURL" -r) - [ "${downloadURL}" = "null" ] && PACKAGE_DOWNLOAD_URL="" || PACKAGE_DOWNLOAD_URL="${downloadURL}" - return -} - -#HELPERSEOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line91.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line91.sh deleted file mode 100644 index 84d8f8077d9..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line91.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -o nounset -set -o pipefail - -get-apiserver-ip-from-tags() { - tags=$(curl -sSL -H "Metadata: true" "http://169.254.169.254/metadata/instance/compute/tags?api-version=2019-03-11&format=text") - if [ "$?" == "0" ]; then - IFS=";" read -ra tagList <<< "$tags" - for i in "${tagList[@]}"; do - tagKey=$(cut -d":" -f1 <<<$i) - tagValue=$(cut -d":" -f2 <<<$i) - if echo $tagKey | grep -iq "^aksAPIServerIPAddress$"; then - echo -n "$tagValue" - return - fi - done - fi - echo -n "" -} - -SLEEP_SECONDS=15 -clusterFQDN="${KUBE_API_SERVER_NAME}" -if [[ $clusterFQDN != *.privatelink.* ]]; then - echo "skip reconcile hosts for $clusterFQDN since it's not AKS private cluster" - exit 0 -fi -echo "clusterFQDN: $clusterFQDN" - -while true; do - clusterIP=$(get-apiserver-ip-from-tags) - if [ -z $clusterIP ]; then - sleep "${SLEEP_SECONDS}" - continue - fi - if grep -q "$clusterIP $clusterFQDN" /etc/hosts; then - echo -n "" - else - sudo sed -i "/$clusterFQDN/d" /etc/hosts - echo "$clusterIP $clusterFQDN" | sudo tee -a /etc/hosts > /dev/null - echo "Updated $clusterFQDN to $clusterIP" - fi - sleep "${SLEEP_SECONDS}" -done - -#EOF diff --git a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line98.sh b/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line98.sh deleted file mode 100644 index a529b626472..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+SerializeImagePulls/line98.sh +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Reconcile /etc/hosts file for private cluster -[Service] -Type=simple -Restart=on-failure -ExecStart=/bin/bash /opt/azure/containers/reconcilePrivateHosts.sh -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/pkg/agent/testdata/AKSUbuntu2204+no serializeImagePull flag/CustomData b/pkg/agent/testdata/AKSUbuntu2204+no serializeImagePull flag/CustomData deleted file mode 100644 index 2f582b0806c..00000000000 --- a/pkg/agent/testdata/AKSUbuntu2204+no serializeImagePull flag/CustomData +++ /dev/null @@ -1,314 +0,0 @@ -#cloud-config - -write_files: -- path: /opt/azure/containers/provision_source.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - - -- path: /opt/azure/containers/provision_source_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/9yW8U/bOBTHf89f8ZZZrJ1mQpm4H6i6W6eGOyQEJ7aJk4CL3OQlsZrame1QEPR/P9lN05a2R3f74XRDQk3sr1/8vv7Yz69fBUMugiHTuedhnEvwP8tKxVxkEGuMcixKVDpKuDZK7uscUqng67ASpvI9z2OlGTM1uuqfcVHd9zMUptWGRw8AwIUjrYQZbL8jrVxqI9gY2+9AG6ZMf30o+KTju7ETxk2UShWx0kSFjEfaNSs06iEeJxFPo5TxolIIncMDOILDI2CloTYikA5MWGGjMhf16Qlu3HCewvW1+wj0euDnskh8uL3tgslROIWb9z03QMLLy+j3i7NBdNU/Oz3/+mf/t/D8yyyv4lmcSrwY6TI8C/ufwy0RU/6CYSiSrXZNPW/drWYRJjkvENJKo4Lgjqmg4MMgKUdZYHWLJlaaoODa6KX2mMU5uh6m4pzfYd35IUjwLhBVUcDhh71OFxK5SNnm8OaKcWMRsrAoLJBpBJnaFQI3vTeNXheIJbx374kU6E0tU1GGJqpK60STiV17jrrXOXCvVjVTRLIyZWV6gRmXdrY0Q0NnXfuyMjOHpQIOXABpafwGHSB1uPbK7LdgN1vLUioDg/DTaf88Orm8OP8Sng96QgouDCoWG36Hjdo6DJTGUqQ8s5RSBpSmUsXoGhNMG209ZaAp0AfgQhtWFE3vK2jNBbOcnOfwBAYRyJoL8ASZwhJoCP5freur8PZ4/237qXUd4u31pZr9X0j3u/+2Tfw27O3V28P+xcxsirq3B0OFbLTYS9vFTbfdJkA4UPzW+A3P90i9tJUS0FmYXWis0ThqGutd4ihpUAvvMa4MJvDMJMLB8DHqbafJArPa8DXOSKc7G+jm0SOHXRdRVqZH3ndB5zx1vqw+/G9oq9MGKmFQjrLj44vScCn08XHPXx7rTjZKhaT1CKowluMxikRbXsnjx+kWPH5s/VcUMxbIYj1WeldPjO8EpjFie443Pvl44zdMdV+GqqxUtn50/aRI1TkAmT/MrXUu7EjYf0/SbrjUOf0bKOwlKqrKTLFkzsZKUbO6Zc3GwmYFtBbU5W0HNrZwsTsTu/KwvZg11zOdy4m9MLnWpfL2EicCJz4sp2+/8LwYbvDvR0piU+E2xV1n9Z/k3o4gryC8VggdpDWimwFdcWipDG5Es16gAQ7/YPGIZXii5PiEF4uzaxB+ik5Oz8Ie6Xz3zdxezH85OFhA8WC5mB+45HEeewqUsqKQE5rIiXAz10sXdvIrUIFwsH7BXvEq5d7Uex1enHh/BwAA///v2zzl1gwAAA== - - -- path: /opt/azure/containers/provision_start.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_installs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/containers/provision_redact_cloud_config.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/6xUQW/rNgy++1cQvchGE+edC/hQtG/YaSseslNmCIpNO1ptyZPodsGw/z5IVm0lcbEelktkivz48SNF2Q/aEJxF3yXhLEw7CGMxSX58f3582n9/hgLYx5klSY0NGKxFRfyoNVkyYuCv4xErrRrZcuosJ/2KKl29fjeSkDeyw+whAQCotCJUxB0JKDyX3IoGeadF/V8YBxbCWZndoB3YaNFYVh6+ldOZlQfmubESCvgoygd+PdEHyXrshzTOlyUX6lg0b7JCPhipKjmIjlusDFJqh3C6FWPt6jL1TDpJXh73P/P9r3wy8Z9+++UJCvjbA7HdmzC7Th53rpwOaTcXuF0KZA9fa+UmYCJVHs8oJLQ7O+T0Fy0gn1Wc/HOpTNXpseZTkjT+4IOg0wb0SMNI/iPoQsK0OFksFGCR0pXq81c82zTLEh/zLukEekC1loIZloGw0Ez4fnRir1qQgAKa3KCo0zBbkcPtpN6EBxqNNrA0E6S6wDmw5c6ycmEjG4hHwLFmpYuOpVjcr0SCYiX6M2ebG+z1G6aRLZD/+LmOUsp++P5J1cLUWAuN0X2U6gEY3MMFTgyz0rND5Fym0YNIYik6VDE7m0FRwLfL8o8GxWsyhQW+z2M/OLbT3GE9Sb8NLSQ90Y3H7WpyoqsNsPf7aWiC1Rc8U4iMuS8jjbZE1HE3nolsgHMleuTcVcI474VUnLMJz29gA8W8jfNH0449KnrxN+mctUZbGTmQ1KpgT7rvhaqhkwphJNlJOsNosQbSQYPPGgc1NlJJh2P9yDK4v1DXkkkPdxu4y//QUq29vqzM4B6YV08qEGAHrGQjr2R3KyOH3y/A9ye0OFPrR0twxKVrR2y0wRsUqIRyfpXuOvSOjnin21aqNmdZJGUu6pqLoOGi3t12G4NuXZ/vNvO1wT9HabAu9mbExUznAQtLZrGcsBsK9uIeHulbnrP6X+Q0jdL/xIZOCArfuzO0qNCI62fgGfqJn/UOjWDhDQrTuqUbWPs/x9uGtbi21N11vrJ2vT1+b/8GAAD///cgKleCCAAA - -- path: /opt/azure/containers/provision_send_logs.py - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5xTTW/bOBC981dwvQdKQERJ9sZIDAiLIPAugqZFkLintjBocSQToEiVpBy7Qf57QfpLbpO0qA/GcPTe8HHmzd9/4bSzJl0IlYJa4XbjllqNEBJNq43DnZFSLEaHYyf4Pl43koIzAHQqoQHlZgYAM4unM4SWzrW42NPpndbyPVOsBhPFCNWaybl1zMF83UhcYA+nBr52YF2E8O5H/p/OyNnx6FGTNM3HF3Q8ovnwkubjtGHlUihI/y110xa+cijc4y2BcTC2eDpkQrV10thkBcYKrcgEk2GWD5M8T0YZOQCfQxT3BOMCT2e0MrqxzghVR6dvoZw5RjmUmkNEOlclFySOUamVY0KBmQuOC3zk0EoozqSMCE2v96BjdMNJ/Cn7Qh2sHTJawrzUqhL1XLEGfqPQvZZwo6xjqoRbYd1JwuMqUXeGOaHV7vSBNdC7k0Mr9cZPd6v8Rw3UtlK4iNDAQehRuCXWLaiIpCtmUikW6SNjNSiXSl2XWkoonTb+YOk30ZIzTMyCxN44PjcJHffR3LcSFyGmBhiP4vCta6VmfO7Trzvn7uMvnTMZDc+H43TVXHl1t7r+I8ucJ9llkuU97hFZSgHKJaU2BmRosuBkgq0zkV8k6v/+ieL4Da7vsb/p6t3D9cP0Tna1UG/d1ROX0ZxmL2P3/ghy+t58Cb1qwvikrpOjGwLzxBxH6vMxXGi+KQ7DPNttExJVf4rUG7izuCjwMMu2BmiNUC4aPHRlCdZWnZSbHQV4cMRgawZYCxdlMQJpoc8k/zEhgWOnd7RAInEPUpF7sK1WFvBWwAQ//azq+TWOf9rkszqh9Jd/EJZ/EO8LBKV5jL4HAAD//yh+BLByBQAA - - -- path: /opt/azure/containers/provision_installs_distro.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - - -- path: /opt/azure/containers/provision_configs.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - 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 - -- path: /opt/azure/manifest.json - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RSXa+TMBi+51eQujtdK0aj4Q45NeckE044wxtjSKGdNulaAu2mEv67KTrYFmDmZMlu3/d5P56PxnFd1wWFkppwySoKfPdvratvuGAR2TLgu2Cr8l/LAZgtmjCO1sFDhJO77AtOnh7iqH1JfpuKLU96j8E6vO8RkLIcvBpOULWXQhG6UgXRXEl7CqlSo+EUOmDqscE0WdmZH1qXtY+QfRPmQuWwUBWDey6p2tdQMt210BkNNEMDLZr0Yxqt0yyM73AUfMYtElyan5b7Y5oFSXjfni+c1cXkRmrTr03wCgdPuDUzeh3fOtdux6qaK1kD3/367ahecinZqZVd3fvw+q3VyoPvobf0QN9tj4YZ/c560LsD6h8CVEYWFzJiIdmiSdIonOLf9f6f52RG7Knrp6PbOkoA5VxJXkyl4PrMn++wB7034wZzWWsixNg4ZRtihB7dcBIDueOUkyH2lrrmXQgmonHJzxnzJgUZe4lW3GJu+Eim2bYURN9EDKd1XuD4k/MnAAD//39cbrrZBQAA - -- path: /opt/azure/containers/init-aks-custom-cloud.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - - -- path: /opt/azure/containers/reconcilePrivateHosts.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3SSb0/zNhTF3/tTHEy0AZKblo1JFDLWjaBV/OuI4A1ilUluqEVqB9vp2AP97o+ShpI+EnkTWz7+Hd9z7/ZW+Kh0+CjdjDFHHsJAm0o78h/bUpWUS1Uw9kReyFI5sguyQpUit2YuvHxyO7t4Y0C9jIKdtLIFhEsuIP4GvyQvM+nlEN5WxMFn3pfDMBz8dtjbP/i11/7DeasLlXZe6pTC1MzLylNYY09kqcSCrFNGR/v9waHo/yIGg59yY+fSR55ePd9lgMpxDx6ccEQReJ/j4Qh+RpoBwPgsifgRhyWZQVhZP/hCOY/j42PwoPbhjTA3FgpKgwdvreb+j4clP0JmGkFT6zn931TrITI+5BD5oCYFavdTcyeLin5Q7W+qVA5KZwbBCol3PFkqIdQL+L/y2Y0m46SJfDwZZZkl5wLeKar+mvtCr2poLPn6zJKv7Ic0V80iM5pYu1vf5WzJWHIRx5NpEv91fXWaRIMDlhaV82TP/jm9injwdn77ZzwdTcbTJL65i2+mV6PLeMlZHfs9go4YWxH2eqVVC+mpUPq5t4eHz2Y0rtw9qxKWUqNTVRBmxnnXhL9BckqnBOV/dtDGY3SeoOWildXV0qvy6LNcsRW7Qxhu8Dhj/81qu3oe2462x+NJFOx8PebrARPf1sTxZGPEXEFU1mOzEeRy1Y7UaK90tY5e5W2rX8A7vI3HIiSfhk0yHZtO0wAqHK3Mq8zAUQahwMMuJsy6oE/E17bvK5ongpCdu/gdYUaLUFdF0eHclpn0lG02zptOTPyj6i8jaqaSbcfXZ+x7AAAA//92UkeEmAQAAA== - -- path: /etc/systemd/system/reconcile-private-hosts.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTOMU4DMRCF4d6n8AUSn2AbBBJ0KAFRrLaYDG/ZkZyxNTOOCKdHAaV8r/m/+V0llvQIZ5Me0nQ6gJuyVOSC4LI1D8/rba/Ncje5UCBzHR6wNB9hF2Es6e3aMbmce0U6wIMspqa7laQOQ3r6Bh//znISLSfyLZfWo9DPMBRuGiQK82J3wOt/6/km2PuW5hf1oFqX9EEa+Hy4TudRQ3bDYfsg+0L8BgAA//8Sy/8V0QAAAA== - -- path: /etc/systemd/system/kubelet.service - permissions: "0600" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4yUz2/aMBTH7/krnlAP28H11u1W5QBtqFAZVAS0A0XIcR7lCecF2S+03br/fQqBbrS0ak6x/fn+iPTi6YRJZtElButpLVRyfF1l6FCii5JzqndujCyTBwoSYl0Fr11pjdMZsV7t0J+GJcSMcl/6lSrZEeOpGH+HArZkMcTo89OAfkMWo/ZC0H8cj6Zp8zaLRhjEeImNuzePYb9M0cZnUcIb8iUXyNIlh7FGsTrHhamcPDdNK2sxhOSBJBUjVYi/fv8WJQ9o09rpxmO8/bLMhCXoci3a/Ko86udaYW91GpZHdMUqJw9qDXpjvHaUPSd/hLVMb3VRFlq0gCmcfCrKigWe4M7jGm5bL5NuW/AE9xaU+wzKIXyBGZyDLJGhid3KlcqI81c1X2+cw4Jax9rvbAqzQhWWxuNrt+hQp3SolZiJyRwGUAJsag9HQY6itH6JclWgJ7sX/VO9MZtwG8HuUQq5dlP1YKE/OOEyR+VMhi7ErZPf15NO0k/G88HwMpn3252kn/5pHQg28dnhunRVgWrtqjtilZNv5q9u4RkFg26IBgj/aU/2YeN+Ou8Mh+N0PGrfzLv99lV6DLsYDrq9q3m310/ehcbt3iAZXX6AmY8mg3HvR2N3lLwaDSfvVNoeRNG0x0GMc7PthYB55zEuKiekqoB+94NHfwMAAP//toiZ8HIEAAA= - -- path: /etc/systemd/system/mig-partition.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TOwWqDQBDG8fs+xR56NZs8gAfbWhFaK7HSg0iYmIkZ0FmZnQ1NS9+9mEuvf358fF3LpL15xjAILUqe02xZppt9Kws7eD7TGAXWbj3b6konApvttltb1K0xXYNypQF7s8egIJp6Ts5AUxQ0+RcOzRprwdTFIO5I7Pi+kYSZbDLTaHf/Lr2DI4SLdX5RB99R0A2eFYhRgptpTBYQpfXQJlzsw09Rt4eyaj6y6ik/1Pv3l/I1/zWmKzkoTFNvPoEVT4+3dI6TUhIDykZBRlTzFwAA///GvdrK/QAAAA== - -- path: /opt/azure/containers/mig-partition.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/4SS0YubQBDG3/0rvpp76BVTa3ulXI4+lN41CE0MJelrWddRh5pd2V1tQsj/XjRcIiSgDMLOzu+bj5mdvAlTVmEqbOl5k2Wyfpnhe2MMKVftAyxbzlig4tQIs8eWi2ktjKMMb0vnajsLw4Jd2aTvpd6Gy9/xc/wtvFTdQwqltMM/bf6iNromU+2RkhSNJegcriToxmWi05yvNsgMt2TQkrGslTdZJ8/JDBtLw+avfpxGpnuN7oIdawWROzJ9TqS6JbC1TfdHzjvK4C3i+Z/Vr+RH/PPl690hOnpSWMLdYZA/ghU8APAX8Twq/Pv+0H2qH8jUbrnzg6ksGNFjcBVn4OnpLPRxVOgh6OMW/GkMfgxuNn0Y4z7for6MUR8GFE6zenchSJYafrd4gVZUfFotK+uEktQ9hJwr8i/1O3aIhkbICuldNZb8PwAA//+R/AassAIAAA== - - -- path: /opt/azure/containers/ubuntu-snapshot-update.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/8RWTY/bNhC981fMqkK0LiIr26BF60A5tMipuXWLArVdgZZGFrsyqZBDbxrH/70gKctf2sVeil4MyvM4M3zz9KhvbjJrdLYSMkO5hRU3DWMGCVIFUllpkMIjMmaU1SVCpjrK+BerMSuVJC4kapN1Wm2FEUoWAVZUwpBWU5fPSk6EssKqsN1a8wpvJ7BjABpJCzT53RsGUCsNAoSE+NbgJ7iDuA9P3kGlGADAMVHaJ4J0C69ewUojf/AQUcMcYgEpfhoSwPIdUIPSA3xVqyXc+UdsDYJpETv43v9RCwZQKYkMAMtGwYfPWFrC6qQ6HKrHAkhs0LA9Y2W9LhpuCtWRULI/ocvXYh6HYiGUx9/5p1ZIzN1hK0glRNlfcYjPMugiiGK3M5p46NwjYrcjguWhmkF6ebUtby3m8dsDSzdw3vChIER9G9EZaT0Zh+AMYp8wgvfvDzsHPoct/mgCEpMlQ9ZkNv02Pj4PiZJsnZxlqoU756+///zhl/uPeeR12qqSt16tD3aFJbWQpn6lZC3WkG25zlqx8tEWKTvGooN+i1YYKjpOTZ4hlRnvKAsRM3WhM9iKlw+2ewY9DQhWtspWhWP0iPX/hd9pWa8Ze2xEizCHG0jr53p1eu0V70lP/uCChFz7V+T+42+wUooMad51Qq4TDwwSfsu8cplUFRaSb5y+GmXILSfMvxvpF4ji3QDYR2dvRxhyyaVUBGskcEBwwH68nwXBHavFeY1eG8NfEXwF0pDMZ7brUM+WiVu36tGvJ4ytVVuhLPzLQ3zT5fFt3I/6WPa0TWdIfxslPb3RbrpB4hUnPvWtciclM08ch1oioVlMvUUtpqXaZK3YYtpxKhsh12monQ61k+U+OiPnsrlRjgIIBhAIA440g/QazIPowFWFQ9UT+t44+p5MMoOxBhgrrdYo6f+hrC8+zpmzjt1Ve+PCCqirA4/sZoOdz5+YSZ4/WXg56l0921xWMNaI2wKGb/C1G6Q7N5AKA4yOmcIEe4Ny74Fqq+LEM/L4tuQE8e7SbvYTdvTDhqibLbJFuEinXJeN2OLUrqwk6wawyMJ6kXms8WAjeWcaRaO4ZJQlb6sjzVz08oL8i9v5m/Sn5WL342J/3y9/WOz/XEz+ow77+4t3VHQaDeot9kQbD+sBRbjZSFu8uBWdsM58eQ/xLoSOq7B9z5jEx5fOcVDlxez3Edx4UV7kupTk4So93x3B+4tyJ9fP/mTj6E3kBGy7ihNWsyDXStT1MwnHjgZfnW9b9ML2HwmO/TVSEVJfneE8DDUXLVaXV4VPdP0ReJXsGvJEQjYYX29lCGmqtqgftSAcccKjyQWPe4nF5SNiZcG3DyrvCYdSbboW3TeisWWJxtS2bf9h/wYAAP//2imkv10LAAA= - -- path: /etc/systemd/system/snapshot-update.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/yzMvQ3CQAxA4f6myALhJrgOJjhSRSnMYSlubMs/CJgeEaV7xdO3LkyxlSv6MNIg4dYZ1HeJadEnBE4d7UUDS1nP2sr9o9iE8b+V2xtHD7BoVTQqfNOwDuEAYjSv+UiOnP1k5zzYi++/AAAA//9JR72LfAAAAA== - -- path: /etc/systemd/system/snapshot-update.timer - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/0TMPapCMRBA4X5WkQ28hy4ghRcbqwv+YBFSDMmgA8kkZCbC3b2Ihe058IWbsEU4kqbB3biJP09Rp4Jdn83c7BmN3He7ToNb5oSlbADhypVGhFWW1uxCye93lQVW+aiHZPyiX4VwEjUsJcIdxSgvm6+zGP9NpfFvOB5k7wAAAP//XnoOYJAAAAA= - - -- path: /opt/azure/containers/bind-mount.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/2SP3UrzQBCGz+cqptOcfSx7AR89ESMEayqaHomUTTMhS5LdsD+xKL13qWJNzOHDM/POO+uVjN7JUhvJZsRS+QY8BxQW2Tk+6fCDxkbj+YqDHrhWuvvmE8Aa4GG3z4vD4y7Liw3J3gSpWk8A9/ubdJsWh5lPPiZ4lm0sueNA1+Hb7GlDclROdrr81dC3lXYoBvyTQADPaV5kebo93GXbdEPSDkGq9+hYHq0JSht2/vJqJTyboA13BLrGF1yhYKRktk/4+h9DwwYQEfsRKZlUI6Rkcp2+hoKNx2aRA7Wet57EnAl6G01AIS69pnb222IN4dj0tkL1723hPgMAAP//gwnZGtQBAAA= - -- path: /etc/systemd/system/bind-mount.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/xzNMW7CQBCF4X5O4QuYPYGLoFCkBUUpLBdj+xFGWc+i2bcR5PQRrv9f+sZPN07yjrqE3WnFh6P52m2lObufNiOD3apUGS+IX1swyRmVGhyK91e13AJyxqbmb1ciTg/j8ESV0wPLZR/TbJ5mrbculTuT/rVAWopTzRH1ldd+Jw/1JjJ+eKXmPMmXOrEen8PWMq1vFXGgxjco/wEAAP//HvlBProAAAA= - -- path: /etc/systemd/system/dhcpv6.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zTNsc6CMBAH8P1e45uh27d10IiJkwMaB8JQy19prNfmeqD49A7EJ/h1Zw7a0w7FS8gaEluwu0YMo8/zP21uCrEMfSV5VIljYNTq5A4l6lrIHDx6Oi0ZNjHKmJSaN3yrTtSalNW4zyQwPrG6wJBiVqBahbqMRN2Bi7oYe7o4VgzbxT6nqKGaCuTH/TXHPX0DAAD//wVR54mwAAAA - -- path: /opt/azure/containers/enable-dhcpv6.sh - permissions: "0544" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/3RS3WqcQBS+n6f4apZNezG6W4g3TQPFaCpdFMKG3hTEHY/rUDNjnZlNYOO7F9cKbbq58XD+vh/PXLwLnOmDnVQBqQN2pWkYM2TBaQoaneyoLmU75Y6x26/RJo2zbVhEeZYUSbqJPwdkRVA1ohs/rSRlQ19oVbNokz/cFmmWbosouZvmFNkn3f8MpLLU16Ug41fB1YqLVruKSyWtL+o9Yz2VFXgPXuHyElm8/Z7ffzuRpncP91+2aZ7h+hpxHuHlBbZ3xOQIB7LNClKRDVE6qxkAuA6mJepwNaezUvA1eAguarxlA7ytERzKPmjl7vXAyOa3VBoy4IeJfNYT5xFjZVUVsi6UtgU9S2PN+w84nlTse+rAfz0n8BbH9eCN4ePgjeskGj1Xb27+NNjA2NSItKrl3vVS7Ucj3SGE7/seY1Y70bxtZLnEf3LgWflI2lmsV588LI5nLjyMmz9Oos/sL45nrzOMYP++gL9wjKs0ZF3pJzX9tOVyrrnuVHlttrRSKwj92LVkyWMXcZ6w3wEAAP//V01dfMMCAAA= - -- path: /etc/systemd/system/docker.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStart= - ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip= - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/docker/daemon.json - permissions: "0644" - owner: root - content: | - { - "live-restore": true, - "log-driver": "json-file", - "log-opts": { - "max-size": "50m", - "max-file": "5" - } - } - -- path: /etc/systemd/system/containerd.service.d/exec_start.conf - permissions: "0644" - owner: root - content: | - [Service] - ExecStartPost=/sbin/iptables -P FORWARD ACCEPT - #EOF - -- path: /etc/crictl.yaml - permissions: "0644" - owner: root - content: | - runtime-endpoint: unix:///run/containerd/containerd.sock - #EOF - -- path: /etc/systemd/system/ensure-no-dup.service - permissions: "0644" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/zyNvUoEQRCE83mKBuO9AfMNDjxTwcXouGB+ar3GvZ6hu0fEpxeV26z4qqjv/Cbsl/AEK8rducl8rJUq6uiE7ClvIB0bjNam9DEyBE5Zub6DWKhru7GV0YbRrVWE4+rQuTTxxAKtB4N+crkXvw8bfKfn5T9cwivMk/rcZFoTb0NxRwvK/BhOXyjL3yJmlpiTXSm27jF9D0XcjRYhNhSTtKmOfrBreDi9PIefAAAA//+1G3Iw6wAAAA== - -- path: /opt/azure/containers/ensure-no-dup.sh - permissions: "0755" - owner: root - encoding: gzip - content: !!binary | - H4sIAAAAAAAA/7yVX2/aPBTG7/MpnqZIL7yTE7r1ZpvYhCiTqpWC+ueKcmHiA3EV7NR26Fjhu08hYYM23eik9Q6c4/M753mOjg8PwrFU4Zjb2PM8Gjs+TsiCOUxk4siAnaH99ZKddE+uB2xw0e+dXnbw9lMoaB6qLEk8OcFwiNpnMLpDE6PRR7iYlAcAFMUa/tP7JksIPDHExQKWnF9Ef5MOTW8iy5wHYBOE5KIwUjJU5AIRHjVZpJXjUpERLD+LtJok0roqcqQk8u9yCqUdshQLckEQ5CSppiBuksUW/CiHe2MjxZTO+YxatXrE3QtqwBK3d2AGfpAm2VQqOxxhCUsJRa4euEVKaLVw4xeMG7+BJYLij9/wUqNn0kY9LV4LvUX0G6Xufu1h63jl46AF35mM/CqNi3SoPfySbbVWWyqUaTKdWcy0oN9Iv/Z9x3i7sGGUcGvz3sOd/CEXwpC1L6pnT/dL+08HrVpdpshJsLG+f5RxiamhFKyr4UtFDvVhk70f/X8TNB7erYrf/k5UVcBGcvY9V31DXu0vtNBk193FfE7gCjKdH6OU54+9plpcZmNFri2EeaWJkymfBXZNfdT+TjXVGkQ6S8S6X0GOzEwqgotlLoGg/yxSLZADUABguJoSJkbP8Hwjey6EXruzkWiP0Wx4XlEyFyLP/HQJlssWUcyl8it373nFtcrAdkUgS3E6mB+D2Z8z02t3VmAac3LxGzAmU2ZNhK3JA7tFu9PpDq7+CWfX4hx2ctEfPIPqX18Nrq/WFT1VoVRXZy7N3No7RffJIh99EhUX8ifHfqiW+WyD2n7X/uYtLDfZYbf/5UcAAAD//4wWzb9ZBwAA - -- path: /etc/systemd/system/teleportd.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=teleportd teleport runtime - After=network.target - [Service] - ExecStart=/usr/local/bin/teleportd --metrics --aksConfig /etc/kubernetes/azure.json - Delegate=yes - KillMode=process - Restart=always - LimitNPROC=infinity - LimitCORE=infinity - LimitNOFILE=1048576 - TasksMax=infinity - [Install] - WantedBy=multi-user.target - #EOF - -- path: /etc/systemd/system/nvidia-modprobe.service - permissions: "0644" - owner: root - content: | - [Unit] - Description=Installs and loads Nvidia GPU kernel module - [Service] - Type=oneshot - RemainAfterExit=true - ExecStartPre=/bin/sh -c "dkms autoinstall --verbose" - ExecStart=/bin/sh -c "nvidia-modprobe -u -c0" - ExecStartPost=/bin/sh -c "sleep 10 && systemctl restart kubelet" - [Install] - WantedBy=multi-user.target - -- path: /etc/default/kubelet - permissions: "0644" - owner: root - content: | - KUBELET_FLAGS=--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --container-log-max-size=50M --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=PodPriority=true,RotateKubeletServerCertificate=true,a=false,x=false --image-gc-high-threshold=85 --image-gc-low-threshold=80 --kube-reserved=cpu=100m,memory=1638Mi --max-pods=110 --node-status-update-frequency=10s --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=10255 --resolv-conf=/etc/resolv.conf --rotate-certificates=true --streaming-connection-idle-timeout=4h0m0s --system-reserved=cpu=2,memory=1Gi --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key - KUBELET_REGISTER_SCHEDULABLE=true - NETWORK_POLICY= - KUBELET_NODE_LABELS=agentpool=agent2,kubernetes.azure.com/agentpool=agent2 - -- path: /var/lib/kubelet/kubeconfig - permissions: "0644" - owner: root - content: | - apiVersion: v1 - kind: Config - clusters: - - name: localcluster - cluster: - certificate-authority: /etc/kubernetes/certs/ca.crt - server: https://:443 - users: - - name: client - user: - client-certificate: /etc/kubernetes/certs/client.crt - client-key: /etc/kubernetes/certs/client.key - contexts: - - context: - cluster: localcluster - user: client - name: localclustercontext - current-context: localclustercontext - -- path: /opt/azure/containers/kubelet.sh - permissions: "0755" - owner: root - content: | - #!/bin/bash - # - # - # - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 80 -j DROP - iptables -I FORWARD -d 168.63.129.16 -p tcp --dport 32526 -j DROP - -- path: /etc/kubernetes/certs/ca.crt - permissions: "0600" - encoding: base64 - owner: root - content: | - - -- path: /opt/azure/containers/setup-custom-search-domains.sh - permissions: "0744" - encoding: gzip - owner: root - content: !!binary | - H4sIAAAAAAAA/5yQQYsaQRCF7/MrKsZDcmjbFSTXDDpBQVeZUQK5NGVPjXbs6Zauko3Z+N/D7uwlq6dcCurx3uPxffygdy7oHfIhYxJQvzKO52QJev3nSVWYWbFYF2Vlvs0XxTrfzK69d4bpvNqUq3u+jOwhQg+gDqyYMNkD9J8n22qzWpqqyMvJzExXy3z+aB7zZXHtwR8QIlAImsTqQPIU01G7IJQatMSDWo+Hyvp4rpULTga22Wd8YaHWijeJWDAJjIYwhochvBW4sM+e0IlpYjJ4EuOjPXKWSNLFtrVxjWnQ+XOil9AYHkZDwJOo/QuPC7jAgt5DIvRtDczcHSUxegbGdofKxraNoXv+lU4XOcQwGnx5k73bMZzQHnFPRyf3lnXc3qMqi3yxNOu8qr6vyukrrddJ8DO6AGp7w7YLbKuivH7tf7pfesM/gUb1W4PO1Q/9Gf4zl/0NAAD///uJhCVYAgAA \ No newline at end of file diff --git a/pkg/agent/utils.go b/pkg/agent/utils.go index a66ac872b25..02f6bbe5041 100644 --- a/pkg/agent/utils.go +++ b/pkg/agent/utils.go @@ -65,17 +65,12 @@ var TranslatedKubeletConfigFlags = map[string]bool{ "--fail-swap-on": true, "--container-log-max-size": true, "--container-log-max-files": true, - "--serialize-image-pulls": true, } type paramsMap map[string]interface{} const numInPair = 2 -const ( - serializeImagePulls = "--serialize-image-pulls" -) - func addValue(m paramsMap, k string, v interface{}) { m[k] = paramsMap{ "value": v, @@ -344,13 +339,6 @@ func GetOrderedKubeletConfigFlagString(k map[string]string, cs *datamodel.Contai keys := []string{} ommitedKubletConfigFlags := datamodel.GetCommandLineOmittedKubeletConfigFlags() for key := range k { - // RP doesnt currently set the flag --serialize-image-pulls in KubeletConfig. - // We will only set it with K8s 1.31 and above - // The following condition can therefore never happen but is added as a safeguard - if key == serializeImagePulls && !IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.31.0") { - continue - } - if !kubeletConfigFileEnabled || !TranslatedKubeletConfigFlags[key] { if !ommitedKubletConfigFlags[key] { keys = append(keys, key)