From 1081f620d259540fc0294c502345bdc0338d2dac Mon Sep 17 00:00:00 2001 From: Di Xu Date: Mon, 18 Dec 2017 16:12:47 +0800 Subject: [PATCH] add support for non-amd64 arch gcr.io images Currently all the gcr.io images used in kubespray can only run on x86. Also gcr.io has not fully support multi-arch docker images. Add extra var "image_arch" (default is amd64) to support running other platforms, like arm64. Change-Id: I8e1c9af533c021cb96ade291a1ce58773b40e271 --- roles/dnsmasq/defaults/main.yml | 3 +++ roles/download/defaults/main.yml | 23 +++++++++++-------- .../kubernetes-apps/ansible/defaults/main.yml | 11 +++++---- roles/vault/defaults/main.yml | 8 +++++-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/roles/dnsmasq/defaults/main.yml b/roles/dnsmasq/defaults/main.yml index 15fb7f169..e3013f4ea 100644 --- a/roles/dnsmasq/defaults/main.yml +++ b/roles/dnsmasq/defaults/main.yml @@ -33,3 +33,6 @@ dnsmasq_min_replicas: 1 # Custom name servers dnsmasq_upstream_dns_servers: [] + +# Arch of Docker images and needed packages +image_arch: amd64 diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml index 286a3ec4c..26656a16d 100644 --- a/roles/download/defaults/main.yml +++ b/roles/download/defaults/main.yml @@ -23,6 +23,9 @@ download_always_pull: False # Use the first kube-master if download_localhost is not set download_delegate: "{% if download_localhost %}localhost{% else %}{{groups['kube-master'][0]}}{% endif %}" +# Arch of Docker images and needed packages +image_arch: amd64 + # Versions kube_version: v1.10.2 kubeadm_version: "{{ kube_version }}" @@ -45,8 +48,8 @@ cilium_version: "v1.0.0-rc8" # Download URLs istioctl_download_url: "https://storage.googleapis.com/istio-release/releases/{{ istio_version }}/istioctl/istioctl-linux" -kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/amd64/kubeadm" -vault_download_url: "https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version }}_linux_amd64.zip" +kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/{{ image_arch }}/kubeadm" +vault_download_url: "https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version }}_linux_{{ image_arch }}.zip" # Checksums istioctl_checksum: fd703063c540b8c0ab943f478c05ab257d88ae27224c746a27d0526ddbf7c370 @@ -86,9 +89,9 @@ istio_sidecar_initializer_image_repo: docker.io/istio/sidecar_initializer istio_sidecar_initializer_image_tag: "{{ istio_version }}" istio_statsd_image_repo: prom/statsd-exporter istio_statsd_image_tag: latest -hyperkube_image_repo: "gcr.io/google-containers/hyperkube" +hyperkube_image_repo: "gcr.io/google-containers/hyperkube-{{ image_arch }}" hyperkube_image_tag: "{{ kube_version }}" -pod_infra_image_repo: "gcr.io/google_containers/pause-amd64" +pod_infra_image_repo: "gcr.io/google_containers/pause-{{ image_arch }}" pod_infra_image_tag: "{{ pod_infra_version }}" install_socat_image_repo: "xueshanf/install-socat" install_socat_image_tag: "latest" @@ -115,20 +118,20 @@ dnsmasq_version: 2.78 dnsmasq_image_repo: "andyshinn/dnsmasq" dnsmasq_image_tag: "{{ dnsmasq_version }}" kubedns_version: 1.14.10 -kubedns_image_repo: "gcr.io/google_containers/k8s-dns-kube-dns-amd64" +kubedns_image_repo: "gcr.io/google_containers/k8s-dns-kube-dns-{{ image_arch }}" kubedns_image_tag: "{{ kubedns_version }}" coredns_version: 1.1.2 coredns_image_repo: "docker.io/coredns/coredns" coredns_image_tag: "{{ coredns_version }}" -dnsmasq_nanny_image_repo: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64" +dnsmasq_nanny_image_repo: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny--{{ image_arch }}" dnsmasq_nanny_image_tag: "{{ kubedns_version }}" -dnsmasq_sidecar_image_repo: "gcr.io/google_containers/k8s-dns-sidecar-amd64" +dnsmasq_sidecar_image_repo: "gcr.io/google_containers/k8s-dns-sidecar-{{ image_arch }}" dnsmasq_sidecar_image_tag: "{{ kubedns_version }}" dnsmasqautoscaler_version: 1.1.2 -dnsmasqautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-amd64" +dnsmasqautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-{{ image_arch }}" dnsmasqautoscaler_image_tag: "{{ dnsmasqautoscaler_version }}" kubednsautoscaler_version: 1.1.2 -kubednsautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-amd64" +kubednsautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-{{ image_arch }}" kubednsautoscaler_image_tag: "{{ kubednsautoscaler_version }}" test_image_repo: busybox test_image_tag: latest @@ -515,7 +518,7 @@ downloads: enabled: "{{ cert_management == 'vault' }}" container: "{{ vault_deployment_type != 'host' }}" file: "{{ vault_deployment_type == 'host' }}" - dest: "vault/vault_{{ vault_version }}_linux_amd64.zip" + dest: "vault/vault_{{ vault_version }}_linux_{{ image_arch }}.zip" mode: "0755" owner: "vault" repo: "{{ vault_image_repo }}" diff --git a/roles/kubernetes-apps/ansible/defaults/main.yml b/roles/kubernetes-apps/ansible/defaults/main.yml index ee4fda3db..ad5d7b303 100644 --- a/roles/kubernetes-apps/ansible/defaults/main.yml +++ b/roles/kubernetes-apps/ansible/defaults/main.yml @@ -14,13 +14,14 @@ kubedns_nodes_per_replica: 10 coredns_replicas: 2 # Images -kubedns_image_repo: "gcr.io/google_containers/k8s-dns-kube-dns-amd64" +image_arch: "{{ image_arch | default('amd64') }}" +kubedns_image_repo: "gcr.io/google_containers/k8s-dns-kube-dns-{{ image_arch }}" kubedns_image_tag: "{{ kubedns_version }}" -dnsmasq_nanny_image_repo: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64" +dnsmasq_nanny_image_repo: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-{{ image_arch }}" dnsmasq_nanny_image_tag: "{{ kubedns_version }}" -dnsmasq_sidecar_image_repo: "gcr.io/google_containers/k8s-dns-sidecar-amd64" +dnsmasq_sidecar_image_repo: "gcr.io/google_containers/k8s-dns-sidecar-{{ image_arch }}" dnsmasq_sidecar_image_tag: "{{ kubedns_version }}" -kubednsautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-amd64" +kubednsautoscaler_image_repo: "gcr.io/google_containers/cluster-proportional-autoscaler-{{ image_arch }}" kubednsautoscaler_image_tag: "{{ kubednsautoscaler_version }}" # Netchecker @@ -43,7 +44,7 @@ netchecker_server_memory_requests: 64M # Dashboard dashboard_enabled: true -dashboard_image_repo: gcr.io/google_containers/kubernetes-dashboard-amd64 +dashboard_image_repo: gcr.io/google_containers/kubernetes-dashboard-{{ image_arch }} dashboard_image_tag: v1.8.3 # Limits for dashboard diff --git a/roles/vault/defaults/main.yml b/roles/vault/defaults/main.yml index b194ff18c..1051ca8d6 100644 --- a/roles/vault/defaults/main.yml +++ b/roles/vault/defaults/main.yml @@ -21,10 +21,14 @@ vault_log_dir: "/var/log/vault" vault_version: 0.10.1 vault_binary_checksum: 66f0f1b0b221d664dd5913f8697409d7401df4bb2a19c7277e8fbad152063fae -vault_download_url: "https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version }}_linux_amd64.zip" +vault_download_url: "https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version }}_linux_{{ image_arch }}.zip" + +# Arch of Docker images and needed packages +image_arch: amd64 + vault_download_vars: container: "{{ vault_deployment_type != 'host' }}" - dest: "vault/vault_{{ vault_version }}_linux_amd64.zip" + dest: "vault/vault_{{ vault_version }}_linux_{{ image_arch }}.zip" enabled: true mode: "0755" owner: "vault"