diff --git a/ceph/README.md b/ceph/README.md index e427856..953a5ac 100644 --- a/ceph/README.md +++ b/ceph/README.md @@ -17,3 +17,9 @@ kubectl apply -k ceph/external-snapshotter/crd/ helm upgrade -i ceph-csi-rbd ceph/ceph-csi-rbd --values local-values/ceph/rbd.yaml -n ceph-csi + + +helm upgrade -i ceph-csi-rbd ceph/ceph-csi-fs -n ceph-csi --dry-run + + + helm upgrade -i --set storageClass.create=true --set storageClass.create=true --set secret.create=true ceph-csi-rbd ceph/ceph-csi-cephfs/ -n ceph-csi --dry-run diff --git a/local-values/ceph/fs-sc.yaml b/local-values/ceph/fs-sc.yaml new file mode 100644 index 0000000..527bbab --- /dev/null +++ b/local-values/ceph/fs-sc.yaml @@ -0,0 +1,23 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: csi-cephfs-sc + namespace: ceph-csi + labels: + app: ceph-csi-rbd + chart: ceph-csi-rbd-3-canary + release: rbd.csi.ceph.com + heritage: Helm +provisioner: rbd.csi.ceph.com +parameters: + clusterID: 837817cc-7148-11ec-8c46-c81f66de6d53 + fsName: k8s_fs + pool: cephfs_data + csi.storage.k8s.io/provisioner-secret-name: csi-cephfs-secret + csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi + csi.storage.k8s.io/controller-expand-secret-name: csi-cephfs-secret + csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi + csi.storage.k8s.io/node-stage-secret-name: csi-cephfs-secret + csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi +reclaimPolicy: Delete +allowVolumeExpansion: true diff --git a/local-values/ceph/fs.yaml b/local-values/ceph/fs.yaml new file mode 100644 index 0000000..ee33068 --- /dev/null +++ b/local-values/ceph/fs.yaml @@ -0,0 +1,319 @@ +--- +rbac: + # Specifies whether RBAC resources should be created + create: true + +serviceAccounts: + nodeplugin: + # Specifies whether a ServiceAccount should be created + create: true + # The name of the ServiceAccount to use. + # If not set and create is true, a name is generated using the fullname + name: + provisioner: + # Specifies whether a ServiceAccount should be created + create: true + # The name of the ServiceAccount to use. + # If not set and create is true, a name is generated using the fullname + name: + +# Configuration for the CSI to connect to the cluster +# Ref: https://github.com/ceph/ceph-csi/blob/devel/examples/README.md +csiConfig: + - clusterID: "837817cc-7148-11ec-8c46-c81f66de6d53" + monitors: + - "192.168.1.207:6789" + - "192.168.1.208:6789" + - "192.168.1.209:6789" +# csiConfig: [] + +# Set logging level for csi containers. +# Supported values from 0 to 5. 0 for general useful logs, +# 5 for trace level verbosity. +logLevel: 5 + +nodeplugin: + name: nodeplugin + # if you are using ceph-fuse client set this value to OnDelete + updateStrategy: RollingUpdate + + # set user created priorityclassName for csi plugin pods. default is + # system-node-critical which is highest priority + priorityClassName: system-node-critical + + httpMetrics: + # Metrics only available for cephcsi/cephcsi => 1.2.0 + # Specifies whether http metrics should be exposed + enabled: true + # The port of the container to expose the metrics + containerPort: 8081 + + service: + # Specifies whether a service should be created for the metrics + enabled: true + # The port to use for the service + servicePort: 8080 + type: ClusterIP + + # Annotations for the service + # Example: + # annotations: + # prometheus.io/scrape: "true" + # prometheus.io/port: "9080" + annotations: {} + + clusterIP: "" + + ## List of IP addresses at which the stats-exporter service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + externalIPs: [] + + loadBalancerIP: "" + loadBalancerSourceRanges: [] + + profiling: + enabled: false + + registrar: + image: + repository: opsdockerimage/sig-storage-csi-node-driver-registrar + tag: v2.3.0 + pullPolicy: IfNotPresent + resources: {} + + plugin: + image: + repository: quay.io/cephcsi/cephcsi + tag: canary + pullPolicy: IfNotPresent + resources: {} + + nodeSelector: {} + + tolerations: [] + + affinity: {} + + # Set to true to enable Ceph Kernel clients + # on kernel < 4.17 which support quotas + # forcecephkernelclient: true + + # If true, create & use Pod Security Policy resources + # https://kubernetes.io/docs/concepts/policy/pod-security-policy/ + podSecurityPolicy: + enabled: false + +provisioner: + name: provisioner + replicaCount: 1 + strategy: + # RollingUpdate strategy replaces old pods with new ones gradually, + # without incurring downtime. + type: RollingUpdate + rollingUpdate: + # maxUnavailable is the maximum number of pods that can be + # unavailable during the update process. + maxUnavailable: 50% + # Timeout for waiting for creation or deletion of a volume + timeout: 60s + + # set user created priorityclassName for csi provisioner pods. default is + # system-cluster-critical which is less priority than system-node-critical + priorityClassName: system-cluster-critical + + httpMetrics: + # Metrics only available for cephcsi/cephcsi => 1.2.0 + # Specifies whether http metrics should be exposed + enabled: true + # The port of the container to expose the metrics + containerPort: 8081 + + service: + # Specifies whether a service should be created for the metrics + enabled: true + # The port to use for the service + servicePort: 8080 + type: ClusterIP + + # Annotations for the service + # Example: + # annotations: + # prometheus.io/scrape: "true" + # prometheus.io/port: "9080" + annotations: {} + + clusterIP: "" + + ## List of IP addresses at which the stats-exporter service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + externalIPs: [] + + loadBalancerIP: "" + loadBalancerSourceRanges: [] + + profiling: + enabled: false + + provisioner: + image: + repository: opsdockerimage/sig-storage-csi-provisioner + tag: v3.0.0 + pullPolicy: IfNotPresent + resources: {} + + attacher: + name: attacher + enabled: true + image: + repository: opsdockerimage/sig-storage-csi-attacher + tag: v3.3.0 + pullPolicy: IfNotPresent + resources: {} + + resizer: + name: resizer + enabled: true + image: + repository: opsdockerimage/sig-storage-csi-resizer + tag: v1.3.0 + pullPolicy: IfNotPresent + resources: {} + + snapshotter: + image: + repository: opsdockerimage/sig-storage-csi-snapshotter + tag: v4.2.0 + pullPolicy: IfNotPresent + resources: {} + + nodeSelector: {} + + tolerations: [] + + affinity: {} + + # If true, create & use Pod Security Policy resources + # https://kubernetes.io/docs/concepts/policy/pod-security-policy/ + podSecurityPolicy: + enabled: false + +topology: + # Specifies whether topology based provisioning support should + # be exposed by CSI + enabled: false + # domainLabels define which node labels to use as domains + # for CSI nodeplugins to advertise their domains + # NOTE: the value here serves as an example and needs to be + # updated with node labels that define domains of interest + domainLabels: + - failure-domain/region + - failure-domain/zone + +storageClass: + # Specifies whether the Storage class should be created + create: true + name: csi-cephfs-sc + # Annotations for the storage class + # Example: + # annotations: + # storageclass.kubernetes.io/is-default-class: "true" + annotations: {} + + # String representing a Ceph cluster to provision storage from. + # Should 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 StorageClass in use. + clusterID: 837817cc-7148-11ec-8c46-c81f66de6d53 + # (required) CephFS filesystem name into which the volume shall be created + # eg: fsName: myfs + fsName: k8s_fs + # (optional) Ceph pool into which volume data shall be stored + # pool: + # For eg: + # pool: "replicapool" + pool: "cephfs_data" + # (optional) Comma separated string of Ceph-fuse mount options. + # For eg: + # fuseMountOptions: debug + fuseMountOptions: "" + # (optional) Comma separated string of Cephfs kernel mount options. + # Check man mount.ceph for mount options. For eg: + # kernelMountOptions: readdir_max_bytes=1048576,norbytes + kernelMountOptions: "" + # (optional) The driver can use either ceph-fuse (fuse) or + # ceph kernelclient (kernel). + # If omitted, default volume mounter will be used - this is + # determined by probing for ceph-fuse and mount.ceph + # mounter: kernel + mounter: "" + # (optional) Prefix to use for naming subvolumes. + # If omitted, defaults to "csi-vol-". + # volumeNamePrefix: "foo-bar-" + volumeNamePrefix: "" + # The secrets have to contain user and/or Ceph admin credentials. + provisionerSecret: csi-cephfs-secret + # If the Namespaces are not specified, the secrets are assumed to + # be in the Release namespace. + provisionerSecretNamespace: "" + controllerExpandSecret: csi-cephfs-secret + controllerExpandSecretNamespace: "" + nodeStageSecret: csi-cephfs-secret + nodeStageSecretNamespace: "" + reclaimPolicy: Delete + allowVolumeExpansion: true + mountOptions: [] + # Mount Options + # Example: + # mountOptions: + # - discard + +secret: + # Specifies whether the secret should be created + create: true + name: csi-cephfs-secret + # Key values correspond to a user name and its key, as defined in the + # ceph cluster. User ID should have required access to the 'pool' + # specified in the storage class + adminID: admin + adminKey: AQBj1tphduCvMRAApOGBx8WryG847dQ8Gi5LHg== + +# This is a sample configmap that helps define a Ceph configuration as required +# by the CSI plugins. +# Sample ceph.conf available at +# https://github.com/ceph/ceph/blob/master/src/sample.ceph.conf Detailed +# documentation is available at +# https://docs.ceph.com/en/latest/rados/configuration/ceph-conf/ +cephconf: | + [global] + auth_cluster_required = cephx + auth_service_required = cephx + auth_client_required = cephx + + # Workaround for http://tracker.ceph.com/issues/23446 + fuse_set_user_groups = false + + # ceph-fuse which uses libfuse2 by default has write buffer size of 2KiB + # adding 'fuse_big_writes = true' option by default to override this limit + # see https://github.com/ceph/ceph-csi/issues/1928 + fuse_big_writes = true + +######################################################### +# Variables for 'internal' use please use with caution! # +######################################################### + +# The filename of the provisioner socket +provisionerSocketFile: csi-provisioner.sock +# The filename of the plugin socket +pluginSocketFile: csi.sock +# kubelet working directory,can be set using `--root-dir` when starting kubelet. +kubeletDir: /var/lib/kubelet +# Name of the csi-driver +driverName: cephfs.csi.ceph.com +# Name of the configmap used for state +configMapName: ceph-csi-config +# Key to use in the Configmap if not config.json +# configMapKey: +# Use an externally provided configmap +externallyManagedConfigmap: false