How to run atscale from google marketplace


Prerequisites

You’ll need the following tools in your development environment. If you are using Cloud Shell, gcloud, kubectl, Docker, and Git are installed in your environment by default.

You will also need the following resources.

  • Domain name and access to DNS
  • TLS Certificate
  • TLS Key

Installation


After selecting our chart from google marketplace and clicking on the deploy button. You should be greeted with 2 options:

Deploy via command line

You can use Google Cloud Shell or a local workstation to complete the following steps.

OPEN IN GOOGLE CLOUD SHELL

  • Configure gcloud as a Docker credential helper:
  gcloud auth configure-docker
  

Create a Google Kubernetes Engine cluster

  • Create a new cluster from the command line:
  gcloud container clusters create cluster-1 --location=us-central1 --num-nodes=4
  
  • Configure kubectl to connect to the new cluster.
  gcloud auth login
gcloud container clusters get-credentials cluster-1 --region us-central1
  
  • Clone the Atscale Google Marketplace Repo
  git clone https://github.com/AtScaleInc/atscale-googlemarketplace-stack
  

Installation

  • Install Google’s kubernetes application crd
  kubectl apply -f "https://raw.githubusercontent.com/GoogleCloudPlatform/marketplace-k8s-app-tools/master/crd/app-crd.yaml"
  

You need to run this command once.

The Application resource is defined by the Kubernetes SIG-apps community. The source code can be found on github.com/kubernetes-sigs/application.

Install Atscale

  • Set image values
  export REGISTRY="marketplace.gcr.io"
export REPOSITORY="atscale-public/atscale"
export TAG="2024.1.1"
  
  • Set your environment details
  export DOMAIN="your.domain.name.com"
export TLSCRT="$(base64 -w 0 -i /tmp/tls.crt)"
export TLSKEY="$(base64 -w 0 -i /tmp/tls.key)"
  
  • Generate the manifest
  helm template atscale chart/atscale-gcp \
--set global.ingressDomain="${DOMAIN}" \
--set global.atscale.tls.tlsCRT="${TLSCRT}" \
--set global.atscale.tls.tlsKEY="${TLSKEY}" \
--set atscale.atscale-engine.image.repository="${REGISTRY}/${REPOSITORY}/atscale-engine" \
--set atscale.atscale-engine.image.tag="${TAG} \
--set atscale.atscale-sml.image.repository="${REGISTRY}/${REPOSITORY}/atscale-sml" \
--set atscale.atscale-sml.image.tag="${TAG}" \
--set atscale.atscale-api.image.repository="${REGISTRY}/${REPOSITORY}/atscale-api" \
--set atscale.atscale-api.image.tag="${TAG}" \
--set atscale.atscale-entitlement.image.repository="${REGISTRY}/${REPOSITORY}/atscale-entitlement" \
--set atscale.atscale-entitlement.image.tag="${TAG}" \
--set atscale.kongproxy.image.repository="${REGISTRY}/${REPOSITORY}/kong" \
--set atscale.kongproxy.image.tag="${TAG}" \
--set atscale.kongproxy.ingressController.image.repository="${REGISTRY}/${REPOSITORY}/kong-ingress-controller" \
--set atscale.kongproxy.ingressController.image.tag="${TAG}" \
--set atscale.postgres.postgresql.image.registry="${REGISTRY}" \
--set atscale.postgres.postgresql.image.repository="${REPOSITORY}/postgres" \
--set atscale.postgres.postgresql.image.tag="${TAG}" \
--set atscale.postgres.pgpool.image.registry="${REGISTRY}" \
--set atscale.postgres.pgpool.image.repository=${REPOSITORY}/pgpool" \
--set atscale.postgres.pgpool.image.tag="${TAG}" \
--set atscale.postgres.metrics.image.registry="${REGISTRY}" \
--set atscale.postgres.metrics.image.repository="${REPOSITORY}/postgres-exporter" \
--set atscale.postgres.metrics.image.tag="${TAG}" \
--set atscale.redis.image.registry="${REGISTRY}" \
--set atscale.redis.image.repository="${REPOSITORY}/redis" \
--set atscale.redis.image.tag="${TAG}" \
--set atscale.keycloak.image.registry="${REGISTRY}" \
--set atscale.keycloak.image.repository="${REPOSITORY}/keycloak" \
--set atscale.keycloak.image.tag="${TAG}" \
--set atscale.git.image.registry="${REGISTRY}" \
--set atscale.git.image.repository="${REPOSITORY}/keycloak" \
--set atscale.git.image.tag="${TAG}" \
--set atscale.objectstorage.image.registry="${REGISTRY}" \
--set atscale.objectstorage.image.repository="${REPOSITORY}/objectstorage" \
--set atscale.objectstorage.image.tag="${TAG}" \
--set atscale.objectstorage.clientImage.registry="${REGISTRY}" \
--set atscale.objectstorage.clientImage.repository="${REPOSITORY}/objectstorageclient" \
--set atscale.objectstorage.clientImage.tag="${TAG}" \
--set objectstoragejob.image.registry="${REGISTRY}" \
--set objectstoragejob.image.repository="${REPOSITORY}/objectstoragejob" \
--set objectstoragejob.image.tag="${TAG}" \
--set atscale.grafana.image.registry="${REGISTRY}" \
--set atscale.grafana.image.repository="${REPOSITORY}/grafana" \
--set atscale.grafana.image.tag="${TAG}" \
--set atscale.promtail.image.registry="${REGISTRY}" \
--set atscale.promtail.image.repository="${REPOSITORY}/promtail" \
--set atscale.promtail.image.tag="${TAG}" \
--set atscale.telemetry.image.repository="${REGISTRY}/${REPOSITORY}/telemetry" \
--set atscale.telemetry.image.tag="${TAG}" \
--set atscale.tempo.tempo.image.registry="${REGISTRY}" \
--set atscale.tempo.tempo.image.repository="${REPOSITORY}/tempo" \
--set atscale.tempo.tempo.image.tag="${TAG}" \
--set atscale.tempo.queryFrontend.query.image.registry="${REGISTRY}" \
--set atscale.tempo.queryFrontend.query.image.repository="${REPOSITORY}/tempo-query" \
--set atscale.tempo.queryFrontend.query.image.tag="${TAG}" \
--set atscale.loki.loki.image.registry="${REGISTRY}" \
--set atscale.loki.loki.image.repository="${REPOSITORY}/loki" \
--set atscale.loki.loki.image.tag="${TAG}" \
--set atscale.loki.gateway.image.registry="${REGISTRY}" \
--set atscale.loki.gateway.image.repository="${REPOSITORY}/loki-gateway" \
--set atscale.loki.gateway.image.tag="${TAG}" \
--set atscale.loki.memcachedindexwrites.image.registry="${REGISTRY}" \
--set atscale.loki.memcachedindexwrites.image.repository="${REPOSITORY}/memcached" \
--set atscale.loki.memcachedindexwrites.image.tag="${TAG} \
--set atscale.mimir.mimir.image.registry="${REGISTRY}" \
--set atscale.mimir.mimir.image.repository="${REPOSITORY}/mimir" \
--set atscale.mimir.mimir.image.tag="${TAG}" \
--set atscale.mimir.gateway.image.registry="${REGISTRY}" \
--set atscale.mimir.gateway.image.repository="${REPOSITORY}/mimir-gateway" \
--set atscale.mimir.gateway.image.tag="${TAG}" \
> atcale_manifest.yaml
  
  • Create the namespace
  kubectl create namespace atscale
  
  • Apply the manifest to your Kubernetes cluster
  kubectl apply -f "atscale_manifest.yaml" --namespace atscale
  

Get the service from the cluster

  kubectl get service -n atscale kong-proxy
  

Generate an DNS A record

In your DNS provider setup an A record with TTL set to 300 The application should be accessible on your domain name after the DNS propagates


NEED HELP WITH ATSCALE?

For further help with atscale go to help.atscale.com