Go to file
Mehran Kholdi 8e5cb5de78 Rewrite: Change the way we're exposing volume metrics
Summary:
Formerly, we were updating the metrics every 15 seconds. We were facing a couple of issues doing it manually:

- Outdated metrics in case of a one-time crash
- Metrics getting exposed for deleted PVs

Instead of fixing the bugs, I preferred to do it the right way. As per `python-prometheus` docs:

>  Sometimes it is not possible to directly instrument code, as it is not in your control. This requires you to proxy metrics from other systems. To do so you need to create a custom collector...

Test Plan:
- Deploy on a cluster with existing rawfile PVs
- Send request to `:9100/metrics` and assert that metrics are exposed
- Delete a PV, and assert that its metrics disappear

Reviewers: h.marvi, bghadiri, sina_rad, mhyousefi

Reviewed By: h.marvi, bghadiri, sina_rad

Differential Revision: https://phab.hamravesh.ir/D815
2020-06-14 03:31:21 +04:30
csi Autogen csi grpc interface 2020-04-24 00:08:36 +04:30
deploy/charts/rawfile-csi Implement `STAGE_UNSTAGE_VOLUME` capability 2020-05-31 13:23:10 +04:30
orchestrator Use immutable tags for running tasks 2020-05-29 21:04:40 +04:30
protos Autogen csi grpc interface 2020-04-24 00:08:36 +04:30
templates Use immutable tags for running tasks 2020-05-29 21:04:40 +04:30
.dockerignore Configure CI 2020-04-24 19:35:37 +04:30
.gitignore Autogen python gitignore 2020-04-23 04:18:53 +04:30
.gitlab-ci.yml Use immutable tags for running tasks 2020-05-29 21:04:40 +04:30
CODE_OF_CONDUCT.md chore(docs): add contributor guidelines 2020-06-13 06:08:25 +00:00
Dockerfile Use slim base image to reduce the resulting image size 2020-06-13 18:25:28 +04:30
GOVERNANCE.md chore(docs): add contributor guidelines 2020-06-13 06:08:25 +00:00
LICENSE Publish under Apache License 2.0 2020-06-12 02:31:02 +04:30
MAINTAINERS chore(docs): add contributor guidelines 2020-06-13 06:08:25 +00:00
README.md Add installation and usage instructions to readme 2020-04-28 22:54:38 +04:30
SECURITY.md chore(docs): add contributor guidelines 2020-06-13 06:08:25 +00:00
consts.py Use immutable tags for running tasks 2020-05-29 21:04:40 +04:30
metrics.py Rewrite: Change the way we're exposing volume metrics 2020-06-14 03:31:21 +04:30
rawfile.py Use immutable tags for running tasks 2020-05-29 21:04:40 +04:30
rawfile_servicer.py Implement `STAGE_UNSTAGE_VOLUME` capability 2020-05-31 13:23:10 +04:30
rawfile_util.py Implement `STAGE_UNSTAGE_VOLUME` capability 2020-05-31 13:23:10 +04:30
remote.py Store metadata file 2020-04-26 01:37:23 +04:30
requirements.in Implement basic metrics 2020-04-26 02:02:00 +04:30
requirements.txt Implement basic metrics 2020-04-26 02:02:00 +04:30
util.py Handle attaching loop devices instead of handing it to mount 2020-04-26 02:01:42 +04:30

README.md

RawFilePV

Kubernetes LocalPVs on Steroids

Install

helm install -n kube-system rawfile-csi ./deploy/charts/rawfile-csi/

Usage

Create a StorageClass with your desired options:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: my-sc
provisioner: rawfile.hamravesh.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

Features

  • Direct I/O: Near-zero disk performance overhead
  • Dynamic provisioning
  • Enforced volume size limit
  • Thin provisioned
  • Access Modes
    • ReadWriteOnce
    • ReadOnlyMany
    • ReadWriteMany
  • Volume modes
    • Filesystem mode
    • Block mode
  • Volume metrics
  • Supports fsTypes
  • Online expansion: If fs supports it (e.g. ext4, btrfs)
  • Online shrinking: If fs supports it (e.g. btrfs)
  • Offline expansion/shrinking
  • Ephemeral inline volume
  • Snapshots: If the fs supports it (e.g. btrfs)