Skip to content

ant-in-giant/fargate-bastion-mysql-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

fargate-bastion-mysql-client

MySQL操作用お手軽踏み台クライアント

これは何?

PreRequirements: 前提

  • macOS or Linux

クライアントツールとして利用するのに必要な最低限

リソース整備・機構構築に必要な開発ツール

Configurations: 設定

自身の環境に合わせて設定しておくファイル

クライアントツール利用時

  • /path/to/deploy/ecspresso/live/.envrc
    • .envrc.example にある項目を適宜設定してください

ローカルで bastion-client を docker compose で動かしてみるとき

  • /path/to/deploy/.envrc
    • AWS_ACCOUNT_ID を適切に設定してください

ECS Task を実行するためのリソース一式を構築するとき

  • /path/to/terragrunt/live/manage/iam/role/task-exec

    • _variables.tf
      • profile を適切に設定してください
      • env_identifier を適切に設定してください (dev/stg/prdなど)
  • /path/to/terragrunt/live/resource/ecr

    • _variables.tf
      • profile を適切に設定してください
  • /path/to/terragrunt/live/resource/ecs-cluster

    • _variables.tf
      • profile を適切に設定してください
      • env_identifier を適切に設定してください (dev/stg/prdなど)
    • _locals.tf
      • ecs_cluster_name・ecs_exec_logs_name を適切に設定してください
        • ${var.env_identifier} 利用可能
      • container_insights_state を設定してください ("disabled"/"enabled")

Usage: クライアントツール利用方法

AWS 認証

aws sts get-caller-identity

で妥当に UserId・Account・Arn が表示されている状態としてください

ECS Task を実行可能かを ecspresso verify

cd /path/to/deploy/ecspresso/live
direnv allow
make verify

ECS Task を実行: ecspresso run

cd /path/to/deploy/ecspresso/live
direnv allow
make run

ECS Task が起動します。
デフォルトで 900秒 (15分) ECS Exec での接続がなければ自動で Task が終了します。

ECS Exec で bastion-client に接続: ecspresso exec

cd /path/to/deploy/ecspresso/live
direnv allow
make exec

起動している ECS Task に接続して、mysql クライアントを利用することができます。

Build: 関連リソース構築方法

AWS 認証

aws sts get-caller-identity

で妥当に UserId・Account・Arn が表示されている状態としてください

Terragrunt でリソースを構築

cd /path/to/terragrunt/live/resource/ecs-cluster
terragrunt run-all apply

Configuration が妥当に出来上がっていれば、

  • ECR リポジトリ
  • ECS Task 実行ロール(IAM)
  • ECS クラスター

が作成されます。

Docker で ECR に bastion-client のイメージを push

cd /path/to/deploy
make ecr-pub-login

docker build 時に ECR Public を参照するので認証が必要です

make ecr-login

ECR の Private Registry に docker push するので認証が必要です

make build

FARGATE_SPOT を利用できるように、意図的に --platform linux/amd64 で docker build します

make tag
make push

latest タグを付加して、ECR へ bastion:latest イメージを push します

Fargate に bastion-client をデプロイ

利用するときだけ ECS Task を run するように、desiredCount=0 で ecspresso deploy します

cd /path/to/deploy/ecspresso/live
direnv allow
make verify
make dry-deploy
make deploy

もうちょっと

  • ECS Exec 時のログを CloudWatch Logs に書き出せてないので出したい

    • check_login.sh が回っているので PID 1 が空いてなくて?
  • ポートフォワードで、ローカルからGUIでのクライアントツールでの MySQL 接続ができるはず(たぶん)

  • utern (Multi group and stream log tailing for AWS CloudWatch Logs) との合わせ技で tail しながらオペレーションできると良さそう

  • Terragrunt の CI

その他

  • live の下にもう1階層環境ごとのディレクトリを置くのが良いかも(階層調整は必要)
  • ライセンスとか置く?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published