Bring your own Ascend Instance backend
Self-hosted Instances are a way to run Ascend on your own infrastructure.
To set up a self-hosted Instance, you'll need to have a Kubernetes cluster and the ability to deploy applications to it.
To set up your own self-hosted Instance, you'll need to:
-
Create a Kubernetes cluster. You can use a cloud provider like AWS, GCP, or Azure. Ascend has the following self-hosted quickstarts to help you get started:
- Amazon EKS (Coming Soon)
- Google Kubernetes Engine
- Azure Kubernetes Service (Coming Soon)
-
Set up your instance backend by following the instructions in the Bring Your Own Instance Backend guide. This guide walks you through configuring your own Ascend Instance backend on a Kubernetes cluster.
Prerequisites​
- Kubernetes cluster
- Terminal access to interact with your Kubernetes cluster
- Helm CLI version 3.16.0 or higher
Gather configuration information​
Before installing the Ascend Instance backend, you'll need to collect some information from your Kubernetes cluster. You'll use this information with the Helm package manager during installation.
First, identify your cluster's OIDC issuer and decide which namespace you'll use, then provide this information to Ascend.
If you don't know how to find your cluster's issuer, consult your cluster administrator.
If you are the cluster admin, you can find it by accessing a service account token. Connect to any pod with a mounted service account token using:
kubectl exec -it -n NAMESPACE POD_NAME -- bash
Then retrieve the token (this is safe as tokens are regularly rotated by Kubernetes):
cat /var/run/secrets/kubernetes.io/serviceaccount/token | pbcopy
To extract the issuer from the token, run:
echo $TOKEN_VAL | cut -d "." -f 2 | base64 -D | jq '.iss'
Replace TOKEN_VAL
with the token value, or use pbpaste
if available on your system.
Ascend will provide you with a values.yaml
file for installation that looks similar to this:
instance:
uuid: "01953933-14ed-7240-ba0c-36a6039b7de9" # Required: Instance UUID
organizationUuid: "018fbc9f-49a2-7909-bb26-dd017195e3d4" # Required: Organization UUID
subdomain: "acme-self-hosted-instance" # Required: Subdomain for instance
managedIdentity:
ascend:
domainHash: "i5ft3k"
instanceHash: "un2edj"
aws:
enabled: true
clusterIssuerHash: "jh3t7v"
enabled: true
environments:
- id: dev
uuid: 01953936-7c3f-7e83-be35-f6e84f860b4e
hash: "aervpl"
- id: stage
uuid: 01953936-9892-7261-91ac-9e9d83cd4271
hash: "xibnsu"
- id: prod
uuid: 01953936-add7-7905-81cf-a5f3b6163918
hash: "6wdtcs"
msk:
roleArn: "arn:aws:iam::905936477528:role/asc-a-i5ft3k-un2edj-i"
clusterArn: "arn:aws:kafka:us-east-1:905936477528:cluster/app-dev/f696d209-f38c-4fc3-9b2a-6f591ccbb5bd-5"
Install the Ascend Instance backend​
-
Save the
values.yaml
file provided by Ascend -
Set the following bash variables:
tipAfter creating your cluster, you can get the cluster context by running
kubectl config current-context
.export KUBE_CONTEXT=gke_<gcp-project>_<region>_<cluster-name>
export NAMESPACE=<your-namespace> # this should be the same as the subdomain
export RELEASE_NAME=ascend-deploy-0 # you can change this if desired
export VALUES_FILE=<path/to/values.yaml> -
Install the Helm chart:
# If the namespace doesn't exist yet
helm install \
${RELEASE_NAME} \
oci://quay.io/ascendio/charts/instance-backend \
-f ${VALUES_FILE} \
--kube-context ${KUBE_CONTEXT} \
--namespace ${NAMESPACE} \
--create-namespacetipIf the namespace already exists, you can omit the
--create-namespace
flag.
Upgrade the Ascend Instance backend​
To upgrade your Ascend Instance backend, run:
helm upgrade \
${RELEASE_NAME} \
oci://quay.io/ascendio/charts/instance-backend \
--kube-context ${KUBE_CONTEXT} \
-n ${NAMESPACE} \
--reuse-values
If you've updated your values.yaml
file, remove the --reuse-values
flag and specify the new values with -f ${VALUES_FILE}
.
Uninstalling the Ascend Instance backend​
To uninstall your Ascend Instance backend, run:
helm uninstall \
${RELEASE_NAME} \
--kube-context ${KUBE_CONTEXT} \
-n ${NAMESPACE}