Skip to content

GCP

Cloud Functionsのデプロイでエラー

久しぶりにデプロイ実行したら、エラーで中断してしまった。

エラーメッセージを見ると、いっこ前のイメージが見つからないみたいなやつで(コピペ紛失)、そういえばコスト削減しようとして、Storageのライフサイクルを1日とか最短にしたのを思い出した。

Cloud Functions のトラブルシューティング  |  Google Cloud Functions に関するドキュメントはちょっと違うけど、関数を削除してやり直せば良さそうなので、そうした。

Read more

CloudFunctionsのログ

デプロイのエラーは、go clean -modcacheしてgo.sum削除してgo.modのrequire全削除してgo mod tidyしたら直った。 何が効いたのかはわからない。

ログは、JSON形式で出力しないといけないのかと思ってそのように書いてみたら、そのまま記録されて構造化されなかった。

集計するものでもなければ、とりあえずfmt.Printfで書いておけばそのまま確認できるのでOK。

Read more

CloudFunctionsのログ

何もしないと、リクエストパラメータすらログに出力されないので、何かと不便。

ログの作成、表示、処理  |  Google Cloud Functions に関するドキュメントによると、標準出力や標準エラーに書き込めば良いが、Entry構造体を定義して、Stringメソッドを作り、logにPrintlnで渡せばもっと良い感じにできるらしい。

とりあえず、fmt.PrintlnでJSONを出力するようにしてみる。

Read more

GCPの課金

Cloud FunctionsでAPIデプロイしてから、課金が発生しているのに気が付いた。

200万回までは無料では?と思い詳細を見てみると、Cloud Storageの料金だった。

料金  |  Cloud Functions  |  Google Cloud

関数が Container Registry に保存される場合、Container Registry には無料枠がないため、デプロイ後にわずかな料金が発生します。

これか。。

おそらく、設定ファイル変えて何度もデプロイしているのが悪いのだけど、ある程度設定が固まればそこまで増えることもないでしょう。きっと。

Read more

コンテナ実行環境比較

AWSとAzureとGCPで、コンテナ実行環境の比較をしてみたくなった。

GCPのCloud Run: コンテナを秒単位で本番環境にデプロイ  |  Google Cloudみたいなやつ。

AWSはAWS App Runner – フルマネージド型のコンテナアプリケーション - Amazon Web Services、AzureはAzure Container Apps | Microsoft Azureが比較対象となるかな?

AWSは選択できる最低スペックが1vCPU/2GBメモリなので、GCPとAzureもこれに合わせた見積もりにする。 なお、メモリはAzureは最低1GBから、GCPは最低128MBから選択できる。

Read more

クラウドサービス比較

AWSで構築しているシステムをAzureと並行稼働させることはできるのか?GCPは?という疑問を解消するために調べてみる。

サービス比較

まずはAWS, Azure, GCPのサービス比較。

サービス名先頭の AWS, Amazon, Azure, Cloud(GCP) は省略。

サーバーレスコンピューティング

AWSAzureGCP
LambdaFunctionsFunctions
Java, Go, PowerShell, Node.js, C#, Python, RubyC#, JavaScript(Node.js), F#, Java, PowerShell, Python, TypeScriptNode.js, Python, Go, Java, .NET Core(C#, F#), Ruby, PHP
Lambda@Edge
Node.js, Python
CloudFront Functions
JavaScript

CDN

AWSAzureGCP
CloudFrontContent Delivery NetworkCDN

コードリポジトリ

AWSAzureGCP
CodeCommitReposSource Repositories

CI/CD

AWSAzureGCP
CodePipelinePipelinesBuild

IaC

AWSAzureGCP
CloudFormationResource ManagerDeployment Manager
  • Azure Resource Managerを簡易操作するためのツール、Azure Building Blocksというものもある。

検討

  • FaaSの対応言語が異なっている。共通で使えるのはJava、Node.js、C#、Python。
    • Lambda@Edgeも使っているなら、Node.jsかPythonしかない。
  • CloudFormation の資産を Azure や GCP に移行できるのか
  • Terraformという選択肢もあり
  • サーバーレス中心ならserverless frameworkを検討してもよいかも

参考

Qwiklabsの続きをやる

先日のデブサミのハンズオンで使ったアカウントに1ヶ月のサブスクリプションが付与されていたのを思い出して、途中になっていたKubernatesのクエストの続きを終わらせた。 Jenkinsを使ったCI/CDのやつ。

Jenkinsは昔使ったことあったけれど、最近はCI/CDのサービスが充実してきているので自前で用意して使うことはなくなってきたなー、ということで久しぶりに触った。

Read more

Google Cloud Build Day

https://gcpug-tokyo.connpass.com/event/143453/

  • GCPのCloud Buildサービスに関する話。
  • AWSだと、CodePipelineとCodeBuildとCodeDeployに相当するもの。

19:30 ~ 20:00 マルチアーキテクチャイメージの作成(仮) @ymotongpoo

  • イベントベースでビルドのトリガー(GitHubのpushとか)
  • テストの実行とアーティファクトのビルド
  • 雑に言うとDocker on Docker
  • ビルド実行時間にる対する課金
  • Artifact management
    • プライベートコンテナレジストリに自動push&脆弱性スキャン
  • 70以上のビルダーイメージ
  • Cloud Console UIで実行状況・結果の確認ができる
  • セキュア情報はKMSと連携して暗号化可能
  • Dockerが入っていればローカルで試すことができる
  • STEPの並行実行ができる
    • 依存関係も定義できる(waitFor)

20:00 ~ 20:25 Cloud Build out of steps @apstndb

  • CI/CDにおけるコンテナ間の通信
  • K8s IN Docker(KIND)
    • DOckerの中で本物のK8sクラスタを構築するツール
    • 現在アルファ版
    • CircleCI, TravisCI, GitHub Actionで動いた報告あり
  • STEP内でdocker buildが使える→docer runも使える→何でもできる
  • 他のCI/CDサービスとは異なるアプローチ
  • dockerize
  • Cloud BuildでKINDするには
    • STEPから外れる必要がある
    • Docker Networkが使えないのでhostネットワークを使う=STEPと直接通信できない
  • デモは時間切れ。。

20:25 ~ 20:35 休憩

20:35 ~ 20:50 Cloud Buildを気軽なコンテナ実行環境として利用する @chidakiyo

  • 注意点
    • gcloud builds submitした際に指定したディレクトリは以下のファイルが送られる。
    • 巨大なファイルがあると大変。
    • .gcloudignoreで除外指定可能。
    • 無料枠は請求先アカウント単位なので複数プロジェクトでやるとすぐ尽きる
  • 事例
    • Dataflowを使っていた処理のCloud build化
    • gcloudコマンドさえ入っていればローカルに諸々インストールする必要がない

20:50 ~ 21:10 LT

yukinagae

  • Berglas(ばーぐらす)
    • Cloud KMSとCloud Storageで暗号化できる
  • デモは時間切れ。。

SouMatsuda

  • Cloud Build x Terraform
  • 通常、ローカルで実行する init, plan, apply をCloud Buildで実施する
  • インフラの設定変更が頻繁に起きる場合は工数削減に効く
  • それなりに学習コストはかかる

kumagai

  • Cloud Build で docker-compose と ansible
  • 用途
    • 自動テスト用ベースイメージとして
    • 開発者にGCEのテンプレートとともに渡す
    • 社内デモ環境としてGKEで起動

感想

  • Cloud Build使ってみたくなった。
  • ちょうどblogのCI作ろうとしていたから、これでやってみようかな。

GCPUG Tokyo Next Extended 2019 Infra Day

  • 2019/06/19(Wed)
  • 19:00 〜 22:00

Next Introduction

Next 189 UPDATE Infra misc

  • Anthos
    • 複数のコンポーネントの集合体
    • 去年はCSPという名前
    • GKEとオンプレをまとめて扱うみたいな
  • OSSベンダとのパートナーシップ
    • 基本、Googleのクローズドソースだった
    • ElasticとかMongoDBとか
    • 今年中くらいにリリース?
  • Google Cloud Storage
    • 新しいタイプ Ice Cold Archive
    • Nearline, coldline のさらに安いやつ
    • まだ保存料金しか発表されていない
  • Cloud Firestore Collection group queries
    • 複数のSUb CollectionをまとめてQueryできるようになった
  • Cloud Bigtable Multi Region Replica
    • 別リージョンのクラスタを相互に同期できるようになる
  • Microsoft SQL Server on Cloud SQL
    • aws RDS的な
    • アルファバージョン
    • ActiveDirectoryのフルマネージドも出た
  • Policy Intelligence
    • Policy(awsのrole?)の管理補助ツール
    • 使われていない権限(削除しても良くない?)を見つけてくれる
    • どの設定で403になるのか調査してくれる

Service Networking

  • traffic director
  • コンテナである必要はない
  • ユーザーに使いリージョンにトラフィックを流したりできる(Istioではできない)
    • まだアルファバージョン
  • Cloud Service Mesh
    • Stackdriverと連携もできる
    • これもプライベートアルファバージョン
  • Istio On GKE
    • managed istio
    • GKEのバージョンとIstioのバージョンは密結合
  • keywords
  • instagramはモノリス
    • 世界最大のpythonプロダクト?
    • Envoy for iOS and android
  • mutual TLS

パネルディスカッション