Kubernetes/Helm/Helm部署Haproxy.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

122 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# Helm部署Haproxy
## 介绍
**HAProxy是一个功能强大的开源软件专门用于提供高可用性、负载均衡以及基于TCP和HTTP应用的代理服务**
## 开始部署
| 节点名称 | IP |
| :------: | :----------: |
| web1 | 192.168.1.10 |
| web2 | 192.168.1.20 |
[Github仓库](https://github.com/haproxytech/helm-charts)
1. 添加 Helm 仓库
```bash
helm repo add haproxytech https://haproxytech.github.io/helm-charts
helm repo update
```
2. 创建命名空间
```bash
kubectl create namespace haproxy
```
3. 编写 values.yaml
```bash
vi haproxy-values.yaml
```
内容如下
```yaml
config: |
global
log stdout format raw local0
maxconn 1024
defaults
log global
timeout client 60s
timeout connect 60s
timeout server 60s
frontend fe_main
bind :80
default_backend be_main
backend be_main
server web1 192.168.1.10:80 check
server web2 192.168.1.20:80 check
ingress:
enabled: true
servicePort: 80
className: "" # 指定 ingress 控制器, 不指定则需要集群内存在默认的 ingress 控制器
hosts:
- host: # 域名
paths:
- path: /
pathType: Prefix
tls:
- secretName: haproxy-tls
hosts:
- # 域名
```
**参数解释**
| 配置部分 | 参数 | 解释 |
| :------: | :-------------: | :----------------------------------------------------------: |
| global | log | 应用全局日志配置,将日志输出到标准输出,并使用原始格式进行日志记录,日志级别为 local0。 |
| | maxconn | 设置最大连接数为 1024。 |
| defaults | log | 应用全局日志配置,将日志输出到标准输出,并使用原始格式进行日志记录,日志级别为 local0。 |
| | timeout client | 设置客户端超时时间为 60 秒,即客户端连接到 HAProxy 但没有发送请求的最大时间。 |
| | timeout connect | 设置连接超时时间为 60 秒,即连接到后端服务器的最大时间。 |
| | timeout server | 设置服务器超时时间为 60 秒,即后端服务器响应客户端请求的最大时间。 |
| frontend | bind | 在端口 80 上绑定,监听所有 IP 地址的流量。 |
| | default_backend | 将所有来自前端的请求转发到名为 be_main 的后端。 |
| backend | server | 定义两个后端服务器,分别为 web1 和 web2它们的 IP 地址分别为 192.168.1.10 和 192.168.1.20,监听端口为 80并且 HAProxy 会定期检查它们的健康状态。 |
4. 创建Nginx证书secret
> cert为.pem和.crt文件都可以
```bash
kubectl create secret tls haproxy-tls --key nginx.key --cert nginx.pem -n haproxy
```
5. 部署
```bash
helm install haproxy haproxytech/haproxy -f haproxy-values.yaml -n haproxy
```
6. 查看访问地址
```bash
kubectl get svc -n haproxy
```
## 卸载
1. 卸载 haproxy
```bash
helm uninstall haproxy -n haproxy
```
2. 删除命名空间
```bash
kubectl delete namespace haproxy
```