Deploy Speckle server to Kubernetes for enterprise and production environments
s-2vcpu-4gb
). While this is a minimum, your usage may vary and we recommend testing under your typical loads and adjusting by deploying new nodes or larger sized machines in new node-pools.Create Cluster
button. After the cluster is created and initialized, you should see it in your list of kubernetes clusters:doctl
.do-
. Make a note of the name, you will use this in place of ${YOUR_CLUSTER_CONTEXT_NAME}
in most of the following steps of this guide.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.Create Database Cluster
.
Again we used the default sizes, but your usage will vary and we recommend testing under your typical loads and adjusting by the database size as necessary.Secure this database cluster by restricting access.
. This will take you to the Trusted Sources panel in the Settings tab. Here we will improve the security of your database by only allowing connections from your Kubernetes cluster. Type the name of your Kubernetes cluster and add it as a Trusted Source.connection string
from the dropdown, and copy the displayed Connection String. You will require this when configuring your deployment in step 4.Create Database Cluster
.
Again we used the default sizes, but your usage will vary and we recommend testing under your typical loads and adjusting by the database size as necessary.Secure this database cluster by restricting access
. This will take you to the Trusted Sources panel in the Settings tab. Here we will improve the security of your database by only allowing connections from your Kubernetes cluster. Type the name of your Kubernetes cluster and add it as a Trusted Source.connection string
from the dropdown, and copy the displayed Connection String. You will require this for when configuring your deployment in step 4.bucket
value which we will require when configuring your deployment in subsequent steps. Click on Create Space
.Settings
tab and add a CORS Configurations
.
PUT
requests from your domain.
Settings
tab and copy the Endpoint
value.Spaces access keys
heading, click Generate New Key
. You will only be able to see the Secret value once, so copy the name, the key and the secret and store this securely.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:speckle
. The other existing namespaces were created by Kubernetes and are required for Kubernetes to run. Replace ${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.speckle
namespace. Replace all the items starting with ${YOUR_...}
with the appropriate value. ${YOUR_SECRET}
should be replaced with a value unique to this cluster, we recommend creating a random value of at least 10 characters long.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:redis_url
with the key you require and replacing ${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:${YOUR_EMAIL_ADDRESS}
and ${YOUR_CLUSTER_CONTEXT_NAME}
with the appropriate values.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster. Within the response it should state that the message was “The ACME account was registered with the ACME server”.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster. Again, within the response it should state that the message was “The ACME account was registered with the ACME server”.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.values.yaml
file from the Helm chart repository and save it as values.yaml
to the current directory on your local machine. We will be editing and using this file in the following steps.namespace
: required, we are using speckle
in this guide so change this valuedomain
: required, this is the domain name at which your Speckle server will be available.db.useCertificate
: required, this should be set to true and will force Speckle to use the certificate for Postgres we shall provide in db.certificate
.db.certificate
: required, this can be found by clicking Download CA certificate
in your database’s overview page on DigitalOcean. You can find your Postgres database by selecting it from the Database page on DigitalOcean. When entering the data, please use Helm’s pipe operator for multiline strings and be careful with indentation. We recommend reading Helm’s guide on formatting multiline strings, and refer to the image below for an example of this format.s3.endpoint
: required, the endpoint can be found in the Settings Page of your DigitalOcean Space. You can find your Space by selecting it from the Spaces page on DigitalOcean. This value must be prepended with https://
.s3.bucket
: required, this is the name of your DigitalOcean space.s3.access_key
: required, this is the Key
of your Spaces API key. You can find this by viewing it from the Spaces API Key page on DigitalOceans3.auth.local.enabled
: this is enabled by default. This requires users to register on your Speckle cluster with a username and password. If you wish to use a different authorization provider, such as Azure AD, Github, or Google, then set this value to false
, and amend the relevant section below by enabling that and providing the relevant details where necessary.server.email
: optional, enabling emails will enable extra features like sending invites.
server.email.enabled
to true
.server.email.host
, server.email.username
, and optionally depending on your email server server.email.port
email_password
secret to have been set in Step 3.cert_manager_issuer
: optional, the default is set for Let’s Encrypt staging api letsencrypt-staging
. For production, or if you encounter an issue with certificates, change the value to letsencrypt-prod
.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:values.yaml
file you edited previously. If DigitalOcean manages your Domain Names, adding a DNS A record using DigitalOcean’s Domain page will look something like the following:${YOUR_CLUSTER_CONTEXT_NAME}
with the name of your cluster.:
(STAGING) Pretend Pear X1
and/or (STAGING) Bogus Broccoli X2
. Click the Not Secure
warning next to the address bar, then click Certificate is not valid
for more details.