プロジェクトTeeを使用して、簡素化します.NETマイクロサービスの開発経験(第2報)


最後の投稿ではintroduced Project Tye : 何が、ブレザーのダッシュボード、監視サービス、依存関係を追加し、オプションの設定ファイルでの作業です.私の意見では、そのポストだけの内容はTYEをそれに価値があるようにしました、しかし、巨大なユースケースはコンテナ化されたアプリケーションの複雑さを切っていて、展開シナリオを単純化することができます.
あなたはおそらくKubernetesの評判を認識している.私の経験は多くの人たちの経験です.bewildering at first, but ultimately beneficial . 我々の多くのために、我々は専門家であることについて心配しなければならないことなくKubernetesを利用したいです、あるいは、構成に時間(または日)を費やしてください.
このポストでは、プロジェクトTeeがどのように我々が我々のコンテナ化されたアプリケーションを楽にKubernetesに配備するのを手伝うことができるかについて見ます.最後のポストのように、お好みの端末を起動して起動しましょう.
ドッカーはa technology これにより、アプリケーションをコンテナに配備および実行できます.クベルネートis a system これは、ノード間でコンテナ化されたアプリケーションを管理することができます.これが意味をなさないならば、より多くを学ぶためにDockerとKubernetesドキュメンテーションを打ってください.KubernetesとDockerの詳細な議論はこのポストの範囲外です.
始める前に、あなたが.NET Core 3.1 SDK installed . あなたがそうしないならば、あなたは非常に遠くに得ません.

開始前の必須条件


楽しい事実:あなたが起きて、すぐにTYEで実行したいならば、あなたは実行することができますtye run そして、あなたのアプリケーションをコンテナ化について心配する必要はありません.最後のポストでは、物事をシンプルに保つために、それはまさに我々がしたことです.(もし我々が欲しかったら、我々は実行できただろうtye build アプリケーションのコンテナをビルドするには
今我々は十分な危険を知っている、それは本物を取得し、我々のアプリのコンテナを利用する時間です.プロジェクトTeeは私たちのために多くの重いリフティングを行いますが、我々はまだその魔法を行うためにプレイスの場所に作品を取得する必要があります.
プロジェクトTYEで展開する前に、次の手順が必要です.

  • Docker システムにインストール
  • コンテナDockerを格納するレジストリは、デフォルトでDockerHubを使用しますAzure Container Registry (私たちはACR
  • Kubernetesクラスタ( AKS , Docker , Kukube , Kubernetesなど)
  • 我々は、現在最後の2ステップを実行します.

    ACRとAKインスタンスを作成する


    いくつかの種類のコンテナレジストリとKubernetesクラスタが必要です.Azureコンテナレジストリ(ACR)とAzure Kubernetes Service(AK)、両方のAzureサービスを使用します.ここでどのように設定します.(レジストリとクラスタが全て用意されていれば、このセクションを飛ばしてください.
    からAzure Portal , 「コンテナ」を検索し、コンテナの登録をクリックします.次に、+をクリックして新しいレジストリを作成します.
    コンテナーコンテナのレジストリ画面から、サブスクリプション、リソースグループ、ユニークなレジストリ名、場所、およびskuを入力します.基本的なskuは我々の目的のために罰金であるべきです.完了すると、[レビュー]をクリックし、[作成]をクリックします.

    さて、AKのインスタンスを作成する準備が整いました.再びAzureポータル画面の上部にある検索バーから:“AK”を検索し、Kubernetesサービスをクリックします.サブスクリプション、リソースグループ、クラスタ名を入力し、デフォルトの残りを受け入れて受け入れる.

    まだリソースを作成しないでください!
    次に、統合タブにポップアップします.これは重要です:ドロップダウンリストから作成したレジストリを選択し、[レビュー]をクリックし、[作成]をクリックします.リソースの作成を完了するには数分かかるでしょう.

    Kubernetesコマンドラインツールkubectl , クラスタについて知る必要があります.これを行うにはthe Azure CLI あなたのローカルマシンからaz login , or az acr login --name {registry_name} , 私は後者をしなければならなかった.
    az aks get-credentials --resource-group {resource-group} --name {cluster-name}
    
    完了すると、実行できますkubectl config view 表示し、ローカルKubernetesの設定を確認します.つの便利なスクリーンショットの両方のコマンドです.

    依存関係の展開


    最後のポストから我々のredis依存症を覚えています?我々は、我々自身を配備しなければなりません.Theeは、我々のためにこれをしませんか?これはデザインです.依存関係は、既にportsや接続文字列で構成されている可能性があります.仮定は、これらが既にあなたによって設定されているので、TYEは仮定を作成するか、新しいインスタンスを作成する必要はありません.
    からの借入the Tye introductory post from Microsoft , を使用して既存の設定を取るkubectl apply :
    kubectl apply -f https://raw.githubusercontent.com/dotnet/tye/master/docs/tutorials/hello-tye/redis.yaml
    

    最初の展開


    我々は最初の展開を試して準備が整いました!
    走る前にtye deploy Tieがあなたの既存の資格情報を使用して、あなたのKubernetesクラスタにアクセスすることができます.
    それはあなたが推測したことです.tye deploy . この最初の時間、あなたは--interactive フラグ.これを使用して、tyeいくつかのことを要求します.
  • コンテナレジストリ.Azrecrec(もしあなたがACRを使っているなら)
  • REDISの接続文字列redis:6379 , あなたが同じ展開を使用したと仮定します
  • これが働くには、私はdocker login まず第一に、あなたの経験は異なります.
    使用--interactive フラグは、TYEがあなたのレジストリを意識していて、TeeがKubernetes秘密を我々の外部依存(REDIS)のために登録するように、分散アプリケーションのための一度のステップです.
    実行の後、あなたの端末はたくさんのログ記録を見ます.ここで何が起こっているの要点です.
  • プロジェクトを公開
  • 各プロジェクトのDocker画像をビルドし、レジストリにプッシュ
  • あなたのクラスタから画像をプル
  • マニフェストとサービス定義を作成する
  • 生成するDeployment and Service 各プロジェクトについては、コンテキストに適用されます
  • 実行によってすべてを確認することができますkubectl get pods 端末から.以下をご覧ください.
    NAME READY STATUS RESTARTS AGE
    marvel-api-6d479df46d-hlmrp 1/1 Running 0 9m
    marvel-web-744dbb6bf8-98d4g 1/1 Running 0 9m
    redis-58897bf8c-p72tz 1/1 Running 0 13m
    
    TYEがクラスタでTLSを自動的に有効にしないので、トラフィックはHTTPの上で起こります.チームは将来TLSを可能にするように見えるかもしれません.
    ところで、あなたのレジストリを含めることができますtye.yaml ファイルを防ぐ--interactive 必要に応じてステップ.これは以下のように簡単です.
    registry: {my-registry-name}
    
    このカスタマイズは、CI/CDのシナリオに最適です.

    ポートフォワード我々のアプリケーションにアクセスする


    我々は展開されます!だから、どのように我々は我々のアプリにアクセスするのですか?我々はKubernetesクラスタの外からWebアプリにアクセスしたいと思います.そのためには、Kubernetes CLIからポートフォワーディングを使用します.
    kubectl port-forward svc/marvel-web 5000:80
    
    我々はビジネスにしている!プロジェクトTieは私たちのための私たちのアプリを展開した.あなたがhttp://localhost:5000 , 私たちの信頼できるアプリをアップして実行する必要があります!お気軽にあなたのクラスターのためのアプリケーションの洞察力をチェックアウトするアクションでそれを参照してください.
    「シンプル」と「クバーネッツ」がほとんど同じ文章を共有していない世界では、プロジェクトTeeはtye.yaml ファイル.TYEは私たちからすべてのサービスに対して、すべての環境変数を設定することができました.

    クリーンアップ


    あなたがこれをしようとした後にきれいにしたいならば、何をするべきですか

  • 展開を削除tye undeploy 走るtye undeploy --what-if プレビュー用に

  • の削除を削除kubectl delete deployment/redis svc/redis

  • AKクラスタを削除しますaz aks delete --name {my-cluster} --resource-group {my-resource-group}
  • ラッピング


    この記事では、Azureコンテナレジストリ(ACR)とAzure Kubernetes Services(AK)インスタンスを作成し、外部依存関係を展開し、プロジェクトTeeからKubernetesに我々のアプリを展開しました.その後、我々の能力を我々のクラスタのローカルのアプリケーションを実行するために提供するポートフォワーディングを使用します.
    私はあなたがプロジェクトTeeでこの入門の2部シリーズを楽しんでほしい.私はそれが意図的だっただけで2つのアプリケーションと依存関係で簡単だった実現します.Tieの進化として、私は少し複雑な現実世界のアプリを掘るしたいとのペースを介してデバッグを置く.それは早いですが、うまくいけば、すでにこの強力なツールは、マイクロサービスの開発の頭痛の多くを取ることがわかります.あなたが尋ねることができるすべてです.

    参考文献


    このポストを書くのに役立ついくつかの内容と、あなたを助けるかもしれないいくつかの補足情報

  • Project Tye <資料>
  • Tye releases
  • Tye samples
  • Recipes

  • Introducing Project Tye マイクロソフトブログ

  • (. NET conf - MicroServiceのフォーカス)

  • Project Tye – easier development with .NET for Kubernetes クリスチャン
  • Kubernetes docs
  • Docker docs