概述
在本次 workshop 中,我们将在前一篇设置好的 K3S/GPU 集群、安装 NVIDIA 驱动和插件的基础上,演示如何部署一个基于 Ollama 的 Open WebUI。
前提条件
- 准备一个 AWS GPU 云实例(例如 g5.xlarge/Ubuntu 22.04)
- 具备基本的 Kubernetes 和 Helm 知识
- 完成 K3S/GPU 集群的初始化,安装 NVIDIA 驱动和插件
名称 | 实例 | 详情 |
---|---|---|
硬件 | AWS EC2 g5.xlarge | 带有一个 NVIDIA A10G Tensor Core GPU |
系统 | Ubuntu 22.04 | nvidia-container-toolkit |
软件 | K3S 1.29、Ollama、OpenWebUI | ChatGPT with llama3:8b |
设置 K3S 和 Ingress
为了能让部署 Open WebUI可以使用域名访问,需要设置 NGINX Ingress。请按照以下步骤创建必要的值和配置文件。
代码语言:bash复制cat > value.yaml <<EOF
controller:
nginxplus: false
ingressClass: nginx
replicaCount: 2
service:
enabled: true
type: NodePort
externalIPs:
- your-external-ip
EOF
代码语言:bash复制cat > nginx-cm.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-nginx-ingress
namespace: ingress
data:
use-ssl-certificate-for-ingress: "false"
external-status-address: your-external-ip
proxy-connect-timeout: 10s
proxy-read-timeout: 10s
client-header-buffer-size: 64k
client-body-buffer-size: 64k
client-max-body-size: 1000m
proxy-buffers: 8 32k
proxy-body-size: 1024m
proxy-buffer-size: 32k
EOF
代码语言:bash复制复制代码
cat > nginx-svc-patch.yaml <<EOF
spec:
ports:
- name: http
nodePort: 80
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 443
port: 443
protocol: TCP
targetPort: 443
EOF
安装 NGINX Ingress
运行以下命令以添加 NGINX 仓库、更新并安装 Ingress:
代码语言:bash复制helm repo add nginx-stable https://helm.nginx.com/stable || echo true
helm repo update
kubectl create namespace ingress || echo true
helm upgrade --install nginx nginx-stable/nginx-ingress --version=0.15.0 --namespace ingress -f value.yaml
kubectl apply -f nginx-cm.yaml
kubectl patch svc nginx-nginx-ingress -n ingress --patch-file nginx-svc-patch.yaml
部署 open-webui
首先添加 open-webui Helm 仓库。这个仓库中包含了基于 Ollama 的 ChartGPT,在安装过程中,可以通过提供自定义 values.yaml 文件来配置 Chart 的参数。
代码语言:bash复制kubectl create secret tls chartgpt-tls --key=/etc/ssl/onwalk.net.key --cert=/etc/ssl/onwalk.net.pem
cat > values.yaml << EOF
ollama:
enabled: true
fullnameOverride: "open-webui-ollama"
models:
- llama3
gpu:
enabled: true
type: 'nvidia'
ingress:
enabled: true
class: "nginx"
host: "chatgpt.onwalk.net"
tls: true
existingSecret: "chartgpt-tls"
extraEnvVars:
- name: OPENAI_API_KEY
value: "0p3n-w3bu!"
EOF
helm repo add open-webui https://helm.openwebui.com/
helm repo update
helm upgrade --install chartgpt open-webui/open-webui -f values.yaml
访问 OpenWebUI
安装完成,配置DNS解析后,使用浏览器打开 https://chartgpt.onwalk.net 访问 Open WebUI 界面。
总结与扩展
通过本次 workshop,您将学习如何在 AWS 上设置支持 GPU 的 Kubernetes 集群,并部署和演示基于 Ollama 的 Open WebUI。