android-project-46group / api-server

MIT License
2 stars 0 forks source link

クラウドを使ってデプロイする #22

Closed kokoichi206 closed 2 years ago

kokoichi206 commented 2 years ago

aws? gcp? azure ? など

特に料金的な違いはなさそう。 今回何が要求されてるわけでもないので(aws の資格を取ってしまったので)、aws を使う。 また、kubernetes に触れてみたいので、eks を使う。

そのほか

関連: #28

kokoichi206 commented 2 years ago

コンテナ化する

Kubernetes で動かすにあたり、docker ファイルにして輸送できるようにする。 また、AWS のサービスである Amazon Elastic Container Registry (ECR) を使う。

develop へマージされた時に、github actions を使ってコンテナイメージを deploy させたい

気をつけること

docker-compose

deploy 時には api のコンテナと RDS が別で立つイメージだが、ローカルでの実行時のために docker-compose を用意した。 database のビルドの方が api のビルドよりも先に行われて欲しいが、api 起動直後にマイグレ等を行いたい場合は、起動だけではなく、通信可能な状態になっていてほしい、ということがある。 今回はその用途として wait-for を使わせていただく。

kokoichi206 commented 2 years ago

deploy to ecr

create a RDS

開発環境と同等バージョンの PostgreSQL 12 を、無料利用枠のテンプレートで作成。 ユーザー名はもはや ubuntu ではないが、ラズパイでの運用時に合わせてそのままにしておく。

使用する DB の変更

app.env で使用する設定値を決めているが、コンテナとして deploy するとき(運用するとき)は違う db(今回作成した RDS )を使いたい。 漏らしたくない情報もあるため既存のファイルを書き換えるのではなく aws secrets に保存し、github actions での deploy 時に書き換える方針にする

kokoichi206 commented 2 years ago

EKS

  1. EKS -> クラスターを作成
  2. クラスター内の設定 -> コンピューティングから、ノードグループを作成
    • グループには以下のポリシーをあてる
    • VPC CNI Plugin
    • AmazonEKSWorkerNodePolicy
    • AmazonEC2ContainerRegistryReadOnly

AWS CLI

private の ECR からダウンロードする!

aws ecr get-login-password | docker login --username AWS --password-stdin 835008509196.dkr.ecr.ap-northeast-1.amazonaws.com

k9s

brew install k9s

k9s

# exit
ESC -> quit

# k9s 入った後
deploy, service

k9s での検索ワード

clusterissuer, secrets, certificaterequest, service, ingress, pod,

kubernetes

deploy

kubectl apply -f eks/deployment.yaml
> deployment.apps/simple-bank-api-deployment created

memo

# 新しいノードグループを登録する
aws eks update-kubeconfig --name sakamichi --region ap-northeast-1

# コンテキストを切り替える
kubectl config use-context arn:aws:eks:ap-northeast-1:835008509196:cluster/sakamichi

service

pod は生成消滅があるため、その点不安定。 それを解消したい。

memo

kokoichi206 commented 2 years ago

確認

curl http://a9134df4f8408426487a00599c9fd1c5-895910160.ap-northeast-1.elb.amazonaws.com/members\?gn\=nogizaka\&key\=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
{"members":[{"user_id":1,"user_name":"秋元 真夏","birthday":"1993年8月20日","height":"154cm","blood_type":"B型","generation":"1期生","blog_url":...

問題点(改善点)