Initial commit
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
# Kubernetes Service Templates
|
||||
|
||||
---
|
||||
# Template 1: ClusterIP Service (Internal Only)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
app.kubernetes.io/instance: <instance-name>
|
||||
annotations:
|
||||
description: "Internal service for <app-name>"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
app.kubernetes.io/instance: <instance-name>
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: http # Named port from container
|
||||
protocol: TCP
|
||||
sessionAffinity: None
|
||||
|
||||
---
|
||||
# Template 2: LoadBalancer Service (External Access)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>-lb
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
annotations:
|
||||
# AWS NLB annotations
|
||||
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
|
||||
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
|
||||
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
|
||||
# SSL certificate (optional)
|
||||
# service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:..."
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
externalTrafficPolicy: Local # Preserves client IP
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
- name: https
|
||||
port: 443
|
||||
targetPort: https
|
||||
protocol: TCP
|
||||
# Restrict access to specific IPs (optional)
|
||||
# loadBalancerSourceRanges:
|
||||
# - 203.0.113.0/24
|
||||
|
||||
---
|
||||
# Template 3: NodePort Service (Direct Node Access)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>-np
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
spec:
|
||||
type: NodePort
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 8080
|
||||
nodePort: 30080 # Optional, 30000-32767 range
|
||||
protocol: TCP
|
||||
|
||||
---
|
||||
# Template 4: Headless Service (StatefulSet)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>-headless
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
spec:
|
||||
clusterIP: None # Headless
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
ports:
|
||||
- name: client
|
||||
port: 9042
|
||||
targetPort: 9042
|
||||
publishNotReadyAddresses: true # Include not-ready pods in DNS
|
||||
|
||||
---
|
||||
# Template 5: Multi-Port Service with Metrics
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>-multi
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "9090"
|
||||
prometheus.io/path: "/metrics"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 8080
|
||||
protocol: TCP
|
||||
- name: https
|
||||
port: 443
|
||||
targetPort: 8443
|
||||
protocol: TCP
|
||||
- name: grpc
|
||||
port: 9090
|
||||
targetPort: 9090
|
||||
protocol: TCP
|
||||
- name: metrics
|
||||
port: 9091
|
||||
targetPort: 9091
|
||||
protocol: TCP
|
||||
|
||||
---
|
||||
# Template 6: Service with Session Affinity
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: <app-name>-sticky
|
||||
namespace: <namespace>
|
||||
labels:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app.kubernetes.io/name: <app-name>
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 8080
|
||||
protocol: TCP
|
||||
sessionAffinity: ClientIP
|
||||
sessionAffinityConfig:
|
||||
clientIP:
|
||||
timeoutSeconds: 10800 # 3 hours
|
||||
|
||||
---
|
||||
# Template 7: ExternalName Service (External Service Mapping)
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: external-db
|
||||
namespace: <namespace>
|
||||
spec:
|
||||
type: ExternalName
|
||||
externalName: db.example.com
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
protocol: TCP
|
||||
Reference in New Issue
Block a user