Kubernetes部署开源Excalidraw实现在线绘图

在现代团队协作和个人创作中,视觉化工具变得越来越重要。Excalidraw 是一款开源的在线白板应用,以其手绘风格和易用性赢得了众多用户的青睐。

什么是 Excalidraw?

Excalidraw 是一个基于浏览器的白板应用,专注于提供一种简单、直观的方式来创建草图和图表。它的设计理念是让用户在没有复杂工具的干扰下,快速表达创意。

主要特点

  • 手绘风格
    Excalidraw 提供了独特的手绘风格,这种风格使得图表和草图看起来更加自然和非正式,非常适合头脑风暴和初步设计。
  • 实时协作
    用户可以通过共享链接,邀请团队成员实时协作。这种功能极大地提升了团队远程工作的效率。
  • 易于使用
    界面简洁明了,只需简单的拖拽和点击即可创建复杂的图表。即使是初学者也能快速上手。
    跨平台支持
    作为一个基于浏览器的工具,Excalidraw 可以在任何设备上运行,无需安装额外软件。
  • 开源社区
    Excalidraw 拥有一个活跃的开源社区,用户可以参与开发,提出建议,甚至贡献代码。这确保了工具的持续改进和更新。

Excalidraw官网:https://github.com/excalidraw/excalidraw
直接在线使用:https://excalidraw.com/
支持导入的模型:https://libraries.excalidraw.com

基于Kubernetes部署

不需要额外持久化
安装namespace为tools

apiVersion: apps/v1
kind: Deployment
metadata:
  name: excalidraw
  namespace: tools
  labels:
    app: excalidraw
spec:
  replicas: 1
  selector:
    matchLabels:
      app: excalidraw
  template:
    metadata:
      labels:
        app: excalidraw
    spec:
      containers:
      - name: excalidraw
        image: dockerproxy.frps.fun/excalidraw/excalidraw:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "256Mi"
            cpu: "100m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        # 可选:健康检查
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 10
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10

---
apiVersion: v1
kind: Service
metadata:
  name: excalidraw-service
  namespace: tools
spec:
  selector:
    app: excalidraw
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  # 根据你的需求选择服务类型
  # type: ClusterIP   # 默认类型,仅在集群内部可访问
  # type: NodePort    # 通过节点IP访问
  type: NodePort

查看Pod和SVC状态

➜  ~ kubectl get pod,svc -n tools|grep excalidraw
pod/excalidraw-9587f9469-b6srm          1/1     Running   0              20m
service/excalidraw-service   NodePort    10.96.0.245   <none>        80:31911/TCP     29m

访问测试