Amazon Web Services ブログ

Amazon EKS Anywhere — オンプレミスで Kubernetes クラスターの作成と管理が広く利用可能になりました

AWS re: Invent 2020 では、Amazon Elastic Container Service (Amazon ECS) Anywhere Amazon Elastic Kubernetes Service (Amazon EKS) の新しいデプロイオプションを顧客のデータセンター内で事前発表しました。

2021 年 9 月 8 日、Amazon EKS Anywhere が広く利用可能になったことをお知らせします。Amazon EKS のデプロイオプションで、2021 年 9 月 8 日から VMware vSphere を使用して Kubernetes クラスターをオンプレミスで簡単に作成し、運用できます。EKS Anywhere は、Kubernetes クラスターをオンプレミスで作成し、運用するためのインストール可能なソフトウェアパッケージと、クラスターのライフサイクルサポートのためのオートメーションツールを提供します。

EKS Anywhere は、Amazon EKS で使用される Kubernetes のオープンソースディストリビューションである Amazon EKS ディストリビューションの強みを活用して、一貫した AWS 管理エクスペリエンスをデータセンターにもたらします。

EKS Anywhere もオープンソースです。EKS ディストリビューションクラスターの作成、オペレーティング環境の構成、ソフトウェアの更新を行うために、独自の管理ツールを購入または構築する際の複雑さを軽減できます。EKS Anywhere を使用すると、クラスター管理の自動化、サポートコストの削減、Kubernetes クラスターの運用に複数のオープンソースまたはサードパーティーツールを使用する冗長な労力の排除が可能です。EKS Anywhere は AWS によって完全にサポートされています。さらに、EKS コンソールを利用して、どこからでも、実行されているすべての Kubernetes クラスターを表示できます。

Kubernetes クラスターには、いくつかのデプロイオプションが用意されています。

特徴 Amazon EKS アウトポストの EKS EKS Anywhere EKS ディストリビューション
ハードウェア AWS による管理 顧客による管理
デプロイタイプ Amazon EC2、AWS Fargate (サーバーレス) アウトポストの EC2 顧客のインフラストラクチャ
コントロールプレーン管理 AWS による管理 顧客による管理
コントロールプレーンの場所 AWS クラウド 顧客のオンプレミスまたはデータセンター
クラスターアップデート コントロールプレーンとデータプレーンのマネージドインプレースアップデートプロセス CLI(データプレーンの Flux サポートローリングアップデート、コントロールプレーンのマニュアルアップデート)
ネットワーキングとセキュリティ Amazon VPC コンテナネットワークインターフェイス (CNI)、その他の互換性のあるサードパーティー CNI プラグイン 繊毛 CNI サードパーティー CNI プラグイン
コンソールのサポート Amazon EKS コンソール EKS コネクターを使用した EKS コンソール セルフサービス
サポート AWS Support EKS Anywhere サポートサブスクリプション セルフサービス

EKS Anywhere は、顧客が EKS Anywhere のメリットを活用できるようにし、さらに他の機能を提供するため、さまざまなパートナーと連携します。これには、クラスターアップデートの Flux、GitOps の Flux コントローラー、eksctl (EKS でクラスターを作成し、管理するための簡単な CLI ツール)、ネットワーキングとセキュリティのための Cilium が含まれます。

また、他の領域で選択したツールと連携できる柔軟性も備えています。EKS Anywhere クラスターに連携を追加するには、推奨されるサードパーティーツールのリストを参照してください。

Amazon EKS Anywhere を始めましょう
EKS Anywhere の使用を開始するには、ローカルでの開発およびテストの目的でマシーンにブートストラップクラスターを作成します。現在、本番ワークロードの VMWare vSphere 環境でクラスターを作成できます。

eksct を使ってデスクトップマシーン上にクラスターを作りましょう。 Mac の homebrew で eksctleksctl-anywhere をインストールすることができます。必要に応じて、 kubectl など、EKS Anywhere クラスターに必要な追加のツールをインストールできます。Linux について詳しくは、EKS Anywhere のドキュメントにあるインストールガイドを参照してください。

$ brew install aws/tap/eks-anywhere
$ eksctl anywhere version
0.63.0

クラスター設定を生成し、クラスターを作成します。

$ CLUSTER_NAME=dev-cluster
$ eksctl anywhere generate clusterconfig $CLUSTER_NAME \
    --provider docker > $CLUSTER_NAME.yaml
$ eksctl anywhere create cluster -f $CLUSTER_NAME.yaml
[I] セットアップと検証の実行
[v] 検証に成功しました {「検証」:「Docker プロバイダーの設定は有効です」}
[I] 新しいブートストラップクラスターの作成
[I] ブートストラップクラスターへのクラスター API プロバイダーのインストール
[I] プロバイダー固有の設定
[I] 新しいワークロードクラスターの作成
[i] ワークロードクラスターへのネットワーキングのインストール
[I] ワークロードクラスターへのクラスター API プロバイダーのインストール
[I] クラスター管理のブートストラップからワークロードクラスターへの移行
[I] ワークロードクラスターへの EKS-A カスタムコンポーネント(CRD およびコントローラー)のインストール
[I] ワークロードクラスターへの EKS-A CRDs インスタンスの作成
[I] ワークロードクラスターへの AddonManager と GitOps ツールキットのインストール
[I] GitOps フィールドが指定されておらず、スキップされたブートストラップ Flux
[I] ブートストラップクラスターの削除
[V] クラスターが作成されました!

ワークロードクラスターが作成されると、KUBECONFIG ファイルが管理マシーンに保存され、そのワークロードクラスターの管理者権限が付与されます。このファイルを kubectl で使用して、ワークロードをセットアップし、デプロイできます。

$ export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig
$ kubectl get ns
NAME                                STATUS   AGE
capd-system                         アクティブ   21m
capi-kubeadm-bootstrap-system       アクティブ   21m
capi-kubeadm-control-plane-system   アクティブ   21m
capi-system                         アクティブ   21m
capi-webhook-system                 アクティブ   21m
cert-manager                        アクティブ   22m
default                             アクティブ   23m
eksa-system                         アクティブ   20m
kube-node-lease                     アクティブ   23m
kube-public                         アクティブ   23m
kube-system                         アクティブ   23m

クラスターが正常に動作していることを確認するための簡単なテストアプリケーションを作成できます。クラスターで実行されている新しいポッドをデプロイして表示し、次のコマンドを使用してデプロイポートをローカルマシーンに転送します。

$ kubectl apply -f "https://anywhere.eks.amazonaws.com/manifests/hello-eks-a.yaml"
$ kubectl get pods -l app=hello-eks-a
NAME                                     READY   STATUS    RESTARTS   AGE
hello-eks-a-745bfcd586-6zx6b   1/1     実行中   0          22m
$ kubectl port-forward deploy/hello-eks-a 8000:80
$ curl localhost:8000
⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

ご利用いただきありがとうございます

███████╗██╗  ██╗███████╗
██╔════╝██║ ██╔╝██╔════╝
█████╗  █████╔╝ ███████╗
██╔══╝  ██╔═██╗ ╚════██║
███████╗██║  ██╗███████║
╚══════╝╚═╝  ╚═╝╚══════╝

 █████╗ ███╗   ██╗██╗   ██╗██╗    ██╗██╗  ██╗███████╗██████╗ ███████╗
██╔══██╗████╗  ██║╚██╗ ██╔╝██║    ██║██║  ██║██╔════╝██╔══██╗██╔════╝
███████║██╔██╗ ██║ ╚████╔╝ ██║ █╗ ██║███████║█████╗  ██████╔╝█████╗  
██╔══██║██║╚██╗██║  ╚██╔╝  ██║███╗██║██╔══██║██╔══╝  ██╔══██╗██╔══╝  
██║  ██║██║ ╚████║   ██║   ╚███╔███╔╝██║  ██║███████╗██║  ██║███████╗
╚═╝  ╚═╝╚═╝  ╚═══╝   ╚═╝    ╚══╝╚══╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚══════╝

hello-eks-a pod hello-eks-a-c5b9bc9d8-qp6bg が正常にデプロイされました

詳細についてはご確認ください
https://anywhere.eks.amazonaws.com

⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

EKS Anywhere は、本番クラスターの VMWare vSphere 7.0 以降のバージョンもサポートしています。本番クラスターを作成するには、VMware vSphere デプロイメントの要件を参照し、EKS Anywhere のドキュメントの本番クラスターの作成を参照してください。これは、マシーン上にテストクラスターを作成するのとほぼ同じプロセスです。

本番環境グレードの EKS Anywhere クラスターには、高可用性とローリングアップグレードのために、少なくとも 3 つのコントロールプレーンノードと 3 つのワーカーノードを vSphere 上に含める必要があります。クラスターのスケーリング、更新、削除などの一般的なオペレーションタスクの詳細については、EKS Anywhere のクラスター管理ドキュメントを参照してください。

EKS コネクター – 公開プレビュー
EKS コネクターは、任意の Kubernetes クラスターを EKS コンソールに接続できる新機能です。EC2 の自己管理クラスター、オンプレミスで実行している EKS Anywhere クラスター、AWS の外部で実行されているその他の Kubernetes クラスターなど、任意の Kubernetes クラスターを EKS コンソールに接続できます。これにより、接続されているすべてのクラスターを一元的に表示することが容易になります。

EKS Anywhere クラスターを接続するには、 EKS コンソールクラスターセクションにアクセスし、クラスターの追加ドロップダウンメニューで 登録を選択します。

クラスターの名前を定義し、プロバイダーを選択します (適切なプロバイダーが見つからない場合は、その他を選択します)。

クラスターを登録すると、[クラスターの概要] ページにリダイレクトされます。YAML ファイルのダウンロードを選択して Kubernetes 設定ファイルを取得し、クラスターを EKS に接続するために必要なすべてのインフラストラクチャをデプロイします。

ダウンロードした eks-connector.yaml とロールバインディングeks-connector-binding.yaml ファイルをドキュメントの EKS コネクターから適用します。EKS コネクターはプロキシとして機能し、EKS コンソールリクエストをクラスターの Kubernetes API サーバーに転送するため、コネクターのサービスアカウントを EKS コネクターロールに関連付ける必要があります。それにより、AWS IAM エンティティを偽装するアクセス許可が付与されます。

$ kubectl apply -f eks-connector.yaml
$ kubectl apply -f eks-connector-binding.yaml

登録が完了すると、クラスターは ACTIVE 状態になります。

$ eks describe-cluster --name "my-first-registered-cluster" --region ${AWS_REGION}

予想される出力は次のとおりです。

{
    "cluster": {
    "name": "my-first-registered-cluster",
    "arn": "arn:aws:eks:{EKS-REGION}:{ACCOUNT-ID}:cluster/my-first-registered-cluster",
    "createdAt": 1627672425.765,
    "connectorConfig": {
    "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx",
    "activationExpiry": 1627676019.0,
    "provider": "OTHER",
     "roleArn": "arn:aws:iam::{ACCOUNT-ID}:role/eks-connector-agent"
    },
  "status": "ACTIVE", "tags": {}
  } 
}

EKS コネクターは、Amazon EKS が利用可能なすべての AWS リージョンで公開プレビューになりました。レイテンシーを最小限に抑えるために、クラスターの場所に最も近いリージョンを選択してください。詳細については、Amazon EKS ユーザーガイドの EKS コネクターを参照してください。

留意点
EKS Anywhere について、留意することがいくつかあります。

接続性: 接続オプションには、完全に接続、部分的に切断、完全に切断の 3 つがあります。完全に接続と部分的に切断された接続の場合、EKS コネクターを介して EKS Anywhere クラスターを EKS コンソールに接続し、クラスター設定とワークロードのステータスを確認できます。AWS のサービスは、AWS Controllers for Kubernetes (ACK) を通して活用できます。AWS システム管理エージェントを使用して EKS Anywhere インフラストラクチャリソースを接続し、SSM コンソールを使用してそれらを表示できます。

セキュリティモデル:AWS は責任共有モデルに従います。AWS はクラウドセキュリティを担当し、顧客はクラウドセキュリティに責任を負います。ただし、EKS Anywhere はオープンソースのツールであり、責任の分散は Amazon EKS のような管理クラウドサービスのものとは異なります。AWS には、安全なツールを構築し、提供する責任があります。このツールは、最初にセキュアな Kubernetes クラスターをプロビジョンします。詳細については、EKS Anywhere ドキュメントのセキュリティのベストプラクティスを参照してください。

AWS Support: AWS Enterprise Support は、 Amazon EKS Anywhere サポートサブスクリプションを購入するための前提条件です。EKS Anywhere クラスターのビジネスサポートをご希望の場合は、テクニカルアカウントマネージャー (TAM) に詳細をお問い合わせください。また、EKS Anywhere はオープンソースコミュニティによってサポートされています。問題がある場合は、問題を提起すると、誰かができるだけ早く答えてくれます。

今すぐ利用可能
Amazon EKS Anywhere は、オンプレミスインフラストラクチャで EKS 機能を活用し、パートナーとの連携、管理アドオン、キュレートオープンソースツールで導入を加速できるようになりました。

ライブデモや Q&A で詳しく知るには、9月13日のソファーからのコンテナにご参加ください。クラスターを作成し、スケーリング、クラスタバージョンのアップグレード、GitOps 管理の管理ワークフローを示す完全なデモを確認できます。

通常の AWS Support 担当者、Amazon EKS の AWS フォーラム、または Github のコンテナーロードマップのいずれかを通してフィードバックをお寄せください。

Channy

原文はこちらです。