109 lines
3.4 KiB
YAML
109 lines
3.4 KiB
YAML
---
|
|
# Woodpecker server configuration
|
|
woodpecker:
|
|
server:
|
|
image:
|
|
repository: woodpeckerci/woodpecker-server
|
|
tag: v1.0.3 # Use a specific version instead of 'latest'
|
|
replicaCount: 2 # Run multiple replicas for high availability
|
|
service:
|
|
type: ClusterIP
|
|
port: 8000
|
|
ingress:
|
|
enabled: true
|
|
annotations:
|
|
kubernetes.io/ingress.class: nginx
|
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
|
hosts:
|
|
- host: woodpecker.example.com
|
|
paths:
|
|
- path: /
|
|
tls:
|
|
- secretName: woodpecker-tls
|
|
hosts:
|
|
- woodpecker.example.com
|
|
env:
|
|
WOODPECKER_OPEN: "false" # Disable open registration for production
|
|
WOODPECKER_HOST: "https://woodpecker.example.com" # Use HTTPS
|
|
WOODPECKER_GITHUB: "true"
|
|
WOODPECKER_GITHUB_CLIENT: "{{ .Env.WOODPECKER_GITHUB_CLIENT }}"
|
|
WOODPECKER_GITHUB_SECRET: "{{ .Env.WOODPECKER_GITHUB_SECRET }}"
|
|
WOODPECKER_AGENT_SECRET: "{{ .Env.WOODPECKER_AGENT_SECRET }}"
|
|
WOODPECKER_GRPC_SECRET: "{{ .Env.WOODPECKER_GRPC_SECRET }}"
|
|
WOODPECKER_GRPC_ADDR: ":9000"
|
|
WOODPECKER_SERVER_ADDR: ":8000"
|
|
WOODPECKER_METRICS_SERVER_ADDR: ":9001"
|
|
WOODPECKER_ADMIN: "{{ .Env.WOODPECKER_ADMIN }}"
|
|
WOODPECKER_DATABASE_DRIVER: "postgres"
|
|
WOODPECKER_DATABASE_DATASOURCE: "postgres://{{ .Env.POSTGRES_USER }}:{{ .Env.POSTGRES_PASSWORD }}@postgresql:5432/woodpecker?sslmode=require"
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
|
|
# Woodpecker agent configuration
|
|
agent:
|
|
image:
|
|
repository: woodpeckerci/woodpecker-agent
|
|
tag: v1.0.3 # Use a specific version instead of 'latest'
|
|
replicaCount: 3 # Run multiple agents for better parallelism
|
|
env:
|
|
WOODPECKER_SERVER: "woodpecker-server:9000"
|
|
WOODPECKER_AGENT_SECRET: "{{ .Env.WOODPECKER_AGENT_SECRET }}"
|
|
WOODPECKER_BACKEND: "kubernetes"
|
|
WOODPECKER_BACKEND_K8S_NAMESPACE: "ci"
|
|
WOODPECKER_BACKEND_K8S_VOLUME_SIZE: "20Gi" # Increased volume size
|
|
WOODPECKER_BACKEND_K8S_STORAGE_CLASS: "managed-premium" # Use a production-grade storage class
|
|
WOODPECKER_BACKEND_K8S_STORAGE_RWX: "true"
|
|
WOODPECKER_BACKEND_K8S_POD_LABELS: '{"app":"woodpecker-job"}'
|
|
WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS: '{"prometheus.io/scrape":"true","prometheus.io/port":"9000"}'
|
|
WOODPECKER_BACKEND_K8S_POD_NODE_SELECTOR: '{"kubernetes.io/os":"linux"}'
|
|
WOODPECKER_BACKEND_K8S_SECCTX_NONROOT: "true"
|
|
WOODPECKER_BACKEND_K8S_PULL_SECRET_NAMES: "woodpecker-pull-secret"
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 1
|
|
memory: 1Gi
|
|
|
|
# PostgreSQL configuration
|
|
postgresql:
|
|
enabled: true
|
|
postgresqlUsername: "{{ .Env.POSTGRES_USER }}"
|
|
postgresqlPassword: "{{ .Env.POSTGRES_PASSWORD }}"
|
|
postgresqlDatabase: "woodpecker"
|
|
persistence:
|
|
enabled: true
|
|
size: 20Gi
|
|
storageClass: "managed-premium" # Use a production-grade storage class
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 1Gi
|
|
|
|
# Prometheus integration
|
|
metrics:
|
|
serviceMonitor:
|
|
enabled: true
|
|
namespace: monitoring
|
|
interval: 15s
|
|
scrapeTimeout: 14s
|
|
selector:
|
|
release: prometheus
|
|
|
|
# Logging integration
|
|
logging:
|
|
fluentd:
|
|
enabled: true
|
|
config:
|
|
logLevel: info
|
|
fluentdAddress: fluentd.logging:24224
|