Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make driver functionality to work and adopt latest csi-lib-iscsi and csi spec 1.5.0 #70

Merged
merged 2 commits into from
Dec 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.

FROM centos:7.4.1708
FROM ubuntu

# Copy iscsiplugin.sh
COPY iscsiplugin.sh /iscsiplugin.sh
# Copy iscsiplugin from build _output directory
COPY bin/iscsiplugin /iscsiplugin
COPY ./bin/iscsiplugin /iscsiplugin

RUN yum -y install iscsi-initiator-utils e2fsprogs xfsprogs && yum clean all
humblec marked this conversation as resolved.
Show resolved Hide resolved

ENTRYPOINT ["/iscsiplugin.sh"]
ENTRYPOINT ["sh", "/iscsiplugin.sh"]
2 changes: 1 addition & 1 deletion cmd/iscsiplugin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func main() {
flag.CommandLine.Parse([]string{})

cmd := &cobra.Command{
Use: "ISCSI",
Use: "iscsi.csi.k8s.io",
Short: "CSI based ISCSI driver",
Run: func(cmd *cobra.Command, args []string) {
handle()
Expand Down
9 changes: 9 additions & 0 deletions deploy/csi-iscsi-driverinfo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
name: iscsi.csi.k8s.io
spec:
attachRequired: false
volumeLifecycleModes:
- Persistent
153 changes: 153 additions & 0 deletions deploy/csi-iscsi-node.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
# This YAML file contains driver-registrar & csi driver nodeplugin API objects
# that are necessary to run CSI nodeplugin for iscsi
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: csi-iscsi-node
spec:
selector:
matchLabels:
app: csi-iscsi-node
template:
metadata:
labels:
app: csi-iscsi-node
spec:
hostNetwork: true # original iscsi connection would be broken without hostNetwork setting
dnsPolicy: ClusterFirstWithHostNet
nodeSelector:
kubernetes.io/os: linux
containers:
- name: liveness-probe
image: k8s.gcr.io/sig-storage/livenessprobe:v2.1.0
args:
- --csi-address=/csi/csi.sock
- --probe-timeout=3s
- --health-port=29653
- --v=2
volumeMounts:
- name: socket-dir
mountPath: /csi
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 10m
memory: 20Mi
- name: node-driver-registrar
# This is necessary only for systems with SELinux, where
# non-privileged sidecar containers cannot access unix domain socket
# created by privileged CSI driver container.
securityContext:
privileged: true
image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.1.0
args:
- --v=2
- --csi-address=/csi/csi.sock
- --kubelet-registration-path=/var/lib/kubelet/plugins/iscsi.csi.k8s.io/csi.sock
env:
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
volumeMounts:
- name: socket-dir
mountPath: /csi
- name: registration-dir
mountPath: /registration
- name: iscsi
securityContext:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: gcr.io/k8s-staging-sig-storage/iscsiplugin
args:
- "-v=5"
- "--nodeid=$(NODE_ID)"
- "--endpoint=$(CSI_ENDPOINT)"
env:
- name: NODE_ID
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: CSI_ENDPOINT
value: unix:///csi/csi.sock
ports:
- containerPort: 29653
name: healthz
protocol: TCP
livenessProbe:
failureThreshold: 5
httpGet:
path: /healthz
port: healthz
initialDelaySeconds: 30
timeoutSeconds: 10
periodSeconds: 30
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: socket-dir
mountPath: /csi
- name: pods-mount-dir
mountPath: /var/lib/kubelet/pods
mountPropagation: "Bidirectional"
- name: host-dev
mountPath: /dev
- name: host-root
mountPath: /host
mountPropagation: "HostToContainer"
- name: chroot-iscsiadm
mountPath: /sbin/iscsiadm
subPath: iscsiadm
- name: iscsi-csi-run-dir
mountPath: /var/run/iscsi.csi.k8s.io
volumes:
- name: socket-dir
hostPath:
path: /var/lib/kubelet/plugins/iscsi.csi.k8s.io
type: DirectoryOrCreate
- name: pods-mount-dir
hostPath:
path: /var/lib/kubelet/pods
type: Directory
- name: registration-dir
hostPath:
path: /var/lib/kubelet/plugins_registry
type: Directory
- name: host-dev
hostPath:
path: /dev
- name: host-root
hostPath:
path: /
type: Directory
- name: chroot-iscsiadm
configMap:
defaultMode: 0555
name: configmap-csi-iscsiadm
- name: iscsi-csi-run-dir
hostPath:
path: /var/run/iscsi.csi.k8s.io
---
kind: ConfigMap
apiVersion: v1
metadata:
name: configmap-csi-iscsiadm
data:
iscsiadm: |
#!/bin/sh
if [ -x /host/sbin/iscsiadm ]; then
chroot /host /sbin/iscsiadm "$@"
humblec marked this conversation as resolved.
Show resolved Hide resolved
elif [ -x /host/usr/local/sbin/iscsiadm ]; then
chroot /host /usr/local/sbin/iscsiadm "$@"
elif [ -x /host/bin/iscsiadm ]; then
chroot /host /bin/iscsiadm "$@"
elif [ -x /host/usr/local/bin/iscsiadm ]; then
chroot /host /usr/local/bin/iscsiadm "$@"
else
chroot /host iscsiadm "$@"
fi
---
39 changes: 39 additions & 0 deletions deploy/install-driver.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

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

set -euo pipefail

ver="master"
if [[ "$#" -gt 0 ]]; then
ver="$1"
fi

repo="https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/$ver/deploy"
if [[ "$#" -gt 1 ]]; then
if [[ "$2" == *"local"* ]]; then
echo "use local deploy"
repo="./deploy"
fi
fi

if [ $ver != "master" ]; then
repo="$repo/$ver"
fi

echo "Installing iscsi.csi.k8s.io CSI driver, version: $ver ..."
kubectl apply -f $repo/csi-iscsi-driverinfo.yaml
kubectl apply -f $repo/csi-iscsi-node.yaml
echo 'iscsi.csi.k8s.io CSI driver installed successfully.'
6 changes: 3 additions & 3 deletions examples/kubernetes/pv.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ spec:
capacity:
storage: 1Gi
csi:
driver: ISCSI
driver: iscsi.csi.k8s.io
volumeHandle: iscsi-data-id
volumeAttributes:
targetPortal: "192.168.122.145:3260"
targetPortal: "192.168.0.107:3260"
portals: "[]"
iqn: "iqn.2003-01.org.linux-iscsi.example:targeted"
iqn: "iqn.2015-06.com.example.test:target1"
lun: "0"
iscsiInterface: "default"
discoveryCHAPAuth: "false"
Expand Down
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ module github.com/kubernetes-csi/csi-driver-iscsi
go 1.16

require (
github.com/container-storage-interface/spec v1.4.0
github.com/kubernetes-csi/csi-lib-iscsi v0.0.0-20210519140452-fd47a25d3e16
github.com/kubernetes-csi/csi-lib-utils v0.9.1
github.com/container-storage-interface/spec v1.5.0
github.com/kubernetes-csi/csi-lib-iscsi v0.0.0-20211110090527-5c802c48a124
github.com/kubernetes-csi/csi-lib-utils v0.10.0
github.com/spf13/cobra v1.1.3
golang.org/x/net v0.0.0-20210510120150-4163338589ed
google.golang.org/grpc v1.37.1
k8s.io/klog/v2 v2.8.0
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023
google.golang.org/grpc v1.38.0
k8s.io/klog/v2 v2.9.0
k8s.io/kubernetes v1.21.1
k8s.io/mount-utils v0.21.1-rc.0 // indirect
k8s.io/utils v0.0.0-20210305010621-2afb4311ab10
Expand Down
Loading