Slide 1

Slide 1 text

EKS on FargateでWebサービスを 公開するために覚えておきたいこと ビヨンド勉強会 #42 【大阪】DockerとEKSで始めるAWSコンテナ入門 2024/08/28 株式会社ビヨンド 寺岡 佑樹

Slide 2

Slide 2 text

自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname = “ねずみさん家。” company = “beyond Co., Ltd.” job = “Infra Engineer + HR” X     = “@yktr_sre” favorite = [“Terraform”,”Packer”,”ぶいすぽっ!”] }

Slide 3

Slide 3 text

今日のゴール AWS EKSを使ってWebサイトを公開できる

Slide 4

Slide 4 text

今日覚えておきたいこと ● EKSとは ● Kubernetesとは ● コンテナイメージ用意 ○ Dockerイメージのビルド → ECRへアップロード ● EKSクラスター作成 ● kubectlからクラスターへ接続 ● サイト公開設定 ○ Deployment ○ Service ○ Ingress

Slide 5

Slide 5 text

EKSとは

Slide 6

Slide 6 text

EKSとは ● Amazon Elastic Kubernetes Service ● Kubernetes の環境をセットアップ・実行するためのマネージドサービス ● EKSを利用することで、 AWS上で容易に Kubernetesの環境を構築することが 可能

Slide 7

Slide 7 text

Kubernetesとは

Slide 8

Slide 8 text

Kubernetesとは ● アプリケーションのコンテナ群を統合管理するためのソフトウェア ● GoogleがBorgと呼ばれる内製ツールを OSSとして公開したのが始まり ● Cloud Native Computing Foundation(CNCF)と呼ばれる団体の Graduated Projects(最も成熟した段階 )の中の1つ

Slide 9

Slide 9 text

Kubernetesのアーキテクチャ 引用:https://kubernetes.io/ja/docs/concepts/architecture/ CLUSTER:コンソール or API でユーザーが作成 CONTROL PLANE:AWS側が 管理 Node:EC2 or Fargateが選択 可能(今回はFargate)

Slide 10

Slide 10 text

EKSの導入と設定 コンテナイメージの用意

Slide 11

Slide 11 text

コンテナイメージ用意 ● コンテナイメージをビルドし ECRにアップロードする ○ ECRの認証情報取得 → イメージビルド → タグ付け → アップロード ○ aws ecr get-login-password → docker build → docker tag → docker push

Slide 12

Slide 12 text

コンテナイメージ用意

Slide 13

Slide 13 text

コンテナイメージ用意

Slide 14

Slide 14 text

コンテナイメージ用意

Slide 15

Slide 15 text

EKSの導入と設定 クラスター作成

Slide 16

Slide 16 text

EKSクラスター作成 ● マネジメントコンソールからも作成可能だが eksctlを利用するのが早い ● EKS上でクラスターの作成及び管理するために利用する CLIツール ● CloudFormationのラッパーツール ● コマンドラインから EKSの稼働に必要なリソースや設定を自動作成できる ● インストール手順は https://eksctl.io/installation/ を参照

Slide 17

Slide 17 text

EKSクラスター作成 CloudFormationのスタックが作成される クラスター以外にもVPC等必要なものを同時に 作成してくれる

Slide 18

Slide 18 text

EKSクラスター作成 ● EKS ○ クラスター ● VPC ○ VPC ○ サブネット ○ ルートテーブル + ルート ○ インターネットゲートウェイ ○ NATGateway ○ セキュリティグループ + インバウンドルール ○ ElasticIP ● IAM ○ ロール ● その他 ○ Fargateプロファイル (EKSでFargateを利用するための設定情報 )

Slide 19

Slide 19 text

EKSの導入と設定 kubectlからクラスターへ接続

Slide 20

Slide 20 text

EKSクラスター作成 ● eksctl実行時にローカルの設定ファイル (~/.kube/config)も作られてる

Slide 21

Slide 21 text

EKSの導入と設定 サイト公開設定

Slide 22

Slide 22 text

Deploymentの作成 ● Podのローリングアップデートやロールバックといった管理の仕組み Deployment ReplicaSet Pod1 Pod2 ReplicaSetを制御 Podの数を制御 複数のコンテナをまとめたもの

Slide 23

Slide 23 text

Deploymentの作成 $ kubectl apply -f deployment.yml

Slide 24

Slide 24 text

Deploymentの作成

Slide 25

Slide 25 text

Serviceの作成 ● Podへの接続エンドポイントを提供 ● Podは起動しただけではアクセスできない ● Serviceを利用すると Podへトラフィックをルーティングできる

Slide 26

Slide 26 text

Serviceの作成 $ kubectl apply -f service.yml ● spec.ports.port:Serviceが接続を待ち受けるポート ● spec.ports.targetPort:ターゲットのポート (Deployment経由で作 成されたPodがListenしているポートを指定 ) ● selector:ServiceがどのPodに対応しているかを示す (app: k8s-testというラベルを持った Podにアクセスを転送する )

Slide 27

Slide 27 text

Serviceの作成

Slide 28

Slide 28 text

Ingressの作成 ● クラスター内の Serviceに対する外部からのアクセス (主にHTTP/S)を管理する ● 負荷分散、 SSL終端、名前ベースの仮想ホスティングの機能を提供する ● EKSからELBを操作できるようにしたいため、 AWS Load Balancer Controller を クラスターにインストールしていく

Slide 29

Slide 29 text

Ingressの作成 ● AWS Load Balancer Controller は公式の手順に従って helmを使ってインス トールするのが早い ○ https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/lbc-helm.html ● helmのインストールは以下を参照 ○ https://helm.sh/ja/docs/intro/install/

Slide 30

Slide 30 text

Ingressの作成 IAMポリシーのテンプレートをダウンロード IAMポリシーを作成

Slide 31

Slide 31 text

Ingressの作成 IAMのIDプロバイダー(OIDCプロバイダー)を作成する = AWSのIAMロールとKubernetesのサービスアカウントの橋渡しをしてくれる IAMのサービスアカウントの作成 –attach-policy-arnに作成したIAMポリシーのARNを指定

Slide 32

Slide 32 text

Ingressの作成

Slide 33

Slide 33 text

Ingressの作成

Slide 34

Slide 34 text

Ingressの作成 ALBの設定値をannotationで指定できる 事前に作成していたServiceの名前と公開ポートを指定 $ kubectl apply -f ingress.yml

Slide 35

Slide 35 text

Ingressの作成

Slide 36

Slide 36 text

Ingressの作成

Slide 37

Slide 37 text

Ingressの作成

Slide 38

Slide 38 text

皆さんもEKSを使ってみてください

Slide 39

Slide 39 text

終わり

Slide 40

Slide 40 text

ねずみさん家。のインフラエンジニア道場 チャンネルはこちらから → × 毎週 水・金・土 に更新しています! サーバーって何?から インフラエンジニアの日常まで。 誰よりも分かりやすく・面白くをモットーに活動して います!