20240828_ビヨンド勉強会_42_EKS_on_FargateでWebサービスを公開するために覚えておきたいこと.pdf
by
nezumisannn
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
ねずみさん家。のインフラエンジニア道場 チャンネルはこちらから → × 毎週 水・金・土 に更新しています! サーバーって何?から インフラエンジニアの日常まで。 誰よりも分かりやすく・面白くをモットーに活動して います!