From 166056da73459563c8ae5f9127ab54cb0aa36505 Mon Sep 17 00:00:00 2001 From: Niklas Wik Date: Sat, 5 Aug 2017 16:28:57 +0300 Subject: [PATCH] Add support for ARM (Raspberry PI) for nfs-client - Reorganized to use Makefile for building - Added arm container for use in ARM based kubernetes clusters Signed-off-by: Niklas Wik --- Makefile | 45 ++++++++++++++++++++++++++ deploy/deployment-arm.yaml | 32 ++++++++++++++++++ build.sh => docker/arm/Dockerfile | 6 ++-- Dockerfile => docker/x86_64/Dockerfile | 0 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 Makefile create mode 100644 deploy/deployment-arm.yaml rename build.sh => docker/arm/Dockerfile (77%) mode change 100755 => 100644 rename Dockerfile => docker/x86_64/Dockerfile (100%) diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..300ac356 --- /dev/null +++ b/Makefile @@ -0,0 +1,45 @@ +# Copyright 2016 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ifeq ($(REGISTRY),) + REGISTRY = quay.io/external_storage/ +endif +ifeq ($(VERSION),) + VERSION = latest +endif +IMAGE = $(REGISTRY)nfs-client-provisioner:$(VERSION) +IMAGE_ARM = $(REGISTRY)nfs-client-provisioner-arm:$(VERSION) +MUTABLE_IMAGE = $(REGISTRY)nfs-client-provisioner:latest + +all: build image build_arm image_arm + +container: build image build_arm image_arm + +build: + CGO_ENABLED=0 go build -o docker/x86_64/nfs-client-provisioner ./cmd/nfs-client-provisioner + +build_arm: + CGO_ENABLED=0 GOARCH=arm GOARM=7 go build -o docker/arm/nfs-client-provisioner ./cmd/nfs-client-provisioner + +image: + sudo docker build -t $(IMAGE) docker/x86_64 + +image_arm: + sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset + sudo docker build -t $(IMAGE_ARM) docker/arm + +push: + docker push $(IMAGE) + docker push $(MUTABLE_IMAGE) + docker push $(IMAGE_ARM) diff --git a/deploy/deployment-arm.yaml b/deploy/deployment-arm.yaml new file mode 100644 index 00000000..9f09acca --- /dev/null +++ b/deploy/deployment-arm.yaml @@ -0,0 +1,32 @@ +kind: Deployment +apiVersion: extensions/v1beta1 +metadata: + name: nfs-client-provisioner +spec: + replicas: 1 + strategy: + type: Recreate + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccount: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: quay.io/external_storage/nfs-client-provisioner-arm:latest + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: fuseim.pri/ifs + - name: NFS_SERVER + value: 192.168.1.20 + - name: NFS_PATH + value: /mnt/kube_nfs + volumes: + - name: nfs-client-root + nfs: + server: 192.168.1.20 + path: /mnt/kube_nfs diff --git a/build.sh b/docker/arm/Dockerfile old mode 100755 new mode 100644 similarity index 77% rename from build.sh rename to docker/arm/Dockerfile index b90b9d36..ba60cc59 --- a/build.sh +++ b/docker/arm/Dockerfile @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,4 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -CGO_ENABLED=0 go build ./cmd/nfs-client-provisioner #&& docker build -t quay.io/jackieli/nfs-client-provisioner . +FROM hypriot/rpi-alpine:3.6 +RUN apk update --no-cache && apk add ca-certificates +COPY nfs-client-provisioner /nfs-client-provisioner +ENTRYPOINT ["/nfs-client-provisioner"] diff --git a/Dockerfile b/docker/x86_64/Dockerfile similarity index 100% rename from Dockerfile rename to docker/x86_64/Dockerfile