概要
クラウドを利用して開発するに当たって、構築者が特に意識する点は、クラウドサービスの利用の利便性です。例えば、AWSやGCPでは、マネジメントコンソールを利用して、コマンドを触ることなく、ブラウザ上から、マウスをポチポチするだけで、サーバーやストレージを構築する事ができます。
しかし、AWSやGCPの全ての操作がマネジメントコンソールから行えるわけではありません。例えば、オンプレのアプリケーションからストレージの情報を呼び出すときや、バッチ処理で様々なサービスを呼び出す際は、AWSやGCPにおけるサービスのAPIを指定して、コマンドを実行する必要があります。
本記事では、GCPリソースを操作する為のコマンドラインツールをまとめております。
本記事でまとめているGCPコマンドラインについて
本記事でまとめているGCPコマンドラインツールは、以下の通りです。GCP ACE(Associate Cloud Engineer 認定資格)の出題範囲である、主要なコマンドと各コマンドに設定するオプションをまとめました。
- gcloud
- kubectl
- bq
- gsutil
GCPが提供する主要なコマンドラインの詳細
GCPの各コマンドラインの詳細
では、GCPで利用する各コマンドラインを利用例を踏まえてご紹介していきます。
gcloudコマンド
gcloud(Google Cloud CLI)は、Google Cloud 用の主要なコマンドラインツールです。コマンドライン及びスクリプト内の呼び出しにより、多くの一般的なプラットフォーム タスクを実行できます。
gcloudが提供するcommandオプションについて
こちらでは、gloudが提供するcommandオプションについて、ご紹介します。
gcloud container
GCPのコンテナを利用する為のコマンド。コンテナの実行や、クラスタの設定及びデプロイ管理ができる。
例:コンテナを実行するためのクラスタを作成する
gcloud container clusters create
【補足】–enable-autoscalingフラグを指定することで、クラスタの自動スケーリングを有効化する
実行中のクラスタの認証情報を取得する
gcloud container clusters get-credentials
【補足】上記コマンド実行後、kubeconfigファイルが存在しない場合、Kubernetesの認証情報が記載された認証ファイルであるkubeconfigファイルを生成する。
既存のクラスタのサイズを変更する
gcloud container clusters resize
【補足】–num-nodesパラメーターを使用してノード数を調整することができる。また、–enable-autoscalingフラグを指定することで、クラスタの自動スケーリングを有効化することができる。
gcloud compute
Compute Engine リソースを管理するcommand
マネージド インスタンス グループを作成する。
gcloud compute instance-groups managed create
サブネット一覧を表示する
gcloud compute networks subnets list
VPCを作成する
gcloud compute networks create
Compute Engine サブネットワークの IP 範囲を拡張する
gcloud compute networks subnets expand-ip-range
【補足】–prefix-lengthオプションを指定する事で、CIDR範囲を変更することができる
マネージド インスタンス グループを作成する
gcloud compute instance-groups managed create
イメージ名に「例:”ubuntu”」を含むイメージの一覧を取得する
gcloud compute images list --filter="ubuntu*"
マネージドインスタンスグループの自動スケーリングを設定する
gcloud compute instance-groups managed set-autoscaling
スナップショットスケジュールを作成する
gcloud compute resource-policies create snapshot-schedule
VMインスタンスにSSH接続する
gcloud compute ssh
【補足】ユーザーの公開SSHキーがプロジェクトのメタデータに存在することを確認する。また、ユーザーが公開SSHキーを持っていない場合は、ssh-keygenを使用して公開SSHキーを生成し、プロジェクトのメタデータに追加する
Compute Engineに新しいディスクを作成する
gcloud compute disks create
全てのインスタンスのipを表示する
gcloud compute instances list
gcloud config
Google Cloud CLI で使用されるプロパティを設定、表示、設定解除する
設定一覧を表示する
gcloud config configuration list
将来のgcloudコマンドのデフォルトのリージョン(ゾーン)を設定する
gcloud config set compute / region(zone)
Google CloudCLIプロパティ(プロジェクト)を設定する
gcloud config set project
ゾーンを修正する
gcloud config unset compute/zone
cloud sdkのプロパティを表示する
gcloud config list
gcloud app
GCPのPaasサービスであるApp Engine(GAE)を利用するcommand
App Engine のデプロイを管理する
gcloud app deploy
トラフィックを受信しているバージョンのみを一覧表示する
gcloud app versions list --hide-no-traffic
gcloud projects
プロジェクトアクセスポリシーを作成および管理するcommand
既存のポリシーをバインディングする
gcloud projects add-iam-policy-binding
【補足】プロジェクト内のユーザーとロールを一覧表示したい場合に利用する
プロジェクトの IAM ポリシーを取得する
gcloud projects get-iam-policy <プロジェクト名>
gcloud info
gcloud 環境に関する情報の詳細を表示する
gcloud build
GoogleCloudBuildのビルドを作成および管理する
コンテナイメージを指定したファイル形式でビルドする
gcloud build submit --config=<YAMLまたはJSONファイル>
【補足】–configフラグで、ビルド構成ファイルとして使用するYAMLまたはJSONファイルを指定する。また、–gcs-log-dirフラグを指定する事で、ビルドログを指定の場所にアップロードする
gcloud auth
Google Cloud CLI の oauth2 認証情報を管理する
JSONキーファイルを使用してサービスアカウントをアクティベートする
gcloud auth activate-service-account
kubectlコマンド
Kubernetes クラスタを管理できるコマンドラインインターフェイス。gcloud containerコマンドと使い分けが難しいですが、gcloud containerコマンドはコンテナを利用する為のクラスタ作成などを行うコマンドであり、kubectlは、コンテナを管理するコマンドです。
kubectlが提供するcommandオプションについて
こちらでは、kubectlが提供するcommandオプションについてご紹介します。
kubectl exec
DeploymentやJobの実行を行うコマンドであり、コンテナへのシェルにアクセスする。
kubectl apply
Kubernetesリソースを定義するファイルを通じてアプリケーションを管理する
その他のkubectlコマンド
eployment を公開することによって Service を作成する
kubectl expose deployment
ポッドを一覧表示する。(例:ラベルにPod名が付いたPodを取得する)
kubectl get pods -l "<Pod名>"
bqコマンド
Python をベースにした BigQuery を利用する為のコマンドラインツール
bqが提供するcommandオプションについて
bq extract
BigQueryでテーブルデータをエクスポートする
gsutilコマンド
GCS用を利用する為のコマンドラインツールです。
gsutilが提供するcommandオプション
こちらでは、gsutilコマンドが提供するcommandオプションについて、ご紹介します。
gsutil mb
GCSバケットを作成する
gsutil web
バケットでウェブサイトをホストする場合のメインページ及びエラーページの構成に使用する
その他のgsutilコマンド
バケットにアップロードされるファイルを一般公開する
gsutil defacl set public read
構成ファイルに基づいてバケットのライフサイクル構成を設定する
gsutil lifecycle set
まとめ
GCPが提供するコマンドラインについて、主要なcommandオプションについてまとめてみました。私の感覚では、AWSもGCP同様にAWS CLIといったcommandオプションについてツールが提供されていますが、GCPの方がよりコマンドラインを利用する機会が多いと思います。
こちらは、GCPの資格(GCP Associate Cloud Engineer)においても、コマンドラインは出題範囲であり、主要なコマンドラインは覚えておく必要があります。クラウドサービスとして、GCPを利用して構築を行う際は、基本公式ドキュメントでコマンドを調べながら構築していくと思いますが、主要なコマンドラインを知っておくことで、作業がスムーズに進むと思います。
コメント