לפני שמתחילים
הדרישות לאשכול GKE
אופציונלי, אבל מומלץ: האשכול צריך להיות ייעודי ל-Kf. אנחנו ממליצים להתקין רק את Kf ואת התלויות שלו כדי לשמור על מטריצת התאימות.
לפחות ארבעה צמתים. אם צריך להוסיף צמתים, אפשר לעיין במאמר בנושא שינוי הגודל של אשכול.
סוג המכונה המינימלי שכולל לפחות ארבעה vCPU, כמו
e2-standard-4. אם לסוג המכונה של האשכול אין לפחות ארבע ליבות וירטואליות (vCPU), צריך לשנות את סוג המכונה כמו שמתואר במאמר העברת עומסי עבודה לסוגי מכונות שונים.אופציונלי, אבל מומלץ: רישום האשכול לערוץ הפצה. אם יש לכם גרסת GKE סטטית, פועלים לפי ההוראות במאמר רישום של אשכול קיים בערוץ הפצה.
Workload Identity מופעל.
דרישות לגבי Kf
בדקו את הרשאות הגישה של רכיבים ב-Kf בדף הארכיטקטורה והתלויות של Kf.
במטריצת התלות מפורטות הגרסאות הספציפיות.
Tekton לשימוש ב-Kf; זה לא שירות שפונה למשתמשים
חשבון שירות ייעודי של Google
הפעלת התמיכה ב-Compute Engine
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- מפעילים את Compute Engine API.
הפעלת תמיכה ב-Artifact Registry
- מפעילים את Artifact Registry API.
הפעלה והגדרה של GKE
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הכנת אשכול GKE חדש ושירותים קשורים
הגדרה של משתני סביבה
Linux ו-Mac
export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export COMPUTE_ZONE=us-central1-a
export COMPUTE_REGION=us-central1
export CLUSTER_LOCATION=${COMPUTE_ZONE} # Replace ZONE with REGION to switch
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
Windows PowerShell
Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name COMPUTE_ZONE -Value us-central1-a Set-Variable -Name COMPUTE_REGION -Value us-central1 Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE # Replace ZONE with REGION to switch Set-Variable -Name NODE_COUNT -Value 4 Set-Variable -Name MACHINE_TYPE -Value e2-standard-4 Set-Variable -Name NETWORK -Value default
הגדרה של חשבון שירות
יוצרים Google Cloud חשבון שירות שישויך לחשבון שירות של Kubernetes באמצעות Workload Identity. כך לא צריך ליצור ולהוסיף מפתח של חשבון שירות.
יוצרים את חשבון השירות שבו Kf ישתמש.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"יוצרים תפקיד IAM חדש בהתאמה אישית.
gcloud iam roles create serviceAccountUpdater \ --project=${CLUSTER_PROJECT_ID} \ --title "Service Account Updater" \ --description "This role only updates members on a GSA" \ --permissions iam.serviceAccounts.get,iam.serviceAccounts.getIamPolicy,iam.serviceAccounts.list,iam.serviceAccounts.setIamPolicyמאפשרים לחשבון השירות לשנות את המדיניות שלו. הוא ישמש את בקר Kf להוספת מרחבי שמות חדשים למדיניות, ויאפשר שימוש חוזר בזהות עומס העבודה.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="projects/${CLUSTER_PROJECT_ID}/roles/serviceAccountUpdater"נותנים תפקיד של מדדי מעקב לגישת כתיבה ל-Cloud Monitoring.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"הקצאת תפקיד של רישום ביומן לגישת כתיבה ל-Cloud Logging.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
יצירת אשכול GKE
gcloud container clusters create ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION} \
--num-nodes=${NODE_COUNT} \
--machine-type=${MACHINE_TYPE} \
--disk-size "122" \
--network=${NETWORK} \
--addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \
--enable-dataplane-v2 \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--enable-autorepair \
--enable-autoupgrade \
--scopes cloud-platform \
--release-channel=regular \
--workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
--service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"הגדרת כללים לחומת האש
כדי להשתמש ב-Kf, צריך לפתוח כמה יציאות בחומת האש. לצומת הראשי צריכה להיות אפשרות לתקשר עם פודים ביציאות 80, 443, 8080, 8443 ו-6443.
הפעלה של Workload Identity
אחרי שיצרתם חשבון שירות ואשכול GKE, צריך לשייך את מרחב השמות של הזהות של האשכול לאשכול.
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"אשכול GKE ליעד
מגדירים גישה לשורת הפקודה של kubectl על ידי הרצת הפקודה הבאה.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION}יצירת מאגר Artifact Registry
יוצרים Artifact Registry לאחסון קובצי אימג' של קונטיינרים.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --repository-format=docker \ --location=${COMPUTE_REGION}מעניקים לחשבון השירות הרשאה במאגר Artifact Registry.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'
התקנת יחסי תלות של תוכנה באשכול
מתקינים את Cloud Service Mesh גרסה 1.12.
- פועלים לפי מדריך ההתקנה של Cloud Service Mesh, כולל השלבים ליצירת שער כניסה.
מתקינים את Config Connector.
מורידים את קובץ ה-tar של Config Connector Operator שנדרש.
מחלצים את קובץ ה-TAR.
tar zxvf release-bundle.tar.gzמתקינים את האופרטור של Config Connector באשכול.
kubectl apply -f operator-system/configconnector-operator.yamlמגדירים את האופרטור Config Connector.
מעתיקים את קוד ה-YAML הבא לקובץ בשם
configconnector.yaml:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PRiam.gserviceaccount.comOJECT_ID}.
מחילים את ההגדרה על האשכול.
kubectl apply -f configconnector.yaml
לפני שממשיכים, מוודאים ש-Config Connector מותקן באופן מלא.
Config Connector מריץ את כל הרכיבים שלו במרחב שמות בשם
cnrm-system. מריצים את הפקודה הבאה כדי לוודא שה-Pods מוכנים:kubectl wait -n cnrm-system --for=condition=Ready pod --all
אם Config Connector מותקן בצורה נכונה, הפלט אמור להיראות כך:
pod/cnrm-controller-manager-0 condition met pod/cnrm-deletiondefender-0 condition met pod/cnrm-resource-stats-recorder-86858dcdc5-6lqzb condition met pod/cnrm-webhook-manager-58c799b8fb-kcznq condition met pod/cnrm-webhook-manager-58c799b8fb-n2zpx condition met
מגדירים את Workload Identity.
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
מתקינים את Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.1/release.yaml"
התקנה של Kf
מתקינים את Kf CLI:
Linux
הפקודה הזו מתקינה את Kf CLI לכל המשתמשים במערכת. כדי להתקין אותו רק לעצמכם, פועלים לפי ההוראות בכרטיסייה Cloud Shell.
gcloud storage cp gs://kf-releases/v2.10.0/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
הפקודה הזו מתקינה את
kfלכל המשתמשים במערכת.gcloud storage cp gs://kf-releases/v2.10.0/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
הפקודה הזו מתקינה את
kfבמכונת Cloud Shell אם משתמשים ב-bash. יכול להיות שיהיה צורך לשנות את ההוראות עבור מעטפות אחרות.mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.10.0/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
הפקודה הזו מורידה את
kfלספרייה הנוכחית. אם רוצים להפעיל אותו מכל מקום אחר ולא רק מהספרייה הנוכחית, צריך להוסיף אותו לנתיב.gcloud storage cp gs://kf-releases/v2.10.0/kf-windows.exe kf.exeמתקינים את האופרטור:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.10.0/operator.yaml"
מגדירים את האופרטור ל-Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.10.0/kfsystem.yaml"
מגדירים סודות וערכי ברירת מחדל:
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
אימות ההתקנה
kf doctor --retries=20
הסרת המשאבים
השלבים האלה אמורים להסיר את כל הרכיבים שנוצרו בקטע יצירה והכנה של אשכול GKE חדש.
מחיקה של חשבון שירות של Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comמחיקת קישורי מדיניות IAM:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECTiam.gserviceaccount.com_ID}." \ --role="roles/iam.serviceAccountAdmin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-iam.gserviceaccount.comsa@${CLUSTER_PROJECT_ID}." \ --role="roles/monitoring.metricWriter"מחיקת מאגר תמונות של קונטיינרים:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}להסיר את Kf:
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': false, }}]"(אופציונלי) מחיקת אשכול GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}