From 29260549fa5f5d970cd3ccc73d76bdcfdcf0fb9d Mon Sep 17 00:00:00 2001 From: Rolf Ahrenberg Date: Wed, 21 Jul 2021 01:50:25 +0300 Subject: [PATCH] Document volumeStorageMedium and volumeSizeLimit (#700) Related to #674 --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index afc91ce1..d0413fe6 100644 --- a/README.md +++ b/README.md @@ -830,6 +830,18 @@ spec: volumeMounts: - mountPath: /home/runner/work/repo name: repo + # Optional storage medium type of runner volume mount. + # More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir + # "" (default) = Node's default medium + # Memory = RAM-backed filesystem (tmpfs) + # NOTE: Using RAM-backed filesystem gives you fastest possible storage on your host nodes. + volumeStorageMedium: "" + # Total amount of local storage resources required for runner volume mount. + # The default limit is undefined. + # NOTE: You can make sure that nodes' resources are never exceeded by limiting used storage size per runner pod. + # You can even disable the runner mount completely by setting limit to zero if dockerdWithinRunnerContainer = true. + # Please see https://github.com/actions-runner-controller/actions-runner-controller/pull/674 for more information. + volumeSizeLimit: 4Gi # Optional name of the container runtime configuration that should be used for pods. # This must match the name of a RuntimeClass resource available on the cluster. # More info: https://kubernetes.io/docs/concepts/containers/runtime-class @@ -959,7 +971,7 @@ spec: app: example ``` -As it is based on `StatefulSet`, `selector` and `template.medatada.labels` needs to be defined and haev the exact same set of labels. `serviceName` must be set to some non-empty string as it is also required by `StatefulSet`. +As it is based on `StatefulSet`, `selector` and `template.medatada.labels` needs to be defined and have the exact same set of labels. `serviceName` must be set to some non-empty string as it is also required by `StatefulSet`. Runner-related fields like `ephemeral`, `repository`, `organization`, `enterprise`, and so on should be written directly under `spec`. @@ -1016,7 +1028,7 @@ You can also read the design and usage documentation written in the original pul https://github.com/actions-runner-controller/actions-runner-controller/pull/629 -Under the hood, `RunnerSet` relies on Kubernetes's `StatefulSet` and Mutating Webhook. A statefulset is used to create a number of pods that has stable names and dynamically provisioned persistent volumes, so that each statefulset-managed pod gets the same persisntet volume even after restarting. A mutating webhook is used to dynamically inject a runner's "registration token" which is used to call GitHub's "Create Runner" API. +Under the hood, `RunnerSet` relies on Kubernetes's `StatefulSet` and Mutating Webhook. A statefulset is used to create a number of pods that has stable names and dynamically provisioned persistent volumes, so that each statefulset-managed pod gets the same persistent volume even after restarting. A mutating webhook is used to dynamically inject a runner's "registration token" which is used to call GitHub's "Create Runner" API. We envision that `RunnerSet` will eventually replace `RunnerDeployment`, as `RunnerSet` provides a more standard API that is easy to learn and use because it is based on `StatefulSet`, and it has a support for `volumeClaimTemplates` which is crucial to manage dynamically provisioned persistent volumes.