פיתוח תוכנה מודרני דורש מחזורי פריסה מהירים, סקלאביליות ורזיליה. קוברנטיס הפכה לפלטפורמת האורקסטרציה המועדפת, המאפשרת ניהול אפליקציות מיכלים סקלאביליות. כאשר זה משולב עם צינורות CI/CD של GitLab, הפריסות של קוברנטיס הופכות לאוטומטיות, חזרות ואמינות.
מאמר זה בוחן את הפרטים הטכניים של הקמת צינורות CI/CD עבור קוברנטיס באמצעות GitLab CI.
דרישות מוקדמות
לפני שתתחיל להגדיר את צינור ה-CI/CD שלך, ודא שהדרישות הבאות מתקיימות:
- חשבון GitLab: גישה למאגר GitLab שבו יוגדר צינור ה-CI/CD.
- קלאסטר קוברנטיס: קלאסטר קוברנטיס קיים כמו מיניקיוב (לבדיקות מקומיות) או קלאסטרים מנוהלים כמו מנוע קוברנטיס של גוגל (GKE), אמזון EKS או אזור AKS.
- kubectl: כלי השורת פקודה של קוברנטיס חייב להיות מותקן ומוגדר כדי לאינטראקציה עם הקלאסטר.
- Helm (אופציונלי): מנהל החבילות של קוברנטיס לפריסה וניהול אפליקציות.
- GitLab Runner: ודא ש-GitLab Runner מותקן ורשום בפרויקט שלך לצורך ביצוע עבודות CI/CD.
- דוקר: נדרש לבניית ודחיפת תמונות מיכלים לרשת מיכלים.
הגדרת אינטגרציה של קוברנטיס עם GitLab
חיבור קלאסטר קוברנטיס
שילוב Kubernetes עם GitLab מאפשר הפצה חלקה וניהול משאבים ישירות מהצינור. עקוב אחר השלבים הבאים:
- עבור ללוח המחוונים של פרויקט GitLab שלך.
- נווט ל תשתיות > אשכולות Kubernetes.
- לחץ על הוסף אשכול Kubernetes והתחבר לאשכול קיים או צור אחד חדש באמצעות ספקי שירות בענן.
- הקצה הרשאות מתאימות ל-GitLab באמצעות בקרת גישה בהתבסס על תפקידים (RBAC).
מkonfigurasi RBAC
RBAC מגדיר הרשאות גישה עבור משאבי Kubernetes. להלן דוגמה של קובץ YAML להגדרת RBAC:
apiVersion v1
kind ServiceAccount
metadata
name gitlab-sa
namespace default
---
apiVersion rbac.authorization.k8s.io/v1
kind ClusterRoleBinding
metadata
name gitlab-cluster-admin
roleRef
apiGroup rbac.authorization.k8s.io
kind ClusterRole
name cluster-admin
subjects
kind ServiceAccount
name gitlab-sa
namespace default
החל את ההגדרה
החל את קובץ ה-YAML באמצעות kubectl
:
kubectl apply -f gitlab-rbac.yaml
צור Token לאימות
חלץ את טוקן חשבון השירות הנדרש עבור GitLab:
kubectl -n default get secret $(kubectl -n default get sa/gitlab-sa -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode
הדבק את הטוקן הזה בהגדרות התצורה של Kubernetes של GitLab.
מkonfigurasi צינור CI/CD של GitLab
הגדר .gitlab-ci.yml
קובץ ההגדרה של GitLab CI מגדיר שלבי צינור, משתנים, ופקודות. להלן דוגמה להגדרה:
image docker20.10
stages
build
test
deploy
variables
KUBE_NAMESPACE default
KUBECONFIG"/root/.kube/config"
IMAGE_TAG $CI_COMMIT_SHA
REGISTRY registry.gitlab.com/username/project
services
docker:dind
before_script
apk add --no-cache curl jq bash git
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.22.0/bin/linux/amd64/kubectl
chmod +x ./kubectl && mv ./kubectl /usr/local/bin/kubectl
"$KUBE_CONFIG" | base64 -d > $KUBECONFIG echo
chmod 600 $KUBECONFIG
build
stage build
script
docker build -t $REGISTRY:$IMAGE_TAG .
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
docker push $REGISTRY:$IMAGE_TAG
unit-test
stage test
script
"Running tests..." echo
./run-tests.sh
deploy
stage deploy
script
kubectl set image deployment/my-app my-app=$REGISTRY:$IMAGE_TAG -n $KUBE_NAMESPACE
only
main
הסבר על ההגדרה
- שלבים: הצינור מחולק לשלבי בנייה, בדיקה והצגה לביצוע מודולרי.
- משתנים: משתני סביבה כמו תגי תמונה ומרחבי שמות פשוטים ניהול תצורה.
- before_script: מתקין תלות ומגדיר אימות Kubernetes.
- סימון תמונה: משתמש ב- commit SHA כדי לזהות באופן ייחודי כל גרסת תמונה.
- איחסון: מעדכן איחסון Kubernetes על ידי הגדרת תמונת הקונטיינר.
ניהול סודות
GitLab CI תומך בניהול סודות מאובטח באמצעות משתנים:
- נווט אל הגדרות > CI/CD > משתנים.
- הוסף משתנים נדרשים כמו
KUBE_CONFIG
,CI_REGISTRY_USER
, ו־CI_REGISTRY_PASSWORD
.
קידוד של kubeconfig
לפני הוספתו כמשתנה:
cat ~/.kube/config | base64 | tr -d '\n'
הוסף את התוצאה כ־KUBE_CONFIG
ב-GitLab.
איחסון Helm
Helm מפשט את האיחסון של Kubernetes עם תרשימים שניתנים לשימוש מחדש. דוגמה לתצורת Helm:
apiVersion v2
name my-app
version1.0.0
appVersion1.0.0
image
repository registry.gitlab.com/username/project
tag latest
service
type ClusterIP
port80
הוסף פקודות Helm לצינור:
deploy
stage deploy
script
helm upgrade --install my-app ./helm-chart --set image.tag=$IMAGE_TAG
כלי ניטור ואיתור באגים
ניטור מעמד הצינור ב-GitLab תחת CI/CD > צינורות. השתמש בכלים כגון:
- Prometheus ו-Grafana: למדידת וויזואליזציה.
- לוח בקרת Kubernetes: ניהול אשכול.
- kubectl logs: קבלת יומני התקן.
kubectl logs -f deployment/my-app
מסקנה
מאמר זה מתאר תצורת צינורות CI/CD עבור Kubernetes עם GitLab CI. זה כולל דרישות מוקדמות, הגדרות YAML, ניהול סודות, התקנות של Helm, וכלים לניטור. עם תצורה זו, מפתחים יכולים לבנות, לבדוק, ולהפיץ אפליקציות מבודדות ביעילות ובאמינות.
Source:
https://dzone.com/articles/cicd-pipelines-for-kubernetes-using-gitlab-ci