add docs
This commit is contained in:
parent
04d764c492
commit
5d917e1bc3
84
README.md
Normal file
84
README.md
Normal file
|
@ -0,0 +1,84 @@
|
|||
## `garage-cluster`
|
||||
|
||||
*Get started with Garage in Kubernetes!*
|
||||
|
||||
### Overview
|
||||
|
||||
Extremely opinionated tools to deploy Garage to Kubernetes and manage it.
|
||||
|
||||
Actually, these are _my_ tools. You're welcome to borrow them.
|
||||
|
||||
### Creating a Garage Cluster
|
||||
|
||||
To create a Garage cluster, you must do the following:
|
||||
|
||||
* prepare your nodes:
|
||||
|
||||
* all nodes should participate even if they don't have storage for maximum
|
||||
flexibility (load balancing, localhost endpoint for Garage). this repo
|
||||
doesn't setup anything ot make use of this flexibility but it may or you
|
||||
may. you'll want to remove capacity (`-c 10G`) from nodes which won't
|
||||
store and add `-g` for gateway instead.
|
||||
|
||||
* nodes which will have storage should have that storage added via LVM so
|
||||
that you can add storage in the future. This DaemonSet-based Garage
|
||||
cluster does _not_ account for multiple HDDs even though they're supported
|
||||
by Garage. To expand your storage, you'll need LVM.
|
||||
|
||||
* partition partitions, format them, and mount them
|
||||
|
||||
NVME_VG=nvme-vg
|
||||
HDD_VG=hdd-vg
|
||||
lvcreate -L 1G $NVME_VG -n garage-meta
|
||||
mkfs.btrfs /dev/$NVME_VG/garage-meta
|
||||
lvcreate -L 10G $HDD_VG -n garage-data
|
||||
mkfs.xfs /dev/$HDD_VG/garage-data
|
||||
echo "/dev/$NVME_VG/garage-meta /var/lib/garage/meta btrfs defaults 0 2" >> /etc/fstab
|
||||
echo "/dev/$HDD_VG/garage-data /var/lib/garage/data xfs defaults 0 2" >> /etc/fstab
|
||||
mount /var/lib/garage/{meta,data}
|
||||
|
||||
* modify the contents of `cm.yaml`:
|
||||
|
||||
* The daemonset will translate these entries into a `garage.toml` file for
|
||||
you. to place something into a section, prefix it with a period.
|
||||
|
||||
* Settings to check: `replication_factor`, `s3_api.root_domain`,
|
||||
`s3_web.root_domain`
|
||||
|
||||
* You may also include bootstrap peers here if you like. if you do not,
|
||||
you'll need to connect them via the tools which may be more convenient
|
||||
anyway. don't worry about this if you're not sure what to do yet.
|
||||
|
||||
* Modify the contents of `ingress.yaml` to match your controller's requirements
|
||||
and/or your hostname and prefix.
|
||||
|
||||
* Apply the manifests:
|
||||
|
||||
kubectl apply -f .
|
||||
echo "Ctrl-C to exit"
|
||||
kubectl get ds -w
|
||||
|
||||
* Bootstrap the nodes once they've started:
|
||||
|
||||
./tools connect
|
||||
|
||||
* Alias `garage` to use your kubernetes pods:
|
||||
|
||||
./tools env >> ~/.bashrc
|
||||
|
||||
* Generate a sample layout to start:
|
||||
|
||||
If you have the node feature discovery plugin, this may expose likely capacity
|
||||
values. If you do not have the plugin, it will default to 10G for every node.
|
||||
|
||||
You should almost certainly edit the resulting commands before applying them to
|
||||
your cluster. `$PWD/tools` is used to make the resulting script relocatable.
|
||||
|
||||
$PWD/tools generate-layout -z my-zone > run-layout.sh
|
||||
$EDITOR run-layout.sh
|
||||
./run-layout.sh
|
||||
garage layout show
|
||||
read -p 'everything look good? press enter to continue or ctrl-c to abort'
|
||||
garage layout apply
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user