{"id":20376673,"url":"https://github.com/andrebriggs/fabrikate-storageos","last_synced_at":"2025-07-12T06:32:59.304Z","repository":{"id":150973685,"uuid":"194893927","full_name":"andrebriggs/fabrikate-storageos","owner":"andrebriggs","description":null,"archived":false,"fork":false,"pushed_at":"2019-07-26T02:09:31.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-31T10:38:18.910Z","etag":null,"topics":["fabrikate","gitops","kubernetes","storageos"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrebriggs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-02T15:54:15.000Z","updated_at":"2019-09-11T11:06:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"d83c6d3b-1303-4555-a1f7-570a64e9358c","html_url":"https://github.com/andrebriggs/fabrikate-storageos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrebriggs/fabrikate-storageos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebriggs%2Ffabrikate-storageos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebriggs%2Ffabrikate-storageos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebriggs%2Ffabrikate-storageos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebriggs%2Ffabrikate-storageos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrebriggs","download_url":"https://codeload.github.com/andrebriggs/fabrikate-storageos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrebriggs%2Ffabrikate-storageos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264951514,"owners_count":23687971,"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":["fabrikate","gitops","kubernetes","storageos"],"created_at":"2024-11-15T01:39:07.722Z","updated_at":"2025-07-12T06:32:59.282Z","avatar_url":"https://github.com/andrebriggs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fabrikate StorageOS\n\nUses the reccomended StorageOS chart from https://github.com/storageos/charts/tree/master/stable/storageos-operator\n\nInstalls the StorageOS Operator, and then installs a StorageOS cluster.\n\nKubernetes ships with a StorageOS Kubernetes [volume plugin](https://kubernetes.io/docs/concepts/storage/storage-classes/#storageos) since it is a storage class a [provisioner](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner).\n\nYou can see the storageclasses your application's StatefulSet is using by calling \n```\n$ kubectl get storageclass\n```\nIf you see a StorageOS provisioned storageclass then your statefulset is configured.\n\n## Uninstalling StorageOS\n```\n$ kubectl delete all --all -n storageos\n$ kubectl delete all --all -n storageos-operator\n```\n\n# Manual Kafka/Zookeeper End to End Example\n\n## Install Kafka/Zookeeper\n1. Add repo to helm: `$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator`\n2. Install a release named **kafka**: `$ helm install --name kafka incubator/kafka`\n3. Set the Kafka StatefulSet to use a storageclass that StorageOS supports (see Statefulset defintion [here](https://docs.storageos.com/docs/usecases/kubernetes/kafka))\n\n**Note**: If you have issues with Tiller RBAC run (via [link](https://github.com/helm/helm/issues/3130#issuecomment-372931407))\n```\nkubectl --namespace kube-system create serviceaccount tiller\n\nkubectl create clusterrolebinding tiller-cluster-rule \\\n --clusterrole=cluster-admin --serviceaccount=kube-system:tiller\n\nkubectl --namespace kube-system patch deploy tiller-deploy \\\n -p '{\"spec\":{\"template\":{\"spec\":{\"serviceAccount\":\"tiller\"}}}}' \n ```\n\n## Uninstalling Kakfa via Helm\n```\n$ helm list\nNAME              \tREVISION\tUPDATED                 \tSTATUS  \tCHART                          \tAPP VERSION\tNAMESPACE         \nkafka             \t1       \tSun Jun 30 22:15:19 2019\tDEPLOYED\tkafka-0.16.2                   \t5.0.1      \tdefault           \n$ helm delete kafka\nrelease \"kafka\" deleted\n```\n\n## Create Topic\n1. List topics: `$ kubectl -n default exec -ti testclient -- ./bin/kafka-topics.sh --zookeeper kafka-zookeeper:2181 --list`\n    a. There should be none initially\n2. Create a topic: `$ kubectl -n default exec -ti testclient -- ./bin/kafka-topics.sh --zookeeper kafka-zookeeper:2181 --create --topic test-rep-one --partitions 6 --replication-factor 1`\n\n## Run Tests\n1. Manually install test client: `$ kubectl apply -f /Users/andrebriggs/Code/kafka-test-client-pod.yaml`\n2. Send data to Kafka Cluster that whole persistent volume is backed by StorageOS: `$ kubectl -n default exec -ti testclient -- ./bin/kafka-run-class.sh org.apache.kafka.tools.ProducerPerformance --topic test-rep-one --num-records 5000 --record-size 100 --throughput -1 --print-metrics --producer-props acks=1 bootstrap.servers=kafka:9092 buffer.memory=67108864 batch.size=8196`\n\n## Test Results From Client\n```\nMetric Name                                                                           Value\nkafka-metrics-count:count:{client-id=producer-1}                                    : 76.000\nproducer-metrics:batch-size-avg:{client-id=producer-1}                              : 3490.667\nproducer-metrics:batch-size-max:{client-id=producer-1}                              : 8137.000\nproducer-metrics:batch-split-rate:{client-id=producer-1}                            : 0.000\nproducer-metrics:buffer-available-bytes:{client-id=producer-1}                      : 67108864.000\nproducer-metrics:buffer-exhausted-rate:{client-id=producer-1}                       : 0.000\nproducer-metrics:buffer-total-bytes:{client-id=producer-1}                          : 67108864.000\nproducer-metrics:bufferpool-wait-ratio:{client-id=producer-1}                       : 0.000\nproducer-metrics:compression-rate-avg:{client-id=producer-1}                        : 1.000\nproducer-metrics:connection-close-rate:{client-id=producer-1}                       : 0.000\nproducer-metrics:connection-count:{client-id=producer-1}                            : 4.000\nproducer-metrics:connection-creation-rate:{client-id=producer-1}                    : 0.132\nproducer-metrics:incoming-byte-rate:{client-id=producer-1}                          : 239.947\nproducer-metrics:io-ratio:{client-id=producer-1}                                    : 0.001\nproducer-metrics:io-time-ns-avg:{client-id=producer-1}                              : 422965.899\nproducer-metrics:io-wait-ratio:{client-id=producer-1}                               : 0.004\nproducer-metrics:io-wait-time-ns-avg:{client-id=producer-1}                         : 1624404.127\nproducer-metrics:metadata-age:{client-id=producer-1}                                : 0.250\nproducer-metrics:network-io-rate:{client-id=producer-1}                             : 5.606\nproducer-metrics:outgoing-byte-rate:{client-id=producer-1}                          : 18491.855\nproducer-metrics:produce-throttle-time-avg:{client-id=producer-1}                   : 0.000\nproducer-metrics:produce-throttle-time-max:{client-id=producer-1}                   : 0.000\nproducer-metrics:record-error-rate:{client-id=producer-1}                           : 0.000\nproducer-metrics:record-queue-time-avg:{client-id=producer-1}                       : 5.799\nproducer-metrics:record-queue-time-max:{client-id=producer-1}                       : 41.000\nproducer-metrics:record-retry-rate:{client-id=producer-1}                           : 0.000\nproducer-metrics:record-send-rate:{client-id=producer-1}                            : 165.420\nproducer-metrics:record-size-avg:{client-id=producer-1}                             : 186.000\nproducer-metrics:record-size-max:{client-id=producer-1}                             : 186.000\nproducer-metrics:records-per-request-avg:{client-id=producer-1}                     : 62.500\nproducer-metrics:request-latency-avg:{client-id=producer-1}                         : 19.650\nproducer-metrics:request-latency-max:{client-id=producer-1}                         : 76.000\nproducer-metrics:request-rate:{client-id=producer-1}                                : 2.803\nproducer-metrics:request-size-avg:{client-id=producer-1}                            : 6597.024\nproducer-metrics:request-size-max:{client-id=producer-1}                            : 16344.000\nproducer-metrics:requests-in-flight:{client-id=producer-1}                          : 0.000\nproducer-metrics:response-rate:{client-id=producer-1}                               : 2.804\nproducer-metrics:select-rate:{client-id=producer-1}                                 : 2.601\nproducer-metrics:waiting-threads:{client-id=producer-1}                             : 0.000\nproducer-node-metrics:incoming-byte-rate:{client-id=producer-1, node-id=node--1}    : 18.473\nproducer-node-metrics:incoming-byte-rate:{client-id=producer-1, node-id=node-0}     : 75.093\nproducer-node-metrics:incoming-byte-rate:{client-id=producer-1, node-id=node-1}     : 72.660\nproducer-node-metrics:incoming-byte-rate:{client-id=producer-1, node-id=node-2}     : 74.380\nproducer-node-metrics:outgoing-byte-rate:{client-id=producer-1, node-id=node--1}    : 2.209\nproducer-node-metrics:outgoing-byte-rate:{client-id=producer-1, node-id=node-0}     : 6190.030\nproducer-node-metrics:outgoing-byte-rate:{client-id=producer-1, node-id=node-1}     : 6176.315\nproducer-node-metrics:outgoing-byte-rate:{client-id=producer-1, node-id=node-2}     : 6180.384\nproducer-node-metrics:request-latency-avg:{client-id=producer-1, node-id=node--1}   : 0.000\nproducer-node-metrics:request-latency-avg:{client-id=producer-1, node-id=node-0}    : 26.741\nproducer-node-metrics:request-latency-avg:{client-id=producer-1, node-id=node-1}    : 17.654\nproducer-node-metrics:request-latency-avg:{client-id=producer-1, node-id=node-2}    : 14.481\nproducer-node-metrics:request-latency-max:{client-id=producer-1, node-id=node--1}   : -Infinity\nproducer-node-metrics:request-latency-max:{client-id=producer-1, node-id=node-0}    : 76.000\nproducer-node-metrics:request-latency-max:{client-id=producer-1, node-id=node-1}    : 55.000\nproducer-node-metrics:request-latency-max:{client-id=producer-1, node-id=node-2}    : 43.000\nproducer-node-metrics:request-rate:{client-id=producer-1, node-id=node--1}          : 0.066\nproducer-node-metrics:request-rate:{client-id=producer-1, node-id=node-0}           : 0.926\nproducer-node-metrics:request-rate:{client-id=producer-1, node-id=node-1}           : 0.893\nproducer-node-metrics:request-rate:{client-id=producer-1, node-id=node-2}           : 0.926\nproducer-node-metrics:request-size-avg:{client-id=producer-1, node-id=node--1}      : 33.500\nproducer-node-metrics:request-size-avg:{client-id=producer-1, node-id=node-0}       : 6683.464\nproducer-node-metrics:request-size-avg:{client-id=producer-1, node-id=node-1}       : 6915.185\nproducer-node-metrics:request-size-avg:{client-id=producer-1, node-id=node-2}       : 6672.607\nproducer-node-metrics:request-size-max:{client-id=producer-1, node-id=node--1}      : 43.000\nproducer-node-metrics:request-size-max:{client-id=producer-1, node-id=node-0}       : 16344.000\nproducer-node-metrics:request-size-max:{client-id=producer-1, node-id=node-1}       : 16344.000\nproducer-node-metrics:request-size-max:{client-id=producer-1, node-id=node-2}       : 16344.000\nproducer-node-metrics:response-rate:{client-id=producer-1, node-id=node--1}         : 0.066\nproducer-node-metrics:response-rate:{client-id=producer-1, node-id=node-0}          : 0.926\nproducer-node-metrics:response-rate:{client-id=producer-1, node-id=node-1}          : 0.893\nproducer-node-metrics:response-rate:{client-id=producer-1, node-id=node-2}          : 0.926\nproducer-topic-metrics:byte-rate:{client-id=producer-1, topic=test-rep-one}         : 18362.205\nproducer-topic-metrics:compression-rate:{client-id=producer-1, topic=test-rep-one}  : 1.000\nproducer-topic-metrics:record-error-rate:{client-id=producer-1, topic=test-rep-one} : 0.000\nproducer-topic-metrics:record-retry-rate:{client-id=producer-1, topic=test-rep-one} : 0.000\nproducer-topic-metrics:record-send-rate:{client-id=producer-1, topic=test-rep-one}  : 165.420\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrebriggs%2Ffabrikate-storageos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrebriggs%2Ffabrikate-storageos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrebriggs%2Ffabrikate-storageos/lists"}