זהו מדריך בסיסי לשילוב של 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-compute@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. לדוגמה, תצורת ה-build הבאה של Cloud Build:
- יוצר קובץ אימג' של Docker מ-Dockerfile שנמצא בספריית הבסיס של מאגר Git, ומתייג אותו באמצעות ה-SHA של Git.
- הפקודה מעלה את התמונה המתויגת אל 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.