{"id":37158818,"url":"https://github.com/greenstatic/nfs-minio-operator","last_synced_at":"2026-01-14T18:58:27.562Z","repository":{"id":64307311,"uuid":"205267227","full_name":"greenstatic/nfs-minio-operator","owner":"greenstatic","description":"A Kubernetes operator to access your NFS data using Minio's S3 compatible API","archived":true,"fork":false,"pushed_at":"2019-09-07T10:13:42.000Z","size":65,"stargazers_count":3,"open_issues_count":4,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-13T19:42:02.154Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greenstatic.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":"2019-08-29T23:26:10.000Z","updated_at":"2023-02-21T01:43:02.000Z","dependencies_parsed_at":"2023-01-15T11:00:36.770Z","dependency_job_id":null,"html_url":"https://github.com/greenstatic/nfs-minio-operator","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/greenstatic/nfs-minio-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fnfs-minio-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fnfs-minio-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fnfs-minio-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fnfs-minio-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenstatic","download_url":"https://codeload.github.com/greenstatic/nfs-minio-operator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenstatic%2Fnfs-minio-operator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28431073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-14T18:58:26.707Z","updated_at":"2026-01-14T18:58:27.557Z","avatar_url":"https://github.com/greenstatic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NFS Minio Operator\nA Kubernetes operator to access your NFS data using Minio's S3 compatible API created using [The Operator Framework](https://github.com/operator-framework).\n\n[![](https://img.shields.io/docker/pulls/greenstatic/nfs-minio-operator)](https://hub.docker.com/r/greenstatic/nfs-minio-operator)\n\n![Simple diagram explaining how the operator works](docs/diagram.svg)\n\nBy defining a simple NFSMinio YAML file (see bellow) we create the necessary deployment, service, ingress and NFS connectivity for you.\n\nThe Docker image of the operator can be found on [Docker hub](https://hub.docker.com/r/greenstatic/nfs-minio-operator).\n\n**Sample NFSMinio YAML Configuration File**\n```yaml\napiVersion: k8.krmelj.xyz/v1alpha1\nkind: NFSMinio\nmetadata:\n  name: nfsminio-foo\nspec:\n  # username needs to be at least 3 characters long! (because we set it as the access key of Minio)\n  username: public\n  nfs:\n    server: example.com\n    path: /home/foo\n    readOnly: false\n  domain: foo.example.net\n  # This is the Secret that contains the TLS certificate credentials (usually named `\u003cDOMAIN-tls` by cert-manager\n  tlsSecretName: foo.example.net-tls\n```\n\nOn `http://foo.example.net` you will be able to access your data using Minio's web-based GUI or connect via any S3 API compliant library.\n\n## Installation\nClone this repository onto a machine that has kubectl connectivity with your Kubernetes cluster.\n\nEnsure you have RBAC enabled on the cluster, then run the following:\n\n```bash\nkubectl create -f deploy/crds/k8_v1alpha1_nfsminio_crd.yaml\nkubectl create -f deploy/service_account.yaml\nkubectl create -f deploy/role.yaml\nkubectl create -f deploy/role_binding.yaml\nkubectl create -f deploy/operator.yaml\n```\n\nCheck to see if the `nfs-minio-operator` deployment is running (`kubectl get deployments`).\n\n## Usage \u0026 Configuration\nN different users mean n different YAML files.\nEach user will get their own Minio instance (with root access) on their own domain.\n\nYou can copy the NFSMinio configuration [above](#nfs-minio-operator) or copy the one in `deploy/crds/k8_v1alpha1_nfsminio_cr.yaml`.\n\nThe **access key is the username** and the **secret key** is a **randomly generated** string.\nYou can access it by reading the secret (the secret is named the same as the `NFSMinio` object.\n\n```bash\n# replace nfsminio-foo with your NFSMinio name value\nkubectl get secret nfsminio-foo --template={{.data.secretKey}} | base64 --decode\n```\n\nIf you wish you can also change the secret key in the secret object.\nThis will restart the Minio server in order to apply the new secret key.\nThe new secret key MUST be between 8-40 characters (Minio limitation).\n\nChanging the access key is currently not supported.\n\nTo view all NFSMinio objects run: `kubectl get nfsminios`.\n\n## Devlopment\n### Dependencies\n* [Operator Framework SDK](https://github.com/operator-framework/operator-sdk) - check all dependencies\n* [Golang (v12.9+)](https://golang.org)\n\n## Setting Up Environment\n1. Clone (fork) repository\n2. Enable Go Module support by running\n    ```bash\n    export GO111MODULE=on\n    ```\n## How to Develop\nIf you change the `nfsminio_types.go` rerun\n```bash\noperator-sdk generate k8s\n```\n\nIf you change the OpenAPI validation section of `deploy/crds/k8_v1alpha1_nfsminio_crd.yaml`, rerun\n```bash\noperator-sdk generate openapi\n```\n\n### Kubernetes Development Depoyment\nRun this one time on your development cluster\n\n```bash\nkubectl create -f deploy/crds/k8_v1alpha1_nfsminio_crd.yaml\nkubectl create -f deploy/service_account.yaml\nkubectl create -f deploy/role.yaml\nkubectl create -f deploy/role_binding.yaml\nkubectl create -f deploy/operator.yaml\n```\n\nThen for testing the controller outside the cluster (you need connectivity with your Kubernetes cluster using kubectl) run:\n```bash\nexport OPERATOR_NAME=\"nfs-minio-operator\"\noperator-sdk up local --namespace=default\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenstatic%2Fnfs-minio-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreenstatic%2Fnfs-minio-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenstatic%2Fnfs-minio-operator/lists"}