mirror of
https://github.com/cirruslabs/tart.git
synced 2026-10-18 03:53:56 +02:00
Orchard documentation (#897)
* Orchard documentation * Fix typo Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com> * architecture-and-security.md: change list order --------- Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
This commit is contained in:
co-authored by
Fedor Korotkov
parent
227301436c
commit
3fde7d08dd
@@ -0,0 +1,64 @@
|
||||
## Introduction
|
||||
|
||||
Compared to Worker, which needs to be deployed on a macOS machine, Controller can be deployed on Linux too.
|
||||
|
||||
In fact, we've made a [container image](https://github.com/cirruslabs/orchard/pkgs/container/orchard) to ease deploying the Controller in container-native environments such as Kubernetes.
|
||||
|
||||
Orchard API is secured by default: all requests must be authenticated with credentials of a service account.
|
||||
When you first run Orchard Controller, you can specify `ORCHARD_BOOTSTRAP_ADMIN_TOKEN` which will automatically
|
||||
create a service account named `bootstrap-admin` with all privileges. Let's first generate `ORCHARD_BOOTSTRAP_ADMIN_TOKEN`:
|
||||
|
||||
```bash
|
||||
export ORCHARD_BOOTSTRAP_ADMIN_TOKEN=$(openssl rand -hex 32)
|
||||
```
|
||||
|
||||
## Deployment Methods
|
||||
|
||||
While you can always run `orchard controller run` manually with the required arguments, this method of deploying the Controller is not recommended.
|
||||
|
||||
Instead, we've listed a more persistent methods of a Controller deployment below.
|
||||
|
||||
Now you can run Orchard Controller on a server of your choice. In the following sections you'll find several examples of
|
||||
how to run Orchard Controller in various environments. Feel free to submit PRs with more examples.
|
||||
|
||||
### Google Compute Engine
|
||||
|
||||
An example below will deploy a single instance of Orchard Controller in Google Cloud Compute Engine in `us-central1` region.
|
||||
|
||||
First, let's create a static IP address for our instance:
|
||||
|
||||
```bash
|
||||
gcloud compute addresses create orchard-ip --region=us-central1
|
||||
export ORCHARD_IP=$(gcloud compute addresses describe orchard-ip --format='value(address)' --region=us-central1)
|
||||
```
|
||||
|
||||
Once we have the IP address, we can create a new instance with Orchard Controller running inside a container:
|
||||
|
||||
```bash
|
||||
gcloud compute instances create-with-container orchard-controller \
|
||||
--machine-type=e2-micro \
|
||||
--zone=us-central1-a \
|
||||
--image-family cos-stable \
|
||||
--image-project cos-cloud \
|
||||
--tags=https-server \
|
||||
--address=$ORCHARD_IP \
|
||||
--container-image=ghcr.io/cirruslabs/orchard:latest \
|
||||
--container-env=PORT=443 \
|
||||
--container-env=ORCHARD_BOOTSTRAP_ADMIN_TOKEN=$ORCHARD_BOOTSTRAP_ADMIN_TOKEN \
|
||||
--container-mount-host-path=host-path=/home/orchard-data,mode=rw,mount-path=/data
|
||||
```
|
||||
|
||||
Now you can create a new context for your local client:
|
||||
|
||||
```bash
|
||||
orchard context create --name production \
|
||||
--service-account-name bootstrap-admin \
|
||||
--service-account-token $ORCHARD_BOOTSTRAP_ADMIN_TOKEN \
|
||||
https://$ORCHARD_IP:443
|
||||
```
|
||||
|
||||
And select it as the default context:
|
||||
|
||||
```bash
|
||||
orchard context default production
|
||||
```
|
||||
Reference in New Issue
Block a user