GCP Associate Cloud Engineer試験 雑メモ
#GCP認定
jiroshin.icon 1週間で合格するために雑にメモる。
info
試験範囲: https://cloud.google.com/certification/guides/cloud-engineer?hl=ja
基本はこれをみて、知らないところぐぐる。
jiroshin.icon 問題集もあったりするらしい
https://www.udemy.com/course/gcp-ace-mogi/
以下、雑メモ
GCEインスタンスのコピーの話
スナップショットとかディスクとか
ノードプールが 1 つ構成されている Kubernetes クラスタを使用しています。このクラスタは大量のトラフィックを受信しており、拡張する必要があります。そのため、ノードを追加することにしました。どのように対応しますか。
"gcloud container clusters resize" を使用して、必要な数のノードを指定する。
bqコマンド
毎晩実行するようスケジュール設定されている BigQuery クエリの年間ランニング コストを見積もる必要があります。どのように対応しますか。
"bq query --dry_run" を使用して、クエリで読み取られるバイト数を特定する。この数値を Pricing Calculator で使用する。
GCP 組織について
https://cloud.google.com/resource-manager/docs/creating-managing-organization?hl=ja
ロールについて
https://cloud.google.com/iam/docs/understanding-roles
主要サービスの課金システムと予算監視周り
GCE
インスタンステンプレートはイメージからしか作れない
参考リンク
GCEのスナップショットバックアップ機能詳細とお得な使い方!
メガネと学ぶ GCP (5) スナップショットとイメージを操作する
インスタンスグループ
インスタンス数を指定してインスタンスをまとめて管理できる
インスタンステンプレートを指定して作ることができる
インスタンスグループをLoadBalancerのバックエンドサービスとして指定することができる
インスタンスの種類
プリエンプティブル インスタンス
awsでいうリザーブドインスタンス的な。
24時間で死んでしまう。
マシンタイプ
事前定義のマシンタイプ
https://cloud.google.com/compute/docs/machine-types?hl=ja#predefined_machine_types
カスタムマシンタイプ
gcloud cli
リファレンス: https://cloud.google.com/sdk/gcloud/reference?hl=ja
練習問題をやってみての学び
jiroshin.icon udemyの模擬試験をやってみた!1600円。
https://www.udemy.com/course/gcp-ace-mogi/
Deployment Manager
アプリケーションに必要な全てのリソースをyamlによる宣言形式で簡単に指定できる。
Cloud Storage
一般公開されるオブジェクトのURLは https://storage.googleapis.com/{bucket-name}/{object_name}
ストレージクラス
Standard: よくアクセスするオブジェクト
Nearline: 月一程度のアクセス
Coldline: 半年から年一回程度のアクセス
Archive: データアーカイブ、使わんけど保存くらいのノリ
アクセスコントロールリスト(ACL)
基本的にはIAMでのアクセス制御がおすすめ。
ACL を使用した方がよいのは、バケット内の個々のオブジェクトへのアクセス権をカスタマイズしなければならない場合です。IAM 権限はバケット内のすべてのオブジェクトに適用されるため、このような場合には適していません。
jiroshin.icon オブジェクトごとにアクセス制御したいときはACL!
https://cloud.google.com/storage/docs/access-control/create-manage-lists?hl=ja#set-an-acl
バケットのACLはコンソールからは無理。オブジェクトのACLならギリいける。
署名付きURLでもファイルアクセスを制限できる
GCE
gcloud compute instaces list --filter="zone:(us-central1-b asia-northeast1-a)"
こんな感じでfilterには複数のzoneを指定できる
インスタンスグループ
マネージドインスタンスグループ(MIG)
同じインスタンステンプレートから作れらた一貫した構成のVMのグループ。
削除したらグループに属するインスタンスも一緒に消える。
自動スケーリング機能は全てのインスタンスの平均CPU使用率を指標としている。1つインスタンスじゃない。
非マネージドインスタンスグループ
バラバラな構成のVMをグループ化したもの。
非マネージドインスタンスグループは削除してもインスタンスは残る。単にグルーピングが論理削除されるだけ。
グループを作成してから、それぞれのVMをグループに追加して作る。
マネジメントグループと違って、自動スケーリング、自動修復、マルチゾーンサポート、ローリングアップデート、インスタンステンプレートを利用できない。
Transfer Appliance
データセンターに設置できるオフラインデータ転送サービス。ハードウェア。
Transfer Service for On Premises Data
データセンターからCloud Storageバケットに大量のデータを転送できるソフトウェアサービス。
BigQuery
課金対象は読み取りのデータ量。
クエリに対してエラーが返された場合は料金が発生しない。
Dataproc
Apache SparkクラスタとApache Hadoopクラスタを簡単かつコスト効率よく利用できるサービス。
Dataflow
自動スケーリングとバッチ処理でレイテンシ、処理時間、コストを最小限に抑える、フルマネージドストリーミング分析サービス。
BigQueryへのCloudBillingエクスポート機能を使用することで指定したBigQueryデータセットにGoogle Cloudの詳細な課金データを自動的にエクスポートすることができる。
ストレージの種類
Cloud Filestore: ファイルストレージ
NFSやSMBで接続する
Cloud Storage: オブジェクトストレージ
HTTPやHTTPSで接続する
Cloud SQL
高可用性構成にするとフェイルオーバーできる
gcloud config list
現在有効になっているconfigurationのプロパティを表示するコマンド
gcloud config configurations list
Cloud SDK のconfigurationの一覧を表示する
gcloud config configurations activateで任意のconfigurationを有効化できる
gcloud config configuraions createで任意のconfigurationを作成したりもできる。複数のconfigを使う時には便利かも。ただし、設定めんどそう。参考: https://qiita.com/sky0621/items/597d4de7ed9ba7e31f6d
GKE
クラスタの種類: https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#availability
リージョンクラスタはコントロールプレーンとノードを複製するので、アップグレード中でもコントロールプレーンにアクセス可能でダウンタイムの発生を防ぐことができる。
VPC (virtual private cloud)
Googleの本番環境ネットワーク内に実装された物理ネットワークを仮想化したしたネットワーク。
グローバルリソースで特定のリージョンやゾーンには関連づけられない。
サブネットはリージョンリソース。
VPCネットワーク内ではサブネット同士でプライベートIPアドレスを使用して相互に通信できる。
例) https://cloud.google.com/vpc/docs/vpc?hl=ja#network_example
共有(shared)VPCを使えば、組織は複数のプロジェクトから共有のVPCネットワークに接続できる。だから内部ネットワーク通信もできて安全。
Cloud VPN
IPsec VPN接続を使用してピアネットワークをVPCネットワークに安全に接続するサービス。
Cloud Bigtable
Cloud Bigtableは時系列データやIoTデータに最適なオプションであり、高速で、数ペタバイト規模にスケール可能なマネージドデータベースサービス。
高い可用性(フェイルオーバー有)を実現するには。
同一のリージョンに異なるゾーンにクラスタのレプリケーションを設定する。
クロスリージョンレプリケーションコストが発生しないためお得。
異なるリージョンにクラスタのレプリケーションを設定する。
どっちかのリージョンがダメになっても使えて高い可用性。
ただしクロスリージョンレプリケーションコストがかかってコスト高め。
GCE
監査ログ(Cloud Audit log)
https://cloud.google.com/compute/docs/logging/audit-logging#logged_information
管理アクティビティログ: Compute Engineリソースの構成やメタデータを変更する操作のログ。
システムイベントログ: Compute Engineリソースに対するシステムメンテナンスオペレーションのログ。
データアクセスログ: データ読み取り専用オペレーションの実行ログ。
スタートアップ(起動)スクリプト
https://cloud.google.com/compute/docs/startupscript#startupscriptlocalfile
↓gcloudだとこんな感じで指定できる
code: command
gcloud compute instances create example-instance \
--metadata-from-file startup-script=examples/scripts/install.sh
startup scriptはCloud Storageに格納したスクリプトを使ったりもできる。
実行中のインスタンスに適応したりもできる。
Cloud CDN
世界各地に分散しているGoogleのエッジ接続拠点を使用してHTTP(S)負荷分散されたコンテンツをユーザーの近くにあるキャッシュに保存する。ユーザーにより速くコンテンツを配信できる。
Cloud CDNはHTTP(S)ロードバランサと組み合わせて使用する。
GKE
水平ポッド自動スケーリング(HPA)はスケーリングできないワークロードには使用できない。
Cloud Interconnect
オンプレとVPCを繋ぐ。
Interconnect接続により内部IPアドレス通信も実現できる。
物理的に繋ぐ Dedicated Interconnect とサービスプロバイダを介して繋ぐ Partner Interconnect がある。
kubernetes
DaemonSet
DaemonSetを使用すると各Nodeに1つずつPodを配置することができる
https://cloud.google.com/kubernetes-engine/docs/concepts/daemonset
StatefulSet
PodのIDと順序付けに序数インデックスを使用し、データベース等ステートフルなアプリケーションをサポートする
https://cloud.google.com/kubernetes-engine/docs/concepts/statefulset
VPCネットワークピアリング
VPN トンネルを使用している場合、カスタムルートを共有することで、ピアネットワークがオンプレミスネットワークに到達できます。
プロジェクトの予算アラート設定
予算アラートは請求先アカウント管理者と請求先アカウントユーザーに飛ぶ
つまりは課金のロールとしてBilling Account AdministerまたはBilling Account Userに割り当てられているすべてのユーザーに対してアラートメールが送信される。
Cloud SQLはマルチリージョン構成をサポートしていない。
Cloud Datastore
DatastoreはACIDトランザクションをサポートするスキーマレスデータベース。
Cloud Storage
大きいファイルをアップロードする時、アップロード途中で失敗しても大丈夫なように再開可能なアップロードができるAPIが用意されている。
JSON APIだったら uploadType=resumableなパラメータを追加すると再開可能なアップロードができる
オブジェクトのバージョニング
gsutilコマンドだと gsutil versioning set on gs://BUCKETNAMEでONにできる
GCE
4個のvCPUと8GBの合計メモリを備えたN1カスタムマシンタイプを実行するインスタンスを作成するコマンド
gcloud compute instances create my-custom-instance --custom-cpu 4 --custom-memory 8
GKE
kubeconfigエントリの作成コマンド
gcloud container clusters get-credentials {cluster-name}
Cloud Router
ボーダーゲートウェイプロトコル(BGP)を使用することでVPCネットワークとオンプレミスネットワーク間でルートを動的に変換できる。
例えば、オンプレミスサーバーとのVPNトンネルに使用する場合、Cloud RouterはVPC ネットワーク内の新しいサブネットを自動的に学習し、オンプレミス ネットワークに通知します。
Cloud Logging
https://cloud.google.com/logging/docs/export/configure_export_v2
ログはシンクを利用して以下の宛先にエクスポートできる
Cloud Storage
BigQuery
Pub/Sub
Cloud Loggingのログバケット
Splunk
GAE (AppEngine)
App Engineスタンダード環境からフレキシブル環境に移行後、トラフィックを自動的に移行せずに動作を確認するには、app.yaml内にenv: flexを設定し、
gcloud app deploy --no-promote --version=新しいバージョンを実行します。
また、動作確認後にトラフィックを新しいバージョンに移行するには、gcloud app versions migrate 新しいバージョン コマンドを実行します。
gcloud app deployの --no-promote フラグでトラフィックを流さずデプロイできる。
gcloud app versions migrate でトラフィックを指定のバージョンに移すことできる。
Kubernetes
kubectl exposeコマンドを使うとServiceをコマンドで作ることができる
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#using-kubectl
code: command
$ kubectl expose rc example --port=8765 --target-port=9376 \
--name=example-service --type=LoadBalancer
gcloud の filter フラグに指定する値は だいたい --fileter=key:valueみたいな感じで key と valueを指定する。:のとこには > < =とかの式を使えたりする。
https://cloud.google.com/sdk/gcloud/reference/topic/filters
Cloud SQL
ポイントインタイムリカバリ
インスタンスを特定のポイントインタイムに復旧できる。例えば、エラーによってデータ失われた場合、エラーが発生する前の状態にデータベースを復旧することができる。
インスタンスで自動バックアップを有効にしておくことでポイントインタイムリカバリできる状態を作ることができる。
Cloud HSM
Cloud HSMを使用すると、FIPS 140-2 レベル3認定ハードウェアセキュリティモジュールのクラスタで暗号鍵のホスティングや暗号化オペレーションを実行できます。
Cloud IAP
Cloud Identity-Aware Proxy(IAP)はユーザーIDとリクエストのコンテキストを確認することでアプリやVMへのアクセスをVPNを使用せずに管理するサービスです。
GCE
インスタンスのOSログイン設定
OSログインを設定するとIAMの役割を利用してLinuxインスタンスへのSSHアクセスを管理できる。
Cloud Deployment Manager
新しい構成をプレビューするにはgcloudで--previewフラグを指定する。dry-runじゃないので注意。
code: command
$ gcloud deployment-manager deployments create example-config --config configuration file.yaml --preview
jiroshin.icon 2つの違いに注意。VPCピアリングなら組織関係ない!共有VPCは同じ組織じゃないとだめ。
共有(shared)VPC
共有VPCは同じ組織の複数のプロジェクトから共通のVPCネットワークにリソースを接続できるサービス。こっちの方が安上がり。
VPCピアリング
プロジェクト、組織問わず2つのVPCのプライベート接続を確立できる。ただしサブネットの範囲が重複してるとだめ。
Cloud Filestore
データ用のファイルシステムインターフェースと共有ファイルシステムを必要とするアプリケーション向けのマネージドファイルストレージサービス。
ファイルロックもサポートされている。
Cloud Trace
アプリケーション内でやり取りされるリクエストを追跡し、ほぼリアルタイムでパフォーマンスの分析情報を提供する。アプリケーションのトレースを自動的に分析して、パフォーマンス低下の原因となるレイテンシの詳細レポートを生成してくれる。
Cloud Monitoring
アプリケーションのパフォーマンス、稼働時間、全体的な動作状況を可視化できる。メトリクスを集計。パフォーマンスの分析にはトレースの方が向いている。
App Engine
AppEngineはリージョナルなサービスで、アプリのリージョンを設定した後からリージョンを変更することはできない。
ウォームアップリクエストを有効にすると新しいインスタンスが作成された時のレスポンスが改善される
GKE
クラスタオートスケーリング
ノードの自動スケーリング
水平ポッドオートスケーリング(Horizontal Pod Autoscaling)
Pod数の自動スケーリング
垂直ポッドオートスケーリング(Vertical Pod Autoscaling)
Podに割り当てるCPUやメモリの垂直スケーリング
BigQuery
定額料金
購入した容量はリージョンリソースになる。別のリージョンで使用することも移行することもできない。
Cloud Storage
gsutil defacl set public-read gs://bucket-name
バケットにアップロードされるファイルを一般公開する時に利用するコマンド
オブジェクトが例えば YYYY/MM/DD/CUSTOMER/timestamp のような形式だとファイルのシャーディングに偏りが生まれてパフォーマンス的には良くない。
VPC
VPCフローログ
有効化するとVMインスタンスによって送受信されたネットワークフローのサンプルが記録される。ネットワークモニタリング、フォレンジング、リアルタイムセキュリティ分析に利用できる。
Cloud KMS
リソース名の競合を防ぐためキーリングと鍵のリソースは削除できない。その代わり鍵を利用できないように破棄することはできる。
Cloud Dataprep
分析や機械学習に利用するデータを準備するためのサービス。data prepareの略かな?
Cloud VPN
HA VPNゲートウェイ
2つのインターフェースの定数ごとに1つずつ、1つパブリックIPアドレスを自動的に選択し、高可用性を実現するVPNオプション。静的ルーティングはサポートしていない。
Classic VPNゲートウェイ
1つのインターフェースと1つの外部IPアドレスをもち、動的または静的ルーティングをサポートする。
Cloud Functions
デプロイコマンド: gcloud functions deploy
Cloud Storage
バケットでオブジェクトのバージョニングを有効にした場合、オブジェクトの削除または置換を行う前に30秒以上待つ必要がある。
署名付きURLを発行すれば読み取り意外にもファイルアップロード(POST, PUT)とかもGoogleアカウントを持っていない相手にやってもらうことができる。
gsutil signurl -m PUT -d 2h <private-key-file> gs://my-bucket/my-object
2時間以内に指定の秘密鍵でオブジェクトをアップロードできる署名付きURLを発行できるコマンドの例。
オブジェクトのライフサイクルは age で日数をする。daysとかじゃないので注意。
BigQuery
コスト削減するためのクエリのベストプラクティス
https://cloud.google.com/bigquery/docs/best-practices-costs
LIMITを利用しても料金は変わらない。
LIMITを利用しても読み取られるデータ量は変わらず、結果セットの出力が制限されるだけ。
テーブルデータエクスポートするにはbq extractコマンドを使用する。
gcloudコマンド
code: command
// IAMアカウントでの認証
$ gcloud auth login
// サービスアカウントでの認証
$ gcloud auth activate-service-account {サービスアカウント} --key-file {サービスアカウント鍵}
GCE
マネージドインスタンスグループの自動スケーリングを有効化するには、gcloud compute instance-groups managed set-autoscaling コマンドを使用します。
スナップショット
スナップショットスケジュールの頻度は 時間、日、週単位で設定できる。月単位では指定できないので注意!
スナップショットスケジュールは作成した後から変更はできないので注意。新しく作りたいなら作り直しが必要。
jiroshin.icon 合格できたー!耐えたー!