Skip to content

Latest commit

 

History

History
148 lines (122 loc) · 5.27 KB

DevelopNOTE.org

File metadata and controls

148 lines (122 loc) · 5.27 KB

Gcrアプリケーション

使用するプラットフォームとツール

Local-develop

Git

Docker

Google Cloud SDK

GCloud CLI

SSH

Emacs

Buildpacks

Repogitory

Github

Github Actions

***

Cloud

IAM

Cloud Run

Artifact Registry

レポジトリからクラウドまでのCIの流れ

  1. mainブランチへのpushをトリガーにGitHub Actionsが発火
  2. リポジトリをチェックアウト
  3. Google Cloud SDKをセットアップ
  4. DockerイメージをBuild
  5. Google Container Registryにイメージをpush
  6. Cloud Runにデプロイ

LocalEnv: 開発環境

Application

アプリ本体

  • Dokcerを使用してアプリを開発
  • GitでレポジトリにPush

コンテナ化

  • Google Cloud Buildpacksを用いてイメージを作成する。

gcloud

必要な設定 gcloudで直接GCPの設定ができる。

Buildpacksでコンテナ化する方法

  1. Dokcerが必要
  2. buildpacksのCLIが必要(shellでインストールが良い?)
  3. ディレクトリ: 「dancing-code/om-lambda-publishing/app/アプリケーション本体」 このリポジトリだと、om-lambda-publishing/app配下に、go.modとmain()をもつgoファイルが必要。 appに移動してからpackコマンドを打つ。
  4. imageができたことを確認 docker ps -a

手動でデプロイする方法

  1. gcloud configを確認する gcloud config list :local:
  1. DockerにGcloudSDKのCredentialを使わせる gcloud auth configure-docker リージョン-docker.pkg.dev :LOCAL:
  2. Docker Build時のタグを設定する docker build -t [ホストする場所]/[project id]/[app]:latest . :LOCAL:

    buildpacksでイメージを作成した場合はdocker buildは不要なのでtagコマンドでタグ付けする。 docker tag [イメージ名] [ホストする場所]/[project id]/om-lambda-publishing/app

  3. docker push でArtifactRegistryにpushする。 docker push [ホストする場所]/[project id]/om-lambda-publishing/app

    gcloud beta run deploy –source=[DIRECTORY]

    gcloud beta run deploy –source=[DIRECTORY]

    pack build gcr.io/long-axle-323211/github.com/dancing-code/om-lambda-publishing:$COMMIT_SHA \ –builder gcr.io/buildpacks/builder

CI

  • 最初のみ手動でコンテナイメージをデプロイする必要がある。

Artifact Registryに最初のコンテナイメージのpushが合わった後。 Cloud RunをArtifact Registryをもとに作成する。 その後はWorkflowの通りにCIできる。

  1. GCPプロジェクトを作成。
  2. Cloud Run APIを有効にする。
  3. Cloud Runサービスアカウントを作成する。
  4. Cloud Runサービスアカウントに、CloudIAMロールを追加する。
    1. Cloud Run Admin: 新しいCloudRunサービスの作成が可能。
    2. Service Account User: Cloud Run asserviceアカウントにデプロイする。(required to deploy to Cloud Run as service account)
    3. Storage Admin: Container Registry/Artifact Registryにプッシュを可能にする。
  5. サービスアカウントのJSONサービスアカウントキーをダウンロードする。
  6. Githubのレポジトリにレポジトリシークレットを設定する
    1. GCP_PROJECT: GCP project ID
    2. GCP SA KEY: ダウンロードしたKEY

GCP settings

  • Cloud RUN APIを有効にする。
  • Cloud Runのサービスアカウントを作成する。
  • IAMのロールを上記のサービスアカウントに設定する。

Github

  • ソースコードを管理
  • Masterブランチにプルリク

Actionsで使うSecretsを設定する。

  • GCP_PROJECT (GCPプロジェクトID)
  • GCP_REGION (リージョン)
  • GCP_SA_EMAIL (サービスアカウント メールアドレス)
  • GCP_SA_KEY (サービスアカウントキー)

SecretsはSettingsのSecretsから設定する。

envはSettingsのEnvironmentsから設定する。

Github Actions

  • WorkFlowに基づいて起動する
  • GCP公式のActionsがある。

Cloud Runのワークフロー

GCP: 本番環境

Artfact Registry

  • Go言語(限定?)では「ko」というツールでDockerなし、Dockerfileの自作なしにコンテナイメージを作れる、らしい。
  • buildpackというサービスもある、らしい。
  • 自力なら当然、DockerとDockerfileに対する理解が必要。 Google Cloud Buildpacks

Cloud Run Api

  • 有効にする。

IAM

必要なロールを設定する。GCP-CloudRun

Cloud Run 管理者

Cloud Run サービス エージェント

Cloud Build サービス アカウント

Githuv Actions用のサービスアカウントを発行する

  • iam.serviceAccounts.actAs
  • storage.buckets.get
  • storage.objects.create