🐨

「GitHub Copilot for Azure」を試してみました。

2024/08/24に公開

GitHub Copilot for Azureとは

今年の5月に開催された「Microsoft Build」で発表された、GitHub Copilotの拡張機能。
GitHub Copilot Chat上でAzureに関する質問もできるようになります。

https://www.itmedia.co.jp/news/articles/2405/23/news124.html


現在はプレビュー版として一部開発車に限定公開されており、申し込んでみたところ招待されました!

導入

招待を受けると限定公開の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