mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
update ceph-csi to build and use a single docker image
currently, we have 3 docker files(cephcsi,rbd,cephfs) in the ceph-csi repo.
[commit ](85e121ebfe
)
added by John to build a single image which can act as rbd or
cephfs based on the input configuration.
This PR updates the makefile and kubernetes templates to use
the unified image and also its deletes the other two dockerfiles.
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
parent
7599d42f1b
commit
2d560ba087
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,14 +1,8 @@
|
|||||||
# build directory
|
# build directory
|
||||||
/output*/
|
|
||||||
/_output*/
|
/_output*/
|
||||||
/_output
|
|
||||||
|
|
||||||
# docker build
|
# docker build
|
||||||
/deploy/rbd/docker/rbdplugin
|
/deploy/cephcsi/image/cephcsi
|
||||||
/deploy/cephfs/docker/cephfsplugin
|
|
||||||
|
|
||||||
# rbdplugin executable
|
|
||||||
rbdplugin
|
|
||||||
|
|
||||||
# Emacs save files
|
# Emacs save files
|
||||||
*~
|
*~
|
||||||
|
37
Makefile
37
Makefile
@ -16,17 +16,10 @@
|
|||||||
|
|
||||||
CONTAINER_CMD?=docker
|
CONTAINER_CMD?=docker
|
||||||
|
|
||||||
RBD_IMAGE_NAME=$(if $(ENV_RBD_IMAGE_NAME),$(ENV_RBD_IMAGE_NAME),quay.io/cephcsi/rbdplugin)
|
CSI_IMAGE_NAME=$(if $(ENV_CSI_IMAGE_NAME),$(ENV_CSI_IMAGE_NAME),quay.io/cephcsi/cephcsi)
|
||||||
RBD_IMAGE_VERSION=$(if $(ENV_RBD_IMAGE_VERSION),$(ENV_RBD_IMAGE_VERSION),canary)
|
CSI_IMAGE_VERSION=$(if $(ENV_CSI_IMAGE_VERSION),$(ENV_CSI_IMAGE_VERSION),canary)
|
||||||
|
|
||||||
CEPHFS_IMAGE_NAME=$(if $(ENV_CEPHFS_IMAGE_NAME),$(ENV_CEPHFS_IMAGE_NAME),quay.io/cephcsi/cephfsplugin)
|
$(info cephcsi image settings: $(CSI_IMAGE_NAME) version $(CSI_IMAGE_VERSION))
|
||||||
CEPHFS_IMAGE_VERSION=$(if $(ENV_CEPHFS_IMAGE_VERSION),$(ENV_CEPHFS_IMAGE_VERSION),canary)
|
|
||||||
|
|
||||||
CSI_IMAGE_NAME?=quay.io/cephcsi/cephcsi
|
|
||||||
CSI_IMAGE_VERSION?=canary
|
|
||||||
|
|
||||||
$(info rbd image settings: $(RBD_IMAGE_NAME) version $(RBD_IMAGE_VERSION))
|
|
||||||
$(info cephfs image settings: $(CEPHFS_IMAGE_NAME) version $(CEPHFS_IMAGE_VERSION))
|
|
||||||
|
|
||||||
all: cephcsi
|
all: cephcsi
|
||||||
|
|
||||||
@ -45,26 +38,14 @@ cephcsi:
|
|||||||
CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/cephcsi ./cmd/
|
CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/cephcsi ./cmd/
|
||||||
|
|
||||||
image-cephcsi: cephcsi
|
image-cephcsi: cephcsi
|
||||||
cp deploy/cephcsi/image/Dockerfile _output
|
cp _output/cephcsi deploy/cephcsi/image/cephcsi
|
||||||
$(CONTAINER_CMD) build -t $(CSI_IMAGE_NAME):$(CSI_IMAGE_VERSION) _output
|
$(CONTAINER_CMD) build -t $(CSI_IMAGE_NAME):$(CSI_IMAGE_VERSION) deploy/cephcsi/image
|
||||||
|
|
||||||
image-rbdplugin: cephcsi
|
push-image-cephcsi: image-cephcsi
|
||||||
cp _output/cephcsi deploy/rbd/docker/rbdplugin
|
$(CONTAINER_CMD) push $(CSI_IMAGE_NAME):$(CSI_IMAGE_VERSION)
|
||||||
$(CONTAINER_CMD) build -t $(RBD_IMAGE_NAME):$(RBD_IMAGE_VERSION) deploy/rbd/docker
|
|
||||||
|
|
||||||
image-cephfsplugin: cephcsi
|
|
||||||
cp _output/cephcsi deploy/cephfs/docker/cephfsplugin
|
|
||||||
$(CONTAINER_CMD) build -t $(CEPHFS_IMAGE_NAME):$(CEPHFS_IMAGE_VERSION) deploy/cephfs/docker
|
|
||||||
|
|
||||||
push-image-rbdplugin: image-rbdplugin
|
|
||||||
$(CONTAINER_CMD) push $(RBD_IMAGE_NAME):$(RBD_IMAGE_VERSION)
|
|
||||||
|
|
||||||
push-image-cephfsplugin: image-cephfsplugin
|
|
||||||
$(CONTAINER_CMD) push $(CEPHFS_IMAGE_NAME):$(CEPHFS_IMAGE_VERSION)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
go clean -r -x
|
go clean -r -x
|
||||||
rm -f deploy/rbd/docker/rbdplugin
|
rm -f deploy/cephcsi/image/cephcsi
|
||||||
rm -f deploy/cephfs/docker/cephfsplugin
|
rm -f _output/cephcsi
|
||||||
rm -f _output/rbdplugin
|
|
||||||
rm -f _output/cephfsplugin
|
|
||||||
|
@ -103,7 +103,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Fatalln(err) // calls exit
|
klog.Fatalln(err) // calls exit
|
||||||
}
|
}
|
||||||
|
klog.Infof("Starting driver type: %v with name: %v", driverType, dname)
|
||||||
switch driverType {
|
switch driverType {
|
||||||
case rbdType:
|
case rbdType:
|
||||||
rbd.PluginFolder = rbd.PluginFolder + dname
|
rbd.PluginFolder = rbd.PluginFolder + dname
|
||||||
|
@ -28,8 +28,7 @@ if [ "${TRAVIS_BRANCH}" == 'csi-v0.3' ]; then
|
|||||||
export ENV_RBD_IMAGE_VERSION='v0.3-canary'
|
export ENV_RBD_IMAGE_VERSION='v0.3-canary'
|
||||||
export ENV_CEPHFS_IMAGE_VERSION='v0.3-canary'
|
export ENV_CEPHFS_IMAGE_VERSION='v0.3-canary'
|
||||||
elif [ "${TRAVIS_BRANCH}" == 'master' ]; then
|
elif [ "${TRAVIS_BRANCH}" == 'master' ]; then
|
||||||
export ENV_RBD_IMAGE_VERSION='canary'
|
export ENV_CSI_IMAGE_VERSION='canary'
|
||||||
export ENV_CEPHFS_IMAGE_VERSION='canary'
|
|
||||||
else
|
else
|
||||||
echo "!!! Branch ${TRAVIS_BRANCH} is not a deployable branch; exiting"
|
echo "!!! Branch ${TRAVIS_BRANCH} is not a deployable branch; exiting"
|
||||||
exit 0 # Exiting 0 so that this isn't marked as failing
|
exit 0 # Exiting 0 so that this isn't marked as failing
|
||||||
@ -37,7 +36,7 @@ fi
|
|||||||
|
|
||||||
if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
||||||
"${CONTAINER_CMD:-docker}" login -u "${QUAY_IO_USERNAME}" -p "${QUAY_IO_PASSWORD}" quay.io
|
"${CONTAINER_CMD:-docker}" login -u "${QUAY_IO_USERNAME}" -p "${QUAY_IO_PASSWORD}" quay.io
|
||||||
make push-image-rbdplugin push-image-cephfsplugin
|
make push-image-cephcsi
|
||||||
|
|
||||||
set -xe
|
set -xe
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
FROM ceph/ceph:v14.2
|
FROM ceph/ceph:v14.2
|
||||||
LABEL maintainers="Ceph-CSI Authors"
|
LABEL maintainers="Ceph-CSI Authors"
|
||||||
LABEL description="Ceph-CSI Plugin"
|
LABEL description="Ceph-CSI Plugin"
|
||||||
@ -7,8 +6,6 @@ ENV CSIBIN=/usr/local/bin/cephcsi
|
|||||||
|
|
||||||
COPY cephcsi $CSIBIN
|
COPY cephcsi $CSIBIN
|
||||||
|
|
||||||
RUN chmod +x $CSIBIN && \
|
RUN chmod +x $CSIBIN
|
||||||
ln -sf $CSIBIN /usr/local/bin/cephcsi-rbd && \
|
|
||||||
ln -sf $CSIBIN /usr/local/bin/cephcsi-cephfs
|
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/cephcsi"]
|
ENTRYPOINT ["/usr/local/bin/cephcsi"]
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
FROM centos:7
|
|
||||||
LABEL maintainers="Kubernetes Authors"
|
|
||||||
LABEL description="CephFS CSI Plugin"
|
|
||||||
|
|
||||||
ENV CEPH_VERSION "mimic"
|
|
||||||
RUN yum install -y centos-release-ceph && \
|
|
||||||
yum install -y kmod ceph-common ceph-fuse attr && \
|
|
||||||
yum clean all
|
|
||||||
|
|
||||||
COPY cephfsplugin /cephfsplugin
|
|
||||||
|
|
||||||
RUN chmod +x /cephfsplugin && \
|
|
||||||
mkdir -p /var/log/ceph
|
|
||||||
|
|
||||||
ENTRYPOINT ["/cephfsplugin"]
|
|
@ -25,7 +25,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.nodeplugin" . }}
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
hostPID: true
|
hostPID: true
|
||||||
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
# to use e.g. Rook orchestrated cluster, and mons' FQDN is
|
||||||
# resolved through k8s service, set dns policy to cluster first
|
# resolved through k8s service, set dns policy to cluster first
|
||||||
dnsPolicy: ClusterFirstWithHostNet
|
dnsPolicy: ClusterFirstWithHostNet
|
||||||
@ -66,6 +66,7 @@ spec:
|
|||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
args :
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=cephfs"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
@ -97,7 +98,7 @@ spec:
|
|||||||
- mountPath: /dev
|
- mountPath: /dev
|
||||||
name: host-dev
|
name: host-dev
|
||||||
- mountPath: /rootfs
|
- mountPath: /rootfs
|
||||||
name: host-rootfs
|
name: host-rootfs
|
||||||
- mountPath: /sys
|
- mountPath: /sys
|
||||||
name: host-sys
|
name: host-sys
|
||||||
- mountPath: /lib/modules
|
- mountPath: /lib/modules
|
||||||
@ -129,7 +130,7 @@ spec:
|
|||||||
path: /dev
|
path: /dev
|
||||||
- name: host-rootfs
|
- name: host-rootfs
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /
|
path: /
|
||||||
- name: host-sys
|
- name: host-sys
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /sys
|
path: /sys
|
||||||
|
@ -64,6 +64,7 @@ spec:
|
|||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
args :
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=cephfs"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
|
@ -49,8 +49,9 @@ nodeplugin:
|
|||||||
|
|
||||||
plugin:
|
plugin:
|
||||||
image:
|
image:
|
||||||
repository: quay.io/cephcsi/cephfsplugin
|
repository: quay.io/cephcsi/cephcsi
|
||||||
tag: v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
tag: canary
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
resources: {}
|
resources: {}
|
||||||
|
@ -56,9 +56,11 @@ spec:
|
|||||||
privileged: true
|
privileged: true
|
||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
image: quay.io/cephcsi/cephfsplugin:v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
image: quay.io/cephcsi/cephcsi:canary
|
||||||
args:
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=cephfs"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=cephfs.csi.ceph.com"
|
- "--drivername=cephfs.csi.ceph.com"
|
||||||
|
@ -48,9 +48,11 @@ spec:
|
|||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
allowPrivilegeEscalation: true
|
allowPrivilegeEscalation: true
|
||||||
image: quay.io/cephcsi/cephfsplugin:v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
image: quay.io/cephcsi/cephcsi:canary
|
||||||
args:
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=cephfs"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=cephfs.csi.ceph.com"
|
- "--drivername=cephfs.csi.ceph.com"
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
FROM centos:7
|
|
||||||
LABEL maintainers="Kubernetes Authors"
|
|
||||||
LABEL description="RBD CSI Plugin"
|
|
||||||
|
|
||||||
ENV CEPH_VERSION "mimic"
|
|
||||||
RUN yum install -y centos-release-ceph && \
|
|
||||||
yum install -y ceph-common e2fsprogs xfsprogs rbd-nbd && \
|
|
||||||
yum clean all
|
|
||||||
|
|
||||||
COPY rbdplugin /rbdplugin
|
|
||||||
RUN chmod +x /rbdplugin
|
|
||||||
ENTRYPOINT ["/rbdplugin"]
|
|
@ -66,6 +66,7 @@ spec:
|
|||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
args :
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=rbd"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
|
@ -81,6 +81,7 @@ spec:
|
|||||||
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}"
|
||||||
args :
|
args :
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=rbd"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=$(DRIVER_NAME)"
|
- "--drivername=$(DRIVER_NAME)"
|
||||||
|
@ -51,8 +51,9 @@ nodeplugin:
|
|||||||
|
|
||||||
plugin:
|
plugin:
|
||||||
image:
|
image:
|
||||||
repository: quay.io/cephcsi/rbdplugin
|
repository: quay.io/cephcsi/cephcsi
|
||||||
tag: v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
tag: canary
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
resources: {}
|
resources: {}
|
||||||
|
@ -71,9 +71,11 @@ spec:
|
|||||||
privileged: true
|
privileged: true
|
||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
image: quay.io/cephcsi/rbdplugin:v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
image: quay.io/cephcsi/cephcsi:canary
|
||||||
args:
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=rbd"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=rbd.csi.ceph.com"
|
- "--drivername=rbd.csi.ceph.com"
|
||||||
|
@ -49,9 +49,11 @@ spec:
|
|||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
allowPrivilegeEscalation: true
|
allowPrivilegeEscalation: true
|
||||||
image: quay.io/cephcsi/rbdplugin:v1.0.0
|
# for stable functionality replace canary with latest release version
|
||||||
|
image: quay.io/cephcsi/cephcsi:canary
|
||||||
args:
|
args:
|
||||||
- "--nodeid=$(NODE_ID)"
|
- "--nodeid=$(NODE_ID)"
|
||||||
|
- "--type=rbd"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
- "--v=5"
|
- "--v=5"
|
||||||
- "--drivername=rbd.csi.ceph.com"
|
- "--drivername=rbd.csi.ceph.com"
|
||||||
|
@ -5,12 +5,12 @@ and attach and mount existing ones to workloads.
|
|||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
CSI CephFS plugin can be compiled in the form of a binary file or in the form
|
CSI plugin can be compiled in the form of a binary file or in the form
|
||||||
of a Docker image.
|
of a Docker image.
|
||||||
When compiled as a binary file, the result is stored in `_output/`
|
When compiled as a binary file, the result is stored in `_output/`
|
||||||
directory with the name `cephcsi`.
|
directory with the name `cephcsi`.
|
||||||
When compiled as an image, it's stored in the local Docker image store
|
When compiled as an image, it's stored in the local Docker image store
|
||||||
with name `cephfsplugin`.
|
with name `cephcsi`.
|
||||||
|
|
||||||
Building binary:
|
Building binary:
|
||||||
|
|
||||||
@ -21,21 +21,22 @@ make cephcsi
|
|||||||
Building Docker image:
|
Building Docker image:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make image-cephfsplugin
|
make image-cephcsi
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
**Available command line arguments:**
|
**Available command line arguments:**
|
||||||
|
|
||||||
Option | Default value | Description
|
| Option | Default value | Description |
|
||||||
--------------------|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| ------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
`--endpoint` | `unix://tmp/csi.sock` | CSI endpoint, must be a UNIX socket
|
| `--endpoint` | `unix://tmp/csi.sock` | CSI endpoint, must be a UNIX socket |
|
||||||
`--drivername` | `cephfs.csi.ceph.com` | name of the driver (Kubernetes: `provisioner` field in StorageClass must correspond to this value)
|
| `--drivername` | `cephfs.csi.ceph.com` | name of the driver (Kubernetes: `provisioner` field in StorageClass must correspond to this value) |
|
||||||
`--nodeid` | _empty_ | This node's ID
|
| `--nodeid` | _empty_ | This node's ID |
|
||||||
`--volumemounter` | _empty_ | default volume mounter. Available options are `kernel` and `fuse`. This is the mount method used if volume parameters don't specify otherwise. If left unspecified, the driver will first probe for `ceph-fuse` in system's path and will choose Ceph kernel client if probing failed.
|
| `--type` | _empty_ | driver type `[rbd | cephfs]` If the driver type is set to `rbd` it will act as a `rbd plugin` or if it's set to `cephfs` will act as a `cephfs plugin` |
|
||||||
`--metadatastorage` | _empty_ | Whether metadata should be kept on node as file or in a k8s configmap (`node` or `k8s_configmap`)
|
| `--volumemounter` | _empty_ | default volume mounter. Available options are `kernel` and `fuse`. This is the mount method used if volume parameters don't specify otherwise. If left unspecified, the driver will first probe for `ceph-fuse` in system's path and will choose Ceph kernel client if probing failed. |
|
||||||
`--mountcachedir` | _empty_ | volume mount cache info save dir. If left unspecified, the dirver will not record mount info, or it will save mount info and when driver restart it will remount volume it cached.
|
| `--metadatastorage` | _empty_ | Whether metadata should be kept on node as file or in a k8s configmap (`node` or `k8s_configmap`) |
|
||||||
|
| `--mountcachedir` | _empty_ | volume mount cache info save dir. If left unspecified, the dirver will not record mount info, or it will save mount info and when driver restart it will remount volume it cached. |
|
||||||
|
|
||||||
**Available environmental variables:**
|
**Available environmental variables:**
|
||||||
|
|
||||||
@ -48,16 +49,16 @@ is used to define in which namespace you want the configmaps to be stored
|
|||||||
|
|
||||||
**Available volume parameters:**
|
**Available volume parameters:**
|
||||||
|
|
||||||
Parameter | Required | Description
|
| Parameter | Required | Description |
|
||||||
----------------------------------------------------------------------------------------------------|--------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
`monitors` | yes | Comma separated list of Ceph monitors (e.g. `192.168.100.1:6789,192.168.100.2:6789,192.168.100.3:6789`)
|
| `monitors` | yes | Comma separated list of Ceph monitors (e.g. `192.168.100.1:6789,192.168.100.2:6789,192.168.100.3:6789`) |
|
||||||
`monValueFromSecret` | one of `monitors` and `monValueFromSecret` must be set | a string pointing the key in the credential secret, whose value is the mon. This is used for the case when the monitors' IP or hostnames are changed, the secret can be updated to pick up the new monitors. If both `monitors` and `monValueFromSecret` are set and the monitors set in the secret exists, `monValueFromSecret` takes precedence.
|
| `monValueFromSecret` | one of `monitors` and `monValueFromSecret` must be set | a string pointing the key in the credential secret, whose value is the mon. This is used for the case when the monitors' IP or hostnames are changed, the secret can be updated to pick up the new monitors. If both `monitors` and `monValueFromSecret` are set and the monitors set in the secret exists, `monValueFromSecret` takes precedence. |
|
||||||
`mounter` | no | Mount method to be used for this volume. Available options are `kernel` for Ceph kernel client and `fuse` for Ceph FUSE driver. Defaults to "default mounter", see command line arguments.
|
| `mounter` | no | Mount method to be used for this volume. Available options are `kernel` for Ceph kernel client and `fuse` for Ceph FUSE driver. Defaults to "default mounter", see command line arguments. |
|
||||||
`provisionVolume` | yes | Mode of operation. BOOL value. If `true`, a new CephFS volume will be provisioned. If `false`, an existing volume will be used.
|
| `provisionVolume` | yes | Mode of operation. BOOL value. If `true`, a new CephFS volume will be provisioned. If `false`, an existing volume will be used. |
|
||||||
`pool` | for `provisionVolume=true` | Ceph pool into which the volume shall be created
|
| `pool` | for `provisionVolume=true` | Ceph pool into which the volume shall be created |
|
||||||
`rootPath` | for `provisionVolume=false` | Root path of an existing CephFS volume
|
| `rootPath` | for `provisionVolume=false` | Root path of an existing CephFS volume |
|
||||||
`csi.storage.k8s.io/provisioner-secret-name`, `csi.storage.k8s.io/node-stage-secret-name` | for Kubernetes | name of the Kubernetes Secret object containing Ceph client credentials. Both parameters should have the same value
|
| `csi.storage.k8s.io/provisioner-secret-name`, `csi.storage.k8s.io/node-stage-secret-name` | for Kubernetes | name of the Kubernetes Secret object containing Ceph client credentials. Both parameters should have the same value |
|
||||||
`csi.storage.k8s.io/provisioner-secret-namespace`, `csi.storage.k8s.io/node-stage-secret-namespace` | for Kubernetes | namespaces of the above Secret objects
|
| `csi.storage.k8s.io/provisioner-secret-namespace`, `csi.storage.k8s.io/node-stage-secret-namespace` | for Kubernetes | namespaces of the above Secret objects |
|
||||||
|
|
||||||
**Required secrets for `provisionVolume=true`:**
|
**Required secrets for `provisionVolume=true`:**
|
||||||
Admin credentials are required for provisioning new volumes
|
Admin credentials are required for provisioning new volumes
|
||||||
|
@ -5,10 +5,10 @@ attach and mount those to workloads.
|
|||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
CSI RBD plugin can be compiled in a form of a binary file or in a form of a
|
CSI plugin can be compiled in a form of a binary file or in a form of a
|
||||||
Docker image. When compiled as a binary file, the result is stored in
|
Docker image. When compiled as a binary file, the result is stored in
|
||||||
`_output/` directory with the name `cephcsi`. When compiled as an image, it's
|
`_output/` directory with the name `cephcsi`. When compiled as an image, it's
|
||||||
stored in the local Docker image store with name `rbdplugin`.
|
stored in the local Docker image store with name `cephcsi`.
|
||||||
|
|
||||||
Building binary:
|
Building binary:
|
||||||
|
|
||||||
@ -19,20 +19,21 @@ make cephcsi
|
|||||||
Building Docker image:
|
Building Docker image:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make image-rbdplugin
|
make image-cephcsi
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
**Available command line arguments:**
|
**Available command line arguments:**
|
||||||
|
|
||||||
Option | Default value | Description
|
| Option | Default value | Description |
|
||||||
------ | ------------- | -----------
|
| ----------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
`--endpoint` | `unix://tmp/csi.sock` | CSI endpoint, must be a UNIX socket
|
| `--endpoint` | `unix://tmp/csi.sock` | CSI endpoint, must be a UNIX socket |
|
||||||
`--drivername` | `rbd.csi.ceph.com` | name of the driver (Kubernetes: `provisioner` field in StorageClass must correspond to this value)
|
| `--drivername` | `rbd.csi.ceph.com` | name of the driver (Kubernetes: `provisioner` field in StorageClass must correspond to this value) |
|
||||||
`--nodeid` | _empty_ | This node's ID
|
| `--nodeid` | _empty_ | This node's ID |
|
||||||
`--containerized` | true | Whether running in containerized mode
|
| `--type` | _empty_ | driver type `[rbd | cephfs]` If the driver type is set to `rbd` it will act as a `rbd plugin` or if it's set to `cephfs` will act as a `cephfs plugin` |
|
||||||
`--instanceid` | "default" | Unique ID distinguishing this instance of Ceph CSI among other instances, when sharing Ceph clusters across CSI instances for provisioning
|
| `--containerized` | true | Whether running in containerized mode |
|
||||||
|
| `--instanceid` | "default" | Unique ID distinguishing this instance of Ceph CSI among other instances, when sharing Ceph clusters across CSI instances for provisioning |
|
||||||
|
|
||||||
**Available environmental variables:**
|
**Available environmental variables:**
|
||||||
|
|
||||||
@ -40,15 +41,15 @@ Option | Default value | Description
|
|||||||
|
|
||||||
**Available volume parameters:**
|
**Available volume parameters:**
|
||||||
|
|
||||||
Parameter | Required | Description
|
| Parameter | Required | Description |
|
||||||
--------- | -------- | -----------
|
| ----------------------------------------------------------------------------------------------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
`clusterID` | yes | String representing a Ceph cluster, must be unique across all Ceph clusters in use for provisioning, cannot be greater than 36 bytes in length, and should remain immutable for the lifetime of the Ceph cluster in use
|
| `clusterID` | yes | String representing a Ceph cluster, must be unique across all Ceph clusters in use for provisioning, cannot be greater than 36 bytes in length, and should remain immutable for the lifetime of the Ceph cluster in use |
|
||||||
`pool` | yes | Ceph pool into which the RBD image shall be created
|
| `pool` | yes | Ceph pool into which the RBD image shall be created |
|
||||||
`imageFormat` | no | RBD image format. Defaults to `2`. See [man pages](http://docs.ceph.com/docs/mimic/man/8/rbd/#cmdoption-rbd-image-format)
|
| `imageFormat` | no | RBD image format. Defaults to `2`. See [man pages](http://docs.ceph.com/docs/mimic/man/8/rbd/#cmdoption-rbd-image-format) |
|
||||||
`imageFeatures` | no | RBD image features. Available for `imageFormat=2`. CSI RBD currently supports only `layering` feature. See [man pages](http://docs.ceph.com/docs/mimic/man/8/rbd/#cmdoption-rbd-image-feature)
|
| `imageFeatures` | no | RBD image features. Available for `imageFormat=2`. CSI RBD currently supports only `layering` feature. See [man pages](http://docs.ceph.com/docs/mimic/man/8/rbd/#cmdoption-rbd-image-feature) |
|
||||||
`csi.storage.k8s.io/provisioner-secret-name`, `csi.storage.k8s.io/node-publish-secret-name` | yes (for Kubernetes) | name of the Kubernetes Secret object containing Ceph client credentials. Both parameters should have the same value
|
| `csi.storage.k8s.io/provisioner-secret-name`, `csi.storage.k8s.io/node-publish-secret-name` | yes (for Kubernetes) | name of the Kubernetes Secret object containing Ceph client credentials. Both parameters should have the same value |
|
||||||
`csi.storage.k8s.io/provisioner-secret-namespace`, `csi.storage.k8s.io/node-publish-secret-namespace` | yes (for Kubernetes) | namespaces of the above Secret objects
|
| `csi.storage.k8s.io/provisioner-secret-namespace`, `csi.storage.k8s.io/node-publish-secret-namespace` | yes (for Kubernetes) | namespaces of the above Secret objects |
|
||||||
`mounter`| no | if set to `rbd-nbd`, use `rbd-nbd` on nodes that have `rbd-nbd` and `nbd` kernel modules to map rbd images
|
| `mounter` | no | if set to `rbd-nbd`, use `rbd-nbd` on nodes that have `rbd-nbd` and `nbd` kernel modules to map rbd images |
|
||||||
|
|
||||||
**NOTE:** An accompanying CSI configuration file, needs to be provided to the
|
**NOTE:** An accompanying CSI configuration file, needs to be provided to the
|
||||||
running pods. Refer to [Creating CSI configuration for RBD based
|
running pods. Refer to [Creating CSI configuration for RBD based
|
||||||
|
Loading…
Reference in New Issue
Block a user