ノードの開発とデバッグ方法.Kubernetesの上のJSアプリケーション
12078 ワード
Kubernetes コンテナの展開、スケーリング、および管理を自動化するためのオープンソースプロジェクトです.それは急速に生産作業負荷を実行する標準となっており、その周りのコミュニティは素晴らしいです!
しかし、Kubernetesで開発するいくつかの課題を提示します.典型的な開発ワークフローは次のようになります.コードを作成し、Dockerイメージを構築し、レジストリにプッシュし、再展開し、変更を検証して繰り返します.この流れは遅いだけでなく、ノードの標準機能から利益を得るのを防ぎます.アプリケーションのホットリローダースやデバッガなどの生態系.
Okteto この問題を解決するために作成されました.このブログのポストでは、ノードのためのKubernetesの開発者の経験を改善する方法を示します.JS開発者.あなたのようなツールを最大限に活用することができます
ノードのローカルバージョンを取得します.JSサンプルアプリケーションは、次のコマンドを実行します.
The Okteto CLI よく知られているローカルツールを活用しながら、Kubernetesに直接アプリケーションを開発できるオープンソースプロジェクトです.私たちは開発サイクルを高速化するために使用します.
インストールします.
ダウンロードhttps://downloads.okteto.com/cli/okteto.exe そして、あなたにそれを加えてください
ノードの展開を開始します.JSのサンプルアプリケーションを最初にoktetoマニフェストを作成する必要があります.
を返します.JSサンプルアプリケーションを展開し、次のコマンドを実行して、次のコマンドを実行します.
選択
また、
これはバイナリの同期を避けるために有用です.
次に、次のコマンドを実行して、開発コンテナをアクティブにします.
依存関係をインストールする
開ける
開発コンテナのシェルを見て、変更がどのように検出されるかに注目してください
Oktetoでは、お気に入りのIDEからアプリケーションを直接デバッグできます.
VSコードで動作する方法を見てみましょう.
まだ実行していない場合は、ノードをインストールします.Visual Studio Marketplaceから利用可能な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 我々のコミュニティとのフィードバックを共有する.
Reference
この問題について(ノードの開発とデバッグ方法.Kubernetesの上のJSアプリケーション), 我々は、より多くの情報をここで見つけました
https://dev.to/okteto/how-to-develop-and-debug-node-js-applications-on-kubernetes-i4f
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(ノードの開発とデバッグ方法.Kubernetesの上のJSアプリケーション), 我々は、より多くの情報をここで見つけました https://dev.to/okteto/how-to-develop-and-debug-node-js-applications-on-kubernetes-i4fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol