{"id":20110690,"url":"https://github.com/dell/csm-replication","last_synced_at":"2026-02-02T22:33:30.098Z","repository":{"id":37087034,"uuid":"373247402","full_name":"dell/csm-replication","owner":"dell","description":"Dell Container Storage Modules (CSM) for Replication aims at extending native Kubernetes functionality to support Disaster Recovery workflows by utilizing storage array based replication.","archived":false,"fork":false,"pushed_at":"2025-06-10T05:36:31.000Z","size":21081,"stargazers_count":12,"open_issues_count":0,"forks_count":8,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-06-10T06:25:27.849Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-06-02T17:14:36.000Z","updated_at":"2025-06-10T05:36:34.000Z","dependencies_parsed_at":"2023-11-07T15:26:01.245Z","dependency_job_id":"1cb76dad-d5b1-4a7e-850f-b1e3f45e04a0","html_url":"https://github.com/dell/csm-replication","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/dell/csm-replication","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fcsm-replication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fcsm-replication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fcsm-replication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fcsm-replication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dell","download_url":"https://codeload.github.com/dell/csm-replication/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fcsm-replication/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261892993,"owners_count":23226025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T18:13:19.984Z","updated_at":"2026-02-02T22:33:30.092Z","avatar_url":"https://github.com/dell.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\r\n Copyright © 2021-2025 Dell Inc. or its subsidiaries. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n      http://www.apache.org/licenses/LICENSE-2.0\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n--\u003e\r\n\r\n# :lock: **Important Notice**\r\nStarting with the release of **Container Storage Modules v1.16.0**, this repository will no longer be maintained as an open source project. Future development will continue under a closed source model. This change reflects our commitment to delivering even greater value to our customers by enabling faster innovation and more deeply integrated features with the Dell storage portfolio.\u003cbr\u003e\r\nFor existing customers using Dell’s Container Storage Modules, you will continue to receive:\r\n* **Ongoing Support \u0026 Community Engagement**\u003cbr\u003e\r\n       You will continue to receive high-quality support through Dell Support and our community channels. Your experience of engaging with the Dell community remains unchanged.\r\n* **Streamlined Deployment \u0026 Updates**\u003cbr\u003e\r\n        Deployment and update processes will remain consistent, ensuring a smooth and familiar experience.\r\n* **Access to Documentation \u0026 Resources**\u003cbr\u003e\r\n       All documentation and related materials will remain publicly accessible, providing transparency and technical guidance.\r\n* **Continued Access to Current Open Source Version**\u003cbr\u003e\r\n       The current open-source version will remain available under its existing license for those who rely on it.\r\n\r\nMoving to a closed source model allows Dell’s development team to accelerate feature delivery and enhance integration across our Enterprise Kubernetes Storage solutions ultimately providing a more seamless and robust experience.\u003cbr\u003e\r\nWe deeply appreciate the contributions of the open source community and remain committed to supporting our customers through this transition.\u003cbr\u003e\r\n\r\nFor questions or access requests, please contact the maintainers via [Dell Support](https://www.dell.com/support/kbdoc/en-in/000188046/container-storage-interface-csi-drivers-and-container-storage-modules-csm-how-to-get-support).\r\n\r\n# Dell Container Storage Modules (CSM) for Replication\r\n\r\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](https://github.com/dell/csm/blob/main/docs/CODE_OF_CONDUCT.md)\r\n[![License](https://img.shields.io/github/license/dell/csm-replication)](LICENSE)\r\n[![Docker Pulls](https://img.shields.io/docker/pulls/dellemc/dell-csi-replicator)](https://hub.docker.com/r/dellemc/dell-csi-replicator)\r\n[![Go version](https://img.shields.io/github/go-mod/go-version/dell/csm-replication)](go.mod)\r\n[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/dell/csm-replication?include_prereleases\u0026label=latest\u0026style=flat-square)](https://github.com/dell/csm-replication/releases/latest)\r\n\r\nDell CSM for Replication is part of the [CSM (Container Storage Modules)](https://github.com/dell/csm) open-source suite of Kubernetes storage enablers for Dell products.\r\n\r\nThis project aims at extending native Kubernetes functionality to support _Disaster Recovery_ workflows by utilizing storage array based replication.\r\n\r\nCSM Replication project includes the following components:\r\n* CSM Replication CRDs - [Custom Resource definitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)\r\n* CSM Replication sidecar container for CSI drivers\r\n* CSM Replication Controller - Multi-Cluster Controller\r\n* repctl - helper utility for setup and queries\r\n\r\n_*CSM Replication*_ sidecar is installed as part of the CSI driver controller pod and utilizes custom Dell CSI extensions to communicate\r\nwith Dell CSI drivers. It includes a set of Kubernetes controllers which keep watch on requests related to Persistent Volumes (PVs)\r\n and Persistent Volume Claims(PVCs). It uses `dell-csi-extensions` APIs to perform replication related actions.\r\nYou can read more about the extensions [here](https://github.com/dell/dell-csi-extensions).\r\n\r\n_*CSM Replication Controller*_ is a set of Kubernetes controllers which are _multi-cluster_ aware and can communicate with various Kubernetes API servers\r\nto reconcile state. These controllers are responsible for the syncing of objects and the associated metadata.\r\n\r\nThis project has been created using [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder), and the various kubernetes controllers\r\nhave been implemented using [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime). Additionally, this project uses [kustomize](https://github.com/kubernetes-sigs/kustomize) for generating various `yaml` manifests for Kubernetes objects.\r\n\r\nFor documentation, please visit [Container Storage Modules documentation](https://dell.github.io/csm-docs/).\r\n\r\n## Table of Contents\r\n\r\n* [Code of Conduct](https://github.com/dell/csm/blob/main/docs/CODE_OF_CONDUCT.md)\r\n* [Maintainer Guide](https://github.com/dell/csm/blob/main/docs/MAINTAINER_GUIDE.md)\r\n* [Committer Guide](https://github.com/dell/csm/blob/main/docs/COMMITTER_GUIDE.md)\r\n* [Contributing Guide](https://github.com/dell/csm/blob/main/docs/CONTRIBUTING.md)\r\n* [List of Adopters](https://github.com/dell/csm/blob/main/docs/ADOPTERS.md)\r\n* [Dell support](https://www.dell.com/support/incidents-online/en-us/contactus/product/container-storage-modules)\r\n* [Security](https://github.com/dell/csm/blob/main/docs/SECURITY.md)\r\n\r\n## Build\r\n\r\nThis project contains multiple go modules, and you can build multiple binaries \u0026 images with the provided Makefile.\r\n\r\n### Dependencies\r\n\r\nThis project relies on the following tools which have to be installed in order to generate certain manifests.\r\n\r\n| Tool              | Version      |\r\n| ----------------- | ------------ |\r\n| controller-gen    | v0.15.0      |\r\n| kustomize         | v5.4.3       |\r\n\r\nThe above tools can also be installed by running the command `make tools`.\r\n\r\n### Custom Resource Definitions\r\n\r\nRun the command `make manifests` to build the CSM Replication Custom Resource Definitions (CRDs). This command invokes `controller-gen` to generate the CRDs. \r\nThe API code is annotated with `kubebuilder` tags which are used by the `controller-gen` generators. The generated definitions are present in the form\r\nof a _kustomize_ recipe in the `config/crd` folder.\r\n\r\n### Binaries\r\nTo build all the binaries associated with CSM Replication, run `make build`.\r\n\r\nTo compile individual binaries run:\r\n- `make build-controller-manager` to build the CSM Replication Controller, _dell-replication-controller_.\r\n- `make build-sidecar-manager` to build the CSM Replication sidecar, _dell-csi-replicator_.\r\n- `make build-sidecar-migrator` to build the CSM Replication sidecar, _dell-csi-migrator_.\r\n- `make build-sidecar-node-rescanner` to build the CSM Replication sidecar, _dell-csi-node-rescanner_.\r\n\r\n#### Repctl\r\nTo build the repctl binary, run `cd repctl \u0026\u0026 make build`. \r\n\r\n### Static manifests\r\n\r\nIn order to simplify installation for users who don't want to use `kustomize`, statically generated manifests are stored in the repository.\r\n* deploy/controller.yaml - manifest for installing the _CSM Replication Controller_.\r\n* deploy/role.yaml - manifest for creating ClusterRole for _CSM Replication Controller_.\r\n* deploy/replicationcrds.all.yaml - manifest for install _CSM Replication CRDs_.\r\n\r\nIn case there are modifications done which update the CRD, run `make static-crd` and commit changes to the CRD file in the repository.\r\n\r\nIn case there are modifications done which update any manifests for the installation of the _CSM Replication Controller_, run\r\n`make static-controller` and commit changes to the file `deploy/controller.yaml` in the repository.\r\n\r\n### Container Images\r\n\r\nThere are various Makefile targets available for building and pushing container images\r\n| Target | Description |\r\n| --------- | ----------- |\r\n| image-sidecar | Build `dell-csi-replicator` sidecar image |\r\n| image-sidecar-push | Build `dell-csi-replicator` sidecar image \u0026 push to an image repo |\r\n| image-controller | Build `dell-replication-controller` image |\r\n| image-controller-push | Build `dell-replication-controller` image \u0026 push to an image repo |\r\n| images | Build both `dell-csi-replicator` \u0026 `dell-replication-controller` images |\r\n| images-push | Push both `dell-csi-replicator` \u0026 `dell-replication-controller` images |\r\n\r\n**Note**: `make images` will also tag the built images with the release tags and push those tags to the image repo.\r\n\r\n### RBAC manifests\r\nFor building the RBAC rules for the sidecar, run `make sidecar-rbac`.\r\nFor building the RBAC rules for the controller, run `make controller-rbac`.\r\n\r\n### Custom Resource Definitions\r\n\r\nYou can run the command `make install` to install the Custom Resource Definitions in your Kubernetes cluster.\r\n\r\n### CSM Replication sidecar\r\n\r\nThe CSM Replication sidecar container can only be installed as a sidecar within the CSI driver controller pod. The kubernetes controllers which\r\nrun as part of the sidecar container, communicate with the CSI drivers using [gRPC](https://grpc.io/) over a Unix Domain Socket (UDS). The address for this socket\r\ncan be passed as an argument to the sidecar container. \r\n\r\nThe [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) permissions required by the kubernetes controllers are present in the file\r\n`config/sidecar-rbac/role.yaml` and should be included in the CSI driver's RBAC permissions. \r\n\r\nYou can also run the `dell-csi-replicator` process directly in your Kubernetes cluster by running the command `make run-sidecar`. \r\nMake sure that the kubernetes user has the desired RBAC permissions as described above.\r\n\r\n### CSM Replication Controller\r\n\r\nYou can install the CSM Replication Controller by running the command `make deploy-controller`. The namespace `dell-replication-controller` must exist in the cluster before this installation.\r\n\r\nYou can also run the `dell-replication-controller` process directly in your Kubernetes cluster by running the command `make run-controller`.\r\nMake sure that the kubernetes user has the desired RBAC permissions.\r\n\r\n#### Platform Notes\r\n\r\nIf you wish to install CSM Replication Controller with repctl on your openSUSE server, when referring to this [section](https://dell.github.io/csm-docs/docs/deployment/helm/modules/installation/replication/install-repctl/), you need to install `glibc-devel-static` devel package before running `make build`.\r\n\r\n## Testing\r\n\r\nClick [here](/TESTING.md) for details on how to test.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fcsm-replication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdell%2Fcsm-replication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fcsm-replication/lists"}