פריסת תוכנה ל- Kubernetes באמצעות Kustomize

אחרי שקראתם את הפוסט הקודם מה זה Jenkins? עכשיו נדבר על איך פורסים תוכנה ל- Kubernetes, תכלס יש הרבה דרכים ואפשרויות אבל הנכונה ביותר היא Helm, אך גם המסורבלת ביותר.

בפוסט זה רציתי להכיר לכם אלטרנטיבה בשם Kustomize, עוד פרוייקט של Google אשר הוכרז בסוף 2019.

מי שמכיר את Helm מכיר את זה שה- Templates קשים לקריאה וכתיבה וגם מצריכים Registry לצורך שמירת הגרסאות לדוגמה ב- ChartMuseum או ב- Nexus.

Kustomize נכנס כחלק אינטגרלי ב- kubectl החל מגרסה 1.14, כדי להשתמש ב- Kustomize אלינו ליצור סדר מסויים בתיקיית המקור של התוכנה, לדוגמה:

test/
   └── overlays/
      ├── base/
      │   ├── kustomization.yaml
      │   ├── ca-issuer.yaml
      │   ├── ca-key-pair.yaml
      │   └── nexus-registry-secret.yaml
      ├── development/
      │   ├── kustomization.yaml
      │   ├── deployment.yaml
      │   ├── configMap.yaml
      │   ├── service.yaml
      │   └── ingress.yaml
      └── production/
          ├── kustomization.yaml
          ├── deployment.yaml
          ├── configMap.yaml
          ├── service.yaml
          └── ingress.yaml

בתיקיית base שמורים אובייקטים אשר תקפים לכל הסביבות ובתיקיות המשנה production/development מוחזיקים אובייקטים תלויי סביבה.

להלן דוגמה לקובץ kustomize.yaml בסביבת production.

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: production
commonAnnotations:
  oncallPager: 074-7000131
  organization: Beaver Solutions
commonLabels:
  app: test
  environment: production
bases:
- ../base
resources:
- deployment.yaml
- configMap.yaml
- service.yaml
- ingress.yaml

אז איך פורסים את כל זה ל- kubernetes?

נתחיל מזה שנכין לנו Docker Image מ- jenkins/jnlp-slave עם הכלים הנחוצים לנו לצורך פריסת התוכנה בינהם kubectl ו- kustomize.

נשתמש ב- Image שיצרנו בתור Jenkins Agent שירוץ בתוך ה- Kubernete Cluster בו נרצה לפרוס את התוכנה.

בשלב הפריסה נריץ את הפקודה הבא:

kubectl apply -k test/overlays/production

או

kustomize build test/overlays/production | kubectl apply -f -

רוצים ללמוד ולהתנסות כנסו לכאן.

דילוג לתוכן