git-remote-k8s/README.md

56 lines
2.0 KiB
Markdown

# `git-remote-k8s`
A Git remote helper which allows the use of a Kubernetes PVC as the
git repo storage.
## Installation
First, install Rust.
Now, from within the cloned repo, install git-remote-k8s
```bash
cargo install git-remote-k8s
```
## Prerequisites
You must have access to a kubernetes cluster using kubectl where you can provision a
persistent volume somehow and bind it to a claim. If you can "create a new PVC for a pod",
you're probably good to go. If you instead get a pending claim forever, you will need
to setup a volume provider which can do dynamic provisioning. I've been using longhorn
lately since it has very simple backups. I have been very happy with it but YMMV. k3s
also comes with a local dynamic provisioner and that would also work.
## WARNING
If you use this with minikube or similar and then delete your cluster, you will lose the
git repo stored in the volume! Use with caution in non-prod environments. And use caution
in prod, too! Don't forget backups.
## Usage
The URL format for `git-remote-k8s` is `k8s://kubectl-context/namespace/pvc`.
A common name for a `kubectl` context is `default`. Yours will be found via
`kubectl config view` and some information may be found in the
[`kubectl` Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/#kubectl-context-and-configuration).
For example, this PVC in the cluster accessed via the `default` context would
be `k8s://default/git-remote-test/git-remote-k8s`:
```
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
git-remote-test git-remote-k8s Bound pvc-abcdef10-1023-1025-1024-123456789123 1Gi RWO ssd 91m
```
Cloning:
```bash
git clone k8s://context/namespace/pvc
```
Adding a remote:
```bash
git remote add origin k8s//context/namespace/pvc
```