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ということで覚えとく。