Build 2021 でアナウンスされた、Build cloud-native applications that run anywhere により、Azure application service を Kubernetes 上で動作させることができるようになりました。
検証をするに際してどのようなドキュメントを確認すればよいのかをまとめておきたいと思います。(備忘録)
Build 2021 の Build consistent hybrid and multicloud applications with Azure Arc も実機でのデモがありますので、どのような機能かについては、こちらの動画も参考になるかと。
Contents
App Servcie on Arc
App Service on Arc
今回の本題の App Service on Arc を展開するためのドキュメントとなります。
- App Service, Functions, and Logic Apps on Azure Arc (Preview)
- Azure Arc 対応の Kubernetes クラスターを設定して、App Service、Functions、Logic Apps を実行します (プレビュー)
展開される Pod
App Service on Arc を展開するといくつかの Pod が指定した名前空間に展開されるのですが、どのような Pod が展開されるかについても情報が公開されています。
Azure Arc
App Service on Azure Arc は、Azure Arc、実際には、Azure Arc Enabled k8s と組み合わせて使用することになりますので、Azure Arc 自体も把握しておく必要があるかと思います。
Jumpstart として、様々な環境に Azure Arc / Azure Arc Enabled k8s を展開するためのチュートリアルが公開されていますので、この情報も参考になるのではないでしょうか。
Azure Arc Enabled Kubernetes
Azure Arc enabled Kubernetes
App Service を Kubernetes (k8s) 上に展開する機能となりますので、Arc Enanbled k8s についても把握しておく櫃長があります。
Arc Enabled k8s は Azure に k8s を接続するという形になり、接続するためのドキュメントが公開されています。
クラスター接続 (az connected k8s proxy によるプロキシ経由の kubectl)
接続した k8s に kubectl で接続を行う際に、az connectedk8s でローカルにプロキシを起動して接続するという方法を使用することもできます。この場合、127.0.0.1 で k8s に接続するためのプロキシを起動し、そのプロキシ経由で kubectl を実行するということができますので、ネットワークの構成によっては使用するケースがあるのかと。(kubeconfig が書き換わりますので、使用する際は config のバックアップを取っておいても良いかもしれません)
Azure Arc Enabled Kubernetes で使用される機能
Azure Arc enabled k8s Cluster Extension
App Service on k8s は Azure Arc Enabled k8s の拡張機能 (Extension) として導入を行うことができます。
この拡張機能については次のようなドキュメントが公開されています。
- Azure Arc 対応 Kubernetes のクラスター拡張機能
- セキュリティ系の拡張機能
- az k8s-extension
現在、公開されている拡張機能としては 現在使用可能な拡張機能 に記載されている次のようなものがあります。
- Azure Monitor (Azure Monitor Container Insights)
- Azure Defender for kubernetes
- Azure Arc enabled Data Services
- Azure App Service on Azure Arc
- Evend Grid on Kubernetes
- Azure API Management on Azure Arc
Azure Arc enabled Kubernetes エージェント
Azure と Arc enabled k8s の通信に関してはエージェントのドキュメントから確認ができます。
オンプレミスで実行する場合、次の「clusterconnect-agent」がポイントとなりそうです。
Public IP を持っている Kubernetes の環境であれば、clusterconnect-agent が無くても、apiserver に通信ができるようですが、Public IP を直接付与していない環境については、clusterconnect-agent 経由での通信が必要となるようです。
このコンポーネントはオプションコンポーネントとなっており、クラスターでカスタムの場所を有効にする に記載されている「az connectedk8s enable-features」で、「cluster-connect」を追加することで必要な Pod がデプロイされます。
customlocation (カスタムの場所)
カスタムの場所 (Custom Location) は Azure Arc enabled k8s と拡張機能を活用する際に重要なものとなります。カスタムの場所を作成することで「Azure ポータルからカスタムの場所を展開した k8s をリソースの展開場所として指定」することができるようになります。
自分が管理している k8s を Azure のリージョンとして指定できるようにするのがカスタムの場所の役割ではないでしょうか。
直接接続モード
Azure Arc enabled Data Services では、間接接続モードと直接接続モードの 2 種類が提供されており、「直接接続モード」を使用することで、Azure ポータルからの展開ができるようになります。
いくつかのドキュメントを確認した範囲では「カスタムの場所を使用して、Azure ポータルから直接展開を行う」ことができるタイプの拡張機能については「直接接続モード」相当になるのではないでしょうか。
カスタムの場所を作成する場合の通信要件については次のドキュメントを見ると良いのではないでしょうか。
- 接続モードと要件
- 直接接続モードの場合、方向が「お客様の環境 -> Azure -> お客様の環境」となっているものがあります。
- データ コントローラーのデプロイ – 直接接続モード (前提条件)
- Azure Arc データ コントローラーをデプロイする | 直接接続モード
オンプレミスの AKS on Azure Stack HCI や、VMware Tanzu に App Service on Arc を展開するための情報が今後増えるとうれしいですね。
Micrsoft Learn
Learn で AKS 上にに環境を構築する際のステップバイステップが公開されていますので、ここを起点にして確認をしてみても良いのではないでしょうか。
Azure Kubernetes Service on Azure Stack HCI
今回、カスタムの場所の作成の部分がうまくいかず、最後まで構築はできなかったのですが、Build 2021 で Azure Stack HCI on kubernetes が GA し、Windows Server を使用した Kubernetes 環境の構築がサポートされるようになりました。
Windows だけを触っていると、k8s の検証環境の作成をどうするか悩むことがあるのですが、この機能を使用すると簡単に k8s の環境を Windows 上に展開することができます。
- Azure Stack HCI の Azure Kubernetes Service のドキュメント
- Azure Stack HCI の Azure Kubernetes Service とは
- AksHci コマンドレット
検証用途であれば、Windows Server 2019 Datacenter Editoin を 1 台用意し、Admin Center でこのサーバーを管理下にすると、Kubernetes を展開することができますので、Windows Server 2019 + Admin Center で k8s の検証環境を作るというのも良いのではないでしょうか。
ロードバランサーや動的プロビジョニング可能な VHD のマウントによるストレージ追加が環境内に含まれていますので、いろいろと検証できると思います。
AKS on Azure Stack HCI は 60 日間は無償トライアルが可能です。
2021/7/1 からコストの適用が開始されますが、価格の考え方については Pricing for AKS on Azure Stack HCI で確認することができます。