From ad4784b54b870e78ea2af382a1449e8235637b57 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz Date: Thu, 11 May 2017 18:52:10 +0200 Subject: [PATCH] kubernetes: get it working on AArch64 as well In past I disabled those images on non-x86 because had lot of other things to do. Now it is time to get it running on aarch64 too. Had to revert rename done in 5a530be776c4897523e3419e69d798de0dc1755c so backward compatibility is broken ;( Change-Id: I44160dfb1d151e97d473e6c13194e043657094a8 Partially-Implements: blueprint multiarch-and-arm64-containers --- .../Dockerfile.j2 | 6 +++--- docker/kube/kube-base/Dockerfile.j2 | 12 +++++++----- .../Dockerfile.j2 | 6 +++--- .../Dockerfile.j2 | 6 +++--- .../{kube-proxy-amd64 => kube-proxy}/Dockerfile.j2 | 6 +++--- .../Dockerfile.j2 | 6 +++--- .../notes/kubernetes-for-arm64-b149983c7e11ab60.yaml | 11 +++++++++++ 7 files changed, 33 insertions(+), 20 deletions(-) rename docker/kube/{kube-apiserver-amd64 => kube-apiserver}/Dockerfile.j2 (76%) rename docker/kube/{kube-controller-manager-amd64 => kube-controller-manager}/Dockerfile.j2 (83%) rename docker/kube/{kube-discovery-amd64 => kube-discovery}/Dockerfile.j2 (78%) rename docker/kube/{kube-proxy-amd64 => kube-proxy}/Dockerfile.j2 (77%) rename docker/kube/{kube-scheduler-amd64 => kube-scheduler}/Dockerfile.j2 (76%) create mode 100644 releasenotes/notes/kubernetes-for-arm64-b149983c7e11ab60.yaml diff --git a/docker/kube/kube-apiserver-amd64/Dockerfile.j2 b/docker/kube/kube-apiserver/Dockerfile.j2 similarity index 76% rename from docker/kube/kube-apiserver-amd64/Dockerfile.j2 rename to docker/kube/kube-apiserver/Dockerfile.j2 index de522ff660..c0918ce407 100644 --- a/docker/kube/kube-apiserver-amd64/Dockerfile.j2 +++ b/docker/kube/kube-apiserver/Dockerfile.j2 @@ -3,9 +3,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_COMPONENT=kube-apiserver -{% block kube_apiserver_amd64_header %}{% endblock %} +{% block kube_apiserver_header %}{% endblock %} -{% block kube_apiserver_amd64_install %} +{% block kube_apiserver_install %} RUN true \ && curl -L ${KUBERNETES_DOWNLOAD_ROOT}/${KUBERNETES_COMPONENT} -o /usr/bin/${KUBERNETES_COMPONENT} \ && chmod +x /usr/bin/${KUBERNETES_COMPONENT} @@ -15,5 +15,5 @@ RUN true \ ENTRYPOINT [] CMD [] -{% block kube_apiserver_amd64_footer %}{% endblock %} +{% block kube_apiserver_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/kube/kube-base/Dockerfile.j2 b/docker/kube/kube-base/Dockerfile.j2 index 907bef68e6..283e69d432 100644 --- a/docker/kube/kube-base/Dockerfile.j2 +++ b/docker/kube/kube-base/Dockerfile.j2 @@ -3,14 +3,16 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_VERSION=v1.5.4 -{% if base_arch != 'x86_64' %} - +{% if base_arch == 'x86_64' %} +ENV KUBE_ARCH=amd64 +{% elif base_arch == 'aarch64' %} +ENV KUBE_ARCH=arm64 +{% else %} RUN echo 'Kubernetes images not yet available for {{ base_arch }}' \ - && /bin/false - +&& /bin/false {% endif %} -ENV KUBERNETES_DOWNLOAD_ROOT=https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64 +ENV KUBERNETES_DOWNLOAD_ROOT=https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/${KUBE_ARCH} {% block kube_base_header %}{% endblock %} diff --git a/docker/kube/kube-controller-manager-amd64/Dockerfile.j2 b/docker/kube/kube-controller-manager/Dockerfile.j2 similarity index 83% rename from docker/kube/kube-controller-manager-amd64/Dockerfile.j2 rename to docker/kube/kube-controller-manager/Dockerfile.j2 index 452a936f4f..6494bd0e87 100644 --- a/docker/kube/kube-controller-manager-amd64/Dockerfile.j2 +++ b/docker/kube/kube-controller-manager/Dockerfile.j2 @@ -3,7 +3,7 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_COMPONENT=kube-controller-manager -{% block kube_controller_manager_amd64_header %}{% endblock %} +{% block kube_controller_manager_header %}{% endblock %} {% import "macros.j2" as macros with context %} @@ -18,7 +18,7 @@ ENV KUBERNETES_COMPONENT=kube-controller-manager {% endif %} {{ macros.install_packages(ceph_support_packages | customizable("packages")) }} -{% block kube_controller_manager_amd64_install %} +{% block kube_controller_manager_install %} RUN true \ && curl -L ${KUBERNETES_DOWNLOAD_ROOT}/${KUBERNETES_COMPONENT} -o /usr/bin/${KUBERNETES_COMPONENT} \ && chmod +x /usr/bin/${KUBERNETES_COMPONENT} @@ -28,5 +28,5 @@ RUN true \ ENTRYPOINT [] CMD [] -{% block kube_controller_manager_amd64_footer %}{% endblock %} +{% block kube_controller_manager_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/kube/kube-discovery-amd64/Dockerfile.j2 b/docker/kube/kube-discovery/Dockerfile.j2 similarity index 78% rename from docker/kube/kube-discovery-amd64/Dockerfile.j2 rename to docker/kube/kube-discovery/Dockerfile.j2 index b347525c0d..09cf9ecbe9 100644 --- a/docker/kube/kube-discovery-amd64/Dockerfile.j2 +++ b/docker/kube/kube-discovery/Dockerfile.j2 @@ -3,9 +3,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_COMPONENT=kube-discovery -{% block kube_discovery_amd64_header %}{% endblock %} +{% block kube_discovery_header %}{% endblock %} -{% block kube_discovery_amd64_install %} +{% block kube_discovery_install %} # To match upstream we load the binary to /usr/local/bin RUN true \ && curl -L ${KUBERNETES_DOWNLOAD_ROOT}/${KUBERNETES_COMPONENT} -o /usr/local/bin/${KUBERNETES_COMPONENT} \ @@ -16,5 +16,5 @@ RUN true \ ENTRYPOINT [] CMD [] -{% block kube_discovery_amd64_footer %}{% endblock %} +{% block kube_discovery_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/kube/kube-proxy-amd64/Dockerfile.j2 b/docker/kube/kube-proxy/Dockerfile.j2 similarity index 77% rename from docker/kube/kube-proxy-amd64/Dockerfile.j2 rename to docker/kube/kube-proxy/Dockerfile.j2 index aff253b66e..56532e4a43 100644 --- a/docker/kube/kube-proxy-amd64/Dockerfile.j2 +++ b/docker/kube/kube-proxy/Dockerfile.j2 @@ -3,9 +3,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_COMPONENT=kube-proxy -{% block kube_proxy_amd64_header %}{% endblock %} +{% block kube_proxy_header %}{% endblock %} -{% block kube_proxy_amd64_install %} +{% block kube_proxy_install %} RUN true \ && curl -L ${KUBERNETES_DOWNLOAD_ROOT}/${KUBERNETES_COMPONENT} -o /usr/bin/${KUBERNETES_COMPONENT} \ && chmod +x /usr/bin/${KUBERNETES_COMPONENT} @@ -15,5 +15,5 @@ RUN true \ ENTRYPOINT [] CMD [] -{% block kube_proxy_amd64_footer %}{% endblock %} +{% block kube_proxy_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/docker/kube/kube-scheduler-amd64/Dockerfile.j2 b/docker/kube/kube-scheduler/Dockerfile.j2 similarity index 76% rename from docker/kube/kube-scheduler-amd64/Dockerfile.j2 rename to docker/kube/kube-scheduler/Dockerfile.j2 index d1babfb783..8f4adc061d 100644 --- a/docker/kube/kube-scheduler-amd64/Dockerfile.j2 +++ b/docker/kube/kube-scheduler/Dockerfile.j2 @@ -3,9 +3,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build ENV KUBERNETES_COMPONENT=kube-scheduler -{% block kube_scheduler_amd64_header %}{% endblock %} +{% block kube_scheduler_header %}{% endblock %} -{% block kube_scheduler_amd64_install %} +{% block kube_scheduler_install %} RUN true \ && curl -L ${KUBERNETES_DOWNLOAD_ROOT}/${KUBERNETES_COMPONENT} -o /usr/bin/${KUBERNETES_COMPONENT} \ && chmod +x /usr/bin/${KUBERNETES_COMPONENT} @@ -15,5 +15,5 @@ RUN true \ ENTRYPOINT [] CMD [] -{% block kube_scheduler_amd64_footer %}{% endblock %} +{% block kube_scheduler_footer %}{% endblock %} {% block footer %}{% endblock %} diff --git a/releasenotes/notes/kubernetes-for-arm64-b149983c7e11ab60.yaml b/releasenotes/notes/kubernetes-for-arm64-b149983c7e11ab60.yaml new file mode 100644 index 0000000000..74ffc5a4f8 --- /dev/null +++ b/releasenotes/notes/kubernetes-for-arm64-b149983c7e11ab60.yaml @@ -0,0 +1,11 @@ +--- +features: + - | + Kubernetes images can be now built also for aarch64 architecture. +issues: + - | + Kubernetes images got renamed - "_amd64" suffix was dropped. +upgrade: + - | + Kubernetes images got renamed - "_amd64" suffix was dropped so upgrade path + may need special care.