Skip to content

Latest commit

 

History

History
88 lines (61 loc) · 2.92 KB

platform-gcp.md

File metadata and controls

88 lines (61 loc) · 2.92 KB

Using LinuxKit on Google Cloud Platform (GCP)

This is a quick guide to run LinuxKit on GCP. A lot of internal development and CI has used Google Cloud so the support is very good; other platforms will have similar support soon.

Setup

You have two choices for authentication with Google Cloud

  1. You can use Application Default Credentials
  2. You can use a Service Account

Application Default Credentials

You need the Google Cloud SDK installed. Either install it from the URL or view brew (on a Mac):

brew tap caskroom/cask
brew cask install google-cloud-sdk

Or via source code:

curl -SsL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-151.0.0-darwin-x86_64.tar.gz
tar xzvf google-cloud-sdk-151.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh

Then, set up some environment variables (adjust as needed) and login:

export CLOUDSDK_CORE_PROJECT=<GCP project>
export CLOUDSDK_COMPUTE_ZONE=europe-west1-d
gcloud auth login

The authentication will redirect to a browser with Google login.

Also authenticate local applications with

gcloud auth application-default login

Service Account

You can use this guide to create a Service Account.

Make sure to download the credentials in JSON format and store them somewhere safe.

Build an image

When using linuxkit build ... to build an image, specify -format gcp to build an image in a format that GCP will understand. For example:

linuxkit build -format gcp myprefix.yml

This will create a local myprefix.img.tar.gz compressed image file.

Push image

Do linuxkit push gcp -project myproject-1234 -bucket bucketname myprefix.img.tar.gz to upload it to the specified bucket, and create a bootable image from the stored image.

Alternatively, you can set the project name and the bucket name using environment variables, CLOUDSDK_CORE_PROJECT and CLOUDSDK_IMAGE_BUCKET. See the constant values defined in src/cmd/linuxkit/run_gcp.go for the complete list of the supported environment variables.

Create an instance and connect to it

With the image created, we can now create an instance and connect to the serial port.

linuxkit run gcp -project myproject-1234 myprefix

Nested Virtualization

Google Cloud offers Nested Virtualization as a beta feature. linuxkit supports this by pushing the image with linuxkit push gcp -nested-virt <other options> and linuxkit run gcp -nested-virt <other options>. The push sets the appropriate license on the image while the run argument ensures that the CPU is at least Haswell or newer.