LoginSignup
1
0

More than 1 year has passed since last update.

【Azure】Amazon EKS をジャンプスタートを使って Azure Arc に追加してみた

Posted at

はじめに

 こんにちは@sk_130と申します。

 本記事は、クラウドサービスのAzureにおけるAzureArcを触っていきます。

執筆に際して以下の記事を参考にしています。感謝です。
Amazon EKS クラスターを Azure Arc に追加してみた

Azure Arc とは

オンプレミスやパブリッククラウド(GCPやAWSなど)とのハイブリッドクラウドを実現するサービスで
AzureArc上で管理されたKubernetes環境(EKS, GKEなど)へAzureの一部サービスをデプロイすることが可能です。

つまり別クラウドサービスやオンプレのリソース管理やOS定期更新などのコマンド実行など
統合管理できるのがメリットです。AWSでこの手のサービスがないので、Azureが差別化できるサービスでもあります。
ちなみに、GCPだと似たようなサービスでAnthosというものがあります

簡単な操作方法、ハンズオンもここに載っています。気になる方は触ってみてください。
ただし、ブログとかではないので躓く可能性も高いです。

Azure Arc とAWS EKSの連携

EKSとはAWSのKubernetesサービスになります

AWSのEKSで作ったクラスタをAzure Arcで管理します。
うまくいくとこんな感じになります。
AzureArc接続_EKS.PNG

正攻法でコンソールからポチポチ構築する場合は以下の記事が参考になると思います。
Amazon EKS クラスターを Azure Arc に追加してみた

今回はAzureが提供しているジャンプスタートを使って構築してみます

Azure Arc ジャンプスタートとは

Azure Arc Jumpstartプロジェクトは、「ゼロからヒーロー」のエクスペリエンスを提供するように設計されているため、AzureArcの操作をすぐに開始できます。

ジャンプスタートは、可能な限り多くの自動化、詳細なスクリーンショットとコードサンプル、およびAzure Arcプラットフォームの使用を開始する際の豊富で包括的なエクスペリエンスを組み込んだ、独立したAzureArcシナリオのステップバイステップガイドを提供します。

私たちの目標は、稼働中のAzure Arc環境をすぐにスピンアップして、インフラストラクチャがオンプレミスまたはクラウドのどこにあるかに関係なく、プラットフォームのコアバリューに集中できるようにすることです。
(以下英語ページをGoogle先生で翻訳したので若干読みずらいです)

ざっくりいうと、Terraformの資材を使って、EKSの構築から簡単にできるものになっています。
Terraformの概要は以下参照

早速やってみる

以下の公式サイトに従って、作業開始
今回はAzureにVMサーバ(Ubuntu)を用意して、そこに環境を構築する流れとしています。

まず、事前準備から

公式サイトに従って、以下の準備を実施

ざっくり以下の作業を実施しました。
上記HPにリンクが貼ってあるのでそれに従うか、ググればインストール方法が出てきます。

Azureサービスプリンシパル(SP)を作成のところは、本来用意した方がいいものの
なぜかアカウントの都合かうまくいかず、az loginして実行しました。

・Azure ArcJumpstartリポジトリのクローンを作成(git clone https://github.com/microsoft/azure_arc.git)

・AWSCLIをインストールして設定

・wgetパッケージをインストール(eksモジュールに必要)

・AWS IAMAuthenticatorをインストール

・AzureCLIをインストールするかバージョン2.25.0以降に更新(Azureって推奨AMIにCLIはいってないんだな。。)

・無料のアマゾンウェブサービスのアカウントを作成します(実際には有償アカウントを使った)

・Helm3をインストール

・Terraformをインストール

続いて、以下のコマンド入力を実施して、下準備

AzureArc対応のKubernetesの2つのリソースプロバイダーでサブスクリプションを有効にします

登録は非同期プロセスであり、登録には約10分かかる場合があります

az provider register --namespace Microsoft.Kubernetes
az provider register --namespace Microsoft.KubernetesConfiguration
az provider register --namespace Microsoft.ExtendedLocation
Azure Arc for KubernetesCLI拡張接続k8sおよびk8sをインストールします
az extension add --name connectedk8s
az extension add --name k8s-configuration
AWSユーザーIAMキーを作成する

詳細は上記公式サイトに記載。払い出したあとVMサーバにaws configureすると後で詰まらなくて済む(認証情報の登録)
初めて実行する際は空になっているので、作成したIAMキーをもとに手打ちする

aws configure
AWS Access Key ID [****************73PJ]:
AWS Secret Access Key [****************IuRh]: 
Default region name [ap-northeast-1]: 
Default output format [json]: 

AWSアクセスキーとAWSシークレットキーを表す環境変数であるAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを介してクレデンシャルを設定します。

後述するTerraformで使われる環境変数になります。以下の""を適宜変更して実行
ここで入力しなくてもTerraform実行時に聞かれるので、入れなくても動作するみたいです。
(リージョンは適宜変更のこと)

export TF_VAR_AWS_ACCESS_KEY_ID="an access key"
export TF_VAR_AWS_SECRET_ACCESS_KEY="a secret key"
export TF_VAR_AWS_DEFAULT_REGION="us-west-2"

Terraformの実行

Terraformとは?という点はこの記事では記述しませんが、.tfファイルに構築したいEKSの設計パラメータを入れておくことで
コマンド実行でサーバやクラスタが立ち上がるものです。今回はデフォルトで入っているものを使いますが
適宜構築したいサーバスペックに変えたり、持っているTerraformのファイルに置き換えればよしなに動いてくれると思います。

EKSテラフォームバイナリがあるフォルダに移動します。
cd azure_arc/azure_arc_k8s_jumpstart/eks/terraform
#公式にはcd azure_arc_k8s_jumpstart/eks/terraformと記載
Terraformを初期化するコマンドを実行し、作業を追跡するための状態ファイルを作成し、その後実行
terraform init
terraform apply --auto-approve

この作業でAWS側にクラスタが構築されます。
上記でも記載しましたが、EKSの構成(サーバ台数や設定、リージョンやサーバの名前)を変えたい場合はTerraformのファイルをいじればいいです。

各種設定を実施

公式に記載通りに実行

mkdir ~/.kube/
terraform output -raw kubeconfig > ~/.kube/config
terraform output -raw config_map_aws_auth > configmap.yml
kubectl apply -f configmap.yml
kubectl get nodes -o wide

詳細割愛しますが、これでEKSのNodeの用意が完了です。
AWSのコンソールでNodeが立ち上がっていることを確認しました。

AzureArcに接続する

最後の作業になります。
実行中のEKSクラスターができたので、次の方法でEKSクラスターをAzureArcに接続します。

この時サービスプリンシパルのログインは割愛しています。az loginを実行しました。

Azure側にリソースグループの用意

必要に応じて以下を実行する。--name以下は任意の名前やリージョンに変えていいです

az group create --name arceksdemo -l EastUS -o table
AzureCLIを使用してArcバイナリをデプロイします

任意のリソースグループ名、名前を付けて構いません。

az connectedk8s connect --name arceksdemo --resource-group arceksdemo --location 'eastus' --tags 'Project=jumpstart_azure_arc_k8s'

完了すると、EKSクラスターが新しいリソースグループ内の新しいAzureArc対応のKubernetesリソースとして接続され
最初に示した接続ができます。

はまったところ

kubectlが通らない

AWS側の認証の問題なようでした。aws conffigureでごり押しました。

azureuser@test-eks-arc:~$ kubectl apply -f configmap.yml
error: error loading config file "/home/azureuser/.kube/config": yaml: control characters
azureuser@test-eks-arc:~$ sudo kubectl apply -f configmap.yml
The connection to the server localhost:8080 was refused - did you specify the right host

ちゃんと理解するなら、以下を読むのがいいかなと思いました
Kubernetesにて複数人開発する際にぶつかったRBACの壁

終わりに

これでAzureArcにEKSを登録できたものの、各種機能が使えるようになるかというとそういうわけでじゃなく
ここから拡張機能の設定などをうることで、kubernetes構成情報やリソース使量料をAzure側から見れるようになります。
その作業の投稿はまたいつか・・

AzureArc接続_EKS2.PNG

AzureArc接続_EKS3.PNG

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0