このガイドでは、Kind、Metallb、Ingress を使用してフルスタック チャット アプリケーションを Kubernetes にデプロイするための段階的な手順を説明します。これは、開発者が仮想プライベート サーバー (VPS) 上でコンテナ化されたアプリケーションをホストするための堅牢な Kubernetes クラスターをセットアップできるように設計されています。
デプロイには、必須の Kubernetes ツールのセットアップ、ロード バランサーの構成、安全な通信のための SSL の統合、フロントエンド サービスとバックエンド サービスの両方のデプロイが含まれます。さらに、オプションのセクションでは、可観測性とパフォーマンス追跡を強化するための Prometheus と Grafana を使用したアプリケーションの監視について説明します。
実稼働用にチャット アプリケーションをデプロイしている場合でも、Kubernetes 機能を検討している場合でも、このガイドはアプリケーションを効率的に立ち上げて実行するための包括的なロードマップとして役立ちます。
下の表は、特定のツールのインストール セクションにすばやく移動するのに役立ちます。
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 が最低限必要な
? 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 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
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
VPS で以下のプロジェクトのクローンを作成します
./kind_kubectl_config.yaml
k8s フォルダーに移動すると、このファイルが表示されます
ナンパスペースを作成
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
Mongodb ボリュームとその他を宣言する
kubectl get nodes kubectl cluster-info
他のファイルの残りを適用
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml
SSL 証明書ドメインを構成します。 ssl_certificate.yaml を開き、希望のドメイン名を編集します
ssl_certificate.yaml ファイルを適用します
kubectl get all -n metallb-system
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 などのすべての監視アプリの制御に役立ちます
インストール
#!/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
これで、このポートを使用して 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
ユーザー名
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 サイトの他の関連記事を参照してください。