Newer
Older
[](https://discord.gg/wDNGDeSW5F)
Selkies is a platform built on GKE to orchestrate per-user stateful workloads.
## Limitations
* The instructions below must be run within a Google Cloud Organization by a member of that org. This is due to the use of `setup/scripts/create_oauth_client.sh`'s use of `gcloud alpha iap oauth-brand` commands - which implicity operate on internal brands. For details see https://cloud.google.com/iap/docs/programmatic-oauth-clients
The steps below will create the infrastructure for the app launcher. You should deploy to a new project.
1. Clone the source repository:
```bash
git clone https://github.com/selkies-project/selkies.git -b master && \
```
2. Set the project, replace `YOUR_PROJECT` with your project ID:
```bash
export PROJECT_ID=YOUR_PROJECT
```
```bash
gcloud config set project ${PROJECT_ID?}
```
3. Enable the required GCP project services:
cloudresourcemanager.googleapis.com \
compute.googleapis.com \
container.googleapis.com \
cloudbuild.googleapis.com \
servicemanagement.googleapis.com \
serviceusage.googleapis.com \
stackdriver.googleapis.com \
secretmanager.googleapis.com \
iap.googleapis.com
```
4. Grant the cloud build service account permissions on your project:
```bash
CLOUDBUILD_SA=$(gcloud projects describe ${PROJECT_ID?} --format='value(projectNumber)')@cloudbuild.gserviceaccount.com && \
gcloud projects add-iam-policy-binding ${PROJECT_ID?} --member serviceAccount:${CLOUDBUILD_SA?} --role roles/owner && \
gcloud projects add-iam-policy-binding ${PROJECT_ID?} --member serviceAccount:${CLOUDBUILD_SA?} --role roles/iam.serviceAccountTokenCreator
```
```bash
ACCOUNT=$(gcloud config get-value account)
REGION=us-west1
gcloud builds submit --project=${PROJECT_ID?} --substitutions=_USER=${ACCOUNT?},_REGION=${REGION?}
(cd examples/jupyter-notebook/ && gcloud builds submit --project=${PROJECT_ID?} --substitutions=_REGION=${REGION?})
7. Connect to the App Launcher web interface at the URL output below:
## Troubleshooting
* If the initial cloud build fails with the message `Step #2 - "create-oauth-client": ERROR: (gcloud.alpha.iap.oauth-brands.list) INVALID_ARGUMENT: Request contains an invalid argument.` It is most likely due to running as a user that is not a member of the Cloud Identity Organization. See the limitation described above.
* If your region only has 500 GB of Persistent Disk SSD quota, run the following but keep in mind the number of apps and image pull performance will be affected.
```
cat - > selkies-min-ssd.auto.tfvars <<EOF
default_pool_disk_size_gb = 100
gpu_cos_pool_disk_size_gb = 100
tier1_pool_disk_size_gb = 100
EOF
```
```bash
gcloud secrets create broker-tfvars-selkies-min-ssd \
--replication-policy=automatic \
--data-file selkies-min-ssd.auto.tfvars
```
* If the load balancer never comes online and you receive 500 errors after the deployment has completed for at least 30 minutes, the autoneg controller annotation may need to be reset:
```bash
REGION=us-west1
gcloud container clusters get-credentials --region ${REGION?} broker-${REGION?}
```
```bash
./setup/scripts/fix_autoneg.sh
```