apiVersion: v1 kind: Service metadata: name: headplane-service namespace: headscale spec: selector: app: headplane ports: - port: 3000 targetPort: 3000 --- apiVersion: apps/v1 kind: Deployment metadata: name: headplane-deployment namespace: headscale spec: replicas: 1 selector: matchLabels: app: headplane template: metadata: labels: app: headplane spec: containers: - name: headplane image: ghcr.io/tale/headplane:latest ports: - containerPort: 3000 resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" env: - name: COOKIE_SECRET valueFrom: secretKeyRef: name: headscale-secrets key: HEADPLANE_COOKIE_SECRET - name: CONFIG_PATH value: "/etc/headplane/config.yaml" volumeMounts: - name: config mountPath: /etc/headplane - name: headscale-config mountPath: /etc/headscale - name: data mountPath: /var/lib/headplane - name: docker-sock mountPath: /var/run/docker.sock volumes: - name: config configMap: name: headplane-config - name: headscale-config configMap: name: headscale-config - name: data persistentVolumeClaim: claimName: headplane-data-pvc - name: docker-sock hostPath: path: /var/run/docker.sock type: Socket --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: headplane-data-pvc namespace: headscale spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi