Amazon Web Services ブログ

Amazon EKS Distro: Amazon EKS で使用される Kubernetes ディストリビューション

顧客向けの革新的なソリューションの構築に集中したいので、Kubernetes インフラストラクチャを管理する面倒な作業に手間をかけたくないという声がお客様から寄せられています。そのため、Amazon Elastic Kubernetes Service (EKS) の人気が高まっています。このサービスをご利用いただくことで、Kubernetes の管理にかかる負担は解消され、お客様はメリットを享受できます。

ただし、すべてのカスタマーが Amazon EKS を使用するわけではありません。たとえば、既存のインフラストラクチャ投資、データの所在地要件、またはコンプライアンス義務があり、Kubernetes をオンプレミスで運用しなければならない場合があります。このような状況にあるお客様からは、アップデートの追跡、Kubernetes の互換性のあるバージョンと基盤となるコンポーネントの複雑なマトリックスの把握、互換性を確認するためのテスト、および Kubernetes リリース頻度 (3 ~ 4 か月の頻度である場合があります) の維持に多くの労力を費やしていることを伺っています。お客様が新しいバージョンのテストと見極めを適時に実行できない場合、破壊的変更、バージョンの互換性の問題、および重要なセキュリティパッチが不足している、サポートされていないバージョンの Kubernetes を実行する危険性があります。

当社は、AWS で Amazon EKS を提供しながら多くのことを学び、運用のセキュリティ、安定性、および信頼性を備えた Kubernetes を提供する方法を深く理解しています。本日、当社は、その知識を用いて構築した Amazon EKS Distro を皆さんと共有することを発表します。

EKS Distro は、Amazon EKS によってデプロイされたのと同じバージョンの Kubernetes のディストリビューションです。このディストリビューションを使用して、任意の場所に独自の Kubernetes クラスターを手動で作成できます。EKS Distro は、Amazon EKS によって使用されるオープンソース Kubernetes のインストール可能なビルドとコードを提供します。これには、依存関係や AWS が保守するパッチも含まれます。クラスターの作成と管理ツールを選択することで、Amazon Elastic Compute Cloud (EC2) の AWS、他のクラウド、およびオンプレミスのハードウェアで EKS Distro を作成できます。

EKS Distro には、アップストリームオープンソースの Kubernetes コンポーネントと、クラスターの作成に必要な設定データベース、ネットワーク、およびストレージコンポーネントなどのサードパーティーツールが含まれています。これらのコンポーネントには、Kubernetes コントロールプレーンコンポーネント (kube-controller-manager、etcd、および CoreDNS) と Kubernetes ワーカーノードコンポーネント (kubelet、CNI プラグイン、CSI Sidecar イメージ、Metrics Server、および AWS-IAM-authenticator) が含まれます。

クラスターの構築
EKS Distro リポジトリには、Kubernetes クラスターの構築と作成に必要なものがすべて揃っています。リポジトリには EKS Distro の raw ドキュメントが含まれており、https://distro.eks.amazonaws.com で構築および公開されています。

新しいクラスターを作成するには、ドキュメントのこのセクションに従います。このガイドでは、オープンソースツールである kOps を使用して、すべてのパーツを構築し、最終的には AWS のいくつかの EC2 インスタンスにクラスターをデプロイする方法について説明します。EKS Distro は kOps 以外の多くの他のツールで動作します。詳細については、ドキュメントのパートナーのセクションを参照してください。また、多くのパートナーが今日リリースしたブログでは、ツールを使用してデプロイする方法を説明しています。

ガイドでは、クラスターを構築する前に、いくつかのコンテナイメージを取得する必要があることが説明されています。EKS Distro Container リポジトリからそれらを取得したり、tarball としてダウンロードしたり、ゼロからビルドしたりできます。私はゼロからコンテナを構築し、ビルドガイドに従うことを選びます。1 時間後、20 個のコンテナを作成し、Amazon Elastic Container Registry にプッシュしました。

この手順は、ビルドステージとデプロイステージの両方で必要とされるいくつかの前提条件について詳述しています。私はガイドに従って、提案されたすべてのツールをインストールします。

次に、ガイドに従って、kops.sh スクリプトを EKS Distro リポジトリの開発フォルダに配置します。スクリプトの実行後、完全修飾ドメイン名 (FQDN) を入力するように求められます。newsblog.thebeebs.net と入力します。

このスクリプトでは、アカウントに S3 バケットを作成して kOps に必要なアーティファクトを格納するなど、いくつかの処理を行います。また、newsblog.thebeebs.net.yaml というファイルを作成します。このファイルを編集し、コンテナイメージ URL を Elastic Container Registry 内の自分のイメージをポイントするものに置き換えます。

引き続きガイドに従います。このガイドでは、次にクラスターを作成するためにいくつかの kOps コマンドを実行することが指示されています。これらのコマンドは、前の手順の出力である newsblog.thebeebs.net.yaml ファイルを使用します。

CLUSTER_NAME=newsblog.thebeebs.net
kops create -f ./$CLUSTER_NAME.yaml
kops create secret --name $CLUSTER_NAME sshpublickey admin -i ~/.ssh/id_rsa.pub
kops update cluster $CLUSTER_NAME --yes
kops validate cluster --wait 10m
cat << EOF > aws-iam-authenticator.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-iam-authenticator
  namespace: kube-system
  labels:
    k8s-app: aws-iam-authenticator
data:
  config.yaml: |
    clusterID: $CLUSTER_NAME
EOF

これらのコマンドの 1 つは、aws-iam-authenticator.yaml というファイルを作成します。このファイルを kubernetes クラスターに適用して、aws-iam-authenticator で正しく動作させます。

kubectl apply -f aws-iam-authenticator.yaml

これで、kubectl を使用してすべての名前空間を一覧表示することにより、Kubernetes クラスターが EKS Distro イメージを使用していることを確認できます。

kubectl get po --all-namespaces -o json | jq -r .items[].spec.containers[].image | sort

最後に、kOps を使用し、削除コマンドを発行して、クラスターを削除します。

kops delete -f ./newsblog.thebeebs.net.yaml --yes

更新
EKS Distro の新しいバージョンは、Amazon EKS へのリリース後にすぐにリリースされる予定です。ソースコード、オープンソースツール、および設定は再現可能なビルド用に提供されているため、EKS DistroAmazon EKS によってデプロイされているものと確実に一致します。

知っておくべきこと
EKS Distro は、Amazon EKS が使用しているものと同じバージョンの Kubernetes およびポイントリリースをサポートしています。EKS Distro は、オペレーティングシステムベンダーが Kubernetes との動作をテストして確認したのと同じ Kubernetes のアップストリームバージョンと依存関係を提供します。つまり、EKS Distro は、CentOS、Canonical Ubuntu、Red Hat Enterprise Linux、Suse などの一般的なオペレーティングシステムで動作するということです。

料金とサポート
EKS Distro はオープンソースプロジェクトであり、無料で配布されます。是非 GitHub で当社と協力して、より良いものとしましょう。たとえば、問題が見つかった場合は、それらを提出するか、プルリクエストを作成してください。当社ではベストエフォートベースで問題を解決します。パートナーは Amazon パートナーネットワークプログラムを通じてサポートを受け、パートナーを通じて EKS Distro を採用しているお客様は、それらのプロバイダーからサポートを受けることができます。

次は何が予定されていますか?
2021 年には、EKS Anywhere をリリースする予定です。EKS Anywhere では、オンプレミスで Kubernetes クラスターを作成および運用するためのインストール可能なソフトウェアパッケージと、クラスターライフサイクルサポート用の自動化ツールを提供します。これにより、運用クラスターのバックアップ、リカバリ、パッチ適用、およびアップグレードを、最小限の中断で一元的に実行できます。EKS AnywhereEKS Distro に基づいてクラスターを作成するため、Amazon EKS とのバージョン一貫性が保たれます。このバージョンとツールの一貫性により、サポートコストが削減され、オンプレミスおよび Amazon EKS のクラスターの管理に複数のツールを使用するという不要な労力が排除されます。

今すぐ利用可能
EKS Distro はすぐにダウンロードでき、GitHub からソースとビルドを入手できます。使用を開始するには、ドキュメントをチェックしてください。

よいデプロイを!

— Martin