זהו מדריך בסיסי לשילוב של Cloud Build עם שער Connect, שמאפשר ליצור צינור עיבוד נתונים של CI/CD לאשכולות GKE שפועלים בסביבות שונות.
המדריך הזה מבוסס על ההנחה שאתם מכירים את הקטעים הקודמים במדריך ל-Connect gateway, וגם את Cloud Build. ההוראות האלה מתבססות על cloud-sdk תמונה של כלי הבנייה, שנדרש בה סקריפטינג קל (כפי שמוסבר בהמשך).
לפני שמתחילים
ודאו שכלי שורת הפקודה הבאים מותקנים:
- הגרסה העדכנית של Google Cloud CLI, שכוללת את
gcloud, כלי שורת הפקודה לאינטראקציה עם Google Cloud. -
kubectl, כלי שורת הפקודה לאינטראקציה עם Kubernetes.
אם אתם משתמשים ב-Cloud Shell כסביבת המעטפת שלכם לאינטראקציה עם Google Cloud, הכלים האלה מותקנים בשבילכם.
- הגרסה העדכנית של Google Cloud CLI, שכוללת את
מוודאים שאתחלתם את ה-CLI של gcloud לשימוש בפרויקט.
מוודאים שהפעלתם בפרויקט את שער Connect ואת ממשקי ה-API הנדרשים האחרים, כמו שמתואר במדריך ההגדרה.
1. הקצאת תפקידי IAM לחשבון השירות ב-Cloud Build
כברירת מחדל, Cloud Build משתמש בחשבון שירות Google Cloud כדי להריץ את כל העבודות הנדרשות, עם כתובת בפורמט MY_PROJECT_NUMBER @cloudbuild.gserviceaccount.com. אפשר למצוא את כתובת האימייל של חשבון השירות של הפרויקט בקטע Cloud Build > הגדרות במסוףGoogle Cloud .

פועלים לפי ההוראות שבקטע הענקת הרשאות IAM במדריך להגדרת שער כדי להעניק לחשבון הזה את התפקידים הנדרשים בפרויקט.
2. ציון מדיניות RBAC לחשבון השירות ב-Cloud Build
פועלים לפי ההוראות שבקטע הגדרת מדיניות RBAC במדריך להגדרת שער כדי לתת לחשבון השירות של Cloud Build את ההרשאות המתאימות בכל האשכולות שרוצים להשתמש בהם.
מומלץ מאוד להשתמש ב-Policy Controller כדי לפרוס ולתחזק מדיניות RBAC בכמה אשכולות.
3. יצירת צינור עיבוד נתונים ב-Cloud Build
כדי להגדיר את צינור עיבוד הנתונים, צריך קובץ cloudbuild.yaml בתהליך העבודה של Cloud Build. הדוגמה הבאה היא פשוטה ומציגה פריסה של מניפסט סטטי לשני אשכולות שונים (אחד של GKE ב- Google Cloudואחד ב-VMware). מידע נוסף על הגדרת צינור עיבוד נתונים ב-Cloud Build זמין במסמכי התיעוד של Cloud Build.
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: Deploy to cluster on Google Cloud
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-gke-cluster && \
kubectl --kubeconfig gateway-kubeconfig apply -f myapp.yaml
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: Deploy to cluster on VMware
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-vmware-cluster && \
kubectl --kubeconfig gateway-kubeconfig apply -f myapp.yaml
אפשר להשתמש בכל תהליך עבודה שרוצים ב-myapp.yaml כדי להגדיר אשכולות. לדוגמה:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
אחרי שמעלים את ההגדרה למאגר Git, תהליך העבודה של Cloud Build פורס את האפליקציה הנדרשת באשכולות שצוינו. אפשר גם להגדיר את Cloud Build לזיהוי שינויים במאגר Git המקושר כדי להפעיל עדכון אוטומטי של האפליקציה או התקנה אוטומטית.
שימוש מתקדם
מכיוון שהדוגמה שלנו מבוססת על מושגים סטנדרטיים של Cloud Build, אתם יכולים להתאים אותה אישית לצרכים הספציפיים שלכם בתחום ה-CI/CD. לדוגמה, אם רוצים ליצור תמונה מאפס ולפרוס אותה בצינור העיבוד, אפשר להשתמש בgke-deploy מצב ההכנה של כלי ה-builder. לדוגמה, הגדרת Cloud Build הבאה:
- יוצר קובץ אימג' של Docker מ-Dockerfile שנמצא בספריית הבסיס של מאגר Git, ומתייג אותו באמצעות Git SHA.
- הפקודה מעלה את התמונה המתויגת אל Container Registry של הפרויקט.
- מכין את מניפסטים של Kubernetes בספרייה
manifestעל ידי הגדרת תגי התמונות הנכונים, ומציב את מניפסטים הפלט ב-output/expanded. - פריסה לאשכול GKE באתר באמצעות Connect gateway.
steps:
- name: 'gcr.io/cloud-builders/docker'
id: "Build Container"
args: ['build', '--tag=gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA', '.']
- name: 'gcr.io/cloud-builders/docker'
id: "Push to GCR"
args: ['push', 'gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA']
- name: "gcr.io/cloud-builders/gke-deploy"
id: "Prepare Manifests"
args:
- prepare
- --filename=manifests/
- --image=gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: "Deploy to cluster on VMware
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-vmware-cluster && \
kubectl --kubeconfig=gateway-kubeconfig apply -f output/expanded
שימו לב שבדוגמה הזו היינו צריכים ליצור סוד למשיכת תמונות כדי לאשר לאשכול GKE המקומי למשוך תמונות מ-Container Registry.
רעיונות נוספים לשימוש ב-Cloud Build זמינים במסמכי התיעוד של Cloud Build.