イントロ
目的
.NET と Docker を使用して構築したマイクロサービスを Microsoft Azure に展開する方法を説明します。
前提条件
必須: このチュートリアルでは、最初のマイクロサービス チュートリアルで作成されたアプリを使用します。
必須: Docker Hub アカウント。
完了までの時間
15 - 20 分
シナリオ
以前に作成したマイクロサービスを、DockerHub と Azure Kubernetes Service (AKS) を使用して Azure に配置します。
Docker Hub にプッシュ
Docker Hub は、Docker イメージをアップロードするための中心的な場所です。Microsoft Azure をはじめとする多くの製品では、Docker Hub の Docker イメージに基づいてコンテナーを作成できます。
Docker Hub にサインイン
前述のチュートリアルでの Docker のダウンロード時に作成したユーザー名とパスワードを使用します。必要に応じて、Docker Hub Web サイト にアクセスして、パスワードをリセットすることができます。
Docker Hub にイメージをアップロード
ユーザー名の下で Docker イメージの名前を再タグ付けしてから、次のコマンドを使用して Docker Hub にプッシュします:
Terminal
docker tag mymicroservice [YOUR DOCKER USERNAME]/mymicroservice
docker push [YOUR DOCKER USERNAME]/mymicroservice
push コマンドは、Docker Hub に Docker イメージをアップロードしますが、これには時間がかかる場合があります。
Azure リソースの作成
リソース グループを作成します
リソース グループは、単一のアプリに関連するリソースのセットを編成するために使用されます。
米国西部リージョンでリソースグループを作成するには、次のコマンドを実行します:
Terminal
az group create --name MyMicroserviceResources --location westus
前のコマンドで別の場所を使用する場合は、次のコマンドを実行して、アカウントで利用可能なリージョンを確認し、自分に最も近いリージョンを選択できます:
Terminal
az account list-locations -o table
セッションに対して別のサブスクリプションを使用する場合は、次のコマンドを実行して、すべてのサブスクリプションの一覧を取得できます:
Terminal
az account list --all
その後、次のコマンドを実行して、セッションの特定のサブスクリプションを設定できます。
Terminal
az account set -s NAME_OR_ID
AKS クラスターの作成
次のコマンドを実行して、リソース グループに AKS クラスターを作成します。
このコマンドの完了に数分かかるのは通常です。
Terminal
az aks create --resource-group MyMicroserviceResources --name MyMicroserviceCluster --node-count 1 --enable-addons http_application_routing --generate-ssh-keys
次のコマンドを実行して、AKS クラスターに配置する資格情報をダウンロードします。
Terminal
az aks get-credentials --resource-group MyMicroserviceResources --name MyMicroserviceCluster
Azure へのデプロイ
アプリ ディレクトリに戻る
前の手順で新しいコマンドプロンプトを開いたため、サービスを作成したディレクトリに戻る必要があります。
前の手順で新しいターミナルを開いたため、サービスを作成したディレクトリに戻る必要があります。
Terminal
cd MyMicroservice
配置ファイルを作成する
AKS ツールは、.yaml
ファイルを使用して、コンテナーを配置する方法を定義します。
次のコマンドを使用して、deploy.yaml
というファイルを作成します。
Terminal
touch deploy.yaml
Terminal
fsutil file createnew deploy.yaml 0
その後、お好みのテキスト エディターで開くことができます。
次に、手動で、または次のコマンドを使用して、任意のテキストエディターで開くことができます。
Terminal
open deploy.yaml
Terminal
start deploy.yaml
deploy.yaml
の内容をテキスト エディターで次のように置き換え、[YOUR DOCKER ID] を実際の Docker ID に置き換えてください。
deploy.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mymicroservice
spec:
replicas: 1
template:
metadata:
labels:
app: mymicroservice
spec:
containers:
- name: mymicroservice
image: [YOUR DOCKER ID]/mymicroservice:latest
ports:
- containerPort: 80
env:
- name: ASPNETCORE_URLS
value: http://*:80
selector:
matchLabels:
app: mymicroservice
---
apiVersion: v1
kind: Service
metadata:
name: mymicroservice
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: mymicroservice
配置の実行
deploy.yaml
の設定に基づいてマイクロサービスを展開するには、次のコマンドを実行します:
Terminal
kubectl apply -f deploy.yaml
配置済みサービスをテストします
配置されたサービスの詳細を確認するには、次のコマンドを実行します:
Terminal
kubectl get service mymicroservice --watch
特に、前のコマンドでは、サービスが使用可能な外部 IP アドレス (EXTERNAL-IP) が表示されます。
外部 IP アドレスを使用して、新しいブラウザー ウィンドウを開き、http://[YOUR EXTERNAL IP ADDRESS]/weatherforecast に移動します
EXTERNAL-IP が <pending>
としてマークされている場合、外部 IP が割り当てられると、新しい行が自動的に表示されます。
コマンド プロンプトで CTRL+C を押して、kubectl get service
コマンドを終了します。
ターミナルで CTRL+C を押して、kubectl get service
コマンドを終了します。
おめでとうございます。Azure にマイクロサービスを展開しました。
サービスのスケール
Kubernetes を使用する利点は、デプロイを複数のインスタンスに簡単にスケールアップして、追加の負荷を処理できることです。 現在、インスタンスは 1 つしかないため、2つのインスタンスにスケーリングしてみましょう。
次のコマンドを実行して、サービスを 2 つのインスタンスに拡大します。
Terminal
kubectl scale --replicas=2 deployment/mymicroservice
リソースのクリーンアップ
マイクロサービスのテストが完了したら、次のコマンドを使用して作成したすべてのリソースを削除できます:
Terminal
az group delete -n MyMicroserviceResources
次の手順
次のリソースは、.NET でマイクロサービスの学習を続けるのに役立ちます。
Microservices for Beginners
Nish がマイクロサービスの概念を通じて、.NET で最初のマイクロサービス エンドポイントを構築する方法について説明します:
あなたは下記にもご興味がおありかもしれません...