Skip to content

Instantly share code, notes, and snippets.

@yaamai
Created September 6, 2019 06:29
Show Gist options
  • Save yaamai/e24153e2d3bc137a975143ff7f5b7a1a to your computer and use it in GitHub Desktop.
Save yaamai/e24153e2d3bc137a975143ff7f5b7a1a to your computer and use it in GitHub Desktop.
GlusterFS patch for k3s

patch kubernetes

diff --git a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go
index 39659a8..1706400 100644
--- a/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go
+++ b/vendor/k8s.io/kubernetes/cmd/kube-controller-manager/app/plugins.go
@@ -30,6 +30,7 @@ import (
        "k8s.io/kubernetes/pkg/volume/csi"
        "k8s.io/kubernetes/pkg/volume/flexvolume"
        "k8s.io/kubernetes/pkg/volume/host_path"
+        "k8s.io/kubernetes/pkg/volume/glusterfs"
        "k8s.io/kubernetes/pkg/volume/iscsi"
        "k8s.io/kubernetes/pkg/volume/local"
        "k8s.io/kubernetes/pkg/volume/nfs"
@@ -104,6 +105,7 @@ func ProbeControllerVolumePlugins(config kubectrlmgrconfig.VolumeConfiguration)
                klog.Fatalf("Could not create NFS recycler pod from file %s: %+v", config.PersistentVolumeRecyclerConfiguration.PodTemplateFilePathNFS, err)
        }
        allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(nfsConfig)...)
+        allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
        allPlugins = append(allPlugins, local.ProbeVolumePlugins()...)

        return allPlugins
diff --git a/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go b/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go
index d90911a..4dcb47c 100644
--- a/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go
+++ b/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go
@@ -26,6 +26,7 @@ import (
        "k8s.io/kubernetes/pkg/volume/downwardapi"
        "k8s.io/kubernetes/pkg/volume/emptydir"
        "k8s.io/kubernetes/pkg/volume/flexvolume"
+        "k8s.io/kubernetes/pkg/volume/glusterfs"
        "k8s.io/kubernetes/pkg/volume/host_path"
        "k8s.io/kubernetes/pkg/volume/iscsi"
        "k8s.io/kubernetes/pkg/volume/local"
@@ -52,6 +53,7 @@ func ProbeVolumePlugins() []volume.VolumePlugin {
        allPlugins = append(allPlugins, nfs.ProbeVolumePlugins(volume.VolumeConfig{})...)
        allPlugins = append(allPlugins, secret.ProbeVolumePlugins()...)
        allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...)
+        allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...)
        allPlugins = append(allPlugins, downwardapi.ProbeVolumePlugins()...)
        allPlugins = append(allPlugins, configmap.ProbeVolumePlugins()...)
        allPlugins = append(allPlugins, projected.ProbeVolumePlugins()...)

add vendor dependency (manually)

        vendor/github.com/asaskevich/
        vendor/github.com/dgrijalva/
        vendor/github.com/go-ozzo/
        vendor/github.com/heketi/
        vendor/k8s.io/kubernetes/pkg/volume/glusterfs/

change container image base scratch to ubuntu (due to glusterfs not supported in alpine(musl))

diff --git a/package/Dockerfile b/package/Dockerfile
index 4d9a42e..e36b88b 100644
--- a/package/Dockerfile
+++ b/package/Dockerfile
@@ -1,18 +1,21 @@
-FROM alpine:3.10 as base
-RUN apk add -U ca-certificates
+FROM ubuntu:18.04
 ADD build/out/data.tar.gz /image
-RUN mkdir -p /image/etc/ssl/certs /image/run /image/var/run /image/tmp /image/lib/modules /image/lib/firmware && \
-    cp /etc/ssl/certs/ca-certificates.crt /image/etc/ssl/certs/ca-certificates.crt
-RUN cd image/bin && \
+RUN chmod 1777 /tmp && \
+    cd image/bin && \
     rm -f k3s && \
     ln -s k3s-server k3s
-
-FROM scratch
-COPY --from=base /image /
-RUN chmod 1777 /tmp
 VOLUME /var/lib/rancher/k3s
 VOLUME /var/lib/cni
 VOLUME /var/log
-ENV PATH="$PATH:/bin/aux"
-ENTRYPOINT ["/bin/k3s"]
+ENV PATH="$PATH:/image/bin:/bin/aux"
+ENTRYPOINT ["/image/bin/k3s"]
 CMD ["agent"]
+RUN apt-get update && apt-get -y install software-properties-common &&\
+    add-apt-repository ppa:gluster/glusterfs-4.1 &&\
+    apt-get update &&\
+    apt-get -y install glusterfs-client
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment