Grundgerüst: Kubernetes YAML-Dateien

In diesem Beitrag befinden sich die Grundgerüste für die Kubernetes Manifest-Dateien (YAML), um entspreche Umgebungen, Pods und andere Einstellungen zu erstellen.

Namespace

apiVersion: v1
kind: Namespace
meta:
  name: einnamespace
  labels:
    # Maschinen auswertbar
    author: phillip
    name: app1
    <key>: <value>
  annotations:
    # Menschen auswertbar
    author: Phillip <mail@phillipunzen.de>

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment name>
  namespace: <namespace angeben>
  annotations:
    author: Phillip <mail@phillipunzen.de>

spec:
  replicas: 3
  strategy:
    type: <Typ> RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: <app-name>
  template:
    metadata:
      labels:
        app: <app-name>
      annotations:
        author: Phillip <mail@phillipunzen.de>
    spec:
      containers:
      - name: <pod name>
        image: <docker-image:tag>
        env:
        - name: KEY
          value: VALUE
        ports:
        - name: http
          containerPort: <Port im Container>
        resources:
          requests: # Minimum an Hardware
            cpu: "250m" # => 1/4 CPU Kern für den Container
            memory: "256Mi" 
          limits: 
            cpu: "1000m" # => 1 CPU Kern für den Container
            memory: "512Mi" # => Wenn mehr benötigt, dann wird Container neugestartet
        readinessProbe: # Healthcheck auf HTTP
          httpGet:
            path: /
            port: http
          initialDelaySeconds: 10 # Zeitraum zwischen Checks
        livenessProbe:
          httpGet:
            path: /
            port: http
          initialDelaySeconds: 10 # Zeitraum zwischen Checks

Service

apiVersion: v1
kind: Service
metadata:
  name: <app-name>
  namespace: <namespace name>
  ...
spec:
  selector:
    #Selektor definieren
    app: <app-name>
  ports:
  - name: http
    port: 80
    targetPort: http (targetPort Namen aus dem Deployment)
  type: <Typ>

Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <Name>
  namespace: <Namespace>
spec:
  ingressClassName: <Name> nginx
  rules:
  - host: <dns name> website.domain.de
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: <app name>
            port:
              name: <Port Name> http