3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「.NET マイクロサービスを Kubernetes にデプロイする」をやってみる🍕

Last updated at Posted at 2021-11-10

はじめに

コンテナー化されたアプリケーションを Azure Kubernetes Service にデプロイする

どこから始めたらいいの?
MS Learnでしょ:bangbang:
ってことで「コンテナー化されたアプリケーションを Azure Kubernetes Service にデプロイする」から取り組んでみました。
しかし、「演習 - Azure Kubernetes Service クラスターを作成する」がどうもうまくいきませんでしたよ:sob:
必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私には解決できませんでした。

アクティブ化したら、サンドボックス用の Azure portal にサインインします。 必ず、サンドボックスをアクティブ化したときと同じアカウントを使用してください。

When the sandbox is activated, sign into the Azure portal for sandbox. Make sure to use the same account you activated the sandbox with.

この手順で「サンドボックス用の Azure portal にサインイン」したあとに何かsomethingをする必要があるのではないかとおもいますがよくわかりませんでした。

エラー

こんなエラーです。

スクリーンショット 2021-11-10 20.56.10.png

赤い文字が怖い。
とにかく貼っておきます。

torifuku_kaiou@Azure:~$ export RESOURCE_GROUP=learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04
torifuku_kaiou@Azure:~$ export CLUSTER_NAME=aks-contoso-video
torifuku_kaiou@Azure:~$ az aks create \
>     --resource-group $RESOURCE_GROUP \
>     --name $CLUSTER_NAME \
>     --node-count 2 \
>     --enable-addons http_application_routing\
>     --generate-ssh-keys \
>     --node-vm-size Standard_B2s \
>     --network-plugin azure
(RequestDisallowedByPolicy) Provisioning of resource(s) for container service aks-contoso-video in resource group learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04 failed. Message: Resource 'aks-nodepool1-37735957-vmss' was disallowed by policy. Policy identifiers: '[{"policyAssignment":{"name":"containers-assignment","id":"/providers/Microsoft.Management/managementGroups/eab64c3d-95b6-9f1f-755f-9f8578c31e45/providers/Microsoft.Authorization/policyAssignments/containers-assignment"},"policyDefinition":{"name":"Allowedresource types","id":"/providers/Microsoft.Authorization/policyDefinitions/a08ec900-254a-4555-9bf5-e42af04b5c5c"},"policySetDefinition":{"name":"containers-initiative","id":"/providers/Microsoft.Management/managementGroups/learn-sandbox-prod/providers/Microsoft.Authorization/policySetDefinitions/containers-initiative"},"policyDefinitionReferenceId":"allowed-resource-types_1"}]'.. Details:
Code: RequestDisallowedByPolicy
Message: Provisioning of resource(s) for container service aks-contoso-video in resource group learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04 failed. Message: Resource 'aks-nodepool1-37735957-vmss' was disallowed by policy. Policy identifiers: '[{"policyAssignment":{"name":"containers-assignment","id":"/providers/Microsoft.Management/managementGroups/eab64c3d-95b6-9f1f-755f-9f8578c31e45/providers/Microsoft.Authorization/policyAssignments/containers-assignment"},"policyDefinition":{"name":"Allowed resource types","id":"/providers/Microsoft.Authorization/policyDefinitions/a08ec900-254a-4555-9bf5-e42af04b5c5c"},"policySetDefinition":{"name":"containers-initiative","id":"/providers/Microsoft.Management/managementGroups/learn-sandbox-prod/providers/Microsoft.Authorization/policySetDefinitions/containers-initiative"},"policyDefinitionReferenceId":"allowed-resource-types_1"}]'.. Details:

さすがにここで辞めちゃうのははやすぎるし、そうだ、私はKubernetes初心者です。1
まだ私にはAzure Kubernetes Service(AKS)は早かったようです。
まずはKubernetesをローカルマシンでイゴかす2ところからやってみよう:rocket::rocket::rocket:

次になにをやろうかしら。
そんなときにも$\huge{MS\ Learn}$:bangbang:

.NET マイクロサービスを Kubernetes にデプロイする

結論から申しますと、最後まで行けました。
ただ、2021年11月10日現在、日本語訳にはいくつか誤りがあります。
そこは、必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私は解決できました。

このLearnでは以下を学べます。

  • 既にコンテナー化されたマイクロサービスに分割されている .NET アプリケーションを、Kubernetes 環境にデプロイする方法
  • Docker Hub に Docker イメージをプッシュして、Kubernetes インスタンスによってイメージをダウンロードできるようにしてから、Kubernetes が各マイクロサービスに対して実行する内容を宣言的に記述するデプロイファイルを作成
  • Kubernetes を使用してコンテナー化されたマイクロサービスをスケーリングすることがいかに簡単かを体験

もちろん誤りがあったところはちゃ〜んと、問題を報告しておきました。

はじめに

あなたは、世界で最も人気のあるピザ店である Contoso Pizza でソフトウェア開発者として新しい仕事を始めたとします。 ビジネスが好調なので、最近、ピザの在庫があるかどうかを表示する Contoso Pizza の Web サイトは Docker コンテナーでホストされるマイクロサービスにリファクターされました。

:pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza:

オーケストレーターとは

説明を味読:pizza:しました。
とてもコンパクトに大事なことがまとまっています。
私みたいなKubernetes初心者はまずここをよく読むことから始めるとよいとおもいます。3
オススメです。
マヂおすすめです。

演習 - マイクロサービス イメージを Docker Hub にプッシュする

Docker HubへのPushは経験があります。

日本語訳に誤りがあります。たいした問題ではないです。

問題報告

ちゃ〜んと、問題を報告しておきました。

スクリーンショット 2021-11-10 17.28.45.png

マイクロサービス コンテナーを Kubernetes にデプロイする

ここが難関でした。
日本語訳をそのまま写すと、だってこんな画面ですよ :sob:

$ kubectl apply -f backend-deploy.yml

$ kubectl apply -f frontend-deploy.yml

と、馴染みのないコマンドを意味をわからずに打ったあとの画面がこれ↓↓↓

スクリーンショット 2021-11-10 19.21.37.png

困ったときは、必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私はイゴかす1ことができました。
backend-deploy.ymlに誤りがあります。
もちろんちゃ〜んと、問題を報告しておきました。

スクリーンショット 2021-11-10 19.18.55.png

誤りを含んでいるbackendの止め方がわからず右往左往しました。
こんな感じで止めました。

$ kubectl get deployments --all-namespaces
NAMESPACE     NAME            READY   UP-TO-DATE   AVAILABLE   AGE
default       pizzabackend    1/1     1            1           99m
default       pizzafrontend   1/1     1            1           104m
kube-system   coredns         2/2     2            2           3h16m

$ kubectl delete -n default deployment pizzabackend

$ kubectl delete -n default deployment pizzafrontend

pizzafrontendはそのままでよかったのかも。
気を取り直して再度、

$ kubectl apply -f backend-deploy.yml

$ kubectl apply -f frontend-deploy.yml

$ kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
pizzabackend-85fd76dd68-mt2wm   1/1     Running   0          20s
pizzafrontend-df9d577d5-s9thl   1/1     Running   0          6s

スクリーンショット 2021-11-10 19.22.40.png

$\huge{all\ right}$
:pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza:
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:
:pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza:
:tada::tada::tada::tada::tada::tada::tada::tada::tada::tada::tada:

Kubernetes でコンテナー インスタンスをスケーリングする

あなたのマイクロサービスは、1 日のうちの特定の時間帯に大きな負荷がかかることがあります。 Kubernetes を使用すると、追加のインスタンスが自動的に追加され、マイクロサービスを簡単にスケーリングすることができます。

へえ〜 って感じで記事の通りにスケールアップ、スケールダウンができました :tada:

$ kubectl scale --replicas=5 deployment/pizzabackend

$ kubectl scale --replicas=1 deployment/pizzabackend

Kubernetes でマイクロサービスの回復性を証明する

$ kubectl delete pod pizzafrontend-5b6cc765c4-hjpx4

記事の通りにこんな感じでdeleteしても、すぐに別のポッドインスタンスが起動されます。

$ kubectl get pods

NAME                             READY   STATUS    RESTARTS   AGE
pizzabackend-7445bdb5c9-pnpk6    1/1     Running   0          31m
pizzafrontend-5b6cc765c4-vwmv8   1/1     Running   0          7s

こういうのはどうかなってことで、試してみました。
Dockerには多少の心得はござる。

$ docker ps
CONTAINER ID   IMAGE                         COMMAND                 CREATED         STATUS         PORTS     NAMES
a937d6e26641   torifukukaiou/pizzafrontend   "dotnet frontend.dll"   5 minutes ago   Up 5 minutes             k8s_pizzafrontend_pizzafrontend-df9d577d5-s9thl_default_e62d197d-9ddb-4f2b-a3c5-13482c57edf2_0
3b9ea4c77361   torifukukaiou/pizzabackend    "dotnet backend.dll"    5 minutes ago   Up 5 minutes             k8s_pizzabackend_pizzabackend-85fd76dd68-mt2wm_default_d6baca90-ea65-4544-92c2-b1654046c4be_0

$ docker stop a937d6e26641
a937d6e26641

$ kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
pizzabackend-85fd76dd68-mt2wm   1/1     Running   0          7m6s
pizzafrontend-df9d577d5-s9thl   1/1     Running   1          6m52s

また復活しています。立ち上がっています。
不死身です。
不死鳥です。
すばらしい:pizza:

まとめ

がんばりました:pizza:

おわりに :tada::lgtm::lgtm::lgtm::lgtm::lgtm::tada:

$\huge{MS\ Learn最高です🎉}$

:pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza::pizza:

  1. 何の自慢にもなりません 2 3

  2. 動かすの意。たぶん西日本の方言、おそらく。NervesJPではおなじみの表現。

  3. 一体、何目線なのでしょう。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?