Deploy 100% Upstream Kubernetes on Google Cloud
One of the great features available with Platform 9 offers seamless integration with AWS and Azure to create and manage Kubernetes clusters. In both cases, setting up a new cluster is as simple as clicking on the Amazon AWS or Microsoft Azure buttons from within your account and following the steps provided.
But, what do you do if you want to create and manage clusters with Google Cloud? In this tutorial, we’re going to walk through steps that you can follow to set up a Platform9 supported Cluster in your Google Cloud account. You don’t need any previous experience with either Platform9 or Google Cloud, and both platforms offer a free tier that allows you to experiment without it impacting your budget.
You can sign up for the PMK (Platform Managed Kubernetes) Free Tier account here.
You can learn more and sign up for the GCP (Google Cloud Platform) Free Tier here.
Setting Up the Infrastructure
We’ll be using the Platform9 CLI and the Google Cloud CLI for most of this example. The Platform9 CLI is only available for installation on Ubuntu 16.04 at this time. If you don’t have access to an Ubuntu installation to run this example, the tutorials listed below walk you through setting up a virtual machine that lets you run this locally on a Windows or macOS system.
- Create a Single Node Cluster on VirtualBox VM on MacOS
- Getting Started with PMKFT on a Windows Machine
The first thing we’ll need for this example is a Google Cloud project. You can create a new one by logging into your Google Cloud account and navigating to the New Project page. I’ll be calling this project Platform9 Demo. The project ID appears below the project name, and we’ll keep the default value for this example. The project ID can be edited at this point if you wish.
While Google completes the setup of our project, we can enable the Compute Engine API. This API allows us to provision Google Compute resources from the CLI. You can enable the API here.
At this point, we can return to the terminal on our Ubuntu machine, and begin installing the tools for the next part of the process.
Installing Local Tools
The following steps require you to have
curl installed. In case you don’t, run
$ sudo apt-get update && sudo apt-get install curl
Then, run the following commands. I copied them into a file called
install_gc_sdk and then ran them using
$ bash install_gc_sdk.
# Add the Cloud SDK distribution URI as a package source echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] <http://packages.cloud.google.com/apt> cloud-sdk main" | sudo tee -a \ /etc/apt/sources.list.d/google-cloud-sdk.list # Import the Google Cloud Platform public key curl <https://packages.cloud.google.com/apt/doc/apt-key.gpg> | sudo apt-key \ --keyring /usr/share/keyrings/cloud.google.gpg add - # Update the package list and install the Cloud SDK sudo apt-get update && sudo apt-get install google-cloud-sdk
Once we’ve installed the Google Cloud CLI, we need to configure it to point to
our account. We do this with the
init command. The process prompts you to log
in to your Google account. A redirect takes you to the Google website for this
part of the process. You’ll need to complete the authentication steps, and then
grant the CLI access to your account.
$ gcloud init
Following authentication, the next step is to select the default project for the CLI.
You are logged in as: [firstname.lastname@example.org]. Pick cloud project to use:  platform9-demo-274119  Create a new project Please enter numeric choice or text value (must exactly match list item):
The first project matches the one we set up in Google, so we’ll select it. We’ll
also want to set the default zone, which makes it easier to provision new
compute resources. I’m going to set mine to
us-west1-a because I live in the
$ gcloud config set compute/zone us-west1-a
Next, we can use the following command to install the Platform9 CLI. You need to be prepared to provide:
- Your Platform9 account management URL, which looks like https://pmkft-123456789-0123.plaform9.io
- The email address you used to sign up
- Your Platform9 password
$ bash <(curl -sL http://pf9.io/get_cli)
At this point, we have everything we need to provision a new Google Cloud instance and then begin managing it with Platform9.
Creating and Preparing the Cluster
We’re going to create an instance running Ubuntu 16.04. At the time of writing, the latest image available from Google Cloud is named ubuntu-1604-xenial-v20200407, which is in the ubuntu-1604-lts family, and the ubuntu-os-cloud project. You can find the latest by running the following command and searching for the Ubuntu images.
$ gcloud compute images list
Using that information, we can now create an instance from the Ubuntu image. I’m
going to name the instance
$ gcloud compute instances create demo-cluster-1 \ --image-family ubuntu-1604-lts \ --image-project ubuntu-os-cloud
The process prompts you to select a deployment zone from a list. The list only
displays the first 50 options. For the zone I wanted
us-west1-a, I had to type
list and then type
59. You should see output similar to that shown below,
indicating that your instance has been provisioned and is running.
Created [https://www.googleapis.com/compute/v1/platform9-demo-274119/zones/us-west1-a/instances/demo-cluster-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS Demo-cluster-1 us-west1-a n1-standard-1 10.138.0.2 18.104.22.168 RUNNING
Take note of the external IP address, as we need to use it in a few minutes.
Now that the instance is running, we need to configure SSH access to the box. The easiest way to do this is to use the GCloud CLI to create an SSH connection, and this walks you through the process of creating an SSH key and propagating it to your Google Cloud project.
$ gcloud compute ssh demo-cluster-1
This command creates the keys, and logs you into the instance. The username is
the same name you used to log into the Ubuntu machine from which you’re working.
It’s a good idea to validate this at this point, and then type
exit to close
In this example, my username is
mike, and the Google Cloud SSH key is stored
~/.ssh/google_compute_engine. We use this information, and the external IP
address of the instance to connect and configure it to be a Platform9-managed
cluster. Replace the user name and IP address in the statement below with the
ones for your account.
$ pf9ctl cluster prep-node -u mike -i 22.214.171.124 -s ~/.ssh/google_compute_engine
You’ll be prompted for your password, so it can execute some commands with administrator privileges, and then it’ll connect to the instance and install the necessary infrastructure to support Platform9.
This command may fail. I had it fail because I misspelled the name of my SSH key, and then another failure due to a timeout downloading a dependency. The referenced logs are helpful for troubleshooting, following which, you can rerun the command.
One problem that I have encountered is the version of Python installed on the
instance was not compatible with the
prep-node process. I resolved this by
manipulating the version of python on the target instance.
Preparing nodes [#############################################] 100% Preparing the provided nodes to be added to Kubernetes cluster was successful
Exploring and Learning More
If you log into your Platform9 account and navigate to Infrastructure > Nodes, you’ll see the new node ready to be managed from your Platform9 account.
Thank you for your feedback! What did you like about this article?
Thank you for your feedback! How could this article be improved?
Thank you for your feedback! For specific questions about PMK or PMK free tier, visit our PMK forum.