「GitHub Copilot for Azure」を試してみました。
GitHub Copilot for Azureとは
今年の5月に開催された「Microsoft Build」で発表された、GitHub Copilotの拡張機能。
GitHub Copilot Chat上でAzureに関する質問もできるようになります。
現在はプレビュー版として一部開発車に限定公開されており、申し込んでみたところ招待されました!
導入
招待を受けると限定公開のGitHubリポジトリに招待されますので、そこに記載されてる通りの手順で進めていきます。
リポジトリ内にある.vsixファイルをローカルにダウンロードして、VScode上でインストールします。
すると、Copilot Chat上のメンションで「azure」を選択できるようになりました。
Azureアカウントの紐付け
VS CodeではAzureアカウントと連携することができ、リソースの作成やアプリのデプロイなどをVS Code上からクイックに行うことができます。
「@azure」メンションをつけることで、連携しているAzure情報の回答もしてくれるようなので、設定しておきます。
「Command + Shift + p」でモーダルを開いて、「基本設定:ユーザー設定を開く(Json)」を選択。
開かれたsettings.jsonファイル内に以下のプロパティを追加
- @azure.argTenant: "<Azure ディレクトリID>"
- azure.tenant: "<Azure ディレクトリID>"
検証1. Azureに関する知識の質問
ACA(Azure Container Applications)とAKS(Azure Kubenertes Service)の違いについて質問してみました。
何もメンションつけない場合
あれ、こちらも普通に返答してくれました...
ソースコード生成以外はあまり答えてくれなかった印象だったのと、ACAとかAKSをAzureのサービスとして認識してくれてます。
検証前に「@azure」メンションを使った質問をしてたので、もしかしたらチャット履歴からAzureのことだと認識してくれたのかな?
azureメンションをつけないと答えられないわけではないようです。
ACA(Azure Container Apps)とAKS(Azure Kubernetes Service)は、どちらもAzure上でコンテナを管理・実行するためのサービスですが、用途や機能にいくつかの違いがあります。
ACA(Azure Container Apps)
サーバーレスコンテナ: インフラストラクチャの管理を必要とせず、コンテナを実行できます。
スケーリング: トラフィックに応じて自動的にスケールイン・スケールアウトします。
簡単なデプロイ: マイクロサービスやイベント駆動型アプリケーションのデプロイが簡単です。
統合: Dapr(Distributed Application Runtime)やKEDA(Kubernetes-based Event Driven Autoscaling)と統合されています。AKS(Azure Kubernetes Service)
フルマネージドKubernetes: Kubernetesクラスターの管理をAzureが行いますが、ユーザーはクラスターの設定や管理に関与します。
柔軟性: カスタマイズ性が高く、複雑なアプリケーションやワークロードに対応できます。
エコシステム: Kubernetesのエコシステム全体を利用でき、さまざまなツールやプラグインと統合可能です。
スケーリング: 手動または自動でノードやポッドのスケーリングが可能です。違いのまとめ
管理の手間: ACAはサーバーレスで管理の手間が少ないのに対し、AKSはKubernetesの管理が必要です。
スケーリング: ACAは自動スケーリングがデフォルトで組み込まれていますが、AKSはより細かいスケーリング設定が可能です。
用途: ACAはシンプルなマイクロサービスやイベント駆動型アプリケーションに適しており、AKSは複雑なワークロードやカスタマイズが必要なアプリケーションに適しています。これらの違いを理解し、プロジェクトの要件に応じて適切なサービスを選択することが重要です。
@azureメンションをつけた場合
こちらは普通に問題なく返答してくれました。
ACA (Azure Container Applications) と AKS (Azure Kubernetes Service) は、Azure 上でコンテナ化されたアプリケーションを実行するためのサービスですが、以下にそれぞれの違いをまとめました。
- ACA:
Azure Container Instances (ACI) を使用してコンテナを実行するための環境を提供します。
ACI は、個々のコンテナを簡単にデプロイ・実行・スケーリングできる方法を提供します。
ACI は、短期間の実行や一時的な作業負荷に最適です。
AKS に比べて簡単にセットアップできますが、より制御力は制限されます。- AKS:
Kubernetes (K8s) クラスター上でコンテナを実行するための環境を提供します。
大規模で複雑なアプリケーションのデプロイや管理に適しています。
スケーラビリティや高可用性、監視、オートスケーリングなどの機能を提供します。
高度なカスタマイズや制御が可能であり、より複雑なアプリケーションの要件に対応できます。ACA は簡易的なコンテナ実行環境を提供し、個々のコンテナのデプロイを簡単に行いたい場合に適しています。一方、AKS は大規模なコンテナ化されたアプリケーションのデプロイや管理に適しており、より高度な制御やカスタマイズが可能です。選択するサービスは、アプリケーションの要件や規模によって異なります。
検証2. VS CodeにサインインしているAzureアカウントに関する質問
次は連携しているAzure環境に関する質問をしてみます。
リソースグループ一覧を教えて欲しいとお願いしてみました。
メンションをつけない場合
リソースグループ一覧を確認できるACLコマンドを出力してくれました。
リソースグループの一覧を表示するには、Azure CLIを使用するのが一般的です。以下のコマンドをターミナルで実行してください。
az group list --output table
このコマンドは、Azureアカウントに関連付けられているすべてのリソースグループをテーブル形式で表示します。
@azureメンションをつけた場合
こちらはリソースグループ一覧を出してくれました。
セキュリティ的に隠していますが、出力としては
<Resource Group Name>(場所:<Region Name>, サブスクリプションID:<Subscription ID>)
として出してくれています。
続いて特定のApp ServiceリソースにIP制限がかかっているか聞いてみました。
...しかし、IP制限がかかってるかに関しては答えられないようです。
検証3. Terraform(IaC)のコードを生成できるか
次に紐づいているAzure環境のTerraformコードを生成できるか質問してみます。
コード生成してくれました。
リソースグループ内に入っているリソース全てのコードを出力してくれましたし、中身も合ってそうです。
所感
Azureに関する質問だけなく、連携しているAzureアカウント内のことについても質問できるのは便利でした。
特にTerraformのコードを生成してくれるのは今後需要高いだろうなと思いました。
今までは、Azure Portal上の情報と睨めっこしながらコードに起こすのが面倒だったのですが、Copilot Chatの方で書いてくれるのであれば管理もしやすそうです。
しかし、リソースの接続文字列とかキーみたいな機密情報は取得ができませんでした。
その他にも環境変数とかネットワーク設定情報も取得ができないです。
でもその代わりACLでのコマンドは教えてくれます。
今後取得できるようになるのかな??
Discussion