Kubernetes/Helm/Helm部署Haproxy.md

122 lines
3.4 KiB
Markdown
Raw Normal View History

2024-08-07 10:54:39 +00:00
> 本文作者:丁辉
# 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
```