{"id":13452401,"url":"https://github.com/gluster/gluster-kubernetes","last_synced_at":"2025-03-23T19:34:15.530Z","repository":{"id":45909938,"uuid":"71491935","full_name":"gluster/gluster-kubernetes","owner":"gluster","description":"GlusterFS Native Storage Service for Kubernetes","archived":true,"fork":false,"pushed_at":"2020-05-22T13:39:29.000Z","size":1428,"stargazers_count":875,"open_issues_count":167,"forks_count":390,"subscribers_count":59,"default_branch":"master","last_synced_at":"2024-10-28T18:55:11.180Z","etag":null,"topics":["deploy-tool","glusterfs","glusterfs-dynamic-provisioning","heketi","kubernetes","openshift","storage"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/gluster.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":"2016-10-20T18:25:14.000Z","updated_at":"2024-10-10T16:43:09.000Z","dependencies_parsed_at":"2022-08-29T20:31:49.872Z","dependency_job_id":null,"html_url":"https://github.com/gluster/gluster-kubernetes","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/gluster%2Fgluster-kubernetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fgluster-kubernetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fgluster-kubernetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gluster%2Fgluster-kubernetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gluster","download_url":"https://codeload.github.com/gluster/gluster-kubernetes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245159360,"owners_count":20570371,"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":["deploy-tool","glusterfs","glusterfs-dynamic-provisioning","heketi","kubernetes","openshift","storage"],"created_at":"2024-07-31T07:01:23.136Z","updated_at":"2025-03-23T19:34:15.080Z","avatar_url":"https://github.com/gluster.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# gluster-kubernetes\n\n[![Build Status](https://travis-ci.org/gluster/gluster-kubernetes.svg?branch=master)](https://travis-ci.org/gluster/gluster-kubernetes)\n\n## GlusterFS Native Storage Service for Kubernetes\n\n**gluster-kubernetes** is a project to provide Kubernetes administrators a\nmechanism to easily deploy GlusterFS as a native storage service onto an\nexisting Kubernetes cluster. Here, GlusterFS is managed and orchestrated like\nany other app in Kubernetes. This is a convenient way to unlock the power of\ndynamically provisioned, persistent GlusterFS volumes in Kubernetes.\n\n### Component Projects\n\n* **[Kubernetes](http://kubernetes.io/)**, the container management system.\n* **[GlusterFS](https://www.gluster.org/)**, the scale-out storage system.\n* **[heketi](https://github.com/heketi/heketi)**, the RESTful volume management\n  interface for GlusterFS.\n\n### Presentations\n\nYou can find slides and videos of community presentations [here](docs/presentations).\n\n**\u003e\u003e\u003e [Video demo of the technology!](https://drive.google.com/file/d/0B667S2caJiy7QVpzVVFNQVdyaVE/view?usp=sharing) \u003c\u003c\u003c**\n\n### Documentation\n\n* [Quickstart](#quickstart)\n* [Setup Guide](./docs/setup-guide.md)\n* [Hello World with GlusterFS Dynamic Provisioning](./docs/examples/hello_world/README.md)\n* [Contact](#contact)\n* [Release and Maintenance Policies](./docs/release-maintenance.md)\n\n### Quickstart\n\nIf you already have a Kubernetes cluster you wish to use, make sure it meets\nthe prerequisites outlined in our [setup guide](./docs/setup-guide.md).\n\nThis project includes a vagrant setup in the `vagrant/` directory to spin up a\nKubernetes cluster in VMs. To run the vagrant setup, you'll need to have the\nfollowing pre-requisites on your machine:\n\n * 4GB of memory\n * 32GB of storage minimum, 112GB recommended\n * ansible\n * vagrant\n * libvirt or VirtualBox\n\nTo spin up the cluster, simply run `./up.sh` in the `vagrant/` directory.\n\n**NOTE**: If you plan to run ./up.sh more than once the vagrant setup supports\ncaching packages and container images. Please read the\n[vagrant directory README](./vagrant/README.md)\nfor more information on how to configure and use the caching support.\n\nNext, copy the `deploy/` directory to the master node of the cluster.\n\nYou will have to provide your own topology file. A sample topology file is\nincluded in the `deploy/` directory (default location that gk-deploy expects)\nwhich can be used as the topology for the vagrant libvirt setup. When\ncreating your own topology file:\n\n * Make sure the topology file only lists block devices intended for heketi's\n use. heketi needs access to whole block devices (e.g. /dev/sdb, /dev/vdb)\n which it will partition and format.\n\n * The `hostnames` array is a bit misleading. `manage` should be a list of\n hostnames for the node, but `storage` should be a list of IP addresses on\n the node for backend storage communications.\n\nIf you used the provided vagrant libvirt setup, you can run:\n\n```bash\n$ vagrant ssh-config \u003e ssh-config\n$ scp -rF ssh-config ../deploy master:\n$ vagrant ssh master\n[vagrant@master]$ cd deploy\n[vagrant@master]$ mv topology.json.sample topology.json\n```\n\nThe following commands are meant to be run with administrative privileges\n(e.g. `sudo su` beforehand).\n\nAt this point, verify the Kubernetes installation by making sure all nodes are\nReady:\n\n```bash\n$ kubectl get nodes\nNAME      STATUS    AGE\nmaster    Ready     22h\nnode0     Ready     22h\nnode1     Ready     22h\nnode2     Ready     22h\n```\n\n**NOTE**: To see the version of Kubernetes (which will change based on\nlatest official releases) simply do `kubectl version`. This will help in\ntroubleshooting.\n\nNext, to deploy heketi and GlusterFS, run the following:\n\n```bash\n$ ./gk-deploy -g\n```\n\nIf you already have a pre-existing GlusterFS cluster, you do not need the\n`-g` option.\n\nAfter this completes, GlusterFS and heketi should now be installed and ready\nto go. You can set the `HEKETI_CLI_SERVER` environment variable as follows so\nthat it can be read directly by `heketi-cli` or sent to something like `curl`:\n\n```bash\n$ export HEKETI_CLI_SERVER=$(kubectl get svc/heketi --template 'http://{{.spec.clusterIP}}:{{(index .spec.ports 0).port}}')\n\n$ echo $HEKETI_CLI_SERVER\nhttp://10.42.0.0:8080\n\n$ curl $HEKETI_CLI_SERVER/hello\nHello from Heketi\n```\n\nYour Kubernetes cluster should look something like this:\n\n```bash\n$ kubectl get nodes,pods\nNAME      STATUS    AGE\nmaster    Ready     22h\nnode0     Ready     22h\nnode1     Ready     22h\nnode2     Ready     22h\nNAME                               READY     STATUS              RESTARTS   AGE\nglusterfs-node0-2509304327-vpce1   1/1       Running             0          1d\nglusterfs-node1-3290690057-hhq92   1/1       Running             0          1d\nglusterfs-node2-4072075787-okzjv   1/1       Running             0          1d\nheketi-3017632314-yyngh            1/1       Running             0          1d\n```\n\nYou should now also be able to use `heketi-cli` or any other client of the\nheketi REST API (like the GlusterFS volume plugin) to create/manage volumes and\nthen mount those volumes to verify they're working. To see an example of how\nto use this with a Kubernetes application, see the following:\n\n[Hello World application using GlusterFS Dynamic Provisioning](./docs/examples/hello_world/README.md)\n\n### Contact\n\nThe gluster-kubernetes developers hang out in #sig-storage on the Kubernetes Slack and \non IRC channels in #gluster and #heketi at freenode network.\n\nAnd, of course, you are always welcomed to reach us via Issues and Pull Requests on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluster%2Fgluster-kubernetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgluster%2Fgluster-kubernetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgluster%2Fgluster-kubernetes/lists"}