Skip to content

Commit

Permalink
Modify GCI mounter to enable NFSv3
Browse files Browse the repository at this point in the history
This PR is a retry for PR kubernetes#36610
  • Loading branch information
jingxu97 committed Nov 29, 2016
1 parent 4a3c7ae commit 80f2e58
Show file tree
Hide file tree
Showing 8 changed files with 84 additions and 12 deletions.
4 changes: 2 additions & 2 deletions cluster/gce/gci/configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@ function split-commas {

function install-gci-mounter-tools {
local -r rkt_version="v1.18.0"
local -r gci_mounter_version="v2"
local -r gci_mounter_version="v3"
local -r rkt_binary_sha1="75fc8f29c79bc9e505f3e7f6e8fadf2425c21967"
local -r rkt_stage1_fly_sha1="474df5a1f934960ba669b360ab713d0a54283091"
local -r gci_mounter_sha1="851e841d8640d6a05e64e22c493f5ac3c4cba561"
local -r gci_mounter_sha1="6ae71998bf9deba06468b036c2ba126626e0050d"
download-or-bust "${rkt_binary_sha1}" "https://storage.googleapis.com/kubernetes-release/rkt/${rkt_version}/rkt"
download-or-bust "${rkt_stage1_fly_sha1}" "https://storage.googleapis.com/kubernetes-release/rkt/${rkt_version}/stage1-fly.aci"
download-or-bust "${gci_mounter_sha1}" "https://storage.googleapis.com/kubernetes-release/gci-mounter/gci-mounter-${gci_mounter_version}.aci"
Expand Down
4 changes: 4 additions & 0 deletions cluster/gce/gci/mounter/Changelog
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@
## v2 (Fri Oct 28 2016 Vishnu Kannan <[email protected]>)
- Adding netbase package.
- Digest: sha256:c7dfe059fbbf976fc4284a87eb18adf0f8e0c4cf30a30f5a852842c772a64c2d

## v3 (Fri Nov 11 2016 Jing Xu <[email protected]>)
- Add startmounter.sh script to start rpcbind before mounting for NFSv3
- Digest: sha256:35bc48a1ca97c3971611dc4662d08d131869daa692acb281c7e9e052924e38b1
4 changes: 2 additions & 2 deletions cluster/gce/gci/mounter/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ FROM ubuntu:xenial
MAINTAINER [email protected]

RUN apt-get update && apt-get install -y netbase nfs-common=1:1.2.8-9ubuntu12 glusterfs-client=3.7.6-1ubuntu1

ENTRYPOINT ["/bin/mount"]
ADD startmounter.sh /startmounter.sh
ENTRYPOINT ["/startmounter.sh"]
2 changes: 1 addition & 1 deletion cluster/gce/gci/mounter/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

TAG=v2
TAG=v3
REGISTRY=gcr.io/google_containers
IMAGE=gci-mounter

Expand Down
20 changes: 14 additions & 6 deletions cluster/gce/gci/mounter/mounter
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ set -o errexit
set -o nounset
set -o pipefail

MOUNTER_VERSION=v2
MOUNTER_VERSION=v3
MOUNTER_USER=root
ROOT_DIR=/home/kubernetes/bin
RKT_BINARY=${ROOT_DIR}/rkt
Expand Down Expand Up @@ -46,10 +46,18 @@ fi

echo "Running mount using a rkt fly container"

${RKT_BINARY} run --stage1-path=${STAGE1_ACI} \
--insecure-options=image \
--volume=kubelet,kind=host,source=/var/lib/kubelet,readOnly=false,recursive=true \
--mount volume=kubelet,target=/var/lib/kubelet \
${MOUNTER_IMAGE} --user=${MOUNTER_USER} --exec /bin/mount -- "$@"
if [ "$#" -eq 0 ]; then
${RKT_BINARY} run --stage1-path=${STAGE1_ACI} \
--insecure-options=image \
--volume=kubelet,kind=host,source=/var/lib/kubelet,readOnly=false,recursive=true \
--mount volume=kubelet,target=/var/lib/kubelet \
${MOUNTER_IMAGE} --user=${MOUNTER_USER} --exec /bin/mount
else
${RKT_BINARY} run --stage1-path=${STAGE1_ACI} \
--insecure-options=image \
--volume=kubelet,kind=host,source=/var/lib/kubelet,readOnly=false,recursive=true \
--mount volume=kubelet,target=/var/lib/kubelet \
${MOUNTER_IMAGE} --user=${MOUNTER_USER} --exec /startmounter.sh -- "$@"
fi

echo "Successfully ran mount using a rkt fly container"
26 changes: 26 additions & 0 deletions cluster/gce/gci/mounter/startmounter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

# 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.

# start rpcbind if it is not started yet
s=`/etc/init.d/rpcbind status`
if [[ $s == *"not running"* ]]; then
echo "Starting rpcbind: /sbin/rpcbind -w"
/sbin/rpcbind -w
fi
echo `/etc/init.d/rpcbind status`

# mount with passing paramaters
/bin/mount "${@}"
34 changes: 34 additions & 0 deletions test/e2e/common/volumes.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,40 @@ var _ = framework.KubeDescribe("GCP Volumes", func() {
})
})

////////////////////////////////////////////////////////////////////////
// NFSv3
////////////////////////////////////////////////////////////////////////

framework.KubeDescribe("NFSv3", func() {
It("should be mountable for NFSv3", func() {
config := VolumeTestConfig{
namespace: namespace.Name,
prefix: "nfs",
serverImage: "gcr.io/google_containers/volume-nfs:0.8",
serverPorts: []int{2049, 20048},
}

defer func() {
if clean {
volumeTestCleanup(f, config)
}
}()
pod := startVolumeServer(f, config)
serverIP := pod.Status.PodIP
framework.Logf("NFS server IP address: %v", serverIP)

volume := v1.VolumeSource{
NFS: &v1.NFSVolumeSource{
Server: serverIP,
Path: "/exports",
ReadOnly: true,
},
}
// Must match content of test/images/volumes-tester/nfs/index.html
testVolumeClient(f, config, volume, nil, "Hello from NFS!")
})
})

////////////////////////////////////////////////////////////////////////
// Gluster
////////////////////////////////////////////////////////////////////////
Expand Down
2 changes: 1 addition & 1 deletion test/e2e_node/jenkins/gci-init.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ runcmd:
- mount -B -o remount,exec /home/kubernetes/bin
- wget https://storage.googleapis.com/kubernetes-release/rkt/v1.18.0/rkt -O /home/kubernetes/bin/rkt
- wget https://storage.googleapis.com/kubernetes-release/rkt/v1.18.0/stage1-fly.aci -O /home/kubernetes/bin/stage1-fly.aci
- wget https://storage.googleapis.com/kubernetes-release/gci-mounter/gci-mounter-v2.aci -O /home/kubernetes/bin/gci-mounter-v2.aci
- wget https://storage.googleapis.com/kubernetes-release/gci-mounter/gci-mounter-v3.aci -O /home/kubernetes/bin/gci-mounter-v3.aci
- chmod a+x /home/kubernetes/bin/rkt

0 comments on commit 80f2e58

Please sign in to comment.