Carpe Diem

備忘録

GCP

IngressとGCPロードバランサーの命名規則

背景 Kubernetes Ingressで作成されたGCPロードバランサー周りのコンポーネントは k8s2-um-xxx k8s2-rm-xxx k8s2-tp-xxx k8s-be-xxx など色々あり、どれが何を表しているのか分かりづらかったのでまとめます。 命名規則とコンポーネント 命名規則とコンポー…

Bridgeを使ってOpenCensusのSpanをOpenTelemetryに取り込む

概要 OpenTelemetryはOpenCensusやOpenTracingをまとめた形で生まれたので、既にOpenCensusやOpenTracingの形で実装されたライブラリは移行するのが大変です。 例えばGCPの各SDKは基本的にOpenCensusで実装されています。 そのようなライブラリを使用する際…

Cloud ArmorのAdaptive Protectionを使ってみる

概要 Cloud ArmorのようなWAFは通常ルールベースで不正なアクセスを制御するため、悪意あるユーザがIPアドレスやパラメータをコロコロ変えたりすると都度ルールを設定する必要が出てきてイタチごっこになりがちです。 そんなケースに対応できるよう、機械学…

Workload Identity Federationを図で理解する

概要 GCPのWorkload Identity連携はサービスアカウントで秘密鍵を作らずともGCPリソースへのアクセス権を他の環境(オンプレ、別パブリッククラウド)に付与することができます。 これにより AWSからGCPリソースにアクセスする GitHub ActionsからGCRにDocke…

BigQueryのIAM設定をアーキテクチャから理解する

概要 BigQueryはIAMロールを設定する際にハマる事が多いので、アーキテクチャを理解しておくときちんと権限付与することができます。 BigQueryのアーキテクチャ BigQueryのアーキテクチャは以下のように ストレージ コンピュート の大きく2つに分かれていま…

Cloud PubSubのOrdering Keyで考慮すること

概要 以下のような購入時のドメインイベントをメッセージング基盤に非同期で渡してから順番通りに実行したい、となった時に便利なのが順序保証をしてくれるPubSubのordering keyです。 購入処理 各マイクロサービスへの状態変更リクエスト 行動ログ追記 購入…

VPC ネットワークピアリングで内部IPで疎通する

概要 前回はCloud VPNによる内部IPでの疎通方法を紹介しました。 christina04.hatenablog.com 今回はVPCピアリングを用いた疎通方法を紹介します。 VPCピアリングを用いて内部IPによる接続を行うと以下のメリットがあります。 レイテンシ 外部IPアドレスを使…

Cloud VPN (Classic VPN) を使ってみる

概要 GCPのVPCは物理ネットワークを仮想化したネットワークであり、異なるVPC同士は直接疎通することはできません。 通常であればExternal IP経由もしくはLBなどを用いてアクセスしますが、内部IPで疎通したい場合はVPNを構築する必要があります。 検証 事前…

gcloud auth login と gcloud auth application-default login

GCP

概要 ローカルからGCPにアクセスする際に使う gcloud auth login gcloud auth application-default login について区別できるようまとめます。 環境 gcloud v340.0.0 gcloud auth login 用途 こちらはローカルで以下のようなGCP系CLIを実行する際の認証を得…

特定のGCSバケットにのみアクセスできるサービスアカウントの作り方

概要 christina04.hatenablog.com の実践編です。 特定のGCSバケットにのみアクセスできるサービスアカウントを作ってみます。

GCPのIAMを使う上で理解しておくこと

背景 IAMはアクセス制御をする上で非常に重要な仕組みですが、一方で複雑になりがちです。 間違った理解のままだと必要以上の権限を与えてしまい、事故の原因となるので押さえておくべき点をいくつかまとめてみます。 リソース階層 GCPのIAMにはリソース階層…

NEG(Network Endpoint Group)を使った負荷分散

概要 従来のGKEのロードバランサーはNodeに到達後iptablesで再度負荷分散するという2段階ロードバランシングでした。 これによりレイテンシの増加、分散のばらつきといった問題が生じていました。 ref: Google Cloud Blog - News, Features and Announcemen…

継続的プロファイリング

背景 過去にいくつかpprofの使い方を紹介しましたが、実際に運用する上では以下の課題があります。 何かしら問題が発生して初めてプロファイリング開始するという後手になりがち 問題の再現が難しく、再び発生するまで様子見という流れになりがち プロファイ…

GCPのCloud PubSubで考慮すること

概要 GCPのCloud PubSubはメッセージング基盤として非常に有用です。 ただし利用する上で考慮すべきことも多々あるのでまとめておきます。 パラメータに関しては主にGoのクライアントライブラリをベースに説明します。 環境 Go 1.15.2 google-cloud-go v0.72…

Workload IdentityでPodからのGCPリソースアクセスをセキュアにする

概要 GKEのPodといったWorkloadからGCPのリソース(GCS、PubSubなど)にアクセスする場合 GKE NodeのService Accountの権限でアクセスする 権限を持ったService AccountのJSONキーを使う の2通りあります。 それぞれの問題点の理解と、その解決策としてのWo…

Google Cloud Pub/SubでPush(Webhook)型のSubscriptionを設定するにはドメイン認証が必要

概要 タイトルの通りなのですが日本語記事がなかったのでまとめておきます。 経緯 developers.cyberagent.co.jp の対応でGooglePlayの定期購読ユーザの購読状態をリアルタイムに更新するため、Real-time developer notificationsを導入しました。 その際Pub/…