こんにちは! アイレットの徳江です。
普段触らないサービスを初心者レベル Workshop で体験してみようということで、今回は Amazon EKS 編です。
結構な人気で Walk-in(早いもの順)列が長蛇の列になっていました!予約できてよかった…。

EKS とは?

Amazon EKS は、AWS クラウドおよびオンプレミスデータセンターで Kubernetes を実行するためのマネージド Kubernetes サービスです。クラウドでは、Amazon EKS は、コンテナのスケジューリング、アプリケーションの可用性の管理、クラスターデータの保存などの主要タスクを担当する Kubernetes コントロールプレーンノードの可用性とスケーラビリティを自動的に管理します。
https://aws.amazon.com/jp/eks/ より

AWS 上でコンテナを動かせるサービスには ECS がありますが、Kubernetes を使用してコンテナを動かせるのが EKS です。

セッション概要

<セッション名>
Getting started with Amazon Elastic Kubernetes Service (Amazon EKS)

<レベル>
200 – Intermediate

<セッションタイプ>
Workshop

<スピーカー>
Niall Thomson, Specialist Solutions Architect – Containers, AWS
Sai Vennam, Principal Developer Advocate, Amazon Web Services

<セッション説明>

Ready to kick off or accelerate your Kubernetes experience? This workshop provides an introduction to Kubernetes using the AWS managed Kubernetes service Amazon EKS. Previous experience with Kubernetes or container workflows is useful but not required. During this workshop you deploy everything needed to have a set of microservices running with additional useful day-2 functionality in place. The workshop includes deploying a set of microservices, configuring a load balancer in front of your service, configuring centralized logging, and enabling automatic scaling of your pods and worker nodes. You must bring your laptop to participate.

Kubernetes を使い始める、または加速させる準備はできていますか?このワークショップでは、AWS のマネージド Kubernetes サービス Amazon EKS を使用した Kubernetes の入門を提供します。Kubernetes やコンテナワークフローの経験があると便利ですが、必須ではありません。このワークショップでは、Day-2 の便利な機能を追加したマイクロサービスのセットを実行するために必要なすべてをデプロイします。ワークショップでは、マイクロサービスのセットのデプロイ、サービスの前のロードバランサの設定、集中型ログの設定、ポッドとワーカーノードの自動スケーリングの有効化などが行われます。参加にはノート PC の持参が必要です。

Workshop の内容

演習内容は6つの分野に分かれており、自分のレベルに合わせてやってねということでした。
内容は以下の通りです。

  • Introduction – Learn the format and structure of this workshop
  • Fundamentals – Familiarize yourself with basic EKS concepts such as managed node groups, Fargate, exposing your applications and utilizing storage
  • Autoscaling – Understand how to automatically scale your applications and clusters horizontally and vertically
  • Observability – Learn about logging, container insights and more
  • Security – Demonstrates how to apply container security practices to EKS clusters and workloads
  • Networking – Dive deep into how EKS networking integrates with Amazon VPC and more

自分は EKS はおろか Kubernetes も少し齧っただけの初心者なので、Introduction をやり切るのが精一杯でした。
この Workshop で提供されるドキュメントは内容が丁寧で、なぜこの手順を行うのかの説明や Kubernetes の基本的な概念(pod 等)の図解付きで解説がありました。

Introduction レベルを実践

環境構築

EKS および Kubernetes の操作は CLI で行ないます。
そのため Workshop 用の AWS コンソールでは環境構築済の Cloud9 が用意されていました。
こちらに入りターミナルを立ち上げます。
EKS クラスタも既に作成されているようです。コマンドで存在を確認できました。

何を作るのか

この Workshop では EC サイトを構築するようです。
Introduction では、ロードバランサーや DB のような他の AWS サービスを使用せずに、EKS クラスタだけで自己完結する形でデプロイを行ないます。

 

構築①

既に EKS クラスターは立ち上がっているので、現在の Namespaces を確認します。

WSParticipantRole:~/environment $ kubectl get namespaces
NAME STATUS AGE
aws-for-fluent-bit Active 14h
aws-load-balancer-controller Active 14h
cert-manager Active 14h
default Active 14h
grafana Active 14h
karpenter Active 14h
kube-node-lease Active 14h
kube-public Active 14h
kube-system Active 14h
kubecost Active 14h
opentelemetry-operator-system Active 14h

まだ何も作ってないのに既に何かあります。
これは事前にインストールされたシステムコンポーネントの Namespaces だそうです。
Kubernetes のラベル機能を使用して Namespaces を作成したものだけに絞り込むことができるので、これを行ないます。

WSParticipantRole:~/environment $ kubectl get namespaces -l app.kubernetes.io/created-by=eks-workshop
No resources found

構築②

まずは EC サイトのコンポーネント「Catalog」部分を構築します。
構築に必要なファイルは全て用意されている状態でした。

WSParticipantRole:~/environment $ ls /workspace/manifests/catalog
configMap.yaml kustomization.yaml secrets.yaml service-mysql.yaml statefulset-mysql.yaml
deployment.yaml namespace.yaml serviceAccount.yaml service.yaml

deployment.yaml にデプロイに必要な設定が定義されていて、
先ほどの Namespaces につけるラベルなどの設定は service.yaml に定義されているそうです。

コマンドを実行すると「Catalog」部分がデプロイされます。

WSParticipantRole:~/environment $ kubectl apply -k /workspace/manifests/catalog
namespace/catalog created
serviceaccount/catalog created
configmap/catalog created
secret/catalog-db created
service/catalog created
service/catalog-mysql created
deployment.apps/catalog created
statefulset.apps/catalog-mysql created

構築③

Namespaces を確認すると catalog が確認できました!
フィルターもちゃんと効いてますね。

WSParticipantRole:~/environment $ kubectl get namespaces -l app.kubernetes.io/created-by=eks-workshop
NAME STATUS AGE
catalog Active 50s

構築④

残りのコンポーネントをデプロイしていきます。
この workshop では Kustomize というツールを使用して一気にデプロイを進めました。
Kustomize はマニフェストファイル(yaml 形式)にデプロイ対象を記述するとそれを一括でデプロイしてくれるようです。

WSParticipantRole:~/environment $ kubectl apply -k /workspace/manifests/catalog
namespace/catalog created
serviceaccount/catalog created
configmap/catalog created
secret/catalog-db created
service/catalog created
service/catalog-mysql created
deployment.apps/catalog created
statefulset.apps/catalog-mysql created

デプロイ完了後、kubectl wait コマンドでコンポーネントの状況(全て始まっているか)を確認します。

Introduction レベルではここまでとなっています。
EKS というよりかは Kubernetes の操作が主となっていました。
この次の Fundamentals レベルで EKS のノードを CLI で操作したりしましたが、
時間切れで最後までできずでした。
ドキュメント自体は開始から24時間は見られるようなのですが、ラボ環境がそれより早く無効になってしまうのが残念。

感想

Workshop のドキュメントの説明が豊富で Kubernetes の復習にもなりました。
じっくり読んでやると初心者は2時間じゃとても足りないです。

EKS は Kubernetes の理解が前提条件になってしまうので、ECS より敷居が高いという印象だったのですがそれを肌で感じました…。

アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアティアサービスパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://www.iret.co.jp/contact/service/form/