サイトアイコン わんすけに聞いてみる

よく使うGoogle Cloudコマンド

Google CloudのGoogleCloudスキルバッジ獲得キャンペーンてのやってたので、試しにQWIKLABSいろいろ触らせて頂きました。

 

わんすけの獲得したスキルバッジ

 

AWSやAzureとはまたちょっと違って、GoogleCloudはCloud Shellのコマンドを多用していく感じが強いです。

使わなくなるとすぐ忘れちゃいそうなので、勉強したよくコマンドを纏めておきます。

 

?環境まわり

1.リージョンの設定(デフォルトゾーン)

gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

gcloud config set compute/zoneでデフォルトゾーンの設定、この例ではus-central1-aにデフォルトゾーンを設定しています。

リージョンを設定する場合は、compute/regionになる。

 

2.設定の切り替え

gcloud config configurations create [Configuration Name]
gcloud config configurations list
gcloud config configurations activate [Configuration Name]

あらかじめ設定セットをgcloud config configurations createで作る。

gcloud config configurations listで作成済み設定セットの一覧を表示。

gcloud config configurations activateで設定の切り替えをすることができる。

デフォルトゾーン、GCPアカウント、プロジェクトIDなどをセットしておいて切り替えて使うことができる。

初期の設定はdefaultとして保存されている。

 

3.コンポーネントのインストール(python環境とか)

gcloud components install
gcloud components list
gcloud components update

gcloud componentsでCloud SDKの環境資材を管理できる。

installはそのまま、インストール。listでインストール済み資材の一覧表示。updateで資材のアップデートができる。

 

?Compute Engineまわり

1.SSH接続する

gcloud compute ssh my-username@bastion-host

基本的には、コンソール画面で「SSH」っていうボタン押せば対象ホストへのSSHコマンドがCloud Shellに張り付けられるので覚える必要ないんですが、普通のLinux系だとsshコマンドそのまま使えるイメージだけど、ここでは gcloud compute ssh ってなってるとこに注目。

 

2.OSイメージ

gcloud compute images list --filter=name:ubuntu

イメージっていうのは、AWSでいうとこのAMIみたいな感じ?オンプレから持ってきたOS起動イメージとか、公開されている公開OSイメージとかを使ってインスタンスの作成ができます。

上の例は、名前にubuntuを含むOSイメージの一覧を表示させるコマンド。

 

3.インスタンス

gcloud compute instances list --filter="zone:( us-central1-b asia-northeast1-a )"

us-central1-bとasia-northeast1-aのインスタンスの一覧を表示する。複数ゾーンでフィルターする時の書き方がちょっと特徴的。

gcloud compute instances create my-custom-instance --custom-cpu 4 --custom-memory 8
gcloud compute instances create my-custom-instance --machine-type=custom-4-8000

どちらも4個のvCPUと8GBの合計メモリを備えたN1カスタムマシンタイプを実行する。

--custom-cpu と --custom-memory フラグか、--machine-type=custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB] フラグのどちらかが使える。

後者の場合はメガバイトなところも押さえておく。

gcloud compute instances create my-instance --metadata-from-file startup-script=scripts/my_script.sh

起動時にmy_script.shを実行する様に指定してインスタンスを実行。

 

4.インスタンスグループ

gcloud compute instance-groups managed set-autoscaling my-instance-group --max-num-replicas 3 --target-cpu-utilization 0.70

負荷に合わせた自動スケーリングができるインスタンスのグループを「インスタンスグループ」と呼びます。

上の例では平均CPU使用率70%で、最大インスタンス数が3の自動スケーリングが設定される。

 

5.VPCネットワーク

gcloud compute networks subnets list --filter="region:(asia-northeast1 asia-northeast2)"

asia-northeast1とasia-northeast2に属するサブネットを一覧表示するコマンド

gcloud compute networks subnets expand-ip-range my-subnet --region asia-northeast1 --prefix-length=28

既設のmy-subnetのサブネットマスク値を変更するには、expand-ip-rangeと--prefix-lengthを指定する。

 

networks subnetsが、gcloud computeのカテゴリコマンドになっている点には留意しとく。

 

?Kubernetesまわり

1.クラスタの作成

gcloud container clusters create my-cluster --num-nodes 30 --enable-autoscaling --min-nodes 15 --max-nodes 50 --zone asia-northeast1-a

ノード数は30で、デフォルトのノードプールのサイズを最小で15ノード、最大で50ノードまで変化するKubernetesクラスタをasia-northeast1-aゾーンに作成する。

オプションの雰囲気眺めとこ。

 

2.クラスタエンドポイントの取得

gcloud container clusters get-credentials my-cluster

my-clusterクラスタへのエンドポイントを取得する。

クラスタエンドポイントを取得することで、そのクラスタへのkubectlコマンドが使えます。

 

3.コンテナのシェルへアクセス

kubectl exec -it my-pod --container main-app -- /bin/bash

kubectl execコマンドを使用すると、実行中のコンテナへのシェルを取得します。

 

4.Serviceの公開

kubectl expose deployment my-deployment --type LoadBalancer --port 80 --target-port 8080

my-deploymentというDeploymentを使用してポート8080でトラフィックを受信し、ロードバランサによってポート80を用いて外部に公開するServiceをデプロイ

 

?Deployment Managerまわり

1.デプロイメントを表示

gcloud deployment-manager deployments list --project my-project

my-projectのデプロイメント一覧を表示する。

 

2.Deployment Managerを使って環境をデプロイ

gcloud deployment-manager deployments create griffin-prod --config prod-network.yaml

prod-network.yamlというコンフィグファイルを使ってgriffin-prodをデプロイしています。

 

3.アップデートされる内容の確認

gcloud deployment-manager deployments update my-config --config my-new-config.yaml --preview

実際の変更前にアップデートされる内容を確認するには、--previewパラメータを使用してgcloud deployment-manager deployments updateコマンドを実行します。

 

?Cloud Storageまわり

1.バージョニングの有効化

gsutil versioning set on gs://my-bucket

my-bucketバケットのバージョニングを有効化。

 

2.静的Webサイトの一般公開

gsutil defacl set public-read gs://my.site.com

 

3.署名付きURL

<pre class="EnlighterJSRAW " data-enlighter-language="generic">gsutil signurl -m PUT -d 2h my-json-key.json gs://order-bucket/order.pdf

 

gsutil signurl -d 2h my-json-key.json gs://order-bucket/order.pdf
gsutil signurl -m PUT -d 2h my-json-key.json gs://order-bucket/order.pdf

2時間の期限でオブジェクトのアップロードが可能な署名付きURLを発行すると、Googleアカウントを持たない相手が安全にファイルにアクセス出来ます。

-mオプションで明示的にメソッドを指定しなかった場合、GETリクエスト(ダウンロード)のアクセス許可、-m PUTでアップロードの許可になります。

 

参考.一般公開されたファイルのURL

https://storage.googleapis.com/my-bucket/my-photo.jpg

なんとなく階層とドメインくらいは眺めておく。

 

?その他、気付き

1.Cloud Armor

gcloud compute security-policies createコマンドでルールを作成する。

Armorはサービス名、コマンドは別。。。?

 

2.Cloud Functions

gcloud functions deployで関数をデプロイする。

computeとか、container clustersみたいなリソース作る時はcreate、サービスの公開はexpose、関数デプロイはdeployということで覚えとく。

モバイルバージョンを終了