/// BANGBOO BLOG ///
■21/6/9 12:01AM
k8s
全て想像ですが
読み方はケーツと読みます、半端ねーてす、あるいは半端ネース

ケツが扱う最小単位がPodで1つの機能を持つ(Podは1つ以上のコンテナを含む)
ReplicaSetは複数のPodを組み合わせてアプリを実現する
DeploymentはReplicaSetを管理、アップデートの際は新規ReplicaSetを作成してバージョン更新を行う
ServiceはDeploymentに対してIPアドレスやLBを設定してサービス提供する
クラスターはServiceが複数動く環境、1つのMasterと複数のNodeから構成され
 Nodeはコンテナを動かす為のサーバ、MasterはNodeを管理しスケジューリングやオートスケールを行う

Docker Immutableインフラ(不変の)でDockerfileの方を変える、Dockerイメージは可搬性をもたらす コンテナはOS上に配置する(複数配置できる、Dockerfileさえあれば再現可)  VMはOSをもシミュレート
  Dockerのチュートリアル - とほほのWWW入門 (tohoho-web.com)
  Dockerコマンド - とほほのWWW入門 (tohoho-web.com)
   コンテナ設計方針をまとめてみた - Qiita
   社内のDockerfileのベストプラクティスを公開します│FORCIA CUBE│フォルシア株式会社 流れ  Dockerfile(設定)とアプリをdocker build/pushし  DockerレジストリにDockerイメージを作成  GKEにデプロイ(deploymentファイル.yml/serviceファイル.ymlをkubectrl create)   レプリケーションコントローラ:Pod数、オートスケールをdeployment fileで設定   サービス定義:ノードのproxyデーモンが複数Podに負荷分散    ノードがクラスタ内のPod同士に振分けるクラスタIP    LBが振分ける外部IP、K8s クラスタリング(複数サーバを束ねる) コールドスタンバイ、ホットスタンバイ(フェイルオーバ) オーケストレーション…NW、Storage、スケジュール、IP、ルーティング、負荷分散、監視、デプロイ 構成  etcd(kvs形式のconfig)  マスターサーバ  レジストリサーバ(コンテナレジストリ:GCSに保存)  ノード>Pod>コンテナ(webサーバ)、コンテナ(ログ収集)、仮想NIC  ノード、ノード…GKE コンソールで設定+kubectrl  コンソール:GCE、ストレージ、タスクキュー、BQ、cloudSQL、cloudDataStore、cloudソースレポジトリ、StackDriverLogging、StackDriverMonitoring、StackDriverTrace、CloudPlatform、BigTable、Pub/Sub、サービスコントロール、サービス管理
■流れ
 GKEでクラスタを作成
 Kubectrlをインスコ
 KubectlでPodを立ち上げ>Deploymentができる、複数Podの起動も Kubectlでサービス公開設定
【GCP入門編・第7回】Google Container Engine (GKE) での Docker イメージの立ち上げ方 | 株式会社トップゲート (topgate.co.jp)

 サービスアカウント作成
 ネームスペース、kubeサービスアカウント作成
 サービスアカウントとKubeサービスアカウント紐づけ(gcloudとbubectlの両方)
 Yamlで機能を宣言しKubectlでデプロイ

Pod(論理ホスト/インスタンスみたいな) 一意のIPが自動的に割り当てられる Pod内のコンテナはlocalhostで互いに通信、コンテナ間で共有するストレージ Podを直接作成は非推奨 CPU/メモリの最小と最大を設定
Workload identityでServiceAccountとケツのサービスアカウントを紐づけ認証k8sのsecretはPw/Oauthトークン/SSH key等を含むオブジェクト(base64エンコード生) 使う方法3種類:コンテナにマウント、コンテナの環境変数、Pod生成時にケツがpull  どこに置くか、どう暗号化するか、gitに置かない等の考慮が必要

=========
 時間の掛かっていた処理をクラスタ構成で並列処理させて早く終わらすとか
VMからOSを抜いてアプリを入れたものがコンテナ、ドッカ―がOS以下を手配
Dockerがコンテナを管理、k8sがそのDockerをオーケストレーション複数台でまとめたクラスターで故障があっても切り替え可用性を保つ そのクラスターをnamespaceで分割し複数チームで利用することも可稼働中にサーバ追加のスケールをしたりロールバックできるpodにIPを割り振ったり、DNS名を振ったり、負荷分散したり自動デプロイでコンテナイメージをサーバ群へ展開するDockerのホスト管理、コンテナのスケジューリング、ローリングアップデート、死活監視、ログ管理等々masterとworkerで構成されmaster3台、worker2台~位のサーバ要るExternalname>LoadBalancer>NodePort>ClusterIPコンテナにはストレージを置かず外部に持たせた方が良いかもユーザ管理も必要Dockerはイメージという感じか、複数OSを入れられるヤツで、それらを束ね管理するのがケーツhttps://www.kagoya.jp/howto/rentalserver/kubernetes/https://udemy.benesse.co.jp/development/system/kubernetes.html

=========
↓実際のアプリがないとイメージ沸かん

クイックスタート: 言語に固有のアプリのデプロイ  |  Kubernetes Engine ドキュメント  |  Google Cloud
コンテナ化されたウェブ アプリケーションのデプロイ  |  Kubernetes Engine  |  Google Cloud
Cloud buildを使用してアプリをコンテナイメージにパッケージ化
GKEでクラスタを作成、コンテナイメージをクラスタにデプロイ

PHP のドキュメント  |  Google Cloud
PHP スタートガイド  |  Google Cloud
Firestore でのセッション処理  |  PHP  |  Google Cloud 複数インスタンスのsession管理にはFirestore
PHP でのユーザーの認証  |  Google Cloud IAP(Identity-Aware Proxy)
アプリがPHPならこれを参照

PHP を使用したバックグラウンド処理  |  Google Cloud
 Cloud run(コンテナ化アプリのスケールできる実行、CICDで自動Terraform applyできる?)と
 Pub/Sub(イベントドリブンでメッセージングとデータ取り込み)

=========
↓手始め?
GKEでnginxを外部アクセス可能にするまで - Qiita

=========
GKE
[Click for image]

Comment (0)

■21/5/21 12:00AM
GCP Hands Off
データの種類でアーキテクチャを決める コンテナはオーバヘッドが少なくVM/GCEに比べ軽量高速、スケールアップ/ダウンに優れているGCE LauncherでアプリをGCEにデプロイ(数クリック) 永続ディスク…SSDも選択できる ローカルSSD…高性能GCS
 IAPを使うと画像アクセスにも認証が使えそう>LBのバックエンドではIAPが使えない
  GCEにGCSマウントするとGCEのIAPとしてイケる、gcsfuseのOSSでLinux上のドライブになる
   CensOS6.8にgcsfuseをインストールしてGCSをマウント - Qiita
   GCS Fuseを使ってみる - Qiita
 リテンションで保護期間を設定したり、ライフサイクルで削除時期を設定したり
 世代管理ができたりCloudSQL ライブラリSQL APIを有効に 平文通信→CloudSQL proxyバイナリをVMインスコ  proxyとアプリ設定を合わせる、proxyサービス起動
■制約が重要そうでまとめて記載したい IAPとCDNの両立はできない
 LBのbackendにgcsを設定したときはIAPが使えない

■ハンズオン(GAE:php+FW+IAP)→GAEよりCloud runが良いIAPはGAEが簡単そう(アクセスするのにGoogleの認証プロンプトを出す)
 自前DNSにTXTレコードを設定>確認>IPが表示されAレコードやCnameも登録でき、SSL証明書も使えるようだ
  しかし無くてもgoogle提供のドメインが使え不要 DNS(TXTレコード)による所有権の確認 - Google Search Consoleの使い方 (howtonote.jp)
 WinローカルにGCP SDKインスコし下記にapp.yamlとindex.phpを置いてcmd→ gcloud app deploy
  C:\Users\おまはんのユッザー名\AppData\Local\Google\Cloud SDK\php
 IAPを有効にしIAM secured userの権限とIAMでGAE viewer権限付与で@gmail.comユーザ等は見れる
  外部ドメインを使うときはIdentityPlatform設定が必要そう
止めるにはinstanceを削除する(再度アクセスでinstanceが自動作成される)、IngressをInternal onlyにすると一応止まるか、楽だ
■ハンズオン(GCE+nginx+FW+LB+IAP+Cloud NAT+Cloud armor)
●cloud shell terminalgcloud compute instances list インスタンス一覧●コンソールGCE VMを作成(Instance scheduleで起動-停止時間が入れられる、テンプレやグループに使えない?)
 instance template作成 ubuntu18、API access scopeには"Allow full access to all Cloud APis"で
  外部からアクセスさせずLB経由だけにしたい→外部IPがephemeralで止められない→作成時にnetwork>external ipをnoneで作成すること→
  外へでれなくなるのでgcloudコマンドが通らない→CloudNATも設定
 instance group作成 あるいは VM instance作成
  IGが中々できないならIGを開きエラーメッセージを見ることSSHの項目からview gcloud commandで好きなSSHターミナルからアクセスできるcmd出る gcloud beta compute ssh --zone "asia-northeaset1-b" "instance-3" --tunnel -through-iap --project "bangboo-sandbox"●SSHターミナルgcloud init インスコsudo apt-get install nginx Webサーバインスコ、ブラウザで内部IPでアクセスしたかったが不可だったsudo service nginx stop 止める、動かすのは sudo service nginx startps プロセス見るcurl http://10.117.0.19 nginxが動いているか確認cat /var/log/nginx/access.log ログ確認
●nginx
/etc/nginxにあるconf系が設定ファイル
sites-enabled/default だけがあり cat default しdocument rootは/var/www/htmlと判明
 ここへ移動 cd /var/www/html
sudo cp index.nginx-debian.html index.html コピー
sudo nano index.html で編集
設定変更後は sudo service nginx restart●コンソール
FW作成
 gceに外部IPがあればアクセス試す
 fw-bangboo-http-ingress-allow ingress - "all instances" - 0.0.0.0/0 デフォルトで許可+ingressが必要
  httpsはIPではダメ、ドメイン/証明書が要るか知らんがhttpでは外部IPあればアクセスできる
   GCPのIPを自前のDNSのAレコードに設定しとけば、、
   ウェブとメールを別々のサーバで運営したい?・・・それ、ゾーン設定で出来ます! | さくらのナレッジ (sakura.ad.jp)
   ドメイン所有はDNSにTXTレコード設定ができるようだが、、、
   ウェブマスター セントラル (google.com)
 fw-bangboo-all-ingress-deny ingress - "all instances" - 0.0.0.0/0 で設定完了まで止めとく  使うときfw-bangboo-all-ingress-deny ingress - "all instances" - 192.168.1.255/32 に設定?
 外部IP(普通LBとなるか)への制御はCloud armorのでdeny allowしてFWではあんまり考慮しない?LB作成 VMインスタンスグループ(子インスタンス)作成(上で作ってなければ)  インスタンステンプレート作成 LBヘルスチェック(閾値)が要る httpLBだと内部か外部か選択できる
  httpLBならIPレンジが要る>VPC networkで同resionで使われていないものを設定  例10.55.20.0/22なら10.55.23.255まで使われているので10.55.25から使うとか  NW計算 ネットワーク計算ツール・CIDR計算ツール | Softel labs
   VPCのサブネット設定は拡大できるが縮小ができない→小さめにしておきたいが、k8sはIP沢山使うので大きめ
   プライベートサービスコネクト(VPC間を繋ぐ)を使うと疎結合でつなげられるが
 backendはhttpで、healthcheckはtcp80とproxy無し
IAP作成
 外部 HTTPS ロードバランサの設定  |  Identity-Aware Proxy  |  Google Cloud IAP(https)を見るとFWで開けてくれの指定がある
  fw-bangboo-lb-gce-allow Source IP range:072.72.1.19/22, 69.11.8.0/16 tcp:80
 IAPを見るとLBを設定するとFWはLBに対するものだけになるので不要との指示がある  fw-bangboo-http-ingress-allow 0.0.0.0/0(削除)  下記はインスタンス作成時の許可設定分で不要   default-allow-internal 69.11.0.0/9(削除) default-allow-http 0.0.0.0/0(削除)
   これも不要?default-allow-http 0.0.0.0/0 tcp:443(削除)default-allow-icmp 0.0.0.0/0(削除)
   default-allow-rdp 0.0.0.0/0 tcp:3389(削除)default-allow-ssh 0.0.0.0/0 tcp:22(削除)
 IAP(ssh/tcp)を見るとFWで開けてくれの指定があるが開けるとhttpsに穴ができると出るし止め
  fw-bangboo-lb-iap-tcp-allow  Source IP range:072.72.2.0/20 tcp:all(sshターミナルを使う時だけFW開ける、通常priority9000)
 IAPをONだけでは駄目で、FWで調整してGCEに直接アクセスじゃなくLBでやっとIAPが動くみたい  IAPの設定でhttp://IPでアクセスするとhttps://に転送されたのだが(IAPがない場合は下記設定をするようだ)
  HTTP(S) 負荷分散用の HTTP から HTTPS へのリダイレクトの設定  |  Google Cloud事前にgce.bangoo.com -> 117.072.19.255 (LBのIPはephemeralをstaticに変更)を自前のDNSに設定
 (DNSのTTLを前日に3600から300に変更しておいたり、DNS反映期間があったり) LBのフロントエンドでマネージド証明書を設定(ssl-policyを緩めで設定したが必要?)  オレオレ証明書は? LBフロントエンドはhttpsでもバックエンドはhttpで
 IAP-secured web app userロールを@gmail.comユーザに付与
 IAPとCDNの両立はできない
 LBのbackendにgcsを設定したときはIAPが使えない→ネット公開にしてVPN SCで制御?、GCEにGCSをマウント?
FW調整
 0.0.0.0/0 all deny priority2000>LB関連 tcp80 allow 1000/IAP関連 tcp allow 1000>(使用拠点のソースIP allow 500)
 GCEの外部IPを止める:インスタンステンプレート作成時に外部IPnoneで設定(StaticIPを買って削除でもnoneにできなさそう)
 必要なもの以外を止める:0-442, 444-65535で443のみ許可は駄目か?
 Connectivity testでテストがIPアドレス等でできる(設定変更から実際の反映に時間が掛かるものがあるような気が)
apache benchでスケールするかテスト Apache Bench を使って初めてのベンチマークテスト - Qiita
 sudo apt install apache2 abはapachに含まれるのでどれかのVMにインスコ
 ab -n 1000 -c 100 https://gcp.bangboo.com/ でインスタンスが増えることが確認できる
Cloud armor設定
 DDoS等を防ぐのでOnでいいのでは、adaptive protectionで優先度低いdeny設定
 外部IPのdeny allowはこれでやる(web app firewallなのでな)
 IAPが前、Cloud armorが後ろ、そしてLBとか
Access context manager設定(+VPC service control)
 Organizationの設定が必要(≒Cloud identityでドメイン必要?)IPアドレスやOS等でアクセスを制限できるFWでIngress全止め or VMインスタンス停止、LB停止

sute16 asia-northeast1-b 2021/7/24(91日で33000yen-10/20位まで)
Instance groupはどう止める?>LB削除>LBのバックエンド削除>Instance group削除
 LBはinstance groupがいる、IAPはGCEの場合はLBにSSL証明書要る
  DNSのAレコードを登録しLB設定すれば証明書入る
   毎回検証終了時につぶして、立てるのが面倒そうだな→FWでdeny allしとく
 【初心者】GCP Identity-Aware Proxy (IAP), Access Context Managerを使ってみる (WEBサーバへのアクセス制限) - Qiita
nginx+PHP appサーバ+BigQuery+BigTable+CloudSQL(MySQL)+GCS+α? [PHP]BigQueryのデータを取得する | yyuuiikk blog
$ composer require google/cloud でインスコ<?phprequire 'vendor/autoload.php';use Google\Cloud\BigQuery\BigQueryClient;$keyfile = './credential.json'; //svacのkey$bigquery = new BigQueryClient([    'keyFile' => json_decode(file_get_contents($keyfile), true),]);$dataset = $bigquery->dataset('dataset-name');$table = $dataset->table('table-name');$queryJobConfig = $bigquery->query(    "SELECT * FROM `project-id.data-set-name.table-name` LIMIT 100");$queryResults = $bigquery->runQuery($queryJobConfig);foreach ($queryResults as $row) {    print_r($row);}
Google Cloud Storage にPHPを使ってファイルをアップロードする | カバの樹 (kabanoki.net)
$composer require google/cloud-storage でインスコ<?phprequire __DIR__ . '/vendor/autoload.php';use Google\Cloud\Storage\StorageClient;$projectId = 'bangboo-prj';$auth_key = './iam/credential.json';$bucket_name = 'gcs-bangboo';$path = 'img.png';$storage = new StorageClient([   'projectId' => $projectId,   'keyFile' => json_decode(file_get_contents($auth_key, TRUE), true)]);$bucket = $storage->bucket($bucket_name);$options = [   'name' => $path];$object = $bucket->upload(   fopen("{$path}", 'r'),   $options);
<img src="https://storage.googleapis.com/gcs-bangboo/img.png">SSLに対応したNGINXリバースプロキシを構築する手順 - Qiita
 nginxは静的コンテンツを高速に配信するように設計されている。 また、 リバースプロキシ の機能を持つため、背後にWebアプリケーションサーバを配置して動的なコンテンツを配信したり、ソフトウェア ロードバランサやHTTPキャッシュとしても使うこともできる。GCPにセキュアな踏み台サーバーを作成する. GCPのIdentity-Aware… | by Taiga Murakami | google-cloud-jp | Medium
 Googleにバックドアを開けてしまっては危険、、、ということはない


End
Comment (0)

■21/5/20 9:00PM
GCP
■GCP(Google Cloud Platform)https://console.developers.google.com/GCPを活用するスキルを問われる「Associate Cloud Engineer」インフラストラクチャの知識を問われる「Professional Cloud Architect」データと機械学習の知識を問われる「Professional Data Engineer」 マシーンラーニング:教師ありをベースにパターンを線形として認識し相似のパターンを見つける ディープラーニング:人間が把握できる次元のデータ構造ではない多次元でパターンを見つける
  線形検索みたいなもんか

■GCP
https://techblog.gmo-ap.jp/category/gcp/
https://tech.zeals.co.jp/entry/2019/01/08/094054
https://techblog.gmo-ap.jp/category/tensorflow/

12 か月間300 ドル分だけ無料
https://console.cloud.google.com

無料だとBigQueryのDML(insert)ができないらしい
予算とアラートを1円で設定(通知チャネルにSMSとメール設定)

辞めるときはプロジェクトをシャットダウン&請求先アカウントの閉鎖
1)プロジェクトの閉鎖
Google Cloud Console > IAMと管理 > 設定 > シャットダウン
2)請求先アカウントの閉鎖(原因不明だが下記画面が出るときと出ないときがった)
Google Cloud Console > お支払い > (左ナビ)アカウント管理 > 請求先アカウントの閉鎖
※お支払い>マイプロジェクト>アクション>無効や請求先変更ができる

セキュリティは使用GoogleアカウントのSMSによる2段階認証、信用するデバイスの設定があるようだ

GCP ハンズオンセミナー Google_Cloud_GCPHandson_infra1122.pdf (cloudplatformonline.com) GKE, Cloud SQL, Dataflow等
【GCP入門編・第3回】難しくない! Google Compute Engine (GCE) でのインスタンス起動方法! | 株式会社トップゲート (topgate.co.jp)
【GCP入門編・第12回】 BigQuery を使って気軽にビッグデータの解析を行ってみよう! | 株式会社トップゲート (topgate.co.jp)
【GCP入門編・第25回】 Cloud SQL for MySQL で Master-Slave 構成を組もう! | 株式会社トップゲート (topgate.co.jp)
【GCP入門編・第29回】Cloud Load Balancing で Web アプリケーションにロードバランサーを設定する | 株式会社トップゲート (topgate.co.jp)
【初心者】GCP Identity-Aware Proxy (IAP), Access Context Managerを使ってみる (WEBサーバへのアクセス制限) - Qiita

■IAM(Identity and Access Management) 
https://cloud.google.com/iam/docs/overview?hl=jahttps://cloud.google.com/iam?hl=ja
IAMベストプラクティス https://cloud.google.com/iam/docs/using-iam-securely
操作方法 https://cloud.google.com/iam/docs/how-to?hl=ja
ロール https://cloud.google.com/iam/docs/understanding-roles?hl=jahttps://www.isoroot.jp/blog/1244/https://medium.com/google-cloud-jp/gcp-iam-beginner-b2e1ef7ad9c2

//IAMの機能機械学習を使ったスマート アクセス制御の最適化デバイスのセキュリティ、IP アドレス、リソースタイプ、日時などの属性に基づいて、リソースに対するきめ細かいアクセス制御ポリシー権限の認可、解除、委任に関するすべての監査証跡の履歴ユーザーとグループのプロビジョニングや管理、シングル サインオンの設定、2 要素認証プロセス(2FA)
//IAMポリシー
IDをGroup(●●部)にアサイン Members(Group等)にRoles(●●役)をアサイン  MembersとはグループやドメインやID(Googleユーザアカウント、サービスアカウント) Roles(●●役)にPermissions(権限)を付与
ロールは作成ができ●●世話役みたいな感じか
permissionsは権限で「resourcemanager.projects.get」等でロールに紐づける
 個人や無料アカだと組織がない?→フォルダが作成できない?
 組織がないとグループが作成できない→グループがないとIDにRoleを付与するしか
フォルダは組織ツリー状でリソース管理、組織改編が多いならプロジェクトフォルダでも
 各フォルダに対してそれぞれメールグループを定型(folder-admin/dev/lead/member/parttime/etc)で持たせ メールグループへのユーザ出し入れで権限の管理をするのが良さそう
IAMやServceAccountの一覧には出てこないが存在するIDがある、実際に権限を付与できるかで存在確認する(TFで作成の場合?)ポリシーはMSのGPOみたいものも組み込みで存在する
サービスアカウントはAPI用、人が使うことは基本想定されていない(impersonateできるが
ユーザが削除になっても権限やリソースは残るみたい

メールグループの権限関係の確認方法
 仕組み:祖->親->子、上の権限は下も持つ 権限から確認する、所属から確認するの両面で確認 1)権限を持っている全ての子をリストアップ 2)所属しているメールグループの全ての親をリストアップ
//リソース
階層:Organization > Folders > Project > Resource(Google Cloud services)
割り当て:日や分に対してのデータ量の上限等を設定
必要以上に権限を付与しない組み込みロールが多い、改変してロールを作るか権限はサービス名.リソース.動詞という命名規則
プロジェクト名はGCPグローバルで名前空間を共有しており、企業名等でprefixするのがいい
プロジェクト毎にメールグループを設け、権限はメールグループの参加で管理したい
//リージョンとゾーン
リージョン:データセンターの存在場所、ゾーンをいくつか持つ
ゾーン:障害ドメイン区画(単一障害点を避ける形で環境設計したい)
Google Cloud SDKをインストールすればコマンドラインが使える
 BQは同一リージョンでないとJoinができない、ゾーンはマルチで良い

■authorized view 承認済みview(BQ権限)
設定すると権限を元のテーブルにさかのぼり付与しなくてもいい(設定がないと元テーブルにも権限が要る)、被参照テーブルに参照許可するビューを指定する
BigQueryの承認済みビュー設定方法 - Qiita
■GCS
 http(s)で公開可 Nearline…月1アクセス等 Coldline…年1アクセス等長期アーカイブ
 (standard以外は最低保存期間の縛りがあり早期削除でもお金が掛かる) Multi-regional 99.95%、Regional 99.9%の可用性
料金  |  Cloud Storage  |  Google Cloud  5GBまで無料、リージョンで値段が違う、保存/NW/取得/操作で課金  nearlineの保存は半額で取得と併せstandardと同じ金額になるが操作費高い   月1未満ならnearline  coldline/archive storageは年1程度とされているが使うと結構お金が掛かる   長期保存はせずできれば削除する、できないならポリシーでcold/archiveへ移動    最低保存期間の縛り(90/365)があり早期削除でも請求、その期間は置いておく

■GCP Cloud asset inventory 5週間分の履歴が保管される CAI exportにより任意のタイムスタンプでBQあるいはGCSに履歴情報を吐き出す gcloud CLIのgcould asset search-all-resourseコマンドにより設定
  BQに吐き出し各種状況のチェックやポリシーのチェックに活用

■Cloud logging
Cloud Audit Logging 活用のベスト プラクティス | Google Cloud BlogStackdriver Loggingのログを失う前にエクスポートしておく方法(前編) | apps-gcp.comStackdriver Loggingのログを失う前にエクスポートしておく方法(後編) | apps-gcp.comGoogle Cloudの監査ログを理解する&長期間保存方法 - NRIネットコム Design and Tech Blog (nri-net.com)
Cloud Loggingの利用方法 | apps-gcp.com
料金  |  オペレーション スイート  |  Google Cloud 毎月取込50GBまで無料、取込0.5$/GB+保存0.01$/GB、2種類ありAuditLogで有効無効化  管理アクティビティログ 13ヵ月400日デフォ有効(_requiredログバケットは取込もデフォ期間保存も完全無料)  データアクセスログ デフォ無効(有効にしてもデフォ保存期間30日は無料、50GBを超える取込が有料)   ※つまり50GBを超えた取込、あるいは保存期間を伸ばした分が有料
 BQ streaming insert0.05$/GB+BQ保存(10G無料)0.02/GB=0.07$/GBでBQ化し保存が得  長期保存が必要なものだけエクスポート  集約エクスポート  ログ取集前にログシンク(取込費がかからない)
   サンプル1%等で絞る等
■他
///gcloudをプロキシで使う環境設定とかhttps://qiita.com/tora470/items/bc00bef8cba9f9acecc7

///サービスアカウントで認証
Google Cloud SDKのインストールと認証の設定について - TASK NOTES (task-notes.com)
秘密鍵さえあれば成り済ませる
 ※サービスアカウントはサービスを有効化したときに動作用に自動作成されたり、別途手動でも作れる

サービスアカウントのキーを作成しローカルに保存SSHでGCEのVMに内容をコピペしてキーファイルを作成下記でSAとしてログインgcloud auth activate-service-account ketsu@un.com --key-file /home/ketsu/sakey.jsoncloud shell terminalでもファイルをアップロードできるのでup後下記でOKgcloud auth activate-service-account ketsu@un.com --key-file sakey.jsonログオン切替終わるとき rm sakey.json
shellセッションごとに環境変数でkeyを設定する方法も
認証のスタートガイド  |  Google Cloud

/// サービスアカウントキーを発行せずにサービスアカウント権限を使うサービスアカウントに直接成り代わって gcloud コマンドを実行する - Qiitaサービスアカウントに使いたいロールを付与(roles/accesscontextmanager.policyAdminとか)自身にroles/iam.serviceAccountTokenCreatorを付与叩く gcloud projects get-iam-policy project-id-xxxxx --impersonate-service-account ※tfだとproviderにimpersonate_service_accountを追加する形
///Loadbalancer
 IAPはhttp LB/GCE/AppEngineに
 Internal LBにExternal IPは無理

ついでにIAP tunnel userの権限で踏み台が作れる+OS Loginで認証強化
 OS LoginはIAPの認証機能でSSH上でGCEインスタンスにログインできる代物
 GCPがSSH keyとIAMをGCEに準備してくれる

ついでにリバースプロキシ(nginxとかで作る)
LBみたいなもんだがプロキシでキャッシュを返す
代理代表サーバとなりWEBサーバ界のFWみたいな役割もできる
///NoSQL
=not only sql、分散kvsだったりの非構造化データ、下記2つのみ提供 キーを指定してCRUD(追加、取得、更新、削除) キーの範囲かキーの前方一致でのスキャン

///bigtable
高スループット低レイテンシー読み書き速く膨大なユーザや数千万件テラ以上でgmail、GA、マップ等々で使われている
///cloud functionsサーバレスでRESTみたいな形でURLでサーバアプリを実行、Node.js/PHP/Python等のコードが直接コンソールに掛ける
 ブラウザでcloud functionsにアクセスしたら下記が出た
Error: Forbidden Your client does not have permission to get URL/kuso-ketsu from this server
呼び出しの認証  |  Google Cloud Functions に関するドキュメントcurl https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME  -H "Authorization: bearer $(gcloud auth print-identity-token)"
↑curlでいいなら、コンソールで[未認証の呼び出しを許可する] 設定 + allusersでも可
///Pub/Sub
パプリッシャーからサブスクライバーにメッセージ転送、順序設定可、大量データを1件ずつとか
publisher -> topic : メッセージ -> push型 subscriber -> cloud schedulerpublisher -> topic : メッセージ -> pull型 subscriber -> cloud functions/run

BQ テーブルにデータをエクスポートする Dataflow ジョブGCS でデータをテキスト ファイルまたは Avro ファイルにエクスポートするための Dataflow ジョブ
///BQ job エラー
bq show -j <job-id>
クエリならjob/query historyでわかるがbq cmdでもエラーが返る
bq query --nouse_legacy_sql 'select ketsu from `prj`.oshi.ri'
 unrecognized name: 'kusofuke@ketsu.com' at [1:149]

///シリアルコンソール接続
SSH接続できない!そんな時のシリアルコンソール | apps-gcp.com
突然起動しなくなったWordPressサーバーをなんとか復旧した話 | (tipstock.net)

///gcloud cmd
gcloud organization list GCP IDやGoogleWorkspace IDが分かる

///Recommender
API の使用 - 推奨事項  |  Recommender のドキュメント  |  Google Cloud

///Googleスプレッドシート+GAS+BigQuery
GAS:マクロで記録してそれを使いまわす GASでBQの制御は難しいかも、更新してもBQのデータが古いままだったりする(appscript.jsonに権限を追記しても) データを一時でも書込ならスプレッドシートの共有の編集権限とシート保護しない設定が必要と思われ(セキュリティがザルに)呼び名 connected sheetでBQのデータをスプシに抽出する federated queryはBQに外部ソース(スプシ等)をインポートする
スプシの保護(シートはコピーできザルなのでセキュリティ対策でなくデータ保護)
シートを保護する、非表示にする、編集する - パソコン - ドキュメント エディタ ヘルプ (google.com)
スプシの閲覧共有だけでBQコネクテッドシートのプレビュー/抽出は可能だが、それをvlookup系で他のセルに移せない
組織でコネクテッド シートを使用する - Google Workspace 管理者 ヘルプ
↓他のブックにすればいいかも
編集共有した別ブックに入力データ(日付やメール)を持たせBQフェデレテッドクエリでBQに準備
閲覧共有した別ブックは参照用にBQコネクテッドシートがある形

GASでAdminDirectoryを使う
 gas > サービス > AdminDirectory APIをOn
 gcp該当prj > APIダッシュボード > ライブラリ > Admin SDKを有効
 等でg workspaceのユーザ情報が取れるらしい
  Google Apps Script試行錯誤 Blog: AdminDirectoryでUsers.listを取得したい (pre-practice.net)
  GASでAdmin SDKを利用する(Directory編)その1 - Qiita

///セック
セキュアなBigQueryの運用方法 - Speaker Deck
 IAM condition: 20時以降はアクセスできない等時間やリソースで権限制御 VPC-ServiceControls: VPC+FWで制限を掛けられなかったがIPやIDで制限を掛ける(クレデンシャル漏洩防御)
  LBのバックエンドをGCSにするとIAPが使えない時も
  TF)perimeterで境界を設定してaccess leveで超えれるものを定義   危険で user explicit dry run spec = trueでテストしながら falseで本番化   statusが本番用、specがドライラン用で一旦statusを消してテスト    restricted_services = storage.googleapis.com ならGCS    resource    access_level  https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/access_context_manager_service_perimeterGCPでセキュリティガードレールを作るための方法と推しテク - Speaker Deck
 サブネット作成の際はセキュリティの観点からフローログを15分で取る 監査ログを有効に ContainerResistryの脆弱性スキャンを有効に ログ:データアクセス/ポリシー拒否は30日、管理アクティビティは400日  BQにバックアップしたい SecurityCommandCenterで脆弱性を検知Cloud Audit Logging 活用のベスト プラクティス | Google Cloud Blog
 集約エクスポート シンクにより監査ログをBQに貯めたい

■アプリ
公開資料 - App Modernization OnAir 〜 モダンなアプリケーション開発とは 〜 (cloudonair.withgoogle.com)
cloud runの設定だけでCDCIできる(第10回

●外部IPExternal IP addressで取得、300円/月位、通常一つは自動で割り当てられる
●PoP(Point of presence) 世界70か所でGCPとエッジ(ネット)接続
End
Comment (0)

Navi: <  1 | 2 | 3 | 4  >
-Home
-Column [122]
-Europe [9]
-Gadget [73]
-Web [111]
-Bike [3]

@/// BANGBOO BLOG ///