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 <niklas.wik@iki.fi>
This commit is contained in:
Niklas Wik 2017-08-05 16:28:57 +03:00
parent 53163dd4b2
commit 166056da73
4 changed files with 81 additions and 2 deletions

45
Makefile Normal file
View File

@ -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)

View File

@ -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

6
build.sh → docker/arm/Dockerfile Executable file → Normal file
View File

@ -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"]