This commit is contained in:
Jack Francis 2018-10-24 13:30:49 -07:00 коммит произвёл GitHub
Родитель 6a31c9962d
Коммит bb4a637c50
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
22 изменённых файлов: 65 добавлений и 80 удалений

Просмотреть файл

@ -22,6 +22,7 @@ phases:
-e AZURE_VM_SIZE=${AZURE_VM_SIZE} \
-e AZURE_RESOURCE_GROUP_NAME=${AZURE_RESOURCE_GROUP_NAME} \
-e AZURE_LOCATION=${AZURE_LOCATION} \
-e FEATURE_FLAGS=${FEATURE_FLAGS} \
-e GIT_VERSION=$(Build.SourceVersion) \
-e BUILD_ID=$(Build.BuildId) \
-e BUILD_NUMBER=$(Build.BuildNumber) \

Просмотреть файл

@ -48,7 +48,6 @@ To learn more about supported orchestrators and versions, run the orchestrators
| customWindowsPackageURL | no | Configure custom windows Kubernetes release package URL for deployment on Windows |
| dnsServiceIP | no | IP address for kube-dns to listen on. If specified must be in the range of `serviceCidr` |
| dockerBridgeSubnet | no | The specific IP and subnet used for allocating IP addresses for the docker bridge network created on the kubernetes master and agents. Default value is 172.17.0.1/16. This value is used to configure the docker daemon using the [--bip flag](https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0) |
| dockerEngineVersion | no | Which version of docker-engine to use in your cluster: `"17.05.*"`, `"17.04.*"`, `"17.03.*"`, `"1.13.*"`, `"1.12.*"`, and `"1.11.*"`
| enableAggregatedAPIs | no | Enable [Kubernetes Aggregated APIs](https://kubernetes.io/docs/concepts/api-extension/apiserver-aggregation/).This is required by [Service Catalog](https://github.com/kubernetes-incubator/service-catalog/blob/master/README.md). (boolean - default is true for k8s versions greater or equal to 1.9.0, false otherwise) |
| enableDataEncryptionAtRest | no | Enable [kubernetes data encryption at rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/).This is currently an alpha feature. (boolean - default == false) |
| enableEncryptionWithExternalKms | no | Enable [kubernetes data encryption at rest with external KMS](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/).This is currently an alpha feature. (boolean - default == false) |

15
packer/feature-flagged.sh Normal file
Просмотреть файл

@ -0,0 +1,15 @@
#!/bin/bash
function installDockerEngine() {
DOCKER_REPO="https://apt.dockerproject.org/repo"
DOCKER_ENGINE_VERSION="1.13.*"
dockerd --version
if [ $? -eq 0 ]; then
echo "dockerd is already installed, skipping download"
else
retrycmd_if_failure_no_stats 20 1 5 curl -fsSL https://aptdocker.azureedge.net/gpg > /tmp/aptdocker.gpg || exit $ERR_DOCKER_KEY_DOWNLOAD_TIMEOUT
retrycmd_if_failure 10 5 10 apt-key add /tmp/aptdocker.gpg || exit $ERR_DOCKER_APT_KEY_TIMEOUT
echo "deb ${DOCKER_REPO} ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
printf "Package: docker-engine\nPin: version ${DOCKER_ENGINE_VERSION}\nPin-Priority: 550\n" > /etc/apt/preferences.d/docker.pref
fi
}

Просмотреть файл

@ -2,6 +2,7 @@
source /home/packer/provision_installs.sh
source /home/packer/provision_source.sh
source /home/packer/feature-flagged.sh
ETCD_VERSION="3.2.24"
ETCD_DOWNLOAD_URL="https://acs-mirror.azureedge.net/github-coreos"
@ -9,9 +10,11 @@ installEtcd
installDeps
DOCKER_REPO="https://apt.dockerproject.org/repo"
DOCKER_ENGINE_VERSION="1.13.*"
installDocker
if [[ ${FEATURE_FLAGS} == *"docker-engine"* ]]; then
installDockerEngine
else
installMoby
fi
installClearContainersRuntime
@ -131,3 +134,4 @@ echo "Install completed successfully on " `date` > /var/log/azure/golden-image-i
echo "VSTS Build NUMBER: ${BUILD_NUMBER}" >> /var/log/azure/golden-image-install.complete
echo "VSTS Build ID: ${BUILD_ID}" >> /var/log/azure/golden-image-install.complete
echo "Commit: ${COMMIT}" >> /var/log/azure/golden-image-install.complete
echo "Feature flags: ${FEATURE_FLAGS}" >> /var/log/azure/golden-image-install.complete

Просмотреть файл

@ -8,7 +8,8 @@
"vm_size": "{{env `AZURE_VM_SIZE`}}",
"build_number": "{{env `BUILD_NUMBER`}}",
"build_id": "{{env `BUILD_ID`}}",
"commit": "{{env `GIT_VERSION`}}"
"commit": "{{env `GIT_VERSION`}}",
"feature_flags": "{{env `FEATURE_FLAGS`}}"
},
"builders": [
{
@ -62,10 +63,15 @@
"source": "packer/install-dependencies.sh",
"destination": "/home/packer/install-dependencies.sh"
},
{
"type": "file",
"source": "packer/feature-flagged.sh",
"destination": "/home/packer/feature-flagged.sh"
},
{
"type": "shell",
"inline": [
"sudo BUILD_NUMBER={{user `build_number`}} BUILD_ID={{user `build_id`}} COMMIT={{user `commit`}} /bin/bash -ux /home/packer/install-dependencies.sh",
"sudo FEATURE_FLAGS={{user `feature_flags`}} BUILD_NUMBER={{user `build_number`}} BUILD_ID={{user `build_id`}} COMMIT={{user `commit`}} /bin/bash -ux /home/packer/install-dependencies.sh",
"sudo /bin/bash -eux /home/packer/cleanup-vhd.sh",
"sudo rm -rf /home/packer"
]

Просмотреть файл

@ -100,13 +100,14 @@ write_files:
[Service]
MountFlags=shared
{{end}}
- path: "/etc/systemd/system/docker.service.d/exec_start.conf"
permissions: "0644"
owner: "root"
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
- path: "/etc/docker/daemon.json"
permissions: "0644"

Просмотреть файл

@ -252,6 +252,7 @@ function ensureDocker() {
wait_for_file 1200 1 $DOCKER_MONITOR_SYSTEMD_FILE || exit $ERR_FILE_WATCH_TIMEOUT
systemctlEnableAndStart docker-monitor.timer || exit $ERR_SYSTEMCTL_START_FAIL
}
function ensureKMS() {
systemctlEnableAndStart kms || exit $ERR_SYSTEMCTL_START_FAIL
}

Просмотреть файл

@ -48,25 +48,26 @@ function installGPUDrivers() {
function installContainerRuntime() {
if [[ "$CONTAINER_RUNTIME" == "docker" ]]; then
installDocker
installMoby
elif [[ "$CONTAINER_RUNTIME" == "clear-containers" ]]; then
# Ensure we can nest virtualization
if grep -q vmx /proc/cpuinfo; then
installClearContainersRuntime
fi
fi
}
function installDocker() {
CURRENT_VERSION=$(docker --version | cut -d " " -f 3 | cut -d "," -f 1)
if [[ "$CURRENT_VERSION" = ${DOCKER_ENGINE_VERSION} ]]; then
echo "docker version ${DOCKER_ENGINE_VERSION} is already installed, skipping download"
function installMoby() {
dockerd --version
if [ $? -eq 0 ]; then
echo "dockerd is already installed, skipping download"
else
retrycmd_if_failure_no_stats 20 1 5 curl -fsSL https://aptdocker.azureedge.net/gpg > /tmp/aptdocker.gpg || exit $ERR_DOCKER_KEY_DOWNLOAD_TIMEOUT
retrycmd_if_failure 10 5 10 apt-key add /tmp/aptdocker.gpg || exit $ERR_DOCKER_APT_KEY_TIMEOUT
echo "deb ${DOCKER_REPO} ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
printf "Package: docker-engine\nPin: version ${DOCKER_ENGINE_VERSION}\nPin-Priority: 550\n" > /etc/apt/preferences.d/docker.pref
retrycmd_if_failure_no_stats 20 1 5 curl https://packages.microsoft.com/config/ubuntu/16.04/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
retrycmd_if_failure_no_stats 20 1 5 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
apt_get_install 20 30 120 docker-engine || exit $ERR_DOCKER_INSTALL_TIMEOUT
apt_get_install 20 30 120 moby-engine moby-cli || exit $ERR_MOBY_INSTALL_TIMEOUT
fi
}

Просмотреть файл

@ -116,8 +116,9 @@ write_files:
{{if .MasterProfile.IsCoreOS}}
ExecStart=/usr/bin/env PATH=${TORCX_BINDIR}:${PATH} ${TORCX_BINDIR}/dockerd --host=fd:// --containerd=/var/run/docker/libcontainerd/docker-containerd.sock --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}} $DOCKER_SELINUX $DOCKER_OPTS $DOCKER_CGROUPS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ
{{else}}
ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
{{end}}
- path: "/etc/docker/daemon.json"
permissions: "0644"
owner: "root"

Просмотреть файл

@ -116,8 +116,9 @@ write_files:
{{if .MasterProfile.IsCoreOS}}
ExecStart=/usr/bin/env PATH=${TORCX_BINDIR}:${PATH} ${TORCX_BINDIR}/dockerd --host=fd:// --containerd=/var/run/docker/libcontainerd/docker-containerd.sock --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}} $DOCKER_SELINUX $DOCKER_OPTS $DOCKER_CGROUPS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ
{{else}}
ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay2 --bip={{WrapAsParameter "dockerBridgeCidr"}}
{{end}}
- path: "/etc/docker/daemon.json"
permissions: "0644"
owner: "root"

Просмотреть файл

@ -136,7 +136,7 @@
"sshdConfig": "{{GetB64sshdConfig}}",
"systemConf": "{{GetB64systemConf}}",
{{if not IsOpenShift}}
"provisionScriptParametersCommon": "[concat('ADMINUSER=',parameters('linuxAdminUsername'),' ETCD_DOWNLOAD_URL=',parameters('etcdDownloadURLBase'),' ETCD_VERSION=',parameters('etcdVersion'),' DOCKER_ENGINE_VERSION=',parameters('dockerEngineVersion'),' DOCKER_REPO=',parameters('dockerEngineDownloadRepo'),' TENANT_ID=',variables('tenantID'),' KUBERNETES_VERSION={{.OrchestratorProfile.OrchestratorVersion}} HYPERKUBE_URL=',parameters('kubernetesHyperkubeSpec'),' APISERVER_PUBLIC_KEY=',parameters('apiserverCertificate'),' SUBSCRIPTION_ID=',variables('subscriptionId'),' RESOURCE_GROUP=',variables('resourceGroup'),' LOCATION=',variables('location'),' VM_TYPE=',variables('vmType'),' SUBNET=',variables('subnetName'),' NETWORK_SECURITY_GROUP=',variables('nsgName'),' VIRTUAL_NETWORK=',variables('virtualNetworkName'),' VIRTUAL_NETWORK_RESOURCE_GROUP=',variables('virtualNetworkResourceGroupName'),' ROUTE_TABLE=',variables('routeTableName'),' PRIMARY_AVAILABILITY_SET=',variables('primaryAvailabilitySetName'),' PRIMARY_SCALE_SET=',variables('primaryScaleSetName'),' SERVICE_PRINCIPAL_CLIENT_ID=',variables('servicePrincipalClientId'),' SERVICE_PRINCIPAL_CLIENT_SECRET=',variables('singleQuote'),variables('servicePrincipalClientSecret'),variables('singleQuote'),' KUBELET_PRIVATE_KEY=',parameters('clientPrivateKey'),' TARGET_ENVIRONMENT=',parameters('targetEnvironment'),' NETWORK_PLUGIN=',parameters('networkPlugin'),' VNET_CNI_PLUGINS_URL=',parameters('vnetCniLinuxPluginsURL'),' CNI_PLUGINS_URL=',parameters('cniPluginsURL'),' CLOUDPROVIDER_BACKOFF=',toLower(string(parameters('cloudproviderConfig').cloudProviderBackoff)),' CLOUDPROVIDER_BACKOFF_RETRIES=',parameters('cloudproviderConfig').cloudProviderBackoffRetries,' CLOUDPROVIDER_BACKOFF_EXPONENT=',parameters('cloudproviderConfig').cloudProviderBackoffExponent,' CLOUDPROVIDER_BACKOFF_DURATION=',parameters('cloudproviderConfig').cloudProviderBackoffDuration,' CLOUDPROVIDER_BACKOFF_JITTER=',parameters('cloudproviderConfig').cloudProviderBackoffJitter,' CLOUDPROVIDER_RATELIMIT=',toLower(string(parameters('cloudproviderConfig').cloudProviderRatelimit)),' CLOUDPROVIDER_RATELIMIT_QPS=',parameters('cloudproviderConfig').cloudProviderRatelimitQPS,' CLOUDPROVIDER_RATELIMIT_BUCKET=',parameters('cloudproviderConfig').cloudProviderRatelimitBucket,' USE_MANAGED_IDENTITY_EXTENSION=',variables('useManagedIdentityExtension'),' USER_ASSIGNED_IDENTITY_ID=',variables('userAssignedClientID'),' USE_INSTANCE_METADATA=',variables('useInstanceMetadata'),' LOAD_BALANCER_SKU=',variables('loadBalancerSku'),' EXCLUDE_MASTER_FROM_STANDARD_LB=',variables('excludeMasterFromStandardLB'),' CONTAINER_RUNTIME=',parameters('containerRuntime'),' CONTAINERD_DOWNLOAD_URL_BASE=',parameters('containerdDownloadURLBase'),' POD_INFRA_CONTAINER_SPEC=',parameters('kubernetesPodInfraContainerSpec'),' KMS_PROVIDER_VAULT_NAME=',variables('clusterKeyVaultName'))]",
"provisionScriptParametersCommon": "[concat('ADMINUSER=',parameters('linuxAdminUsername'),' ETCD_DOWNLOAD_URL=',parameters('etcdDownloadURLBase'),' ETCD_VERSION=',parameters('etcdVersion'),' TENANT_ID=',variables('tenantID'),' KUBERNETES_VERSION={{.OrchestratorProfile.OrchestratorVersion}} HYPERKUBE_URL=',parameters('kubernetesHyperkubeSpec'),' APISERVER_PUBLIC_KEY=',parameters('apiserverCertificate'),' SUBSCRIPTION_ID=',variables('subscriptionId'),' RESOURCE_GROUP=',variables('resourceGroup'),' LOCATION=',variables('location'),' VM_TYPE=',variables('vmType'),' SUBNET=',variables('subnetName'),' NETWORK_SECURITY_GROUP=',variables('nsgName'),' VIRTUAL_NETWORK=',variables('virtualNetworkName'),' VIRTUAL_NETWORK_RESOURCE_GROUP=',variables('virtualNetworkResourceGroupName'),' ROUTE_TABLE=',variables('routeTableName'),' PRIMARY_AVAILABILITY_SET=',variables('primaryAvailabilitySetName'),' PRIMARY_SCALE_SET=',variables('primaryScaleSetName'),' SERVICE_PRINCIPAL_CLIENT_ID=',variables('servicePrincipalClientId'),' SERVICE_PRINCIPAL_CLIENT_SECRET=',variables('singleQuote'),variables('servicePrincipalClientSecret'),variables('singleQuote'),' KUBELET_PRIVATE_KEY=',parameters('clientPrivateKey'),' TARGET_ENVIRONMENT=',parameters('targetEnvironment'),' NETWORK_PLUGIN=',parameters('networkPlugin'),' VNET_CNI_PLUGINS_URL=',parameters('vnetCniLinuxPluginsURL'),' CNI_PLUGINS_URL=',parameters('cniPluginsURL'),' CLOUDPROVIDER_BACKOFF=',toLower(string(parameters('cloudproviderConfig').cloudProviderBackoff)),' CLOUDPROVIDER_BACKOFF_RETRIES=',parameters('cloudproviderConfig').cloudProviderBackoffRetries,' CLOUDPROVIDER_BACKOFF_EXPONENT=',parameters('cloudproviderConfig').cloudProviderBackoffExponent,' CLOUDPROVIDER_BACKOFF_DURATION=',parameters('cloudproviderConfig').cloudProviderBackoffDuration,' CLOUDPROVIDER_BACKOFF_JITTER=',parameters('cloudproviderConfig').cloudProviderBackoffJitter,' CLOUDPROVIDER_RATELIMIT=',toLower(string(parameters('cloudproviderConfig').cloudProviderRatelimit)),' CLOUDPROVIDER_RATELIMIT_QPS=',parameters('cloudproviderConfig').cloudProviderRatelimitQPS,' CLOUDPROVIDER_RATELIMIT_BUCKET=',parameters('cloudproviderConfig').cloudProviderRatelimitBucket,' USE_MANAGED_IDENTITY_EXTENSION=',variables('useManagedIdentityExtension'),' USER_ASSIGNED_IDENTITY_ID=',variables('userAssignedClientID'),' USE_INSTANCE_METADATA=',variables('useInstanceMetadata'),' LOAD_BALANCER_SKU=',variables('loadBalancerSku'),' EXCLUDE_MASTER_FROM_STANDARD_LB=',variables('excludeMasterFromStandardLB'),' CONTAINER_RUNTIME=',parameters('containerRuntime'),' CONTAINERD_DOWNLOAD_URL_BASE=',parameters('containerdDownloadURLBase'),' POD_INFRA_CONTAINER_SPEC=',parameters('kubernetesPodInfraContainerSpec'),' KMS_PROVIDER_VAULT_NAME=',variables('clusterKeyVaultName'))]",
{{if not IsHostedMaster}}
"provisionScriptParametersMaster": "[concat('MASTER_VM_NAME=',variables('masterVMNames')[variables('masterOffset')],' ETCD_PEER_URL=',variables('masterEtcdPeerURLs')[variables('masterOffset')],' ETCD_CLIENT_URL=',variables('masterEtcdClientURLs')[variables('masterOffset')],' MASTER_NODE=true CLUSTER_AUTOSCALER_ADDON=',parameters('kubernetesClusterAutoscalerEnabled'),' ACI_CONNECTOR_ADDON=',parameters('kubernetesACIConnectorEnabled'),' APISERVER_PRIVATE_KEY=',parameters('apiServerPrivateKey'),' CA_CERTIFICATE=',parameters('caCertificate'),' CA_PRIVATE_KEY=',parameters('caPrivateKey'),' MASTER_FQDN=',variables('masterFqdnPrefix'),' KUBECONFIG_CERTIFICATE=',parameters('kubeConfigCertificate'),' KUBECONFIG_KEY=',parameters('kubeConfigPrivateKey'),' ETCD_SERVER_CERTIFICATE=',parameters('etcdServerCertificate'),' ETCD_CLIENT_CERTIFICATE=',parameters('etcdClientCertificate'),' ETCD_SERVER_PRIVATE_KEY=',parameters('etcdServerPrivateKey'),' ETCD_CLIENT_PRIVATE_KEY=',parameters('etcdClientPrivateKey'),' ETCD_PEER_CERTIFICATES=',string(variables('etcdPeerCertificates')),' ETCD_PEER_PRIVATE_KEYS=',string(variables('etcdPeerPrivateKeys')),' ENABLE_AGGREGATED_APIS=',string(parameters('enableAggregatedAPIs')),' KUBECONFIG_SERVER=',variables('kubeconfigServer'))]",
{{end}}

Просмотреть файл

@ -126,7 +126,7 @@
"customSearchDomainsScript": "{{GetKubernetesB64CustomSearchDomainsScript}}",
"sshdConfig": "{{GetB64sshdConfig}}",
"systemConf": "{{GetB64systemConf}}",
"provisionScriptParametersCommon": "[concat('ADMINUSER=',parameters('linuxAdminUsername'),' ETCD_DOWNLOAD_URL=',parameters('etcdDownloadURLBase'),' ETCD_VERSION=',parameters('etcdVersion'),' DOCKER_ENGINE_VERSION=',parameters('dockerEngineVersion'),' DOCKER_REPO=',parameters('dockerEngineDownloadRepo'),' TENANT_ID=',variables('tenantID'),' KUBERNETES_VERSION={{.OrchestratorProfile.OrchestratorVersion}} HYPERKUBE_URL=',parameters('kubernetesHyperkubeSpec'),' APISERVER_PUBLIC_KEY=',parameters('apiserverCertificate'),' SUBSCRIPTION_ID=',variables('subscriptionId'),' RESOURCE_GROUP=',variables('resourceGroup'),' LOCATION=',variables('location'),' VM_TYPE=',variables('vmType'),' SUBNET=',variables('subnetName'),' NETWORK_SECURITY_GROUP=',variables('nsgName'),' VIRTUAL_NETWORK=',variables('virtualNetworkName'),' VIRTUAL_NETWORK_RESOURCE_GROUP=',variables('virtualNetworkResourceGroupName'),' ROUTE_TABLE=',variables('routeTableName'),' PRIMARY_AVAILABILITY_SET=',variables('primaryAvailabilitySetName'),' PRIMARY_SCALE_SET=',variables('primaryScaleSetName'),' SERVICE_PRINCIPAL_CLIENT_ID=',variables('servicePrincipalClientId'),' SERVICE_PRINCIPAL_CLIENT_SECRET=',variables('singleQuote'),variables('servicePrincipalClientSecret'),variables('singleQuote'),' KUBELET_PRIVATE_KEY=',parameters('clientPrivateKey'),' TARGET_ENVIRONMENT=',parameters('targetEnvironment'),' NETWORK_PLUGIN=',parameters('networkPlugin'),' VNET_CNI_PLUGINS_URL=',parameters('vnetCniLinuxPluginsURL'),' CNI_PLUGINS_URL=',parameters('cniPluginsURL'),' CLOUDPROVIDER_BACKOFF=',toLower(string(parameters('cloudproviderConfig').cloudProviderBackoff)),' CLOUDPROVIDER_BACKOFF_RETRIES=',parameters('cloudproviderConfig').cloudProviderBackoffRetries,' CLOUDPROVIDER_BACKOFF_EXPONENT=',parameters('cloudproviderConfig').cloudProviderBackoffExponent,' CLOUDPROVIDER_BACKOFF_DURATION=',parameters('cloudproviderConfig').cloudProviderBackoffDuration,' CLOUDPROVIDER_BACKOFF_JITTER=',parameters('cloudproviderConfig').cloudProviderBackoffJitter,' CLOUDPROVIDER_RATELIMIT=',toLower(string(parameters('cloudproviderConfig').cloudProviderRatelimit)),' CLOUDPROVIDER_RATELIMIT_QPS=',parameters('cloudproviderConfig').cloudProviderRatelimitQPS,' CLOUDPROVIDER_RATELIMIT_BUCKET=',parameters('cloudproviderConfig').cloudProviderRatelimitBucket,' USE_MANAGED_IDENTITY_EXTENSION=',variables('useManagedIdentityExtension'),' USER_ASSIGNED_IDENTITY_ID=',variables('userAssignedClientID'),' USE_INSTANCE_METADATA=',variables('useInstanceMetadata'),' LOAD_BALANCER_SKU=',variables('loadBalancerSku'),' EXCLUDE_MASTER_FROM_STANDARD_LB=',variables('excludeMasterFromStandardLB'),' CONTAINER_RUNTIME=',parameters('containerRuntime'),' CONTAINERD_DOWNLOAD_URL_BASE=',parameters('containerdDownloadURLBase'),' POD_INFRA_CONTAINER_SPEC=',parameters('kubernetesPodInfraContainerSpec'),' KMS_PROVIDER_VAULT_NAME=',variables('clusterKeyVaultName'))]",
"provisionScriptParametersCommon": "[concat('ADMINUSER=',parameters('linuxAdminUsername'),' ETCD_DOWNLOAD_URL=',parameters('etcdDownloadURLBase'),' ETCD_VERSION=',parameters('etcdVersion'),' TENANT_ID=',variables('tenantID'),' KUBERNETES_VERSION={{.OrchestratorProfile.OrchestratorVersion}} HYPERKUBE_URL=',parameters('kubernetesHyperkubeSpec'),' APISERVER_PUBLIC_KEY=',parameters('apiserverCertificate'),' SUBSCRIPTION_ID=',variables('subscriptionId'),' RESOURCE_GROUP=',variables('resourceGroup'),' LOCATION=',variables('location'),' VM_TYPE=',variables('vmType'),' SUBNET=',variables('subnetName'),' NETWORK_SECURITY_GROUP=',variables('nsgName'),' VIRTUAL_NETWORK=',variables('virtualNetworkName'),' VIRTUAL_NETWORK_RESOURCE_GROUP=',variables('virtualNetworkResourceGroupName'),' ROUTE_TABLE=',variables('routeTableName'),' PRIMARY_AVAILABILITY_SET=',variables('primaryAvailabilitySetName'),' PRIMARY_SCALE_SET=',variables('primaryScaleSetName'),' SERVICE_PRINCIPAL_CLIENT_ID=',variables('servicePrincipalClientId'),' SERVICE_PRINCIPAL_CLIENT_SECRET=',variables('singleQuote'),variables('servicePrincipalClientSecret'),variables('singleQuote'),' KUBELET_PRIVATE_KEY=',parameters('clientPrivateKey'),' TARGET_ENVIRONMENT=',parameters('targetEnvironment'),' NETWORK_PLUGIN=',parameters('networkPlugin'),' VNET_CNI_PLUGINS_URL=',parameters('vnetCniLinuxPluginsURL'),' CNI_PLUGINS_URL=',parameters('cniPluginsURL'),' CLOUDPROVIDER_BACKOFF=',toLower(string(parameters('cloudproviderConfig').cloudProviderBackoff)),' CLOUDPROVIDER_BACKOFF_RETRIES=',parameters('cloudproviderConfig').cloudProviderBackoffRetries,' CLOUDPROVIDER_BACKOFF_EXPONENT=',parameters('cloudproviderConfig').cloudProviderBackoffExponent,' CLOUDPROVIDER_BACKOFF_DURATION=',parameters('cloudproviderConfig').cloudProviderBackoffDuration,' CLOUDPROVIDER_BACKOFF_JITTER=',parameters('cloudproviderConfig').cloudProviderBackoffJitter,' CLOUDPROVIDER_RATELIMIT=',toLower(string(parameters('cloudproviderConfig').cloudProviderRatelimit)),' CLOUDPROVIDER_RATELIMIT_QPS=',parameters('cloudproviderConfig').cloudProviderRatelimitQPS,' CLOUDPROVIDER_RATELIMIT_BUCKET=',parameters('cloudproviderConfig').cloudProviderRatelimitBucket,' USE_MANAGED_IDENTITY_EXTENSION=',variables('useManagedIdentityExtension'),' USER_ASSIGNED_IDENTITY_ID=',variables('userAssignedClientID'),' USE_INSTANCE_METADATA=',variables('useInstanceMetadata'),' LOAD_BALANCER_SKU=',variables('loadBalancerSku'),' EXCLUDE_MASTER_FROM_STANDARD_LB=',variables('excludeMasterFromStandardLB'),' CONTAINER_RUNTIME=',parameters('containerRuntime'),' CONTAINERD_DOWNLOAD_URL_BASE=',parameters('containerdDownloadURLBase'),' POD_INFRA_CONTAINER_SPEC=',parameters('kubernetesPodInfraContainerSpec'),' KMS_PROVIDER_VAULT_NAME=',variables('clusterKeyVaultName'))]",
{{if not IsHostedMaster}}
"provisionScriptParametersMaster": "[concat('MASTER_NODE=true CLUSTER_AUTOSCALER_ADDON=',parameters('kubernetesClusterAutoscalerEnabled'),' ACI_CONNECTOR_ADDON=',parameters('kubernetesACIConnectorEnabled'),' APISERVER_PRIVATE_KEY=',parameters('apiServerPrivateKey'),' CA_CERTIFICATE=',parameters('caCertificate'),' CA_PRIVATE_KEY=',parameters('caPrivateKey'),' MASTER_FQDN=',variables('masterFqdnPrefix'),' KUBECONFIG_CERTIFICATE=',parameters('kubeConfigCertificate'),' KUBECONFIG_KEY=',parameters('kubeConfigPrivateKey'),' ETCD_SERVER_CERTIFICATE=',parameters('etcdServerCertificate'),' ETCD_CLIENT_CERTIFICATE=',parameters('etcdClientCertificate'),' ETCD_SERVER_PRIVATE_KEY=',parameters('etcdServerPrivateKey'),' ETCD_CLIENT_PRIVATE_KEY=',parameters('etcdClientPrivateKey'),' ETCD_PEER_CERTIFICATES=',string(variables('etcdPeerCertificates')),' ETCD_PEER_PRIVATE_KEYS=',string(variables('etcdPeerPrivateKeys')),' ENABLE_AGGREGATED_APIS=',string(parameters('enableAggregatedAPIs')),' KUBECONFIG_SERVER=',variables('kubeconfigServer'))]",
{{end}}

Просмотреть файл

@ -648,29 +648,6 @@
"type": "string"
},
{{end}}
{{if not IsOpenShift}}
"dockerEngineDownloadRepo": {
"defaultValue": "https://aptdocker.azureedge.net/repo",
"metadata": {
"description": "The docker engine download url for kubernetes."
},
"type": "string"
},
"dockerEngineVersion": {
"metadata": {
"description": "The docker engine version to install."
},
"allowedValues": [
"17.05.*",
"17.04.*",
"17.03.*",
"1.13.*",
"1.12.*",
"1.11.*"
],
"type": "string"
},
{{end}}
"networkPolicy": {
"defaultValue": "{{.OrchestratorProfile.KubernetesConfig.NetworkPolicy}}",
"metadata": {

Просмотреть файл

@ -18,6 +18,9 @@ ERR_DOCKER_DOWNLOAD_TIMEOUT=21 # Timout waiting for docker download(s)
ERR_DOCKER_KEY_DOWNLOAD_TIMEOUT=22 # Timeout waiting to download docker repo key
ERR_DOCKER_APT_KEY_TIMEOUT=23 # Timeout waiting for docker apt-key
ERR_DOCKER_START_FAIL=24 # Docker could not be started by systemctl
ERR_MOBY_APT_LIST_TIMEOUT=25 # Timeout waiting for moby apt sources
ERR_MS_GPG_KEY_DOWNLOAD_TIMEOUT=26 # Timeout waiting for MS GPG key download
ERR_MOBY_INSTALL_TIMEOUT=27 # Timeout waiting for moby install
ERR_K8S_RUNNING_TIMEOUT=30 # Timeout waiting for k8s cluster to be healthy
ERR_K8S_DOWNLOAD_TIMEOUT=31 # Timeout waiting for Kubernetes download(s)
ERR_KUBECTL_NOT_FOUND=32 # kubectl client binary not found on local disk

Просмотреть файл

@ -21,9 +21,6 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params
if orchestratorProfile.IsKubernetes() ||
orchestratorProfile.IsOpenShift() {
k8sComponents := api.K8sComponentsByVersionMap[orchestratorProfile.OrchestratorVersion]
dockerEngineVersion := k8sComponents["dockerEngineVersion"]
kubernetesConfig := orchestratorProfile.KubernetesConfig
if kubernetesConfig != nil {
@ -301,10 +298,6 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params
addValue(parametersMap, "jumpboxStorageProfile", kubernetesConfig.PrivateCluster.JumpboxProfile.StorageProfile)
}
if kubernetesConfig.DockerEngineVersion != "" {
dockerEngineVersion = kubernetesConfig.DockerEngineVersion
}
addValue(parametersMap, "enableAggregatedAPIs", kubernetesConfig.EnableAggregatedAPIs)
}
@ -394,11 +387,6 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params
addValue(parametersMap, "kubernetesEndpoint", properties.HostedMasterProfile.FQDN)
}
if !orchestratorProfile.IsOpenShift() {
addValue(parametersMap, "dockerEngineDownloadRepo", cloudSpecConfig.DockerSpecConfig.DockerEngineRepo)
addValue(parametersMap, "dockerEngineVersion", dockerEngineVersion)
}
if properties.AADProfile != nil {
addValue(parametersMap, "aadTenantId", properties.AADProfile.TenantID)
if properties.AADProfile.AdminGroupID != "" {

Просмотреть файл

@ -731,7 +731,6 @@ func convertKubernetesConfigToVLabs(api *KubernetesConfig, vlabs *vlabs.Kubernet
vlabs.UserAssignedID = api.UserAssignedID
vlabs.UserAssignedClientID = api.UserAssignedClientID
vlabs.CustomHyperkubeImage = api.CustomHyperkubeImage
vlabs.DockerEngineVersion = api.DockerEngineVersion
vlabs.CustomCcmImage = api.CustomCcmImage
vlabs.UseCloudControllerManager = api.UseCloudControllerManager
vlabs.CustomWindowsPackageURL = api.CustomWindowsPackageURL

Просмотреть файл

@ -691,7 +691,6 @@ func convertVLabsKubernetesConfig(vlabs *vlabs.KubernetesConfig, api *Kubernetes
api.UserAssignedID = vlabs.UserAssignedID
api.UserAssignedClientID = vlabs.UserAssignedClientID
api.CustomHyperkubeImage = vlabs.CustomHyperkubeImage
api.DockerEngineVersion = vlabs.DockerEngineVersion
api.CustomCcmImage = vlabs.CustomCcmImage
api.UseCloudControllerManager = vlabs.UseCloudControllerManager
api.CustomWindowsPackageURL = vlabs.CustomWindowsPackageURL

Просмотреть файл

@ -318,7 +318,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.13"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.13"]["dashboard"],
"exechealthz": k8sComponentVersions["1.13"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.13"]["addon-resizer"],
@ -355,7 +354,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.12"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.12"]["dashboard"],
"exechealthz": k8sComponentVersions["1.12"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.12"]["addon-resizer"],
@ -392,7 +390,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.11"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.11"]["dashboard"],
"exechealthz": k8sComponentVersions["1.11"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.11"]["addon-resizer"],
@ -428,7 +425,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.10"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.10"]["dashboard"],
"exechealthz": k8sComponentVersions["1.10"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.10"]["addon-resizer"],
@ -464,7 +460,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.9"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.9"]["dashboard"],
"exechealthz": k8sComponentVersions["1.9"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.9"]["addon-resizer"],
@ -499,7 +494,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
"hyperkube": "hyperkube-amd64:v" + version,
"ccm": "cloud-controller-manager-amd64:v" + version,
"windowszip": "v" + version + "-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.8"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.8"]["dashboard"],
"exechealthz": k8sComponentVersions["1.8"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.8"]["addon-resizer"],
@ -530,7 +524,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
case "1.7":
ret = map[string]string{
"hyperkube": "hyperkube-amd64:v" + version,
"dockerEngineVersion": k8sComponentVersions["1.7"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.7"]["dashboard"],
"exechealthz": k8sComponentVersions["1.7"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.7"]["addon-resizer"],
@ -561,7 +554,6 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st
case "1.6":
ret = map[string]string{
"hyperkube": "hyperkube-amd64:v" + version,
"dockerEngineVersion": k8sComponentVersions["1.6"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.6"]["dashboard"],
"exechealthz": k8sComponentVersions["1.6"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.6"]["addon-resizer"],

Просмотреть файл

@ -14,7 +14,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.12.0",
"ccm": "cloud-controller-manager-amd64:v1.12.0",
"windowszip": "v1.12.0-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.12"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.12"]["dashboard"],
"exechealthz": k8sComponentVersions["1.12"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.12"]["addon-resizer"],
@ -61,7 +60,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.11.0-alpha.1",
"ccm": "cloud-controller-manager-amd64:v1.11.0-alpha.1",
"windowszip": "v1.11.0-alpha.1-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.11"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.11"]["dashboard"],
"exechealthz": k8sComponentVersions["1.11"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.11"]["addon-resizer"],
@ -107,7 +105,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.10.0",
"ccm": "cloud-controller-manager-amd64:v1.10.0",
"windowszip": "v1.10.0-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.10"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.10"]["dashboard"],
"exechealthz": k8sComponentVersions["1.10"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.10"]["addon-resizer"],
@ -153,7 +150,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.9.3",
"ccm": "cloud-controller-manager-amd64:v1.9.3",
"windowszip": "v1.9.3-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.9"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.9"]["dashboard"],
"exechealthz": k8sComponentVersions["1.9"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.9"]["addon-resizer"],
@ -198,7 +194,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.8.8",
"ccm": "cloud-controller-manager-amd64:v1.8.8",
"windowszip": "v1.8.8-1int.zip",
"dockerEngineVersion": k8sComponentVersions["1.8"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.8"]["dashboard"],
"exechealthz": k8sComponentVersions["1.8"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.8"]["addon-resizer"],
@ -238,7 +233,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
}
expected = map[string]string{
"hyperkube": "hyperkube-amd64:v1.7.13",
"dockerEngineVersion": k8sComponentVersions["1.7"]["dockerEngine"],
DefaultDashboardAddonName: k8sComponentVersions["1.7"]["dashboard"],
"exechealthz": k8sComponentVersions["1.7"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.7"]["addon-resizer"],
@ -272,7 +266,7 @@ func TestGetK8sVersionComponents(t *testing.T) {
}
}
override := getK8sVersionComponents("1.9.3", map[string]string{"windowszip": "v1.9.3-2int.zip", "dockerEngineVersion": "1.99.*"})
override := getK8sVersionComponents("1.9.3", map[string]string{"windowszip": "v1.9.3-2int.zip"})
if override == nil {
t.Fatalf("getK8sVersionComponents() should not return nil for valid version")
}
@ -280,7 +274,6 @@ func TestGetK8sVersionComponents(t *testing.T) {
"hyperkube": "hyperkube-amd64:v1.9.3",
"ccm": "cloud-controller-manager-amd64:v1.9.3",
"windowszip": "v1.9.3-2int.zip",
"dockerEngineVersion": "1.99.*",
DefaultDashboardAddonName: k8sComponentVersions["1.9"]["dashboard"],
"exechealthz": k8sComponentVersions["1.9"]["exechealthz"],
"addonresizer": k8sComponentVersions["1.9"]["addon-resizer"],

Просмотреть файл

@ -320,8 +320,8 @@ type KubernetesConfig struct {
UserAssignedID string `json:"userAssignedID,omitempty"`
UserAssignedClientID string `json:"userAssignedClientID,omitempty"` //Note: cannot be provided in config. Used *only* for transferring this to azure.json.
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"`
CustomCcmImage string `json:"customCcmImage,omitempty"` // Image for cloud-controller-manager
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"` // Deprecated
CustomCcmImage string `json:"customCcmImage,omitempty"` // Image for cloud-controller-manager
UseCloudControllerManager *bool `json:"useCloudControllerManager,omitempty"`
CustomWindowsPackageURL string `json:"customWindowsPackageURL,omitempty"`
UseInstanceMetadata *bool `json:"useInstanceMetadata,omitempty"`
@ -1292,7 +1292,7 @@ func (k *KubernetesConfig) PrivateJumpboxProvision() bool {
return false
}
// RequiresDocker returns if the kubernetes settings require docker to be installed.
// RequiresDocker returns if the kubernetes settings require docker binary to be installed.
func (k *KubernetesConfig) RequiresDocker() bool {
runtime := strings.ToLower(k.ContainerRuntime)
return runtime == "docker" || runtime == ""

Просмотреть файл

@ -277,7 +277,7 @@ type KubernetesConfig struct {
UserAssignedID string `json:"userAssignedID,omitempty"`
UserAssignedClientID string `json:"userAssignedClientID,omitempty"` //Note: cannot be provided in config. Used *only* for transferring this to azure.json.
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"` // Deprecated
CustomCcmImage string `json:"customCcmImage,omitempty"`
UseCloudControllerManager *bool `json:"useCloudControllerManager,omitempty"`
CustomWindowsPackageURL string `json:"customWindowsPackageURL,omitempty"`
@ -693,7 +693,7 @@ func (o *OrchestratorProfile) IsSwarmMode() bool {
return o.OrchestratorType == SwarmMode
}
// RequiresDocker returns if the kubernetes settings require docker to be installed.
// RequiresDocker returns if the kubernetes settings require docker binary to be installed.
func (k *KubernetesConfig) RequiresDocker() bool {
runtime := strings.ToLower(k.ContainerRuntime)
return runtime == "docker" || runtime == ""

Просмотреть файл

@ -281,6 +281,10 @@ func (a *Properties) validateOrchestratorProfile(isUpdate bool) error {
return errors.Errorf("standard loadBalancerSku should exclude master nodes. Please set KubernetesConfig \"ExcludeMasterFromStandardLB\" to \"true\"")
}
}
if o.KubernetesConfig.DockerEngineVersion != "" {
log.Warnf("docker-engine is deprecated in favor of moby, but you passed in a dockerEngineVersion configuration. This will be ignored.")
}
}
case OpenShift:
// TODO: add appropriate additional validation logic
@ -1250,7 +1254,7 @@ func (a *Properties) validateContainerRuntime() error {
return errors.Errorf("unknown containerRuntime %q specified", containerRuntime)
}
// Make sure we don't use clear containers on windows.
// Make sure we don't use unsupported container runtimes on windows.
if (containerRuntime == "clear-containers" || containerRuntime == "kata-containers" || containerRuntime == "containerd") && a.HasWindows() {
return errors.Errorf("containerRuntime %q is not supporting windows agents", containerRuntime)
}