Google CloudのGoogleCloudスキルバッジ獲得キャンペーンてのやってたので、試しにQWIKLABSいろいろ触らせて頂きました。
AWSやAzureとはまたちょっと違って、GoogleCloudはCloud Shellのコマンドを多用していく感じが強いです。
使わなくなるとすぐ忘れちゃいそうなので、勉強したよくコマンドを纏めておきます。
?環境まわり
1.リージョンの設定(デフォルトゾーン)
1 2 |
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.設定の切り替え
1 2 3 |
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環境とか)
1 2 3 |
gcloud components install gcloud components list gcloud components update |
gcloud componentsでCloud SDKの環境資材を管理できる。
installはそのまま、インストール。listでインストール済み資材の一覧表示。updateで資材のアップデートができる。
?Compute Engineまわり
1.SSH接続する
1 |
gcloud compute ssh my-username@bastion-host |
基本的には、コンソール画面で「SSH」っていうボタン押せば対象ホストへのSSHコマンドがCloud Shellに張り付けられるので覚える必要ないんですが、普通のLinux系だとsshコマンドそのまま使えるイメージだけど、ここでは gcloud compute ssh ってなってるとこに注目。
2.OSイメージ
1 |
gcloud compute images list --filter=name:ubuntu |
イメージっていうのは、AWSでいうとこのAMIみたいな感じ?オンプレから持ってきたOS起動イメージとか、公開されている公開OSイメージとかを使ってインスタンスの作成ができます。
上の例は、名前にubuntuを含むOSイメージの一覧を表示させるコマンド。
3.インスタンス
1 |
gcloud compute instances list --filter="zone:( us-central1-b asia-northeast1-a )" |
us-central1-bとasia-northeast1-aのインスタンスの一覧を表示する。複数ゾーンでフィルターする時の書き方がちょっと特徴的。
1 2 |
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] フラグのどちらかが使える。
後者の場合はメガバイトなところも押さえておく。
1 |
gcloud compute instances create my-instance --metadata-from-file startup-script=scripts/my_script.sh |
起動時にmy_script.shを実行する様に指定してインスタンスを実行。
4.インスタンスグループ
1 |
gcloud compute instance-groups managed set-autoscaling my-instance-group --max-num-replicas 3 --target-cpu-utilization 0.70 |
負荷に合わせた自動スケーリングができるインスタンスのグループを「インスタンスグループ」と呼びます。
上の例では平均CPU使用率70%で、最大インスタンス数が3の自動スケーリングが設定される。
5.VPCネットワーク
1 |
gcloud compute networks subnets list --filter="region:(asia-northeast1 asia-northeast2)" |
asia-northeast1とasia-northeast2に属するサブネットを一覧表示するコマンド
1 |
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.クラスタの作成
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.クラスタエンドポイントの取得
1 |
gcloud container clusters get-credentials my-cluster |
my-clusterクラスタへのエンドポイントを取得する。
クラスタエンドポイントを取得することで、そのクラスタへのkubectlコマンドが使えます。
3.コンテナのシェルへアクセス
1 |
kubectl exec -it my-pod --container main-app -- /bin/bash |
kubectl execコマンドを使用すると、実行中のコンテナへのシェルを取得します。
4.Serviceの公開
1 |
kubectl expose deployment my-deployment --type LoadBalancer --port 80 --target-port 8080 |
my-deploymentというDeploymentを使用してポート8080でトラフィックを受信し、ロードバランサによってポート80を用いて外部に公開するServiceをデプロイ
?Deployment Managerまわり
1.デプロイメントを表示
1 |
gcloud deployment-manager deployments list --project my-project |
my-projectのデプロイメント一覧を表示する。
2.Deployment Managerを使って環境をデプロイ
1 |
gcloud deployment-manager deployments create griffin-prod --config prod-network.yaml |
prod-network.yamlというコンフィグファイルを使ってgriffin-prodをデプロイしています。
3.アップデートされる内容の確認
1 |
gcloud deployment-manager deployments update my-config --config my-new-config.yaml --preview |
実際の変更前にアップデートされる内容を確認するには、--previewパラメータを使用してgcloud deployment-manager deployments updateコマンドを実行します。
?Cloud Storageまわり
1.バージョニングの有効化
1 |
gsutil versioning set on gs://my-bucket |
my-bucketバケットのバージョニングを有効化。
2.静的Webサイトの一般公開
1 |
gsutil defacl set public-read gs://my.site.com |
3.署名付きURL
1 |
<pre class="EnlighterJSRAW " data-enlighter-language="generic">gsutil signurl -m PUT -d 2h my-json-key.json gs://order-bucket/order.pdf |
1 2 |
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ということで覚えとく。