SpringBoot + Kubernetesネイティブマイクロクラウドサービスの実践 - (8)とサービスコンテナの展開ドッカー作曲

サービスコンテナの展開とドッカー作曲

複雑な分散マイクロサービスアプリケーションの顔には、物理​​または仮想マシンとエラーが発生しやすいの展開の伝統的なマニュアルに基づく低効率は、ドッカーコンテナ技術は、マイクロパッケージとサービスのための信頼性の高い配信メカニズムを提供して表示されます。コンテナのクラウドプラットフォームなどK8Sの導入に加えて、我々はさらに、分散マイクロサービスの導入と管理を簡素化することができます。K8Sにより、全体のマイクロサービスアプリケーションのワンクリックの展開を行うことができますまた、マイクロサービスアプリケーションのキー拡張することができ、業界では、クラウドネイティブ作るようになったので、クラウドネイティブアーキテクチャの哲学、ダイレクト・ツー・クラウド配備コンテナを検討するマイクロアプリケーション開発サービスを利用するだけでなく、アーキテクチャの最初でする唯一の方法ではない組織構造。マイクロクラウドサービスアーキテクチャとネイティブ・アーキテクチャは、彼らがサービスマイクロ容器またはコンテナクラウドを残す場合は、導入と運用・保守の効率が損なわれ、お互いを補完します

ローカル開発と展開アーキテクチャと要件

  1. ローカルIDE展開アーキテクチャ
    • それぞれの異なるポートサービスに対応
  2. ソフトウェア要件
    • SwitchHosts
    • 6.1.0 SkyWalking:配置agent.service_name、collector.backend_service
    • MySQLの5.7
    • アリクラウドメールアカウント:チェック機能を

手動展開とテストサービス

  1. 展開の手順
    • クリーンアップリリースメモリ
      • アクティビティモニタ
      • 閉じるドッカーや他の大規模なプロセス
    • 展開データベース
      • staffjoy_account
      • staffjoy_company
    • 展開SkyWalking
      • ビン/ startup.sh(バイトコードの実行)
      • IDEはskywalking-agentを提供しました
        • VMオプション:-javaagent:D:\ apacheの-skywalking-APM-binに\エージェント
        • 環境変数:SW_AGENT_NAME:アカウント-SVC
    • 展開サービス
      • ローカル機密データ構成
        • config / *。YML
      • ファラデーゲートウェイ構成の見直し
      mappings:
          -
          name: faraday_route
          host: faraday.staffjoy-v2.local
          destinations: httpbin.org
          -
          name: account_route
          host: account.staffjoy-v2.local
          destinations: localhost:8081
          -
          name: company_route
          host: company.staffjoy-v2.local
          destinations: localhost:8082
          -
          name: ical_route
          host: ical.staffjoy-v2.local
          destinations: localhost:8083
          -
          name: whoami_route
          host: whoami.staffjoy-v2.local
          destinations: localhost:8084
          timeout:
              connect: 10000
              read: 10000
          -
          name: superpowers_route
          host: superpowers.staffjoy-v2.local
          destinations: localhost:8085
          -
          name: www_route
          host: www.staffjoy-v2.local
          destinations: localhost:8086
          -
          name: myaccount_route
          host: myaccount.staffjoy-v2.local
          destinations: localhost:9000
          -
          name: app_route
          host: app.staffjoy-v2.local
          destinations: localhost:9001
      • ブートシーケンス:メール - >ボット - >アカウント - >会社 - > WWW - > whoamiを - >ファラデー
    • 単一ページのアプリケーションのデプロイ(staffjoy /フロントエンドの下のアプリとマイアカウント)
      • NPMインストール
      • 標高開始
    • SwitchHostsを有効にします
      • ローカルDNSサービスのhostsファイルには、[IPドメイン名]形式のアンロードにテキストドキュメントを使用して、役割は、いくつかの人気のあるWebサイトのドメイン名と対応するIPアドレスのリレーショナルデータベースを構築することです:ユーザーがブラウザにURLを入力するとその後、IPアドレスの解決のためにURLをDNS DNSサーバを提出される見つからない場合は見つかったが、すぐに、対応するページを開くと、システムが自動的に、hostsファイルから最初に対応するIPアドレスを検索します
      127.0.0.1 account.staffjoy-v2.local
      127.0.0.1 faraday.staffjoy-v2.local
      127.0.0.1 myaccount.staffjoy-v2.local
      127.0.0.1 whoami.staffjoy-v2.local
      127.0.0.1 www.staffjoy-v2.local
      127.0.0.1 ical.staffjoy-v2.local
      127.0.0.1 staffjoy-v2.local
      127.0.0.1 app.staffjoy-v2.local
      127.0.0.1 company.staffjoy-v2.local
  2. 試験手順
    • ブラウザのアクセスwww.staffjoy-v2.local
    • ビジネスプロセスを確認します。管理者と登録会社、上のログイン;従業員が登録し、ログイン、スケジューリング
      • あなたのEメールの入力 - >アクティベーションリンクをクリックしてメールボックス - >パスワード、氏名、電話番号 - >設定会社名、住所 - >ジャンプにapp.staffjoy、v2.local
      • 従業員を作成する - >設定従業員の氏名、電子メール、電話番号 - >従業員は、メールボックスを有効にする - >従業員の完璧なパスワード - >へジャンプmyaccount.staffjoy-v2.local
      • ログアウト - >管理者ログイン - >設定 - >新規Job->はSCHEDULER->日付、時間、従業員とJob-を選択>週を公開追加します
    • チェッククッキー
      • クロムdevのツール - >アプリケーション - >クッキー
      • 名前はstaffjoy-ファラデー、トークンJWTの値であり、
    • DBをチェック

SkyWalkingコールチェーンモニタリング実験

  1. 試験手順
    • ダッシュボードにアクセスするためのブラウザ
    • トポロジを確認します
    • チェックダッシュボード
    • チェック追跡
    • 清算
      • 閉じるサービス
      • 閉じるシングルページアプリケーション
      • 閉じるSkyWalking(JPS)

ドッカードッカー作曲と紹介

  1. コンテナを使用してください
    • 標準化されたパッケージングメカニズム:コンテナをミラーリングすることによって実現されます
    • 単離:Linuxの対照群、名前空間技術
    • 標準化された展開:一方、可能としても知られている標準の大規模な展開を展開環境の一貫性を確保するために、一方では、ソフトウェアアプリケーションおよびオペレーティングシステム抽象化層との間に導入容器。コンテナ技術が表示され、;ドッキングウィンドウコンテナ技術は、このような異なるパブリッシングツールを開発するために、JavaやPython、ルビーのTomcatの展開として標準化の展開、一般的および特定の言語パブリッシングプラットフォーム技術スタックとバインドの両方を、表示される前に行うことは困難である理由はここにありますプラットフォームやアプリケーションに依存しないを公開K8Sのようにこれらの標準化が表示されるようになったリリースを統一することができ、言語がデプロイする統合プラットフォームを使用することができ、個々のパブリッシングツールを開発するためのフレームワークを積層する必要はありません。
  2. OS&カーネルオペレーティングシステムとカーネル
    • ユーザースペース:ユーザーの進捗状況/アプリケーション/プログラムのユーザ空間とカーネル空間の関数呼び出し
    • カーネルスペース:オペレーティングシステム:カーネルハードウェア管理、スケジューリングプロセス
    • ハードウェア:メモリ - ディスク - ネットワークインタフェース - CPU
  3. 仮想マシンとコンテナ
    • VM:一緒に仮想化とハードウェアの仮想化カーネル達成するために、物理マシンに基づいて、ホストオペレーティングシステムまたはハードウェアにハイパーバイザを導入することにより、仮想化されたハードウェアの層を作成するために、等仮想CPU、ディスク、ネットワークカードとすることができます、再実行して、ゲスト・オペレーティング・システム、アイソレーションが良い、強力な分離メカニズムが、より多くの重量、スロースタートでは、より多くのリソースを消費します
    • コンテナ:直接ゲストOSのほんの一部に導入されたホストオペレーティングシステムのカーネルを共有し、ホスト・オペレーティング・システム上に構築され、それは比較的軽量コンテナです。分離された仮想マシンに劣るが、ソフトウェアの分離ですが、軽量、クイックスタート、資源の少ない消費量は、同じ物理マシン上のコンテナの数は、仮想マシンの数よりもはるかに開始することができます
    仮想マシン
    応用 容器
    ビン/ Libsの 応用
    ゲストOS ビン/ Libsの
    ハイパーバイザ 最小限のゲストOSの
    コンテナエンジン
    ホストOS ホストOS
    ハードウェア ハードウェア
  4. ドッカーコンテナのコア技術
    • 主にいくつかのLinuxカーネルの実装メカニズムに基づいてコンテナ
    • Linuxカーネル
      • cgroup(コンテナのCPUとメモリリソースの量の制御):CPU、cpusetの、メモリデバイス
      • ネットワーク(仮想ネットワークカードを含むコンテナの実装基盤となるネットワーク技術、仮想ブリッジ、これらの技術のiptablesの):のveth、橋、iptablesの
      • 名前空間は、(コントロールする容器は、プロセス中に互いに分離している、ファイルシステム、ネットワーク空間):PID、MNT、IPC、UTS、NET
      • ストレージ(ストレージ・ドライブ):デバイスマッパー、はBtrfs、AUFS
  5. ミラーリングコンテナ
    • 、容器が唯一のオペレーティングシステムとファイルシステムのバイナリ、共有ホストオペレーティングシステムのカーネルが含まれている(ファイルシステム、バイナリ、カーネルを含む)ホスト上の完全なオペレーティングシステムとは異なり、硬化オペレーティングシステムと見なすことができます
    • 整理するためのコンテナミラー層別化の方法
      • 下地画像ベースイメージは、容器は、Ubuntuの、ホスト・オペレーティング・システムとして使用されるオペレーティングシステムであることができ、同じではないが、彼らは、ホストオペレーティングシステムカーネルを共有します
      • 画像に基づいてそのようなJDK依存層として、多層膜ミラーを有していてもよいです
      • 依存層は、Javaアプリケーションなどの上にバイナリファイルを含めることができます
      • 容器のミラー階層構造形態もタマネギファイルシステムとして知られており、このアプローチは、容易にミラー層を再利用することができます同じ2つの容器は、ミラーの下にある場合、ミラー層を識別するための固有のハッシュ値を有していてもよい、とすることができます記憶および伝送のコストを節約し、共通のミラー層、
  6. ドッカーアーキテクチャ
    • ドッカークライアント
      • 操作コマンドラインツールを実行するドッカーコマンドは、ローカルまたはリモートで操作することができます
      • ドッキングウィンドウのビルド:ミラーはdockerfileに従って構築することができます
      • ドッキングウィンドウプル:ミラーリングされた倉庫から私にミラーを得ました
      • ドッキングウィンドウの実行:実行コンテナ
    • ドッカーホスト
      • 駐留ドッカーデーモンは、ドッキングウィンドウのクライアントは、コンテナ管理、ミラーキャッシュを引っ張って開始、実行中の命令の実行を受け、これらの操作の画像を生成します
      • 画像
      • コンテナ
    • ドッカーレジストリ
      • ミラーリングは、貯蔵容器の倉庫を集中、公式dockerhubあり、それはまた、自作の民間倉庫することができ
    • プロセス例:
      • ドッキングウィンドウの実行のHelloWorldを実行して、ドッカークライアントユーザー
      • ドッキングウィンドウのホスト上でデーモンが実行コマンドを受信した第一印象はその後引っ張っドッキングウィンドウのレジストリを移動し、ローカルキャッシュをしない場合は、ローカル・キャッシュ・ミラーリングをHelloWorldのだろう、それは最後のコマンドが実行された容器の内側に鏡でコンテナを作成して起動します
  7. ドッカー作曲
    • 複数のアプリケーションを定義し、実行するためのコン容器ドッカー単一主容器のアプリケーションを実行するためのドッカーツール
    • ドッカーは、多用途容器は、全体的な依存関係に依存するより複雑なマイクロサービス、ドッカー-compose.ymlファイル内部に配備アーキテクチャ仕様としてYML配備アーキテクチャ仕様書にも適用することができる構成しました
    • することにより、アプリケーション全体を起動するためのキー道をドッキングウィンドウ-構成するだけでなく、アプリケーション全体の破壊にキーダウンドッカ - コン通じ
    • 主に開発およびテスト環境に適用され、マイクロ迅速な展開とテストサービスを実行するために使用することができ、それはこれらの生産レベルのコンテナK8Sクラウドプラットフォームの生産のために使用すべきです

Dockerfileを解析建設コンテナミラー

  1. アカウントサービスDockerfile

    # 构建用基础镜像
    FROM java:8-jdk-alpine
    
    # 将maven build生成的jar包拷贝到镜像的/usr/app/目录下
    COPY ./target/account-svc-1.0.0.jar /usr/app/
    
    # 设置工作目录
    WORKDIR /usr/app
    
    RUN sh -c 'touch account-svc-1.0.0.jar'
    
    # 容器启动后,如何运行account service
    ENTRYPOINT ["java", "-jar", "account-svc-1.0.0.jar"]
  2. マイアカウント単一ページのアプリケーションDockerfile
    • 第二段階の建設:最初の静的リソースを生成しなければならない単一ページのアプリケーションをビルドし、でnginxのにコピー
    # 构建用的基础镜像
    FROM node:alpine as builder
    # 设置工作目录
    WORKDIR '/build'
    # 将单页应用源代码、构建需要的资源、第三方依赖拷贝到镜像中
    COPY myaccount ./myaccount
    COPY resources ./resources
    COPY third_party ./third_party
    
    # 设置工作目录
    WORKDIR '/build/myaccount'
    
    # 构建:安装reactJs需要的依赖
    RUN npm install
    # 构建:构建node-sass
    RUN npm rebuild node-sass
    # 构建:生成静态html和js文件
    RUN npm run build
    
    RUN ls /build/myaccount/dist
    
    # 换新的基础镜像
    FROM nginx
    # 暴露80端口
    EXPOSE 80
    # 把生成的builder资源拷贝到nginx镜像里
    COPY --from=builder /build/myaccount/dist /usr/share/nginx/html

ドッカー作曲展開ファイルの解析

  1. ドッカー作曲展開アーキテクチャ
    • IDE異なるポートと各サービスを使用するときにドッカーがやり方構成した場合、:マイクロサービス、フロントエンド・アプリケーション、ポート80とのゲートウェイをドッカーが内部環境に別々のネットワークを構成しているので、これらのサービスは、マイクロ独立して考えることができます小さな仮想環境、すべて同じポートを使用することができ、それぞれが独自のネットワークスタックを、持っている、競合は存在しません
  2. 配布ファイルの解析
    • .envプットプライバシーの設定
    SPRING_PROFILES_ACTIVE=test
    SERVER_PORT=80
    EMAIL_SERVICE_ENDPOINT=http://email-service
    COMPANY_SERVICE_ENDPOINT=http://company-service
    ACCOUNT_SERVICE_ENDPOINT=http://account-service
    BOT_SERVICE_ENDPOINT=http://bot-service
    SMS_SERVICE_ENDPOINT=http://sms-service
    SENTRY_DSN=https://[email protected]/1380198
    SIGNING_SECRET=secret
    INTERCOM_ACCESS_TOKEN=YOUR_INTERCOM_ACCESS_TOKEN
    INTERCOM_APP_ID=TBD
    INTERCOM_SIGNING_SECRET=TBD
    ALIYUN_ACCESS_KEY=YOUR_ALIYUN_ACCESS_KEY
    ALIYUN_ACCESS_SECRET=YOUR_ALIYUN_ACCESS_SECRET
    RECAPTCHA_PUBLIC=test-recaptcha-public
    RECAPTCHA_PRIVATE=test-recaptcha-private
    ACCOUNT_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/staffjoy_account?useUnicode=true&characterEncoding=utf-8
    ACCOUNT_DATASOURCE_USERNAME=root
    ACCOUNT_DATASOURCE_PASSWORD=root
    COMPANY_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/staffjoy_company?useUnicode=true&characterEncoding=utf-8
    COMPANY_DATASOURCE_USERNAME=root
    COMPANY_DATASOURCE_PASSWORD=root
    • ドッカー-compose.yml
    version: '3.7'
    
    services:
    account-service:
        build: ./account-svc  # dockerfile路径,用于做构建
        image: boboweike/account-svc  # 构建产生的镜像名称
        environment:  # 环境变量
        - SPRING_PROFILES_ACTIVE
        - SERVER_PORT
        - SIGNING_SECRET
        - SENTRY_DSN
        - EMAIL_SERVICE_ENDPOINT
        - COMPANY_SERVICE_ENDPOINT
        - BOT_SERVICE_ENDPOINT
        - INTERCOM_ACCESS_TOKEN
        - ACCOUNT_DATASOURCE_URL
        - ACCOUNT_DATASOURCE_USERNAME
        - ACCOUNT_DATASOURCE_PASSWORD
        depends_on:  # 服务之间依赖的指定
        - bot-service
        - email-service
        networks:  # 网络配置
        - internal_access
        - external_access # db access
    
    ...
    
    faraday-service:
        build: ./faraday
        image: boboweike/faraday-svc
        ports:
        - 80:80  # 不仅内部有80端口,还要向外暴露80端口
        environment:
        - SPRING_PROFILES_ACTIVE
        - SERVER_PORT
        - SENTRY_DSN
        - SIGNING_SECRET
        depends_on:
        - account-service
        - company-service
        - www-service
        - whoami-service
    #      - ical-service # commented for demo
        - myaccount-service
        - app-service
        networks:
        - internal_access
        - external_access
    
    
    myaccount-service:
        build:
        context: ./frontend
        dockerfile: myaccount/Dockerfile
        image: boboweike/myaccount-spa
        networks:
        - internal_access
    
    ...
    
    networks:
    internal_access:
        internal: true
    external_access:
    
    

Staffjoyは、ローカル環境ドッカー作曲に展開しました

  1. マック/ウィン用ドッカーデスクトップ
    git clone https://github.com/docker/doodle.git
    • ビルド&タグ画像ドッカ
    cd doodle\cheers2019
    docker build -t wnzhong/cheers2019
    • 実行コンテナ
    docker run -it --rm wnzhong/cheers2019
    • ドッカーハブ上の共有画像
    docker login
    docker push wnzhong/cheers2019
  2. ビルドとデプロイ
    • ミラービル
      • MVNきれいなパッケージ-DskipTests
      • ドッキングウィンドウ、コンビルド
      • ドッキングウィンドウの画像
    • MySQLデータベースの展開
      • staffjoy_account
      • staffjoy_company
    • 展開Staffjoy
      • アップドッキングウィンドウ-構成
      • ドッキングウィンドウ製PS
    • SwitchHostsを有効にします
    • Staffjoyをチェック
    • クリアアップ
      • ドッキングウィンドウ、コンダウン

おすすめ

転載: www.cnblogs.com/wnzhong/p/12186574.html