Getting started with Google Cloud SDK

Learn to setup Google Cloud SDK on your workstation and some operations in this step-by-step guide.

Photo

Photo by Joshua Sortino on Unsplash

What is Cloud SDK?

The Cloud SDK is a collection of tools to interact with the Google Cloud Platform (GCP). It includes bq, kubectl, gcloud and gsutil command-line tools that can interact with various GCP Services using CLI or in automation scripts. Examples: * Create/manage a Google Cloud Storage (GCS) bucket. * Create/manage Google Compute Engine (GCE) instance. * Create/manage Google Datalab. * Create a BigQuery Dataset. * Submit a job to BigQuery. * Create/manage firewall rules.

Let’s get it up and running

Google provides a script to download and install the Cloud SDK quickly and interactively.

Install Google Cloud SDK

1. Run the following command in your terminal.

  $> curl https://sdk.cloud.google.com | bash

This will download the Cloud SDK package and run the installation script.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  100   443  100   443    0     0   3475      0 --:--:-- --:--:-- --:--:--  3488
  Downloading Google Cloud SDK install script: https://dl.google.com/dl/cloudsdk/channels/rapid/install_google_cloud_sdk.bash
  ######################################################################## 100.0%
  Running install script from: /tmp/tmp.GZI3OtObH9/install_google_cloud_sdk.bash
  which curl
  curl -# -f https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz
  ######################################################################## 100.0%

2. Provide the directory path on prompt

  Installation directory (this will create a google-cloud-sdk subdirectory) (/home/vagrant):

3. Once you provide the directory, the script will prompt for reporting. Choose one of the options.

  Welcome to the Google Cloud SDK!

  To help improve the quality of this product, we collect anonymized usage data and anonymized stacktraces when crashes are encountered; additional information is available at <https://cloud.google.com/sdk/usage-statistics>. This data is handled in accordance with our privacy policy <https://policies.google.com/privacy>. You may choose to opt in this collection now (by choosing 'Y' at the below prompt), or at any time in the future by running the following command:

  gcloud config set disable_usage_reporting false

  Do you want to help improve the Google Cloud SDK (y/N)?

4. This will start installing the package and ask to update the $PATH and enable the auto-complete feature.

  This will install all the core command line tools necessary for working with the Google Cloud Platform.

  Your current Cloud SDK version is: 272.0.0
  Installing components from version: 272.0.0

  ┌────────────────────────────────────────────────────────────────────────────┐
  │                    These components will be installed.                     │
  ├─────────────────────────────────────────────────────┬────────────┬─────────┤
  │                         Name                        │  Version   │   Size  │
  ├─────────────────────────────────────────────────────┼────────────┼─────────┤
  │ BigQuery Command Line Tool                          │     2.0.50 │ < 1 MiB │
  │ BigQuery Command Line Tool (Platform Specific)      │     2.0.50 │ < 1 MiB │
  │ Cloud SDK Core Libraries (Platform Specific)        │ 2019.11.08 │ < 1 MiB │
  │ Cloud Storage Command Line Tool                     │       4.46 │ 3.6 MiB │
  │ Cloud Storage Command Line Tool (Platform Specific) │       4.46 │ < 1 MiB │
  │ Default set of gcloud commands                      │            │         │
  │ gcloud cli dependencies                             │ 2018.08.03 │ 8.6 MiB │
  └─────────────────────────────────────────────────────┴────────────┴─────────┘

  For the latest full release notes, please visit:
    https://cloud.google.com/sdk/release_notes

  ╔════════════════════════════════════════════════════════════╗
  ╠═ Creating update staging area                             ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: BigQuery Command Line Tool                   ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: BigQuery Command Line Tool (Platform Spec... ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: Cloud SDK Core Libraries (Platform Specific) ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: Cloud Storage Command Line Tool              ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: Cloud Storage Command Line Tool (Platform... ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: Default set of gcloud commands               ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Installing: gcloud cli dependencies                      ═╣
  ╠════════════════════════════════════════════════════════════╣
  ╠═ Creating backup and activating new installation          ═╣
  ╚════════════════════════════════════════════════════════════╝

  Performing post processing steps...done.

  Update done!

  Modify profile to update your $PATH and enable shell command
  completion?

  Do you want to continue (Y/n)? Y

5. Provide the bashrc path.

  The Google Cloud SDK installer will now prompt you to update an rc
  file to bring the Google Cloud CLIs into your environment.

  Enter a path to an rc file to update, or leave blank to use
  [/home/vagrant/.bashrc]:

6. Now, open a new terminal or reload the current session by running below command.

  $> exec -l $SHELL

7. Verify installation.

  $> gcloud version

This should list the current version of gcloud utility.

  Google Cloud SDK 272.0.0
  bq 2.0.50
  core 2019.11.16
  gsutil 4.46

8. The above script only install core packages and all we can list all the available packages.

  $> gcloud components list
  Your current Cloud SDK version is: 272.0.0
  The latest available version is: 272.0.0

  ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  │                                                 Components                                                 │
  ├───────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
  │     Status    │                         Name                         │            ID            │   Size   │
  ├───────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
  │ Not Installed │ App Engine Go Extensions                             │ app-engine-go            │  4.9 MiB │
  │ Not Installed │ Appctl                                               │ appctl                   │ 21.0 MiB │
  │ Not Installed │ Cloud Bigtable Command Line Tool                     │ cbt                      │  7.5 MiB │
  │ Not Installed │ Cloud Bigtable Emulator                              │ bigtable                 │  6.6 MiB │
  │ Not Installed │ Cloud Datalab Command Line Tool                      │ datalab                  │  < 1 MiB │
  │ Not Installed │ Cloud Datastore Emulator                             │ cloud-datastore-emulator │ 18.4 MiB │
  │ Not Installed │ Cloud Firestore Emulator                             │ cloud-firestore-emulator │ 40.0 MiB │
  │ Not Installed │ Cloud Pub/Sub Emulator                               │ pubsub-emulator          │ 34.9 MiB │
  │ Not Installed │ Cloud SQL Proxy                                      │ cloud_sql_proxy          │  3.8 MiB │
  │ Not Installed │ Emulator Reverse Proxy                               │ emulator-reverse-proxy   │ 14.5 MiB │
  │ Not Installed │ Google Cloud Build Local Builder                     │ cloud-build-local        │  6.0 MiB │
  │ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr    │  1.8 MiB │
  │ Not Installed │ Skaffold                                             │ skaffold                 │ 22.1 MiB │
  │ Not Installed │ gcloud Alpha Commands                                │ alpha                    │  < 1 MiB │
  │ Not Installed │ gcloud Beta Commands                                 │ beta                     │  < 1 MiB │
  │ Not Installed │ gcloud app Java Extensions                           │ app-engine-java          │ 62.0 MiB │
  │ Not Installed │ gcloud app PHP Extensions                            │ app-engine-php           │          │
  │ Not Installed │ gcloud app Python Extensions                         │ app-engine-python        │  6.0 MiB │
  │ Not Installed │ gcloud app Python Extensions (Extra Libraries)       │ app-engine-python-extras │ 27.1 MiB │
  │ Not Installed │ kubectl                                              │ kubectl                  │  < 1 MiB │
  │ Installed     │ BigQuery Command Line Tool                           │ bq                       │  < 1 MiB │
  │ Installed     │ Cloud SDK Core Libraries                             │ core                     │ 12.5 MiB │
  │ Installed     │ Cloud Storage Command Line Tool                      │ gsutil                   │  3.6 MiB │
  └───────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
  To install or remove components at your current SDK version [272.0.0], run:
    $ gcloud components install COMPONENT_ID
    $ gcloud components remove COMPONENT_ID

  To update your SDK installation to the latest version [272.0.0], run:
    $ gcloud components update

9. Install additional component, for e.g. kubectl

  $> gcloud components install kubectl

10. To install, beta functionality

  $> gcloud components install beta

Initialize Google Cloud SDK

Now to interact with GCP services, we must initialize SDK and setup authentication.

1. Initialize the SDK.

  $> gcloud init

2. Accept to login to your Google account.

  To continue, you must login. Would you like to log in (Y/n)? Y

3. This will open your browser and prompt for permissions. Login with your Google account credentials and Allow.

4. Select the preferred project and zone.

5. You should now see the following message for successful initialization.

  gcloud has now been configured!
  You can use [gcloud config] to change more gcloud settings.

  Your active configuration is: [default]

6. Verify initialization.

  $> gcloud auth list

This will display the active account.

Let’s do something with gcloud

Google Cloud Storage (GCS) Bucket Operations

1. Create a GCS Bucket

  $> gsutil mb gs://my-bucket-34678945/

2. Create a file locally and upload to GCS Bucket.

  $> echo "Hello GCS" > hello-gcs.txt
  $> gsutil cp hello-gcs.txt gs://my-bucket-34678945/

3. List objects in a GCS Bucket.

  $> gsutil ls -r gs://my-bucket-34678945/

4. Get the GCS Bucket size.

  $> gsutil du -sh gs://my-bucket-34678945/

5. Delete a GCS Bucket.

warning: Following command deletes all the objects stored in the specified bucket and cannot be recovered.

  $> gsutil rm -r gs://my-bucket-34678945

Google Compute Engine (GCE) Operation

1. Create a VM instance.

  $> gcloud compute instances create my-instance

This will create a VM instance will default configuration.
Output will be similar as below:

  Created [https://www.googleapis.com/compute/v1/projects/your-project-id/zones/europe-west1-d/instances/my-instance].
  NAME         ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
  my-instance  europe-west1-d  n1-standard-1               10.132.0.3   IP.IP.IP.IP  RUNNING

2. Update VM instance and add some labels.

  $> gcloud compute instances update my-instance \
        --update-labels=key1=value1,key2=value2

3. Delete a VM instance.

  $> gcloud compute instances delete my-instance



Below is the terminal recording:

To revoke gcloud access from terminal

  $> gcloud auth revoke

Hope this blog helps you get familiar with Google Cloud SDK.

If you have feedback or questions, please reach out to me on LinkedIn or Twitter