ノードの開発とデバッグ方法.Kubernetesの上のJSアプリケーション


Kubernetes コンテナの展開、スケーリング、および管理を自動化するためのオープンソースプロジェクトです.それは急速に生産作業負荷を実行する標準となっており、その周りのコミュニティは素晴らしいです!
しかし、Kubernetesで開発するいくつかの課題を提示します.典型的な開発ワークフローは次のようになります.コードを作成し、Dockerイメージを構築し、レジストリにプッシュし、再展開し、変更を検証して繰り返します.この流れは遅いだけでなく、ノードの標準機能から利益を得るのを防ぎます.アプリケーションのホットリローダースやデバッガなどの生態系.
Okteto この問題を解決するために作成されました.このブログのポストでは、ノードのためのKubernetesの開発者の経験を改善する方法を示します.JS開発者.あなたのようなツールを最大限に活用することができますnodemon , Kubernetes上で直接アプリケーションを開発しながら依存関係のキャッシュまたはIDEデバッガ.

Step 1 :ノードを展開します。サンプルアプリ


ノードのローカルバージョンを取得します.JSサンプルアプリケーションは、次のコマンドを実行します.
$ git clone https://github.com/okteto/node-getting-started
$ cd node-getting-started
The k8s.yml ファイルがKubernetes manifests ノードを展開します.JSサンプルアプリケーション.実行してアプリケーションを実行します.

You can deploy to your own Kubernetes cluster or give Okteto Cloud a try. Okteto Cloud is a development platform for Kubernetes applications. Sign up today to get a free developer account with 4 CPUs and 8GB of RAM.


$ kubectl apply -f k8s.yml
deployment.apps "hello-world" created
service "hello-world" created
これはクールです!つのコマンドを入力し、アプリケーションのdevバージョンだけを実行します😎.

ステップ2:インストールします


The Okteto CLI よく知られているローカルツールを活用しながら、Kubernetesに直接アプリケーションを開発できるオープンソースプロジェクトです.私たちは開発サイクルを高速化するために使用します.
インストールします.

MacOSの


$ curl https://get.okteto.com -sSfL | sh

Windows


ダウンロードhttps://downloads.okteto.com/cli/okteto.exe そして、あなたにそれを加えてください$PATH .

ステップ3:あなたのoktetoマニフェストを作成します


ノードの展開を開始します.JSのサンプルアプリケーションを最初にoktetoマニフェストを作成する必要があります.
を返します.JSサンプルアプリケーションを展開し、次のコマンドを実行して、次のコマンドを実行します.
$ okteto init
This command walks you through creating an okteto manifest.
It only covers the most common items, and tries to guess sensible defaults.
See https://okteto.com/docs/reference/manifest for the official documentation about the okteto manifest.
Use the arrow keys to navigate: ↓ ↑ → ←
Select the deployment you want to develop:
  ▸ hello-world
    Use default values
The okteto init コマンドは、あなたのKubernetes名前空間で利用可能な展開をスキャンし、1つを選ぶようお願いします.
選択hello-world 展開.それは前のステップで展開したものです.
 ✓  hello-world
 ✓  Deployment 'hello-world' successfully analyzed
 ✓  okteto manifest (okteto.yml) created
 i  Run 'okteto up' to activate your development container
The okteto init コマンドは以下を作成するokteto.yml ファイル
name: hello-world
image: okteto/node:12
command: bash
sync:
  - .:/usr/src/app
forward:
  - 3000:3000
  - 9229:9229
このファイルは、ノードの開発コンテナをアクティブにする方法を定義します.JSサンプルアプリ
  • name : 開発モードに配置するKubernetes配置の名前.
  • image : 開発コンテナで使用されるイメージ.
  • command : 開発コンテナの開始コマンド.
  • sync : ローカルマシンと開発コンテナ間で同期するフォルダ.
  • forward : 開発コンテナから転送するポートの一覧.
  • また、okteto init コマンドは.stignore どのファイルを開発コンテナに同期してはいけないかを示すファイル.
    これはバイナリの同期を避けるために有用です.node_modules .

    ステップ4 :開発コンテナをアクティブにする


    次に、次のコマンドを実行して、開発コンテナをアクティブにします.
    $ okteto up
    
     ✓  Development container activated
     ✓  Files synchronized
        Namespace: default
        Name:      hello-world
        Forward:   3000 -> 3000
                   9229 -> 9229
    
    Welcome to your development container. Happy coding!
    default:hello-world app>
    
    開発コンテナでの作業は、ローカルマシンでの作業と同じです.
    依存関係をインストールする
    default:hello-world app> yarn install
    
    yarn install v1.22.4
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    [3/4] Linking dependencies...
    [4/4] Building fresh packages...
    Done in 2.09s.
    
    ホットリロードモードでアプリケーションを起動するには、次のコマンドを実行します.
    default:hello-world app> nodemon index.js
    
    yarn run v1.22.4
    $ nodemon index.js
    [nodemon] 2.0.4
    [nodemon] to restart at any time, enter `rs`
    [nodemon] watching path(s): *.*
    [nodemon] watching extensions: js,mjs,json
    [nodemon] starting `node index.js`
    Starting hello-world server...
    
    Okteto自動的にポートを転送する3000 あなたのローカルコンピュータから開発コンテナまで、それを介してアクセスできるようにlocalhost . 以下のコマンドをローカルシェルで実行して、アプリケーションをテストします.
    $ curl localhost:3000
    
    Hello world!
    

    ステップ5:直接Kubernetesで開発する


    開けるindex.js お気に入りのローカルIDEでファイルを作成し、5行目の応答メッセージをクラスタからHello Worldに変更します.変更内容を保存します.
      res.send('Hello world from the cluster!');
    
    Oktetoは開発コンテナに変更を同期させます.
    開発コンテナのシェルを見て、変更がどのように検出されるかに注目してくださいnodemon 自動的にホットリロード.
    [nodemon] restarting due to changes...
    [nodemon] starting `node index.js`
    Starting hello-world server...
    
    以下のコマンドをローカルシェルで実行して、アプリケーションをテストします.
    $ curl localhost:3000
    
    Hello world from the cluster!
    
    クール!あなたのコードの変更は即座にKubernetesに適用されました.いいえコミット、ビルドまたはプッシュ必要😎!

    ステップ6 : Kubernetesで直接デバッグする


    Oktetoでは、お気に入りのIDEからアプリケーションを直接デバッグできます.
    VSコードで動作する方法を見てみましょう.
    まだ実行していない場合は、ノードをインストールします.Visual Studio Marketplaceから利用可能なJS拡張モジュール.
    の実行を取り消しますnodemon index.js 現像容器の殻からプレスctrl + c .
    デバッグモードでアプリケーションを再起動します.
    default:hello-world app> node --inspect-brk=0.0.0.0:9229 index.js
    
    Debugger listening on ws://0.0.0.0:9229/73d8d793-b0c3-4310-86ee-3a42938a5df1
    For help, see: https://nodejs.org/en/docs/inspector
    
    デバッグ拡張モジュールを開き、接続をOkTetoデバッグ構成に実行します( F 5ショートカットを押してください).
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Connect to okteto",
                "type": "node",
                "request": "attach",
                "address": "localhost",
                "port": 9229,
                "localRoot": "${workspaceFolder}",
                "remoteRoot": "/usr/src/app",
                "skipFiles": [
                    "<node_internals>/**"
                ]
            },
        ]
    }
    
    ブレークポイントを追加するindex.js , 5行目.ローカルシェルからコマンドを実行して、再度アプリケーションを呼び出します.
    $ curl localhost:3000
    
    実行は中断点で停止します.次に、リクエスト、利用可能な変数などを検査することができます.

    Kubernetesでコードを実行していますが、余分なサービスやツールなしでローカルマシンからデバッグできます.
    かなりクールですか?😉

    結論


    Kubernetesは素晴らしい開発プラットフォームになる可能性があります.そして、複製可能な、資源効率的で生産環境のような生産環境を提供します.使い方を教えていただきましたOkteto Kubernetes上で直接アプリケーションを開発しながら、ホットリローダーやデバッガのような機能を利用できる開発ワークフローを作成します.
    訪問するwebsite Octetoでチーム開発者の生産性を向上させる方法についてもっと知ってください.我々に続いて、我々に加わってください#okteto チャンネル登録者Kubernetes community Slack 我々のコミュニティとのフィードバックを共有する.