Kind、Metallb、Ingress を使用して Kubernetes にチャット アプリをデプロイする
このガイドでは、Kind、Metallb、Ingress を使用してフルスタック チャット アプリケーションを Kubernetes にデプロイするための段階的な手順を説明します。これは、開発者が仮想プライベート サーバー (VPS) 上でコンテナ化されたアプリケーションをホストするための堅牢な Kubernetes クラスターをセットアップできるように設計されています。
デプロイには、必須の Kubernetes ツールのセットアップ、ロード バランサーの構成、安全な通信のための SSL の統合、フロントエンド サービスとバックエンド サービスの両方のデプロイが含まれます。さらに、オプションのセクションでは、可観測性とパフォーマンス追跡を強化するための Prometheus と Grafana を使用したアプリケーションの監視について説明します。
実稼働用にチャット アプリケーションをデプロイしている場合でも、Kubernetes 機能を検討している場合でも、このガイドはアプリケーションを効率的に立ち上げて実行するための包括的なロードマップとして役立ちます。
? k8s の入門
下の表は、特定のツールのインストール セクションにすばやく移動するのに役立ちます。
Tech stack | Installation |
---|---|
Docker | Install and configure Docker |
Kind & Kubectl | Install and configure Kind & Kubectl |
Metallb | Install Metallb |
Ingress | Install and configure Ingress |
Helm | Helm Install and configure |
SSL Certificate | Install and configure Cert Manager |
Project Deploy | Project Deploy and Others |
Monitoring | Namespace Create for Groping Prometheus and grafana and Other |
Prometheus | Install and configure Prometheus |
Grafana | Install and configure Grafana |
?このプロジェクトを実装するための前提条件:
[!Note]
vps が最低限必要な
- RAM - 4GB
- CPU - 2 コア
- ストレージ - 20 GB
- 1 つのドメイン
? Docker のインストールと構成
sudo apt-get update sudo apt-get install docker.io -y sudo usermod -aG docker $USER && newgrp docker
? Kind & Kubectl のインストールと構成
提供されたスクリプトを使用して、KIND と kubectl をインストールします。 kind_kubectl_config.yaml ファイルを作成します:
#!/bin/bash # For AMD64 / x86_64 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 chmod +x ./kind sudo cp ./kind /usr/local/bin/kind VERSION="v1.31.0" URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl" INSTALL_DIR="/usr/local/bin" curl -LO "$URL" chmod +x kubectl sudo mv kubectl $INSTALL_DIR/ kubectl version --client rm -f kubectl rm -rf kind echo "kind & kubectl installation complete."
./kind_kubectl_config.yaml
[!Note]
Vps ARM64 の場合は、これを使用してください [ $(uname -m) = x86_64 ] &&curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
このスクリプトを実行すると、kubectl と kind 環境が作成されます。
種類のインストールの詳細情報
?️ KIND クラスターのセットアップ
kind-cluster-config.yaml ファイルを作成します。
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP
構成ファイルを使用してクラスターを作成します:
kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
クラスターを確認します:
kubectl get nodes kubectl cluster-info
[!Note]
を実行するための extraPortMappings を追加します。
ここで、Ingress
? メタルインストール
[!Note]
LoadBalance の使用には Metallb を使用しています。 Aws/Azure/DigitalOcean などを使用していて、kubernates のloadBalance 機能を提供しているため、Metallb は必要ないとします。ここでは地元の会社から VPS を購入します。 VPS にアクセスするために 1 つの IP アドレスが与えられます。
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml
Metallb 構成を確認します
kubectl get all -n metallb-system
?️ metallb_config.yaml ファイルを作成します。
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 160.191.163.33-160.191.163.33
metallb_config.yaml ファイルを適用します
kubectl apply -f metallb_config.yaml
[!Note]
私の VPS の IP アドレスは 160.191.163.33 です。必要に応じてこの IP を変更します
♻️ Ingress のインストールと構成
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
[!Note]
ここで、service/ingress-nginx-controller show EXTERNAL-IP は VPS IP です。私の VPS IP は 160.191.163.33 です。これにより、Metallb LoadBalance が確実に機能するようになります。
? Helm のインストールと構成
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
Helm バージョンを確認する
helm version
?? Cert Manager をインストールして構成する || SSL 証明書
sudo apt-get update sudo apt-get install docker.io -y sudo usermod -aG docker $USER && newgrp docker
証明書マネージャー CRD のインストール
#!/bin/bash # For AMD64 / x86_64 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 chmod +x ./kind sudo cp ./kind /usr/local/bin/kind VERSION="v1.31.0" URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl" INSTALL_DIR="/usr/local/bin" curl -LO "$URL" chmod +x kubectl sudo mv kubectl $INSTALL_DIR/ kubectl version --client rm -f kubectl rm -rf kind echo "kind & kubectl installation complete."
https://artifacthub.io/packages/helm/cert-manager/cert-manager
? プロジェクトのデプロイとその他
ステップ 1
VPS で以下のプロジェクトのクローンを作成します
./kind_kubectl_config.yaml
ステップ 2
k8s フォルダーに移動すると、このファイルが表示されます
ステップ 3
ナンパスペースを作成
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP
ステップ 4
シークレットファイルをすべて適用
kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
ステップ 5
Mongodb ボリュームとその他を宣言する
kubectl get nodes kubectl cluster-info
ステップ 6
他のファイルの残りを適用
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml
ステップ 7
SSL 証明書ドメインを構成します。 ssl_certificate.yaml を開き、希望のドメイン名を編集します
ssl_certificate.yaml ファイルを適用します
kubectl get all -n metallb-system
ステップ8
Ingress ファイルを設定します。 ingress.yaml を開き、希望のドメイン名を追加します。
ingress.yaml ファイルを適用します
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 160.191.163.33-160.191.163.33
証明書を確認する
ネームスペースを確認する
kubectl apply -f metallb_config.yaml
?ブラウザビュー
?結論
おめでとうございます! フルスタック チャット アプリケーション が正常にデプロイされました。これでチャット アプリにアクセスできるようになりました。
? モニタリングとその他 [オプション]
現在、モニタリングなどの追加機能を実行しています。サーバーとアプリについて学ぶのに役立ちます。
ネームスペースの作成
sudo apt-get update sudo apt-get install docker.io -y sudo usermod -aG docker $USER && newgrp docker
名前空間を確認してください
[!Note]
この名前空間は、Prometheus、Grafana、Loki などのすべての監視アプリの制御に役立ちます
Prometheus と Grafana のインストールと構成
インストール
#!/bin/bash # For AMD64 / x86_64 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 chmod +x ./kind sudo cp ./kind /usr/local/bin/kind VERSION="v1.31.0" URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl" INSTALL_DIR="/usr/local/bin" curl -LO "$URL" chmod +x kubectl sudo mv kubectl $INSTALL_DIR/ kubectl version --client rm -f kubectl rm -rf kind echo "kind & kubectl installation complete."
ポート経由で Prometheus を実行する
./kind_kubectl_config.yaml
これで、このポートを使用して Prometheus にアクセスできるようになります。いいね
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 - role: worker image: kindest/node:v1.31.2 extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP
[!Note]
IPアドレス変更
Grafana のインストールと構成
ポート経由で Grafana を実行
kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
Grafana のユーザー名とパスワードを取得する
ユーザー名
kubectl get nodes kubectl cluster-info
パスワード
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml
[!Note]
パスワードを変更できます
グラファナダッシュボード。
ここでは、さまざまなタイプのアルゴリズム ダッシュボードを選択できます
以上です。楽しく学習してください:) .
[役に立った場合は、リポジトリにスターを付けますか?]
プロジェクト Github リンク
https://github.com/kamruzzamanripon/k8-node-react-mongodb-app
以上がKind、Metallb、Ingress を使用して Kubernetes にチャット アプリをデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。
