GCP ACE 試験対策メモ②

GCP
  1. はじめに
  2. 出題範囲
  3. クラウド ソリューション環境の設定
    1. Compute Engine リソースを管理する
      1. 単一の VM インスタンスを管理する
      2. インスタンスに SSH / RDP で接続する
      3. GPU を新しいインスタンスに接続し、CUDA ライブラリをインストールする
      4. 現在実行されている VM のインベントリを見る
      5. スナップショットを操作する
      6. イメージを操作する
      7. インスタンス グループを操作する
      8. 管理インターフェースを操作する
    2. Google Kubernetes Engine リソースを管理する。
      1. 現在実行されているクラスタのインベントリ(ノード、Pod、サービス)を見る
      2. コンテナ イメージ リポジトリを閲覧し、コンテナ イメージの詳細を見る
      3. ノードプールを操作する(例: ノードプールの追加、編集、削除)
      4. Pod を操作する(例: Pod の追加、編集、削除)
      5. サービスを操作する(例: サービスの追加、編集、削除)
      6. ステートフル アプリケーションを操作する
      7. 管理インターフェースを操作する
    3. App Engine リソースと Cloud Run リソースをデプロイする。
      1. アプリケーションのトラフィック分割パラメータを調整する
      2. 自動スケーリング インスタンスのスケーリング パラメータを設定する
      3. 管理インターフェースを操作する
    4. ストレージとデータベースのソリューションを管理する
      1. Cloud Storage バケット間でオブジェクトを移動する
      2. ストレージ クラス間で Cloud Storage バケットを変換する
      3. データ インスタンスからデータを取得するクエリを実行する
    5. BigQuery クエリのコストを見積もる
    6. データ インスタンスのバックアップと復元を行う
    7. Cloud Dataproc、Cloud Dataflow、BigQuery のジョブ ステータスを確認する
    8. 管理インターフェースを操作する
    9. ネットワーキング リソースを管理する
      1. 既存の VPC にサブネットを追加する
      2. サブネットを拡張して IP アドレスを増やす
      3. 静的外部または内部 IP アドレスを予約する
      4. 管理インターフェースを操作する
    10. モニタリングとロギングを行う
      1. リソース指標に基づいて Stackdriver アラートを作成する
      2. Stackdriver カスタム指標を作成する
      3. ログが外部システムにエクスポートされるようにログシンクを構成する
      4. Stackdriver のログを表示、フィルタリングする
      5. Stackdriver のログメッセージの詳細を見る
      6. Cloud Diagnostics を使用してアプリケーションの問題を調査する
      7. Google Cloud Platform のステータスを見る
      8. 管理インターフェースを操作する
  4. アクセスとセキュリティの構成
    1. Identity and Access Management(IAM)を管理する
      1. IAM ロールの割り当てを見る
      2. Cloud Identity でユーザーを管理する(手動および自動)
      3. カスタム IAM ロールを定義する
    2. サービス アカウントを管理する
      1. 特権が制限されているサービス アカウントを管理する
      2. サービス アカウントを VM インスタンスに割り当てる
      3. 別のプロジェクトのサービス アカウントにアクセス権を付与する
    3. プロジェクトとマネージド サービスの監査ログを見る。

はじめに

ある程度、GCPの試験対策が進んだので、情報を整理するためのページ

出題範囲のうち、以下を記載。

  1. クラウド ソリューションの正常なオペレーションの確保
  2. アクセスとセキュリティの構成

前半については以下のページ

出題範囲

Associate Cloud Engineer 認定資格  |  Google Cloud
Google Cloud Certified Associate Cloud Engineer は、目標となるパフォーマンス指標を確実に達成するため、アプリケーションのデプロイ、複数プロジェクトのオペレーションのモニタリング、エンタープライズ ソリューションの管理を行います。

クラウド ソリューション環境の設定

Compute Engine リソースを管理する

単一の VM インスタンスを管理する

Cloud Consoleからの手順については特筆事項は無し。
gcloudコマンドでのCLI操作手法は確認しておく。

起動/停止/削除

### start a stopped virtual machine instance
gcloud compute instances start INSTANCE_NAMES \
  [INSTANCE_NAMES …] \
  [--async] \
  [--csek-key-file=FILE] \
  [--zone=ZONE] \
  [GCLOUD_WIDE_FLAG …]

### stop a virtual machine instance
gcloud compute instances stop INSTANCE_NAMES [INSTANCE_NAMES …] \
  [--async] \
  [--zone=ZONE] \
  [GCLOUD_WIDE_FLAG …]

### delete Compute Engine virtual machine instances
gcloud compute instances delete INSTANCE_NAMES [INSTANCE_NAMES …] \
  [--zone=ZONE] \
  [--delete-disks=DISK_TYPE | --keep-disks=DISK_TYPE] \
  [GCLOUD_WIDE_FLAG …]

構成の編集は基本的には変更したい内容のサブコマンドで行う。

### CPUとかメモリの変更
gcloud compute instances set-machine-type INSTANCE_NAME \
  [--machine-type=MACHINE_TYPE] \
  [--zone=ZONE] \
  [--custom-cpu=CUSTOM_CPU --custom-memory=CUSTOM_MEMORY : --custom-extensions --custom-vm-type=CUSTOM_VM_TYPE] \
  [GCLOUD_WIDE_FLAG …]

### ディスクのアタッチ
gcloud compute instances attach-disk INSTANCE_NAME --disk=DISK \
  [--boot] \
  [--csek-key-file=FILE] \
  [--device-name=DEVICE_NAME] \
  [--disk-scope=DISK_SCOPE; default="zonal"] \
  [--force-attach] \
  [--mode=MODE; default="rw"] \
  [--zone=ZONE] \
  [GCLOUD_WIDE_FLAG …]

インスタンスに SSH / RDP で接続する

WindowsインスタンスにRDPでアクセスする手順は↓

  1. ファイアウォールでRDPポート
  2. Cloud ConsoleからWindowsのユーザ、パスワードを作成
  3. RDPで接続

実際に試してみたかったが、無料枠ではWindows Serverが使えないので、割愛。

GPU を新しいインスタンスに接続し、CUDA ライブラリをインストールする

Creating VMs with attached GPUs  |  Compute Engine Documentation
### リージョンにGPUが空いているか確認
$ gcloud compute regions describe asia-northeast1
(省略)
  metric: PREEMPTIBLE_NVIDIA_K80_GPUS
  usage: 0.0
- limit: 1.0
  metric: PREEMPTIBLE_NVIDIA_P100_GPUS
  usage: 0.0
- limit: 1.0
  metric: NVIDIA_P100_VWS_GPUS
  usage: 0.0
- limit: 1.0
  metric: NVIDIA_V100_GPUS
  usage: 0.0
- limit: 1.0
  metric: NVIDIA_P4_GPUS
  usage: 0.0
- limit: 1.0
  metric: NVIDIA_P4_VWS_GPUS
  usage: 0.0

### GPUを搭載したインスタンスの作成
gcloud compute instances create インスタンス名 \
    --machine-type マシンタイプ \
    --zone ゾーン \
    --accelerator type=アクセラレータタイプ,count=アクセラレータカウント \
    --image-family イメージファミリ \
    --image-project イメージプロジェクト \
    --maintenance-policy TERMINATE \
    --restart-on-failure \
    [--preemptible]

アクセラレータタイプにGPUの種類を指定する。

  • NVIDIA® Tesla® T4: nvidia-tesla-t4
  • NVIDIA® Tesla® T4 Virtual Workstation with NVIDIA® GRID®: nvidia-tesla-t4-vws
  • NVIDIA® Tesla® P4: nvidia-tesla-p4
  • NVIDIA® Tesla® P4 Virtual Workstation with NVIDIA® GRID®: nvidia-tesla-p4-vws
  • NVIDIA® Tesla® P100: nvidia-tesla-p100
  • NVIDIA® Tesla® P100 Virtual Workstation with NVIDIA® GRID®: nvidia-tesla-p100-vws
  • NVIDIA® Tesla® V100: nvidia-tesla-v100
  • NVIDIA® Tesla® K80: nvidia-tesla-k80

GPUを利用するにはOS側にドライバのインストールも必要となってくる。
ダウンロードして、インストールすればよい。

sudo yum clean all
sudo yum install -y kernel | grep -q 'already installed' || sudo reboot
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
sudo yum install epel-release
sudo yum install yum-utils

### リポジトリの追加
sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
sudo yum clean all

### CUDAインストール
sudo yum -y install nvidia-driver-latest-dkms cuda

### NVIDIAドライバインストール
sudo yum -y install cuda-drivers

CUDA:GPGPU開発環境
NVIDIA ドライバ:NVIDIAのグラボ用ドライバ

現在実行されている VM のインベントリを見る

VM一覧はこれ

$ gcloud compute instances list
NAME        ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
instance-1  us-central1-a  e2-medium                  10.128.0.3   104.197.93.182  RUNNING

VMのインスタンスIDとかを確認するにはConsoleか、describeコマンドを使う

gcloud compute instances describe INSTANCE_NAME \
  [--zone=ZONE] \
  [GCLOUD_WIDE_FLAG …]

$ gcloud compute instances describe instance-1
Did you mean zone [asia-east1-a] for instance: [instance-1] (Y/n)?  n

No zone specified. Using zone [us-central1-a] for instance: [instance-1].
canIpForward: false
confidentialInstanceConfig:
  enableConfidentialCompute: false
cpuPlatform: Intel Haswell
creationTimestamp: '2021-03-02T18:25:20.118-08:00'
deletionProtection: false
description: ''
disks:
- autoDelete: true
  boot: true
  deviceName: instance-1
  diskSizeGb: '20'
  guestOsFeatures:
  - type: UEFI_COMPATIBLE
  index: 0
  interface: SCSI
  kind: compute#attachedDisk
  licenses:
  - https://www.googleapis.com/compute/v1/projects/centos-cloud/global/licenses/centos-7
  mode: READ_WRITE
  source: https://www.googleapis.com/compute/v1/projects/sylvan-airship-306401/zones/us-central1-a/disks/instance-1
  type: PERSISTENT
displayDevice:
  enableDisplay: false
fingerprint: NxtvsSRuzNk=
id: '8598721527054290272' ←これ

(省略)

スナップショットを操作する

Cloud Consoleから実施する場合

Cloud SDKで実施する場合

gcloud compute disks snapshot instance-1 \
  --project=sylvan-airship-306401 \
  --snapshot-names=snapshot-1 \
  --zone=us-central1-a \
  --storage-location=us-central1

スナップショット、ディスクのコピーまわりでおさえておく点

ディスクのクローンは同一ゾーンに作成される。
そのため、別のゾーンやリージョンのVMインスタンスに作成したい場合に、
クローンしたディスクをアタッチしようとしても見つからない。

いっぽうで、スナップショットはグローバルリソースとなる。
そのため、別リージョンでVM作る際のディスクソースとして選択が可能。

VMを別リージョンにコピーする際の方法(重要

  1. ディスクのスナップショットを作成する
  2. 別リージョン、ゾーンでブートディスクのソースを1で作成したスナップショットを指定

また、ひっかけ問題として、以下がある。
以下はVMインスタンス自体を自動的に別ゾーンにお引越しさせる。

gcloud compute instances move INSTANCE_NAME \
  --destination-zone=DESTINATION_ZONE \
  [--async] \
  [--zone=ZONE] \
  [GCLOUD_WIDE_FLAG …]

イメージを操作する

特筆事項は無し。

カスタム イメージの作成、削除、廃止  |  Compute Engine ドキュメント  |  Google Cloud

インスタンス グループを操作する

Autoscaling groups of instances  |  Compute Engine Documentation

インスタンスグループ、オートスケーリングではおさえておくべきポイントがある。

インスタンスグループには以下の2種類が存在する。

項目内容
マネージドインスタンスグループGoogleが管理してくれるインスタンスグループ。
インスタンステンプレートを用いて同一のVMを複数台並べる。
CPU使用率等によってVM台数をスケールアウトしてくれたりする。
Googleが管理するため、既存のVMを追加したりとかはできない。
非マネージドインスタンスグループ手動で管理するインスタンスグループ。
手動管理なので、既存VMをグルーピングしたりできる。
グルーピングするには同一ゾーン、サブネットである必要がある。

大前提として、オートスケーリングはマネージドインスタンスグループのみサポート
非マネージドインスタンスグループではオートスケーリングはサポートしない

オートスケーリングの指標としては、以下が採用できる。

  • 平均 CPU 使用率
  • 使用率または 1 秒あたりのリクエスト数のいずれかに基づいた HTTP 負荷分散処理能力
  • Cloud Monitoring の指標

よくある問題
Q.CPU使用率が100%なのにオートスケールが利かなかった。なぜか。
A.グループ全体でのCPUの平均使用率なので、1台がバーストしても効かない

管理インターフェースを操作する

特筆事項はないので割愛

Cloud Console
Cloud Shell
GCloud SDK


Google Kubernetes Engine リソースを管理する。

現在実行されているクラスタのインベントリ(ノード、Pod、サービス)を見る

まず前提として、GKEを操作する際のコマンドは大きく2つある。
両方とも、代表的なコマンドは抑えておく必要がある。

項目内容
gcloud container GKEクラスタの管理、デプロイを行う。
主にgcloud container clustersを使う
kubectlKubernetesのAPIサーバとおしゃべりするためのコマンド
コンテナの操作はこちらを使う。
gcloud container  |  Cloud SDK のドキュメント  |  Google Cloud
kubectlチートシート
Kubectl概要とJsonPathガイドも合わせてご覧ください。 このページはkubectlコマンドの概要です。 kubectl - チートシート Kubectlコマンドの補完 BASH source > ~/.bashrc # bashシェルでのコマンド補完を永続化するために.bashrcに追記します。 また、エイ...

kubectlコマンドを使う際には、どのクラスタに対してのAPI発行なのかをgcloudで設定する。

### gcloudによるコンテキストの登録
gcloud container clusters get-credentials クラスタ名

### 登録済みコンテキストの切り替え
kubectl config use-context クラスタ名

### 現在の対象クラスタ(コンテキスト)の表示
kubectl config current-context

### 設定されているkubectlのコンフィグを確認
kubectl config view

インベントリの確認(gcloud)

### クラスタの詳細表示
$ gcloud container clusters describe cluster-1 --zone=us-central1-c

### ノードプールの表示
$ gcloud container node-pools list --cluster=cluster-1 --zone=us-central1-c
NAME          MACHINE_TYPE  DISK_SIZE_GB  NODE_VERSION
default-pool  e2-medium     100           1.18.12-gke.1210

### ノードプールの詳細表示
$ gcloud container node-pools describe default-pool --cluster=cluster-1 --zone=us-central1-c

ノード、サービス、ポッドの表示

# ノードの表示
kubectl get node 

# Getコマンドで基本的な情報を確認します
kubectl get services                          # 現在の名前空間上にあるすべてのサービスのリストを表示します
kubectl get pods --all-namespaces             # すべての名前空間上にあるすべてのPodのリストを表示します
kubectl get pods -o wide                      # 現在の名前空間上にあるすべてのPodについてより詳細なリストを表示します
kubectl get deployment my-dep                 # 特定のDeploymentを表示します
kubectl get pods                              # 現在の名前空間上にあるすべてのPodのリストを表示します
kubectl get pod my-pod -o yaml                # PodのYAMLを表示します

# Describeコマンドで詳細な情報を確認します
kubectl describe nodes my-node
kubectl describe pods my-pod

実際の例.

$ gcloud container clusters get-credentials cluster-1 --zone=us-central1-c
Fetching cluster endpoint and auth data.
kubeconfig entry generated for cluster-1.

$ kubectl config current-context
gke_sylvan-airship-306401_us-central1-c_cluster-1

$ kubectl get node
NAME                                       STATUS   ROLES    AGE   VERSION
gke-cluster-1-default-pool-bbb34fbd-kjwq   Ready    <none>   18m   v1.18.12-gke.1210
gke-cluster-1-default-pool-bbb34fbd-tzbh   Ready    <none>   18m   v1.18.12-gke.1210
gke-cluster-1-default-pool-bbb34fbd-wdb8   Ready    <none>   18m   v1.18.12-gke.1210

コンテナ イメージ リポジトリを閲覧し、コンテナ イメージの詳細を見る

GCPのコンテナイメージリポジトリには2種類存在する。

項目内容
Container RegistryDocker コンテナイメージを保存、管理、保護する。
Artifact Registry次世代のContainer Registry。
ビルドアーティファクトクトを保存、管理、保護する。
言語パッケージの管理や、Googleクラウドのツールとの連携が強化。

特筆事項は特になし

ノードプールを操作する(例: ノードプールの追加、編集、削除)

ノードプールの操作はクラスタの操作になるので、gcloudコマンドで行う。

ノードプールの作成

gcloud beta container --project "sylvan-airship-306401" node-pools create "pool-1" \
  --cluster "cluster-1" \
  --zone "us-central1-c" \
  --node-version "1.18.12-gke.1210" \
  --machine-type "e2-medium" \
  --image-type "COS" \
  --disk-type "pd-standard" \
  --disk-size "100" \
  --metadata disable-legacy-endpoints=true \
  --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \
  --num-nodes "3" \
  --enable-autoupgrade \
  --enable-autorepair \
  --max-surge-upgrade 1 \
  --max-unavailable-upgrade 0

ノードプールのサイズ変更

gcloud container clusters resize NAME (--num-nodes=NUM_NODES  | --size=NUM_NODES) \
  [--async] \
  [--node-pool=NODE_POOL] \
  [--region=REGION  | --zone=ZONE, -z ZONE] \
  [GCLOUD_WIDE_FLAG …]

Pod を操作する(例: Pod の追加、編集、削除)

Podの操作はKubernetesのコンテナ操作なので、kubectlで行う。

基本的にはYAML形式のresourceファイルを作成し、kubectlでapplyする。

参考URL

Podの作成(起動)

サービスを操作する(例: サービスの追加、編集、削除)

同上なので、割愛

ステートフル アプリケーションを操作する

Kubernetesの基本概念はUdemyの講座を購入。

Docker + Kubernetes で構築する Webアプリケーション 実践講座
DockerおよびKubernetesの基礎を学び、応用としてWebアプリケーション開発(NGINX+Node.js&Express+MongoDB)を行います。本講座で基礎から応用を実践しながら身につけよう!

永続ボリューム

参考URL

初心者向けでめっちゃわかりやすい。とりあえず読めばヨシ。

Kubernetesのデータ永続化入門 | ネットワンシステムズ
コンテナ技術のトレンド、オーケストレーションツール:#Kubernetes のストレージ技術、Volume、Persistent Volume、Persistent Volume Claim、Storage Classを用いたPodデータ永続化の仕組みをわかりやすく解説。また、CNCFで注目されているContainer...

PersistentVolume(PV) 例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: storage
spec:
                                          # ストレージを抽象化定義するプロパティ。
  storageClassName: host                  # ストレージの種類を定義
  accessModes:                            # 読み書きの定義(単一ノードからなのか、複数ノードからなのか)
    - ReadWriteMany                       #   ここでは複数ノードからの読み書きを定義
  capacity:                               # ストレージ容量の定義
    storage: 5Gi                          # 

                                          # PVC削除時の動作を定義するプロパティ
  persistentVolumeReclaimPolicy: Retain   # Retain(残す) / Delete (消す)

                                          # 保存先を定義
  hostPath:                               # hostPathはホスト上に残す。nfsとかもある。
    path: /data/storage                   #
    type: Directory                       # ここまで

PersistentVolumeClaimはPVを要求するresource

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: volume-claim
spec:
  storageClassName: slow
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage:: 1Gi

ステートフル セット

参考URL

KubernetesのWorkloadsリソース(その2)
前回に引き続き、ユーザーが利用できるWorkloadsリソース8種類のうち4種類を紹介する。

ステートフルセットにしておくと、同じ永続ボリュームにアクセスできると説明があった。
少し腑に落ちないので試してみた。

管理インターフェースを操作する

特筆事項は特になし。


App Engine リソースと Cloud Run リソースをデプロイする。

アプリケーションのトラフィック分割パラメータを調整する

トラフィック分割とは、アプリケーションの異なるバージョンにトラフィックを分割できる。
アプデ後、影響を最小限にするため、10%ユーザのみ新バージョンに割り振ったりとかできる。

試験対策①のほうで触れているので割愛

自動スケーリング インスタンスのスケーリング パラメータを設定する

試験対策①のほうで触れているので割愛

管理インターフェースを操作する

特筆事項はないので割愛

Cloud Console

Cloud Shell

Cloud SDK)


ストレージとデータベースのソリューションを管理する

Cloud Storage バケット間でオブジェクトを移動する

Cloud Consoleの場合、移動を選択する。

Cloud SDKの場合、gsutil mvコマンドを使う

$ gsutil mv gs://bucket_test1/1.png gs://bucket_test2/

ストレージ クラス間で Cloud Storage バケットを変換する

バケットの詳細から、ライフサイクルを選択し、ルールを追加する。

gsutilコマンドの場合、コンフィグファイルを作成し、バケットに割り当てる。

オブジェクトのライフサイクル管理  |  Cloud Storage  |  Google Cloud
$ gsutil lifecycle set コンフィグファイル gs://BUCKET_NAME

### コンフィグファイルサンプル
{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "numNewerVersions": 2
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 35,
      "isLive": false
    }
  }
]
}
}

データ インスタンスからデータを取得するクエリを実行する

Cloud SQL

基本的には以下のどれかで接続して、その後SQLコマンドを実行する。

接続方法やり方
SQLクライアントからグローバルIPで接続mysql –host=[INSTANCE_IP] –user=root –password
gcloudコマンドで接続gcloud sql connect [INSTANCE_ID] –user=root
Cloud SQL Proxy 経由で接続

BigQuery

Cloud Consoleから実施するか、bq queryコマンドを使う。

$ bq query --nouse_legacy_sql \
> 'SELECT
>    *
>  FROM
>    testdataset.table1'
Waiting on bqjob_r575ec7251818e7a3_00000177a41c252e_1 ... (0s) Current status: DONE   
+-------------------+--------+
|      value1       | value2 |
+-------------------+--------+
| oven              |      5 |
| refrigerator      |     10 |
| top load washer   |     10 |
| front load washer |     20 |
| microwave         |     20 |
| dryer             |     30 |
| dishwasher        |     30 |
+-------------------+--------+

Cloud Spanner

Spannerのデータ更新はCloud Console上か、データ操作言語(DML)をgcloudコマンドで実行する。

gcloud spanner databases execute-sql testdb \
  --instance=test \
  --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"

データが挿入されたことを確認。

データ定義言語  |  Cloud Spanner  |  Google Cloud

Cloud Datastore

Cloud DatastoreはNoSQLデータベース。
クエリを実行するにはプログラムで記述する。

Cloud Firestore で単純なクエリと複合クエリを実行する  |  Firebase

Cloud Dataproc


BigQuery クエリのコストを見積もる

Cloud Consoleならクエリ検証ツールの読み取りバイトの表示を確認する。

bqコマンドの場合、dryrunを実行する。

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
  column1,
  column2,
  column3
FROM
  `project_id.dataset.table`
LIMIT
  1000'

### 結果表示
Query successfully validated.
Assuming the tables are not modified, running this query will process 10918 bytes of data.

読み取ったバイト数を料金計算ツールに投げ込む

Estimating storage and query costs  |  BigQuery  |  Google Cloud

データ インスタンスのバックアップと復元を行う

Cloud SQL

インスタンス作成時にはオプションで設定が可能。

リストアをする際にはバックアップからDB復元先のインスタンスを選択する。

Cloud Datastore

Cloud Consoleから、Cloud Storageに対してエクスポートが可能。

Cloud SDKを使うなら以下

### export
gcloud datastore export gs://bucket-name --async

### import
gcloud datastore import gs://bucket-name/file-path/file-name.overall_export_metadata --async

Cloud Dataproc、Cloud Dataflow、BigQuery のジョブ ステータスを確認する

管理インターフェースを操作する

特筆事項は無し。

サービスコマンド
Cloud SQLgcloud sql
※ クエリ実行というよりかは、データベース操作
Big querybq query ~~
Cloud Spannergcloud spanner databases execute-sql
Cloud Datastoregcloud datastore ~~
バックアップリストアとか
gcloud datastore export ~
gcloud datastore import ~
Cloud Bigtablecbt
以下のようなコマンド
cbt createtable my-table
cbt ls
cbt createfamily my-table cf1
cbt set my-table r1 cf1:c1=test-value
cbt read my-table

ネットワーキング リソースを管理する

既存の VPC にサブネットを追加する

Cloud Consoleは割愛。

gcloud compute networks subnets create NAME --network=NETWORK --range=RANGE \
  [--description=DESCRIPTION] \
  [--enable-flow-logs] \
  [--enable-private-ip-google-access] \
  [--logging-aggregation-interval=LOGGING_AGGREGATION_INTERVAL] \
  [--logging-filter-expr=LOGGING_FILTER_EXPR] \
  [--logging-flow-sampling=LOGGING_FLOW_SAMPLING] \
  [--logging-metadata=LOGGING_METADATA] \
  [--logging-metadata-fields=[METADATA_FIELD,…]] \
  [--private-ipv6-google-access-type=PRIVATE_IPV6_GOOGLE_ACCESS_TYPE] \
  [--purpose=PURPOSE] \
  [--region=REGION] \
  [--role=ROLE] \
  [--secondary-range=PROPERTY=VALUE,[…]] \
  [GCLOUD_WIDE_FLAG …]

### VPCネットワークの作成
gcloud compute networks create test-vpc \
  --project=sylvan-airship-306401 \
  --subnet-mode=custom \
  --mtu=1460 \
  --bgp-routing-mode=regional

### サブネットの作成
gcloud compute networks subnets create test-sbunet1 \
  --project=sylvan-airship-306401 \
  --range=192.168.100.0/24 \
  --network=test-vpc \
  --region=asia-east1

サブネットを拡張して IP アドレスを増やす

Cloud Consoleはサブネットを編集するだけなので割愛

gcloud compute networks subnets expand-ip-range サブネット名
  --prefix-length=PREFIX_LENGTH \
  [--region=REGION] \
  [GCLOUD_WIDE_FLAG …]
$ gcloud compute networks subnets expand-ip-range test-sbunet1 --prefix-length=23

The IP range of subnetwork [test-sbunet1] will be expanded from
192.168.100.0/24 to 192.168.100.0/23. This operation may take several
minutes to complete and cannot be undone.

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

静的外部または内部 IP アドレスを予約する

外部アドレスの場合
グローバルIPなので、指定はできない。
GCEに続けて割り当てする場合は変数を使う

### 静的外部アドレスの予約
gcloud compute addresses create static-ip \
  --project=sylvan-airship-306401 \
  --region=us-central1

### インスタンスへの割り当て
gcloud compute instances add-access-config instance-1 \
  --project=sylvan-airship-306401 \
  --zone=us-central1-a \
  --address=IP_OF_THE_NEWLY_CREATED_STATIC_ADDRESS

内部アドレスの場合
サブネットを指定し、そこのレンジ内でIPを指定する。

gcloud compute addresses create example-address-1 \
    --region us-central1 \
    --subnet subnet-1 \
    --addresses 10.128.0.12

管理インターフェースを操作する

割愛

モニタリングとロギングを行う

リソース指標に基づいて Stackdriver アラートを作成する

Stackdriver カスタム指標を作成する

ログが外部システムにエクスポートされるようにログシンクを構成する

Stackdriver のログを表示、フィルタリングする

Stackdriver のログメッセージの詳細を見る

Cloud Diagnostics を使用してアプリケーションの問題を調査する

Cloud Trace データの確認

Cloud Debug を使用したアプリケーションのポイントインタイムの確認

Google Cloud Platform のステータスを見る

管理インターフェースを操作する

アクセスとセキュリティの構成

Identity and Access Management(IAM)を管理する

IAM ロールの割り当てを見る

IAMロールの割り当てはCloud SDKではやる方法がない?
試験でも出てこないし、リファレンスでも見かけない。

現在、どのメンバーに何のロールが割り当てられているかを確認するにはCloud Consoleを使う。

役割にどんな権限が含まれているかを確認するにはCloud Consoleを使う。

Cloud Identity でユーザーを管理する(手動および自動)

組織の作成はハードルが高いので、Cloud Identityは試せていない。
よく出てくるGoogle Workspace(G Suite)との関係性は以下みたいな感じ?
Workspaceアプリのアカウント管理をCloud Identityで行うことができる。

Workspaceアプリが不要な場合、Cloud Identity単品で使うことも可能だそうな。

Courseraに無償のコース(修了証を取得しようとすると金かかる)があるので、参考にする。

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera
Learn online and earn valuable credentials from top universities like Yale, Michigan, Stanford, and leading companies like Google and IBM. Join Coursera for fre...

カスタム IAM ロールを定義する

Cloud Consoleの場合はロールから作成する。

Cloud SDKの場合gcloud iam roles createする。
権限は非常に数が多いので、定義ファイルを準備する必要がある。

gcloud iam roles create ロールID (--organization=ORGANIZATION | --project=PROJECT_ID) \
  [--file=FILE | --description=DESCRIPTION --permissions=PERMISSIONS --stage=STAGE --title=TITLE] \
  [GCLOUD_WIDE_FLAG …]

### カスタムロール作成時にはロールresourceの定義ファイルが必要
例.
{
  "name": string,
  "title": string,
  "description": string,
  "includedPermissions": [
    string
  ],
  "stage": enum (RoleLaunchStage),
  "etag": string,
  "deleted": boolean
}

サービス アカウントを管理する

特権が制限されているサービス アカウントを管理する

GCE等のデフォルトのサービスアカウントは以下の権限がある。

  • プロジェクトによって自動的に作成され、名前とメールアドレスが自動生成される。
  • プロジェクトに自動的に追加され、IAM プロジェクト編集者のロールが付与される。
  • Cloud SDK、Cloud Console、どちらで作成してもデフォルトで設定される。
  • デフォルト権限を変えたい場合、インスタンス作成時に指定するか、上書きする。

かなり、権限の範囲が広いので、サービスアカウントを制限するのがベストプラクティス。

  1. 新しいサービスアカウントを作成
  2. 必要なリソースのみのIAMロールを付与
  3. 作成したサービスアカウントを利用するようにインスタンスを構成

サービス アカウントを VM インスタンスに割り当てる

Cloud SDKの場合は以下コマンド。
GCEインスタンスの設定変更なので、gcloud compute instances で行う。

### 作成時に指定する
gcloud compute instances create [INSTANCE_NAME] \
    --service-account [SERVICE_ACCOUNT_EMAIL] \
    --scopes [SCOPES,...]

### 変更する。
gcloud compute instances set-service-account [INSTANCE_NAME] \
   [--service-account [SERVICE_ACCOUNT_EMAIL] | --no-service-account] \
   [--no-scopes | --scopes [SCOPES,...]] 

別のプロジェクトのサービス アカウントにアクセス権を付与する

これかなぁ

[GCP] ひとつのサービスアカウントで複数プロジェクトのリソースへアクセスする - Qiita
はじめに Hello Kids! キミはもう、たっぷり GCP 使えた ? Google Cloud Certified Professional Cloud Architect とったキミも、 まだまだのキミも、「GCP」 ...

プロジェクトとマネージド サービスの監査ログを見る。

Cloud Audit Logs はGCPの監査ログ。
色々なGCPサービスの監査ログが収集されている。
以下は監査ログの種類。

項目ログ名内容
管理アクティビティ
監査ログ
activityリソースの構成またはメタデータを変更する API 呼び出しや
その他の管理アクションに関するログエントリが含まれます。
データアクセス監査ログdata_accessリソースの構成やメタデータを読み取る API 呼び出
ユーザー主導によるAPI呼び出し
・リソースデータの作成、変更、読み取り
システム イベント監査system_eventリソースの構成を変更する GCP管理アクションのログエントリ
システム イベント監査ログは Google システムによって生成される
直接的なユーザーのアクションによっては生成されません。

コメント

タイトルとURLをコピーしました