LoginSignup
0
0

More than 1 year has passed since last update.

Releaseタグ作成からEKSへのデプロイを自動化した話

Last updated at Posted at 2022-12-22

はじめに

この記事では、Gihub での Release タグの作成 〜 EKS へのデプロイを自動で行うための作成した仕組みを紹介します。
AWS 上で使用する各リソースは、 AWS CDK を使って構築します。

注意点

この仕組みは R&D 的に作成した構成で、実運用では使ったことがない(実際に本番環境やステージング環境などにデプロイしたことがない)ので、参考程度にみていただけると幸甚です。

構成

全体図

ReleaseからのEKSデプロイ.drawio.png

流れ

  1. ユーザが Github 上で Release タグを作成
  2. Release タグを作成したタイミングで Github Action が実行され、Lambda を実行する
  3. Lambda で、Github からソースコードをダウンロードし、zip ファイルに圧縮し直して、S3 へアップロードする
  4. Lambda から Code pipeline を実行する
  5. Code pipeline の中で、 EKS へのデプロイと、Slack への完了通知を送る

実際のコードたち

要点の説明

Github Action でのLambda の実行

Github 上で Release タグを作成したタイミングで、 LambdaFunctional endpointcurl でリクエストを送る。
リクエストの中身には、 OrganizationRepositorytag が含まれている。

Lambdazip ファイルを、S3 へアップロードする

Github Action から受け取ったリクエストから OrganizationRepositorytag を取得し、その情報を元に Github からソースコードを zip ファイルとしてダウンロードする。
ダウンロード後、 zip ファイルの作成し直しをして、 s3 にアップロードする

Lambda から Code pipeline を実行する

aws cli を使って Code pipeline を実行する(実際には、 Python のライブラリを使って実行する)

Code pipeline の中で、 EKS へのデプロイ

Code pipeline の中で実行している Code buildbuildspec.yml の中で、 EKS へのデプロイを実行している。

Slack への完了通知を送る

Slack の通知用URLを設定している場合、終了通知を Slack に通知する

おわりに

もっと簡単にスマートにできる方法がありましたら、教えて頂けると幸いです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0