クイック スタート:Kubernetes 上でのチーム開発 - Azure Dev SpacesQuickstart: Team development on Kubernetes - Azure Dev Spaces

このガイドでは、以下の方法について説明します。In this guide, you will learn how to:

  • Azure のマネージド Kubernetes クラスターで Azure Dev Spaces をセットアップする。Set up Azure Dev Spaces on a managed Kubernetes cluster in Azure.
  • 複数のマイクロサービスを伴う大規模アプリケーションを開発空間にデプロイする。Deploy a large application with multiple microservices to a dev space.
  • 完全なアプリケーションのコンテキスト内の分離開発空間で単一のマイクロサービスをテストする。Test a single microservice in an isolated dev space within the context of the full application.

Azure Dev Spaces チーム開発

前提条件Prerequisites

Azure Kubernetes Service クラスターを作成するCreate an Azure Kubernetes Service cluster

サポートされているリージョンで AKS クラスターを作成する必要があります。You must create an AKS cluster in a supported region. 下記のコマンドを使用すると、MyResourceGroup というリソース グループと MyAKS という AKS クラスターが作成されます。The below commands create a resource group called MyResourceGroup and an AKS cluster called MyAKS.

az group create --name MyResourceGroup --location eastus
az aks create -g MyResourceGroup -n MyAKS --location eastus --disable-rbac --generate-ssh-keys

AKS クラスターで Azure Dev Spaces を有効にするEnable Azure Dev Spaces on your AKS cluster

use-dev-spaces コマンドを使用して AKS クラスターで Dev Spaces を有効にし、プロンプトに従います。Use the use-dev-spaces command to enable Dev Spaces on your AKS cluster and follow the prompts. 下記のコマンドを使用すると、MyResourceGroup グループ内の MyAKS クラスターで Dev Spaces が有効になり、dev という開発空間が作成されます。The below command enables Dev Spaces on the MyAKS cluster in the MyResourceGroup group and creates a dev space called dev.

注意

この use-dev-spaces コマンドでは、Azure Dev Spaces CLI がまだインストールされていない場合にはこれもインストールされます。The use-dev-spaces command will also install the Azure Dev Spaces CLI if its not already installed. Azure Dev Spaces CLI を Azure Cloud Shell にインストールすることはできません。You cannot install the Azure Dev Spaces CLI in the Azure Cloud Shell.

az aks use-dev-spaces -g MyResourceGroup -n MyAKS --space dev --yes

サンプル アプリケーション コードを取得するGet sample application code

この記事では、Azure Dev Spaces 自転車シェア サンプル アプリケーションを使用して、Azure Dev Spaces の使い方のデモを行います。In this article, you use the Azure Dev Spaces Bike Sharing sample application to demonstrate using Azure Dev Spaces.

GitHub からアプリケーションを複製して、そのディレクトリに移動します。Clone the application from GitHub and navigate into its directory:

git clone https://github.com/Azure/dev-spaces
cd dev-spaces/samples/BikeSharingApp/

dev の HostSuffix を取得するRetrieve the HostSuffix for dev

azds show-context コマンドを使用して dev の HostSuffix を表示します。Use the azds show-context command to show the HostSuffix for dev.

$ azds show-context

Name                ResourceGroup     DevSpace  HostSuffix
------------------  ----------------  --------  -----------------------
MyAKS               MyResourceGroup   dev       fedcab0987.eus.azds.io

HostSuffix で Helm Chart を更新するUpdate the Helm chart with your HostSuffix

charts/values.yaml を開き、<REPLACE_ME_WITH_HOST_SUFFIX> のすべてのインスタンスを以前に取得した HostSuffix 値に置き換えます。Open charts/values.yaml and replace all instances of <REPLACE_ME_WITH_HOST_SUFFIX> with the HostSuffix value you retrieved earlier. 変更を保存し、ファイルを閉じます。Save your changes and close the file.

Kubernetes でサンプル アプリケーションを実行するRun the sample application in Kubernetes

Kubernetes でサンプル アプリケーションを実行するためのコマンドは、既存のプロセスの一部であり、Azure Dev Spaces ツールへの依存関係はありません。The commands for running the sample application on Kubernetes are part of an existing process and have no dependency on Azure Dev Spaces tooling. この場合、Helm が、このサンプル アプリケーションを実行するために使用されるツールですが、クラスター内の名前空間でアプリケーション全体を実行するために他のツールを使用することも可能です。In this case, Helm is the tooling used to run this sample application but other tooling could be used to run your entire application in a namespace within a cluster. Helm コマンドは、以前に作成した dev という開発空間を対象としていますが、この開発空間は Kubernetes 名前空間でもあります。The Helm commands are targeting the dev space named dev you created earlier, but this dev space is also a Kubernetes namespace. その結果、開発空間は、他の名前空間と同様に他のツールの対象になることがあります。As a result, dev spaces can be targeted by other tooling the same as other namespaces.

デプロイに使用したツールとは無関係に、アプリケーションがクラスターで実行した後でチーム開発に Azure Dev Spaces を使用できます。You can use Azure Dev Spaces for team development after an application is running in a cluster regardless of the tooling used to deploy it.

helm init および helm install コマンドを使用して、クラスター上でサンプル アプリケーションをセットアップしインストールします。Use the helm init and helm install commands to set up and install the sample application on your cluster.

cd charts/
helm init --wait
helm install -n bikesharing . --dep-up --namespace dev --atomic 

注意

RBAC が有効になっているクラスターを使用している場合は、必ず Tiller のサービス アカウントを構成してください。If you are using an RBAC-enabled cluster, be sure to configure a service account for Tiller. そうしなければ、helm コマンドは失敗します。Otherwise, helm commands will fail.

helm install コマンドは、完了までに数分かかる場合があります。The helm install command may take several minutes to complete. コマンドの出力には、完了時にコマンドによってクラスターにデプロイされたすべてのサービスのステータスが表示されます。The output of the command shows the status of all the services it deployed to the cluster when completed:

$ cd charts/
$ helm init --wait
...
Happy Helming!

$ helm install -n bikesharing . --dep-up --namespace dev --atomic

Hang tight while we grab the latest from your chart repositories...
...
NAME               READY  UP-TO-DATE  AVAILABLE  AGE
bikes              1/1    1           1          4m32s
bikesharingweb     1/1    1           1          4m32s
billing            1/1    1           1          4m32s
gateway            1/1    1           1          4m32s
reservation        1/1    1           1          4m32s
reservationengine  1/1    1           1          4m32s
users              1/1    1           1          4m32s

サンプル アプリケーションをクラスターにインストールした後で、クラスターで Dev Spaces を有効にして以来、azds list-uris コマンドを使用して、現在選択されている dev 内のサンプル アプリケーションの URL を表示します。After the sample application is installed on your cluster and since you have Dev Spaces enabled on your cluster, use the azds list-uris command to display the URLs for the sample application in dev that is currently selected.

$ azds list-uris
Uri                                                 Status
--------------------------------------------------  ---------
http://dev.bikesharingweb.fedcab0987.eus.azds.io/  Available
http://dev.gateway.fedcab0987.eus.azds.io/         Available

azds list-uris コマンドからパブリック URL を開いて、bikesharingweb サービスに移動します。Navigate to the bikesharingweb service by opening the public URL from the azds list-uris command. 上記の例では、bikesharingweb サービスのパブリック URL は http://dev.bikesharingweb.fedcab0987.eus.azds.io/ です。In the above example, the public URL for the bikesharingweb service is http://dev.bikesharingweb.fedcab0987.eus.azds.io/. ユーザーとして Aurelia Briggs (顧客) を選択します。Select Aurelia Briggs (customer) as the user. 最上部に「ようこそ Aurelia Briggs | サインアウト」のテキストが表示されていることを確認します。Verify you see the text Hi Aurelia Briggs | Sign Out at the top.

Azure Dev Spaces 自転車共有サンプル アプリケーション

子開発空間を作成するCreate child dev spaces

azds space select コマンドを使用して、dev の下に 2 つの子空間を作成します。Use the azds space select command to create two child spaces under dev:

azds space select -n dev/azureuser1 -y
azds space select -n dev/azureuser2 -y

上記のコマンドは、dev の下に azureuser1 および azureuser2 という名前の 2 つの子空間を作成します。The above commands create two child spaces under dev named azureuser1 and azureuser2. これら 2 つの子空間は、サンプル アプリケーションに変更を加えるために使用する、開発者の azureuser1 および azureuser2 用の個別の開発空間を表します。These two child spaces represent distinct dev spaces for the developers' azureuser1 and azureuser2 to use for making changes to the sample application.

azds space list コマンドを使用して、すべての開発空間を一覧表示し、dev/azureuser2 が選択されていることを確認します。Use the azds space list command to list all the dev spaces and confirm dev/azureuser2 is selected.

$ azds space list
   Name            DevSpacesEnabled
-  --------------  ----------------
   default         False
   dev             True
   dev/azureuser1  True
*  dev/azureuser2  True

azds list-uris を使用して、現在選択されている空間 (dev/azureuser2) 内のサンプル アプリケーションの URL を表示します。Use the azds list-uris to display the URLs for the sample application in the currently selected space that is dev/azureuser2.

$ azds list-uris
Uri                                                             Status
--------------------------------------------------              ---------
http://azureuser2.s.dev.bikesharingweb.fedcab0987.eus.azds.io/  Available
http://azureuser2.s.dev.gateway.fedcab0987.eus.azds.io/         Available

azds list-uris コマンドで表示される URL に azureuser2.s.dev のプレフィックスが付いていることを確認します。Confirm that the URLs displayed by the azds list-uris command have the azureuser2.s.dev prefix. このプレフィックスがあれば、選択されている現在の空間が、dev の子である azureuser2 であると確認できます。This prefix confirms that the current space selected is azureuser2, which is a child of dev.

azds list-uris コマンドからパブリック URL を開いて、dev/azureuser2 開発空間の bikesharingweb サービスに移動します。Navigate to the bikesharingweb service for the dev/azureuser2 dev space by opening the public URL from the azds list-uris command. 上記の例では、bikesharingweb サービスのパブリック URL は http://azureuser2.s.dev.bikesharingweb.fedcab0987.eus.azds.io/ です。In the above example, the public URL for the bikesharingweb service is http://azureuser2.s.dev.bikesharingweb.fedcab0987.eus.azds.io/. ユーザーとして Aurelia Briggs (顧客) を選択します。Select Aurelia Briggs (customer) as the user. 最上部に「ようこそ Aurelia Briggs | サインアウト」のテキストが表示されていることを確認します。Verify you see the text Hi Aurelia Briggs | Sign out at the top.

コードの更新Update code

テキスト エディターで BikeSharingWeb/components/Header.js を開き、userSignOut className を持つ span 要素内のテキストを変更します。Open BikeSharingWeb/components/Header.js with a text editor and change the text in the span element with the userSignOut className.

<span className="userSignOut">
    <Link href="/devsignin"><span tabIndex="0">Welcome {props.userName} | Sign out</span></Link>
</span>

変更を保存し、ファイルを閉じます。Save your changes and close the file.

dev/azureuser2 開発空間で、更新された bikesharingweb サービスをビルドして実行するBuild and run the updated bikesharingweb service in the dev/azureuser2 dev space

BikeSharingWeb/ に移動し、azds up コマンドを実行します。Navigate to the BikeSharingWeb/ directory and run the azds up command.

$ cd ../BikeSharingWeb/
$ azds up

Using dev space 'dev/azureuser2' with target 'MyAKS'
Synchronizing files...2s
...
Service 'bikesharingweb' port 'http' is available at http://azureuser2.s.dev.bikesharingweb.fedcab0987.eus.azds.io/
Service 'bikesharingweb' port 80 (http) is available at http://localhost:54256
...

このコマンドは、dev/azureuser2 開発空間で、bikesharingweb サービスをビルドして実行します。This command builds and runs the bikesharingweb service in the dev/azureuser2 dev space. このサービスは、dev で実行している bikesharingweb サービスに加えて実行し、azureuser2.s URL プレフィックスを持つ要求にのみ使用されます。This service runs in addition to the bikesharingweb service running in dev and is only used for requests with the azureuser2.s URL prefix. 親開発空間と子開発空間との間でどのようにルーティングが行われるかの詳細については、「Azure Dev Spaces のしくみと構成方法」を参照してください。For more information on how routing works between parent and child dev spaces, see How Azure Dev Spaces works and is configured.

azds up コマンドの出力に表示されているパブリック URL を開いて、dev/azureuser2 開発空間の bikesharingweb サービスに移動します。Navigate to the bikesharingweb service for the dev/azureuser2 dev space by opening the public URL displayed in the output of the azds up command. ユーザーとして Aurelia Briggs (顧客) を選択します。Select Aurelia Briggs (customer) as the user. 更新されたテキストが右上隅に表示されていることを確認します。Verify you see the updated text in the upper right corner. この変更がすぐに表示されない場合は、ページを更新するか、ブラウザーのキャッシュをクリアする必要があります。You may need to refresh the page or clear your browser's cache if you do not immediately see this change.

更新した Azure Dev Spaces 自転車共有サンプル アプリケーション

注意

azds up の実行中にサービスに移動すると、azds up コマンドの出力に HTTP 要求のトレースも表示されます。When you navigate to your service while running azds up, the HTTP request traces are also displayed in the output of the azds up command. それらのトレースを、サービスのトラブルシューティングやデバッグに活かすことができます。These traces can help you troubleshoot and debug your service. トレースは、azds up の実行時に --disable-http-traces を使用して無効にできます。You can disable these traces using --disable-http-traces when running azds up.

その他の開発空間が変更されていないことを確認するVerify other Dev Spaces are unchanged

azds up コマンドがまだ実行している場合、Ctrl + C キーを押します。If the azds up command is still running, press Ctrl+c.

$ azds list-uris --all
Uri                                                             Status
--------------------------------------------------              ---------
http://azureuser1.s.dev.bikesharingweb.fedcab0987.eus.azds.io/  Available
http://azureuser1.s.dev.gateway.fedcab0987.eus.azds.io/         Available
http://azureuser2.s.dev.bikesharingweb.fedcab0987.eus.azds.io/  Available
http://azureuser2.s.dev.gateway.fedcab0987.eus.azds.io/         Available
http://dev.bikesharingweb.fedcab0987.eus.azds.io/               Available
http://dev.gateway.fedcab0987.eus.azds.io/                      Available

ブラウザーで dev バージョンの bikesharingweb に移動し、Aurelia Briggs (顧客) をユーザーとして選択し、右上隅に元のテキストが表示されていることを確認します。Navigate to the dev version of bikesharingweb in your browser, choose Aurelia Briggs (customer) as the user, and verify you see the original text in the upper right corner. dev/azureuser1 URL を使用してこれらの手順を繰り返します。Repeat these steps with the dev/azureuser1 URL. 変更は、dev/azureuser2 バージョンの bikesharingweb にのみ適用されることに注意してください。Notice the changes are only applied to the dev/azureuser2 version of bikesharingweb. このように変更を dev/azureuser2 に分離することにより、azureuser2azureuser1 に影響することなく変更を加えられます。This isolation of changes to dev/azureuser2 allows for azureuser2 to make changes without affecting azureuser1.

これらの変更を dev および dev/azureuser1 で反映させるには、チームの既存のワークフローまたは CI/CD パイプラインに従う必要があります。To have these changes reflected in dev and dev/azureuser1, you should follow your team's existing workflow or CI/CD pipeline. たとえば、このワークフローには、バージョン管理システムに対する変更のコミットと、CI/CD パイプラインまたは Helm などのツールを使用した更新のデプロイが含まれることがあります。For example, this workflow may involve committing your change to your version control system and deploying the update using a CI/CD pipeline or tooling such as Helm.

Azure リソースをクリーンアップするClean up your Azure resources

az group delete --name MyResourceGroup --yes --no-wait

次のステップNext steps

Azure Dev Spaces を使用して複数のコンテナーにまたがるより複雑なアプリを開発する方法と、別の空間で別のバージョンまたは分岐を使用して作業することによって共同開発を簡略化する方法について学習します。Learn how Azure Dev Spaces helps you develop more complex apps across multiple containers, and how you can simplify collaborative development by working with different versions or branches of your code in different spaces.