GoDasturchi
Writing a Real Kubernetes Manifest

Writing a Real Kubernetes Manifest

Haqiqiy Kubernetes manifestini yozish

Qurilish rejasini tasavvur qiling: me'mor uyni QURISHDAN oldin, uning barcha o'lchamlari, xonalar soni va materiallari YOZILGAN chizma tayyorlaydi — quruvchi keyin shu chizmaga QARAB ishlaydi. Kubernetes'da ham siz "nima BO'LISHINI" YOZASIZ (bu — manifest, odatda YAML formatida), Kubernetes esa shu "chizma"ga qarab, haqiqiy Pod'larni QURADI. Shu paytgacha siz o'zingiz Go'da YOZGAN Pod, ReplicaSet, Deployment, Service struct'lari — aynan shu manifest'lardagi maydonlarning, soddalashtirilgan ko'rinishi edi.

deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: production
  labels:
    app: web
spec:
  replicas: 3                    # "ReplicaSet: Keeping N Copies Running" darsidagi Desired
  selector:
    matchLabels:
      app: web                   # "Labels & Selectors" darsidagi Selector
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: web                 # Pod'ga yopishtiriladigan Label
    spec:
      containers:
        - name: app
          image: myapp:v2.1.0    # HECH QACHON ":latest" emas!
          resources:
            limits:
              cpu: "500m"
              memory: "256Mi"
          readinessProbe:
            httpGet:
              path: /ready
              port: 8080
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: production
spec:
  selector:
    app: web                     # Service ham AYNAN shu Selector orqali Pod'larni topadi
  ports:
    - port: 80
      targetPort: 8080

Bu bitta faylda IKKITA resurs bor (--- bilan ajratilgan): Deployment va Service. E'tibor bering, ular bir-biriga TO'G'RIDAN-TO'G'RI ishora QILMAYDI — Servicening spec.selector: app: web qatori, Deployment yaratgan Pod'lardagi app: web yorlig'i bilan MOS kelgani uchun, Service ULARNI avtomatik topadi. Bu — "Labels & Selectors" va "Service: Stable Networking for Pods" darslarida o'zingiz yozgan Selector.Matches va Service.Endpoints mantig'ining, AYNAN o'zi — endi YAML tilida ifodalangan.

resources.limits, readinessProbe, livenessProbe — bularning har biri sizga TANISH: "Admission Validation" darsida yozgan RequireResourceLimits qoidasi aynan shu resources.limits maydoni MAVJUDLIGINI tekshiradi; readinessProbe/livenessProbe esa "Health Checks: Liveness & Readiness" darsida o'zingiz yozgan LivenessHandler/ReadinessHandlerga ishora qiladi. Manifest — sizning butun kurs davomida Go'da qurgan MODELINGIZNING, haqiqiy Kubernetes tushunadigan tildagi ifodasi, xolos.

Key Takeaway

Key Takeaway:

Kubernetes manifest (odatda YAML) — "nima bo'lishi kerak"ligini deklarativ tarzda yozib beruvchi hujjat; uning ichidagi replicas, selector, resources.limits, readinessProbe kabi maydonlar — bu kursda siz Go'da o'zingiz qurgan struct va metodlarning, real Kubernetes tushunadigan tildagi ko'rinishi.

NEXT UP

kubectl in Practice

Writing a Real Kubernetes Manifest

Haqiqiy Kubernetes manifestini yozish

Qurilish rejasini tasavvur qiling: me'mor uyni QURISHDAN oldin, uning barcha o'lchamlari, xonalar soni va materiallari YOZILGAN chizma tayyorlaydi — quruvchi keyin shu chizmaga QARAB ishlaydi. Kubernetes'da ham siz "nima BO'LISHINI" YOZASIZ (bu — manifest, odatda YAML formatida), Kubernetes esa shu "chizma"ga qarab, haqiqiy Pod'larni QURADI. Shu paytgacha siz o'zingiz Go'da YOZGAN Pod, ReplicaSet, Deployment, Service struct'lari — aynan shu manifest'lardagi maydonlarning, soddalashtirilgan ko'rinishi edi.

deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: production
  labels:
    app: web
spec:
  replicas: 3                    # "ReplicaSet: Keeping N Copies Running" darsidagi Desired
  selector:
    matchLabels:
      app: web                   # "Labels & Selectors" darsidagi Selector
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: web                 # Pod'ga yopishtiriladigan Label
    spec:
      containers:
        - name: app
          image: myapp:v2.1.0    # HECH QACHON ":latest" emas!
          resources:
            limits:
              cpu: "500m"
              memory: "256Mi"
          readinessProbe:
            httpGet:
              path: /ready
              port: 8080
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: production
spec:
  selector:
    app: web                     # Service ham AYNAN shu Selector orqali Pod'larni topadi
  ports:
    - port: 80
      targetPort: 8080

Bu bitta faylda IKKITA resurs bor (--- bilan ajratilgan): Deployment va Service. E'tibor bering, ular bir-biriga TO'G'RIDAN-TO'G'RI ishora QILMAYDI — Servicening spec.selector: app: web qatori, Deployment yaratgan Pod'lardagi app: web yorlig'i bilan MOS kelgani uchun, Service ULARNI avtomatik topadi. Bu — "Labels & Selectors" va "Service: Stable Networking for Pods" darslarida o'zingiz yozgan Selector.Matches va Service.Endpoints mantig'ining, AYNAN o'zi — endi YAML tilida ifodalangan.

resources.limits, readinessProbe, livenessProbe — bularning har biri sizga TANISH: "Admission Validation" darsida yozgan RequireResourceLimits qoidasi aynan shu resources.limits maydoni MAVJUDLIGINI tekshiradi; readinessProbe/livenessProbe esa "Health Checks: Liveness & Readiness" darsida o'zingiz yozgan LivenessHandler/ReadinessHandlerga ishora qiladi. Manifest — sizning butun kurs davomida Go'da qurgan MODELINGIZNING, haqiqiy Kubernetes tushunadigan tildagi ifodasi, xolos.

Key Takeaway

Key Takeaway:

Kubernetes manifest (odatda YAML) — "nima bo'lishi kerak"ligini deklarativ tarzda yozib beruvchi hujjat; uning ichidagi replicas, selector, resources.limits, readinessProbe kabi maydonlar — bu kursda siz Go'da o'zingiz qurgan struct va metodlarning, real Kubernetes tushunadigan tildagi ko'rinishi.

NEXT UP

kubectl in Practice