Skip to content

Deploy abcdesktop on Google Cloud Provider (GCP) with Kubernetes

Requirements

If you are using the gcloud command line for the first time, run gcloud auth login to authenticate with your GCP account.

Create a Kubernetes Cluster Using gcloud CLI

First, configure gcloud to set your GCP project as the current project:

gcloud config set project <YOUR_PROJECT_ID>

Run the following command to create your Kubernetes cluster:

gcloud container clusters create abcdesktop-gcp-1 --machine-type=custom-4-8192 --zone=us-central1-a --num-nodes=2

For more details about the command parameters, see the gcloud container clusters create documentation.

After a few minutes, the Kubernetes cluster is ready:

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster abcdesktop-gcp-1 in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                                                              
Created [https://container.googleapis.com/v1/projects/project-3104fb45-bad0-46b7-b2b/zones/us-central1-a/clusters/abcdesktop-gcp-1].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/abcdesktop-gcp-1?project=project-3104fb45-bad0-46b7-b2b
kubeconfig entry generated for abcdesktop-gcp-1.
NAME              LOCATION       MASTER_VERSION      MASTER_IP      MACHINE_TYPE   NODE_VERSION        NUM_NODES  STATUS   STACK_TYPE
abcdesktop-gcp-1  us-central1-a  1.33.5-gke.1308000  34.172.78.248  custom-4-8192  1.33.5-gke.1308000  2          RUNNING  IPV4

Create a Kubernetes Cluster Using Google Cloud Console

If you do not have a running Kubernetes cluster, connect to your GCP console and search for Create a Kubernetes Cluster.

gcp console overview

Navigate to the GCP Kubernetes cluster application main page, click Create cluster, and follow the steps shown below.

gcp kubernetes app page cluster setup step 1 cluster setup step 2 cluster setup step 3-1 cluster setup step 3-2 cluster setup step 4

Wait a few minutes for your cluster to be ready.

cluster ready

Once your cluster is ready, link it to your local machine to manage it remotely. Install the gke-gcloud-auth-plugin by running the following command:

gcloud components install gke-gcloud-auth-plugin

Click the Connect button and paste the provided command into your terminal.

link command

Run the abcdesktop install script

Download and install the latest release automatically:

curl -sL https://raw.githubusercontent.com/abcdesktopio/conf/main/kubernetes/install-4.4.sh | bash

To get more details about the install process, please read the Setup guide

Connect to your abcdesktop service

By default, the install script listens on a free TCP port :30443 and uses a kubectl port-forward command to forward traffic to the HTTP service on port :80.

Open a web browser and navigate to http://localhost:30443.

abcdesktop login

Log in as user Philip J. Fry with the password fry.

abcdesktop login as fry

After the image-pulling process completes, you get your first abcdesktop session.

abcdesktop for fry

Resource issue

If the following resource error occurs:

Unprocessable Entity {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Pod \"fry-38b04\" is invalid: [spec.resources.requests[cpu]: Invalid value: \"1\": must be greater than or equal to aggregate container requests of 1500m, spec.resources.requests[memory]: Invalid value: \"576Mi\": must be greater than or equal to aggregate container requests of 6Gi]","reason":"Invalid","details":{"name":"fry-38b04","kind":"Pod","causes":[{"reason":"FieldValueInvalid","message":"Invalid value: \"1\": must be greater than or equal to aggregate container requests of 1500m","field":"spec.resources.requests[cpu]"},{"reason":"FieldValueInvalid","message":"Invalid value: \"576Mi\": must be greater than or equal to aggregate container requests of 6Gi","field":"spec.resources.requests[memory]"}]},"code":422}
  • Update od.config and comment out the executeclasses default entry:
executeclasses : {
  'default':{
    'nodeSelector': { 'cloud.google.com/compute-class': 'Scale-Out' },
    'description': 'default: up to 4 CPU cores and 8Gi',
    'runtimeClassName': None,
    'resources':{
      # 'requests':{'memory':"576Mi",'cpu':"1000m"},
      # 'limits':  {'memory':"8Gi",'cpu':"2000m"}
    }
  },
  • Restart the pyos-od deployment to reload the abcdesktop-config:
NAMESPACE=abcdesktop
kubectl create -n $NAMESPACE configmap abcdesktop-config --from-file=od.config -o yaml --dry-run=client | kubectl replace -n abcdesktop -f -
kubectl rollout restart deployment pyos-od -n $NAMESPACE

Add applications to your desktop

Using the previous terminal shell, run the application install script:

curl -sL https://raw.githubusercontent.com/abcdesktopio/conf/main/kubernetes/pullapps-4.4.sh | bash

To get more details about the install applications process, please read the Setup applications guide

Reload the web page to refresh the desktop of Philip J. Fry. New applications are now listed in the dock of plasmashell.

abcdesktop for fry with applications

Start the Firefox application.

The first run may involve waiting for the image-pulling process to finish.

In this example, for the Iowa region, the desktop is located near Council Bluffs in the United States.

abcdesktop location

Looking for an older version? Previous documentation (old.abcdesktop.com)