首页 > web前端 > js教程 > 使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序

使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序

Susan Sarandon
发布: 2025-01-02 19:39:40
原创
989 人浏览过

本指南提供了使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署全栈聊天应用程序的分步说明。它旨在帮助开发人员建立强大的 Kubernetes 集群,以便在虚拟专用服务器 (VPS) 上托管容器化应用程序。

部署包括设置基本的 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

?实施该项目的先决条件:

[!注意]
vps 最低需求

  • 内存 - 4GB
  • CPU - 2 核
  • 存储 - 20 GB
  • 一个域

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
登录后复制
登录后复制
登录后复制

[!注意]
如果您的 Vps ARM64 则使用此 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
运行这个脚本,它会创建 kubectl 和友善的环境。
请安装更多信息

?️ 设置 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
登录后复制
登录后复制
登录后复制

[!注意]
这里我添加了额外的PortMappings来运行Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Metallb 安装

[!注意]
我正在使用 Metallb 来使用 LoadBalance。假设您使用的是 Aws/Azure/DigitalOcean 等,它们提供 kubernates loadBalance 设施,然后不需要 Metallb。这里我从一家本地公司购买VPS。他们提供一个 IP 地址来访问 VPS。

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

登录后复制
登录后复制
登录后复制

检查 Metallb 配置

kubectl get all -n metallb-system
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?️ 创建 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
登录后复制
登录后复制

[!注意]
我的 VPS IP 地址是 160.191.163.33。根据您的要求更改此 IP

♻️ Ingress 安装和配置

kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
这里 service/ingress-nginx-controller 显示 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
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?? 安装和配置证书管理器 || 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

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

项目部署及其他

第一步

在您的 VPS 中克隆以下项目

./kind_kubectl_config.yaml
登录后复制
登录后复制
登录后复制

第二步

进入k8s文件夹,可以看到这个文件

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

第三步

创建 Nampe 空间

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 并编辑您想要的域名

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

应用 ssl_certificate.yaml 文件

kubectl get all -n metallb-system
登录后复制
登录后复制

第八步

配置 Ingress 文件。 打开 ingress.yaml 并添加您所需的域名。

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

应用 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
登录后复制
登录后复制

检查证书

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

检查命名空间

kubectl apply -f metallb_config.yaml
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?浏览器视图

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?结论

恭喜!您已成功部署 全栈聊天应用程序 。您现在可以访问您的聊天应用程序。

监控及其他[可选]

现在我们正在做额外的功能,比如监控。它可以帮助您了解服务器和应用程序。

创建命名空间

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

登录后复制
登录后复制
登录后复制

检查命名空间

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
这个命名空间有助于控制所有监控应用程序,例如 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
登录后复制
登录后复制
登录后复制

[!注意]
更改IP地址

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

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

登录后复制
登录后复制
登录后复制

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!注意]
您可以更改密码

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Grafana 仪表板。

在这里您可以选择不同类型的算法仪表板

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

仅此而已。快乐学习:) .
[如果有帮助,给存储库一个星星?]

项目 Github 链接
https://github.com/kamruzzamanripon/k8-node-react-mongodb-app

以上是使用 Kind、Metalb 和 Ingress 在 Kubernetes 上部署聊天应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板