{"id":13742572,"url":"https://github.com/banzaicloud/pvc-operator","last_synced_at":"2025-04-13T16:53:20.135Z","repository":{"id":41384040,"uuid":"129710259","full_name":"banzaicloud/pvc-operator","owner":"banzaicloud","description":null,"archived":false,"fork":false,"pushed_at":"2020-10-02T08:42:52.000Z","size":4633,"stargazers_count":51,"open_issues_count":7,"forks_count":10,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-05T13:02:36.120Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"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/banzaicloud.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":null,"security":null,"support":null}},"created_at":"2018-04-16T08:29:22.000Z","updated_at":"2023-06-06T20:32:14.000Z","dependencies_parsed_at":"2022-08-29T13:41:49.767Z","dependency_job_id":null,"html_url":"https://github.com/banzaicloud/pvc-operator","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banzaicloud%2Fpvc-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banzaicloud%2Fpvc-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banzaicloud%2Fpvc-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banzaicloud%2Fpvc-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/banzaicloud","download_url":"https://codeload.github.com/banzaicloud/pvc-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248749994,"owners_count":21155682,"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-08-03T05:00:33.716Z","updated_at":"2025-04-13T16:53:20.116Z","avatar_url":"https://github.com/banzaicloud.png","language":"Go","funding_links":[],"categories":["Repository is obsolete"],"sub_categories":["Awesome Operators in the Wild"],"readme":"[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Go Report Card](https://goreportcard.com/badge/github.com/banzaicloud/pvc-operator)](https://goreportcard.com/report/github.com/banzaicloud/pvc-operator)\n\n## PVC Operator\n\nThis operator builds upon the new [Kubernetes operators SDK](https://banzaicloud.com/blog/operator-sdk/) and used on different cloud providers.\n\n### Introduction\n\nThis operator makes using [Kubernetes Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) easier on cloud providers, by dynamically creating the required accounts, classes and more. It allows to use exactly the same [Helm](https://helm.sh) chart on all the supported providers, there is no need to create cloud specific Helm charts.\n\nThe Currently supported list of Providers/StorageClasses are:\n\n- Azure(AKS)\n    - AzureFile\n    - AzureDisk\n    - NFS\n    \n- Amazon\n    - AWSElasticBlockStore\n    - NFS\n    \n- Google\n    - GCEPersistentDisk\n    - NFS\n    \n### Installation\n\n- Branch `0.0.2` contains an earlier version of this operator if you want to use this please follow this guide:\nThe user should use the [operator.yaml](https://github.com/banzaicloud/pvc-operator/blob/0.0.2/deploy/operator.yaml)\nto deploy the operator to a Kubernetes cluster. If the cluster uses [RBAC](https://kubernetes.io/docs/admin/authorization/rbac/) deploy the [rbac.yaml](https://github.com/banzaicloud/pvc-operator/blob/0.0.2/deploy/rbac.yaml) first and add the following line after the specs in the `operator.yaml`.\n\n```serviceAccountName: pvc-operator```\n\n- In case of `master` branch, please use the [crd.yaml](https://github.com/banzaicloud/pvc-operator/blob/master/deploy/crd.yaml) first then\ndeploy the operator itself by using the [operator.yaml](https://github.com/banzaicloud/pvc-operator/blob/master/deploy/operator.yaml).\nIf the cluster uses [RBAC](https://kubernetes.io/docs/admin/authorization/rbac/) deploy the [rbac.yaml](https://github.com/banzaicloud/pvc-operator/blob/master/deploy/rbac.yaml).\n\n### Cloud Specific Requirements\n\nIn case of `AzureFile` a Storage Account needs to be created. The operator handles the creation automatically\nbut some permissions have to be set.\n\n- MSI has to be [enabled](https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/tutorial-linux-vm-access-arm#enable-msi-on-your-vm)\n- Grant Access to your VMs to [create](https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/tutorial-linux-vm-access-arm#grant-your-vm-access-to-a-resource-group-in-azure-resource-manager) a Storage Account\nInstead of adding `Read` role use the `Storage Account Owner`.\n\n### Usage\n\nThe given chart should include a `Persistent Volume Claim` which includes a [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/) name and an `Access Mode`. If the chosen Access Mode is supported on the required cloud provider the operator will create a proper `StorageClass`. This class will be reused by other charts as well.\n\n### FAQ\n\n#### 1. How does this project uses Kubernetes Namespaces?\n\nThe operator supports multiple Kubernetes Namespaces.\n\n#### 2. How is the cloud provider determined?\n\nTo determine the cloud provider we use the `metadata` server accessible from every virtual machine within the cloud.  \n\n#### 3. Do I need to add my cloud related credentials to this project?\n\nNo need, this project determines every credentials from the `metadata` server and uses the assumption that you have\na couple of right because this `Operator` runs inside a Kubernetes cluster (IAM or instance profile roles, etc).\n\n#### 4. How come that the NFS type StorageClass can be used in any cloud provider?\n\nThe NFS StorageClass solution is based on the [Kubernetes external-storages](https://github.com/kubernetes-incubator/external-storage/tree/master/nfs) project. It uses it's own NFS server deployment which requires a `ReadWriteOnly` Kubernetes Persistent Volume and shares this across the cluster.\n\n#### 5. Why this project exists?\n\nHere at [Banzai Cloud](https://banzaicloud.com) we try to automate everything so you don't have to. If you need to provision a Kubernetes cluster please check out [Pipeline](https://github.com/banzaicloud/pipeline). If you already have one, but you are struggling to find and configure the right `Persistent Storage` for your need then this project is for you. \n\n#### 6. What's next for this project for the near future?\n\n- The priority will be to support more `ReadWriteMany` StorageClasses on all providers. We prefer to build on cloud\nspecific storage solutions, but more generic solutions will come as well.\n\n- We would like to add support to create an object storage inside a Kubernetes Cluster. This approach will help e.g in case of\n[Spark History Server](https://banzaicloud.com/blog/spark-history-server-cloud/).\n\n#### 7. Is this project production ready?\n\nAlthough we use it internally, it's not yet. We need to add at least some unit tests and potentially an integration test too.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanzaicloud%2Fpvc-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbanzaicloud%2Fpvc-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanzaicloud%2Fpvc-operator/lists"}