SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Azure Arcに接続してみよう - Kubernetes編

パブリッククラウド
2023.07.10

みなさんこんにちは。 以前にこちらのブログ記事でAzure Arcの概要をご紹介いたしました。

まずはAzure Arcに接続してみようということで、様々なリソースの接続方法をご紹介しています。 今回はKubernetesクラスターAzure Arcに接続してみます(Azure Arc対応Kubernetes)
az_arc-infra-k8s.pngAzureの外にあるKubernetesクラスターをAzure Arcに接続することで、Azureを介した管理ができるようになります。 KubernetesAzure Arcに接続した後に扱える機能の詳細についてはこちらをご参照ください。

検証環境

Azure Arcに接続できるのはCloud Native Computing Foundation (CNCF)に認定されたKubernetesです。 Microsoft社により検証されたディストリビューションはこちらで確認することが可能です。 また、Azure Arc対応Kubernetesの要件については以下にまとめられています。
システム要件
ネットワーク要件

今回はオンプレミス環境に存在するKubernetesクラスターを利用します。 Kubernetesクラスターはkubeadm を利用して3ノードで構成しており、各ノードのOSUbuntu 20.04 LTSです。
az_arc-k8s-env.pngaz_arc-k8s-env-nodes.png操作環境としてKubernetesクラスターとはまた別にUbuntuの仮想マシン(以下、「操作用マシン」と呼びます)をデプロイしています。 こちらはKubernetesクラスターならびにインターネットにアクセス可能です。 また、kubectlならびにAzure CLIを利用できるようにしてあります。
az_arc-k8s-env-bastion.pngAzure側にはリソースプロバイダーとしてMicrosoft.KubernetesMicrosoft.KubernetesConfigurationMicrosoft.ExtendedLocationを登録済です。(Azure Arc対応Kubernetesのためのリソースプロバイダー登録についてはこちらをご参照ください。)
az_arc-k8s-env-rp.png
 

KubernetesクラスターAzure Arcに接続

今回はAzure Portalを利用してKubernetesクラスターをAzure Arcに接続します。(Azure Portal を利用するとAzure Arcに接続するためのスクリプトを入手することができます。)
※ CLIを利用して接続する手順についてはMicrosoft Learnのクイックスタートをご参照ください。

Azure CLIへの拡張機能インストール

操作用マシンで以下のコマンドを実行し、Azure CLI拡張機能をインストールします。 これによりaz connectedk8sコマンドを実行できるようになります。(本コマンドの詳細についてはこちらをご参照ください。)

az extension add --name connectedk8s

az_arc-k8s-1-1.png

Azure Arcへの接続

Azure PortalでAzure Arcの「インフラストラクチャ」配下の「Kubernetesクラスター」を開き「追加」をクリックします。
az_arc-k8s-2-1.png

接続のための要件が表示されます。 Kubernetesバージョン1.13以降が必要であることなど記載されています。「次へ」をクリックします。
az_arc-k8s-2-3.pngAzure ArcKubernetesクラスターを追加」をクリックします。
az_arc-k8s-2-2.pngサブスクリプション、リソースグループ、クラスター名、地域、接続方法を指定し「次へ」をクリックします。 今回はリソースグループ「arc-rg」を利用し、クラスター名は「arc-kubernetes」とします。 今回はプロキシ、VPNAzure ExpressRouteがない環境ですのでKubernetesクラスターからAzure Arcのパブリックエンドポイントに接続します。
az_arc-k8s-2-4.pngタグの設定画面が表示されます。 Azure Arc対応サーバーの場合と同様に「物理的な場所タグ」としてプリセットでDatacenter / City / SiteOrDistrict / CountryOrRegion という名称のタグが存在しています。 必要に応じて値を入力し「次へ」をクリックします。
az_arc-k8s-2-5.pngスクリプトが表示されますので、こちらを操作用マシンの任意の場所に保存します。 今回はBashのスクリプトを利用します。 「2. Open the Azure CLI and run the script」にスクリプトの用法や内容が記載されています。
az_arc-k8s-2-6.pngスクリプトを「CreateConnectedClusterScript.sh」という名称で保存しましたので、こちらを実行します。 実行すると認証のためURLとコードが表示されます。
az_arc-k8s-2-7.png表示されたURLWebブラウザでアクセスします。(Webブラウザを開くのは操作用マシンとは異なるホストでも構いません。) コードを入力して「次へ」をクリックします。
az_arc-k8s-2-8.pngサインインします。(Azureアカウントに必要なロールについてはこちらをご参照ください。)
az_arc-k8s-2-9-1.png
az_arc-k8s-2-9-2.png認証が完了したらWebブラウザを閉じて構いません。
az_arc-k8s-2-10.pngスクリプトの実行が続行されますので、完了するまで待機します。 以下は完了時の出力です。
az_arc-k8s-2-12.pngAzure Portalには接続したKubernetesクラスターが以下のように表示されています。 Azure Portalでスクリプト作成時に「クラスター名」として指定した文字列がリソース名になっています。
az_arc-k8s-2-13.png 

Azure Arc接続後の状態を確認

KubernetesクラスターをAzure Arcに接続するとAzure Arcエージェント(Azure Arc 対応 Kubernetesエージェント)Namespaceazure-arc」にデプロイされます。(本エージェントの詳細についてはこちらをご参照ください。) Namespace「azure-arc」内のリソースは以下のようになっています。
az_arc-k8s-3-2.png 

Azure Arc対応KubernetesのリソースをAzure Portalで扱う

Azure Arc対応Kubernetesには「Kubernetes resources (preview)」というメニューがあります。 以下はAzure Portalで一例として「Kubernetes resources (preview)」の「Namespaces」をKubernetesクラスター接続後に開いたものです。 「サービスアカウント ベアラートークン」を入力していないためKubernetesクラスター上のNamespaceをはじめとする各種リソースが表示されない状態になっています。
az_arc-k8s-4-1.png 

サービスアカウント ベアラートークンの作成と登録

リソースをAzure Poral上で扱うために、サービスアカウント ベアラートークンを作成して登録します。 今回はこちらに記載の手順を参考に、下図のようなリソースを作成し、トークンを取得します。
az_arc-k8s-4-2.png操作用マシンで以下のコマンドを実行しServiceAccountを作成します。

kubectl create serviceaccount arcdemo-user -n default

az_arc-k8s-4-3.pngClusterRoleBindingを作成し、ServiceAccountにアクセス許可を付与します。 今回はClusterRole「cluster-admin」を付与しています。
az_arc-k8s-4-4.pngさらにSecret (service-account-token)を作成します。

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: arcdemo-user-secret
  annotations:
    kubernetes.io/service-account.name: arcdemo-user
type: kubernetes.io/service-account-token
EOF

az_arc-k8s-4-5.png

トークンを確認します。

TOKEN=$(kubectl get secret arcdemo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
echo $TOKEN

az_arc-k8s-4-6.png表示されたトークンをAzure Portalで登録します。トークンを入力し「サインイン」をクリックします。
az_arc-k8s-4-7.png

Azure PortalでKubernetesリソースを扱う

サービスアカウント ベアラートークンを登録したことによりNamespaceが表示されました。
az_arc-k8s-4-8-1.png

Namespaceを閲覧できるようになったと同時に、Workloads / Services and ingresses / Storage / 構成も閲覧できるようになります。(以下はWorkloadsの画面です。)
az_arc-k8s-4-8-2.png新たなリソースを作成することも可能です。 「追加」をクリックしてマニフェストを入力し、「追加」をクリックします。
az_arc-k8s-4-9.pngaz_arc-k8s-4-10.pngaz_arc-k8s-4-11.pngまた、Webアプリケーションをデプロイして簡易的に動作確認することも可能です。 「YAMLで追加」画面で「クイックスタート アプリケーションをデプロイして起動し、実行します。」をクリックします。
az_arc-k8s-4-12.png「基本Webアプリケーションの作成」をクリックします。
az_arc-k8s-4-13.png「次へ」をクリックします。
az_arc-k8s-4-14.pngデプロイされるリソースのマニフェストが表示されます。 内容を確認し「デプロイする」をクリックします。
az_arc-k8s-4-15.png

リソースがデプロイされます。
az_arc-k8s-4-16.pngaz_arc-k8s-4-17.png

WebブラウザでServiceazure-vote-front」の外部IPアドレスにアクセスするとアプリケーション(投票アプリ)を利用することができます。
az_arc-k8s-4-18.png 

まとめ

本ブログ記事ではKubernetesクラスターをAzure Arcに接続する手順についてご紹介いたしました。 さらにAzure PortalからKubernetesクラスター上のリソースを扱えるよう、サービスアカウント ベアラートークンを登録する方法についてもご紹介しました。

本ブログ記事ではご紹介しませんでしたが、Azure Arc対応Kubernetesでは拡張機能によりAzure MonitorAzureポリシー、Microsoft Defenderなどの機能を利用したり、GitOps (Flux)による構成管理をデプロイするといったことが可能です。 利用できる拡張機能、各拡張機能でサポートされるディストリビューション等についてはこちらをご参照ください。

 


SB C&SAzureを取り扱われているパートナー企業様へ様々なご支援のメニューを用意しております。 メニューの詳細やAzureに関するご相談等につきましては以下の「Azure相談センター」をご確認ください。

Azure相談センター
https://licensecounter.jp/azure/


※ 本ブログは弊社にて把握、確認された内容を基に作成したものであり、製品の動作や仕様について担保・保証するものではありません。サービスや製品の動作、仕様等に関しては、予告なく変更される場合があります。

Microsoft Azureに関する記事一覧はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
中原 佳澄