YAML Examples
Ready-to-use YAML examples for DevOps. Kubernetes, Docker, CI/CD pipelines, and more.
Kubernetes Deployment
K8s deployment with replicas and containers
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
labels:
app: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0.0
ports:
- containerPort: 8080
env:
- name: NODE_ENV
value: production
resources:
limits:
memory: "256Mi"
cpu: "500m"Docker Compose
Multi-container Docker application
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DATABASE_URL=postgres://db:5432/myapp
depends_on:
- db
- redis
volumes:
- .:/app
- /app/node_modules
db:
image: postgres: 14
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
postgres_data:GitHub Actions
CI/CD workflow for Node.js
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build
run: npm run build
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to production
run: echo "Deploying..."Kubernetes Service
K8s service with load balancer
apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: my-app
---
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
database_host: "db.example.com"
cache_enabled: "true"
log_level: "info"Ansible Playbook
Server configuration automation
---
- name: Configure Web Servers
hosts: webservers
become: yes
vars:
app_port: 3000
node_version: "20"
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- name: Install required packages
apt:
name:
- nginx
- git
- curl
state: present
- name: Copy nginx config
template:
src: nginx.conf.j2
dest: /etc/nginx/sites-available/default
notify: Restart nginx
handlers:
- name: Restart nginx
service:
name: nginx
state: restartedGitLab CI
GitLab CI/CD pipeline
stages:
- build
- test
- deploy
variables:
NODE_IMAGE: node:20-alpine
build:
stage: build
image: $NODE_IMAGE
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 hour
test:
stage: test
image: $NODE_IMAGE
script:
- npm ci
- npm run test:coverage
coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/'
deploy_production:
stage: deploy
image: alpine
only:
- main
script:
- echo "Deploying to production..."
environment:
name: production
url: https://example.com