Citrix SecurSpaces™

Google GKE

This page prepares the Google Cloud infrastructure Citrix SecurSpaces™ needs: a Kubernetes cluster to run on, a container registry to pull images from, and a MongoDB database to store platform state.

When you have finished, continue with Install with the Strong Installer CLI, which is the same for every platform.

Important:

Use GKE Standard, not GKE Autopilot. SecurSpaces does not install on Autopilot clusters — the installation fails. Autopilot is the default mode when you create a cluster in the Google Cloud console, so select Standard explicitly.

NetScaler CPX does not currently work on GKE. This is a known issue, a fix is in progress, and there is no date yet. Contact Citrix for the current status before planning a deployment that depends on it, and use one of these instead:

  • NGINX — the closest substitute, and the option this documentation covers in full
  • Kubernetes Gateway API — supported by the chart, with the GKE-specific setting described below

Prerequisites

  • A Google Cloud project with permissions to create GKE, Artifact Registry, and networking resources.
  • A MongoDB Atlas subscription.
  • Two domain names: a regular one such as example.com, and a wildcard subdomain for proxy support such as *.proxy.example.com.
  • TLS certificates for those domains.
  • An identity provider, such as Okta, if you intend to use SAML.
  • An ingress controller, or a decision about which one to use. SecurSpaces cannot serve traffic without one, and only NetScaler CPX is deployed by the chart. See Ingress.

For sizing and supported versions, see System requirements and Sizing.

Install the following tools:

Create a GKE cluster

  1. Sign in and select your project:

    gcloud auth login
    gcloud config set project $PROJECT_ID
    <!--NeedCopy-->
    

The reference sizing for around 500 developers is two n2-standard-8 service nodes (8 vCPU, 32 GiB) and an autoscaling workspace pool of n2-standard-16 (16 vCPU, 64 GiB). See Sizing.

  1. Create a Standard cluster with a node pool for the platform services:

    gcloud container clusters create $CLUSTER_NAME \
      --project $PROJECT_ID \
      --region $REGION \
      --num-nodes 2 \
      --machine-type n2-standard-8 \
      --enable-ip-alias
    <!--NeedCopy-->
    

    gcloud container clusters create produces a Standard cluster. Autopilot requires the separate create-auto command, which must not be used.

  2. Add a node pool for workspaces, with autoscaling. Workspaces are the elastic part of the deployment, so give this pool room to grow:

    gcloud container node-pools create workspace-nodes \
      --cluster $CLUSTER_NAME \
      --project $PROJECT_ID \
      --region $REGION \
      --machine-type n2-standard-16 \
      --num-nodes 2 \
      --enable-autoscaling \
      --min-nodes 2 \
      --max-nodes 10
    <!--NeedCopy-->
    
  3. Fetch cluster credentials and verify the connection:

    gcloud container clusters get-credentials $CLUSTER_NAME --project $PROJECT_ID --region $REGION
    kubectl get nodes
    <!--NeedCopy-->
    

    The installer runs this command for you during an upgrade, using the cluster name, project, and region in your configuration file.

Create an Artifact Registry repository

SecurSpaces pulls its service images and your workspace images from a registry you control. The installer pushes them there in the next stage.

  1. Enable the API and create a repository for the platform images:

    gcloud services enable artifactregistry.googleapis.com --project $PROJECT_ID
    
    gcloud artifacts repositories create strong-network \
      --repository-format=docker \
      --location=$REGION \
      --project=$PROJECT_ID
    <!--NeedCopy-->
    
  2. Create a repository for workspace images:

    gcloud artifacts repositories create ws-images \
      --repository-format=docker \
      --location=$REGION \
      --project=$PROJECT_ID
    <!--NeedCopy-->
    
  3. Authenticate Docker to the registry:

    gcloud auth configure-docker $REGION-docker.pkg.dev
    <!--NeedCopy-->
    

The installer recognizes an Artifact Registry or Container Registry URL — anything containing docker.pkg.dev or gcr.io — and authenticates to it with the Google Cloud CLI. You can sign in as a user account, or supply a service account key with --service-account-file-path, which is the usual choice for a pipeline. See SDS CLI reference.

Create a MongoDB database

SecurSpaces stores its platform state in MongoDB. For what it holds and how large to expect it to grow, see The SecurSpaces database.

  1. In MongoDB Atlas, open the database page and select Create.
  2. Configure the deployment and select Create Deployment:

    • Select Google Cloud as the cloud provider.
    • Choose the same region as the GKE cluster.
    • Select the M10 tier with autoscaling.
  3. Create a database user, and note the user name and password. The installer asks for them.
  4. Allow access from your cluster’s egress addresses in Network Access.
  5. Copy the connection string from Connect > Drivers.

You can also run MongoDB inside the cluster instead of using Atlas. See Configure an external database.

If you use the Kubernetes Gateway API

GKE needs one extra setting when SecurSpaces uses Gateway API resources rather than Ingress resources. Set both of these in your configuration file:

platform:
  useGatewayAPI: true
  gatewayAPI:
    gatewayClassName: <your-gateway-class>
    enableHealthCheckPolicy: true
<!--NeedCopy-->

enableHealthCheckPolicy creates the networking.gke.io/v1 HealthCheckPolicy resources that GKE requires to health-check the backends. It applies to GKE only.

Most deployments use an ingress controller instead. See Ingress.

Next step

Your Google Cloud infrastructure is ready. Continue with Install with the Strong Installer CLI.

During that installation you also set up the ingress controller. If you have not chosen one, do that first — see Ingress.

Google GKE