Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terraform×AWS×Kubernetesを駆使したサイト基盤構築に初心者が挑む

mei
December 08, 2019

 Terraform×AWS×Kubernetesを駆使したサイト基盤構築に初心者が挑む

JTF2019 (2019/12/08)でのショートセッションの発表スライドです。
https://2019.techfesta.jp/speakers#E31
--
TerraformもAWSもKubernetesも触ったことのなかった私が、EKSを利用した複数サイトの基盤構築に挑戦しました。自社で初めての試みを行った経験を通じた、初心者観点での苦労や学びをご紹介します。
初心者の皆さまには私の躓きを参考にしていただき、初心者と一緒に仕事をする皆さまには、私たちの躓くポイントに気づくきっかけになればと思います。

mei

December 08, 2019
Tweet

Other Decks in Technology

Transcript

  1. • はじめに ◦ 背景 ◦ 本プロジェクトにおける目標 • システム構成 • 躓いたこと

    ◦ Kubernetes編 ◦ Terraform編 ◦ AWS編 ◦ その他ご紹介 • 学び • まとめ Agenda 3
  2. WordPress管理画面のログイン/ログアウトループ 16 仕組み:  ・複数コンテナが動作中 Cookie XXXXXXX 生成 Cookie YYYYYYY 生成

     ・認証用ユニークキー(WordPressの設定)を元に   WordPress内で暗号化されたcookieを生成している
  3. Terraformで躓いたこと 事象:何もコードを変更していないのに、  ある日 terraform plan をしたら差分が出ていた # module.eks.aws_launch_configuration.workers[0] must be

    replaced +/- resource "aws_launch_configuration" "workers" { 〜略〜 iam_instance_profile = "xxx-eksxxxxxxxxxx" ~ id = "xxx-eks-wgxxxxxxxxxxx" -> (known after apply) ~ image_id = "ami-yyyyy" -> "ami-zzzzz" # forces replacement 〜略〜 18 Launch Configurationで指定するAMI IDに差分
  4. いつの間にかEKSのAMIに差分が出ていた 対策: 1. terraform apply → Launch Configurationの更新 2. ノードを kubectl drain

    していく(クラスタから切り離す) ◦ 新しいノードではAMIが新しいものに切り替わっていく 20
  5. その他の躓き • kustomize のoverlays の機能(基本) • マニフェストはenv以外で変数を呼び出せない • CPU, メモリリソースやReplicaSet

    の調整(基本) • HPA(HorizontalPodAutoscaler) の調整(基本) • jobを使用したAuroraへのDB・ユーザ作成 • tf ファイル内の配列はアルファベット順に書かないとAWSでの設定が同じ でも差分が出る • CloudWatchで取得するPodのログストリーム名を、Pod名ではなくPodの 役割で設定したい • WordPressの予約投稿に失敗する • WordPressでのメディアアップロードサイズの上限を上げたい など 25
  6. 学び • 勉強&実践してみて ◦ AWSとTerraformはセットで勉強すると身に付く ◦ Kubernetesのメリットを実感 • プロジェクトを通して(当然ですが) ◦

    本番環境で勉強をしない(せめてテスト環境) ◦ 躓きを経験することで新しいノウハウを得ることができる ◦ 更にアウトプット(言語化)することで理解が深まる 26