xiaohongshu
xiaohongshu
app-template
Deploy applications using bjw-s/app-template Helm chart - a flexible chart for helmifying container images without dedicated charts. Use when: (1) Deploying container images that lack official Helm charts, (2) Creating HelmRelease manifests for Flux GitOps, (3) Configuring multi-container pods w...
Full skill instructions
The bjw-s/app-template chart deploys containerized applications without requiring a dedicated Helm chart. It provides a declarative interface for common Kubernetes resources.
Chart source: oci://ghcr.io/bjw-s-labs/helm/app-template
Schema: https://raw.githubusercontent.com/bjw-s-labs/helm-charts/app-template-4.6.0/charts/other/app-template/values.schema.json
Minimal values.yaml for a single-container deployment:
# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s-labs/helm-charts/app-template-4.6.0/charts/other/app-template/values.schema.json
controllers:
main:
containers:
main:
image:
repository: nginx
tag: latest
service:
main:
controller: main
ports:
http:
port: 80
Controllers define workload types. Each controller creates one Pod spec.
controllers:
main: # Controller identifier (arbitrary name)
type: deployment # deployment|statefulset|daemonset|cronjob|job
replicas: 1
strategy: Recreate # Recreate|RollingUpdate (deployment)
# Pod-level settings
pod:
securityContext:
fsGroup: 568
fsGroupChangePolicy: OnRootMismatch
containers:
main: # Container identifier
image:
repository: ghcr.io/org/app
tag: v1.0.0
env:
TZ: UTC
CONFIG_PATH: /config
Create separate deployments in one release:
controllers:
web:
containers:
main:
image:
repository: nginx
tag: latest
worker:
type: deployment
replicas: 3
containers:
main:
image:
repository: myapp/worker
tag: v1.0.0
Add sidecars with dependsOn for ordering:
controllers:
main:
containers:
main:
image:
repository: myapp
tag: v1.0.0
sidecar:
dependsOn: main # Start after main container
image:
repository: sidecar-image
tag: latest
args: ["--config", "/config/sidecar.yaml"]
Services expose controller pods. Link via controller field.
service:
main:
controller: main # Links to controllers.main
type: ClusterIP # ClusterIP|LoadBalancer|NodePort
ports:
http:
port: 8080
metrics:
port: 9090
websocket:
controller: main
ports:
ws:
port: 3012
ingress:
main:
className: nginx
hosts:
- host: app.example.com
paths:
- path: /
pathType: Prefix
service:
identifier: main # References service.main
port: http # References port name
tls:
- hosts:
- app.example.com
secretName: app-tls
Multiple paths to different services:
ingress:
main:
hosts:
- host: app.example.com
paths:
- path: /
service:
identifier: main
port: http
- path: /ws
service:
identifier: websocket
port: ws
persistence:
config:
type: persistentVolumeClaim
accessMode: ReadWriteOnce
size: 1Gi
globalMounts:
- path: /config
persistence:
config:
existingClaim: my-existing-pvc
globalMounts:
- path: /config
persistence:
backup:
type: nfs
server: nas.local
path: /volume/backups
globalMounts:
- path: /backup
persistence:
shared-data:
type: emptyDir
globalMounts:
- path: /shared
persistence:
config:
existingClaim: app-config
advancedMounts:
main: # Controller identifier
main: # Container identifier
- path: /config
sidecar:
- path: /config
readOnly: true
controllers:
main:
containers:
main:
env:
TZ: UTC
LOG_LEVEL: info
TEMPLATE_VAR: "{{ .Release.Name }}"
controllers:
main:
containers:
main:
env:
DATABASE_URL:
valueFrom:
secretKeyRef:
name: db-secret
key: url
envFrom:
- secretRef:
name: app-secrets
- configMapRef:
name: app-config
defaultPodOptions:
securityContext:
runAsUser: 568
runAsGroup: 568
fsGroup: 568
fsGroupChangePolicy: OnRootMismatch
controllers:
main:
containers:
main:
image:
repository: myapp
tag: v1.0.0
controllers:
main:
containers:
main:
securityContext:
runAsUser: 568
runAsGroup: 568
vpn:
image:
repository: vpn-client
tag: latest
securityContext:
capabilities:
add:
- NET_ADMIN
Default probes use TCP on the primary service port. Customize:
controllers:
main:
containers:
main:
probes:
liveness:
enabled: true
custom: true
spec:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 30
readiness:
enabled: true
type: HTTP
spec:
path: /ready
port: 8080
startup:
enabled: false
controllers:
main:
type: statefulset
statefulset:
volumeClaimTemplates:
- name: data
accessMode: ReadWriteOnce
size: 10Gi
globalMounts:
- path: /data
controllers:
backup:
type: cronjob
cronjob:
schedule: "0 2 * * *"
concurrencyPolicy: Forbid
successfulJobsHistory: 3
failedJobsHistory: 1
containers:
main:
image:
repository: backup-tool
tag: v1.0.0
args: ["--backup", "/data"]
serviceMonitor:
main:
enabled: true
serviceName: main
endpoints:
- port: metrics
scheme: http
path: /metrics
interval: 30s
For this homelab, app-template deploys via Flux ResourceSet. Add to kubernetes/platform/helm-charts.yaml:
# In resourcesTemplate, the pattern generates HelmRelease automatically
# For app-template specifically, add to inputs:
- name: "my-app"
namespace: "default"
chart:
name: "app-template"
version: "4.6.0"
url: "oci://ghcr.io/bjw-s-labs/helm" # Note: OCI registry
dependsOn: [cilium]
Values go in kubernetes/platform/charts/my-app.yaml.
See references/patterns.md for:
See references/values-reference.md for complete values.yaml documentation.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience