במאמר הזה מוסבר איך להתקין את Kf ואת התלות שלו באשכול מקומי שנוצר כחלק מ-Google Distributed Cloud, ב-VMware או בשרת פיזי.
אם אתם כבר מכירים את תהליך ההתקנה של Kf באשכול GKE ב- Google Cloud, ההבדלים העיקריים בתהליך ההתקנה בשרתים מקומיים הם:
- לא צריך להתקין את Config Connector להתקנה מקומית.
- התהליך בשרת המקומי משתמש בפרטי כניסה של Docker במקום ב-Workload Identity.
לפני שמתחילים
דרישות ל-Google Distributed Cloud
אשכול משתמש שעומד בדרישות של Cloud Service Mesh.
ההגדרה מופעלת לרישום ביומן ולמעקב.
- VMware.
- Bare metal.
רשום במאגר מכשירים:
דרישות לגבי Kf
Tekton לשימוש ב-Kf. זה לא שירות שפונה למשתמשים.
חשבון שירות ייעודי של Google.
הכנת אשכול חדש מקומי ושירותים קשורים
הגדרה של משתני סביבה
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
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export DOCKER_SERVER=YOUR_DOCKER_SERVER_URL
export SA_NAME=${CLUSTER_NAME}-sa
export SA_EMAIL=${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comWindows 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
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name DOCKER_SERVER -Value YOUR_DOCKER_SERVER_URL
Set-Variable -Name SA_NAME -Value ${CLUSTER_NAME}-sa
Set-Variable -Name SA_EMAIL -Value ${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comהגדרת חשבון שירות
יוצרים את Google Cloud חשבון השירות (GSA) ואת המפתח של חשבון השירות שמשמשים את הבנייה לקריאה/כתיבה מ-Container Registry. השלב הזה שונה אם אתם משתמשים במאגר תמונות (container registry) אחר, כי יכול להיות שיש לו דרך אחרת להשיג את פרטי הכניסה לגישה למאגר.
יוצרים את חשבון השירות שמשמש את Kf:
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"מקצים לחשבון השירות את התפקיד
storage.adminשנדרש לקריאה/כתיבה מ-Container Registry:gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin"יוצרים את המפתח של חשבון השירות:
temp_dir=$(mktemp -d)
key_path=${temp_dir}/key.jsongcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}key_json=$(cat ${key_path})rm -rf ${temp_dir}
התקנת יחסי תלות של תוכנה באשכול
מתקינים את Cloud Service Mesh.
כדי להתקין את Cloud Service Mesh, פועלים לפי מדריך ההתקנה של Cloud Service Mesh.
אם אתם משתמשים ב-Google Distributed Cloud, צריך להגדיר את
loadBalancerIPלכתובת IP שהוקצתה לאשכול, כמו שמתואר במאמר הגדרת כתובות IP חיצוניות ל-Google Distributed Cloud.
מתקינים את 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.9.0/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
הפקודה הזו מתקינה את
kfלכל המשתמשים במערכת.gcloud storage cp gs://kf-releases/v2.9.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.9.0/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
הפקודה הזו מורידה את
kfלספרייה הנוכחית. אם רוצים להפעיל אותו מכל מקום אחר ולא רק מהספרייה הנוכחית, צריך להוסיף אותו לנתיב.gcloud storage cp gs://kf-releases/v2.9.0/kf-windows.exe kf.exeמתקינים את האופרטור:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/operator.yaml"
מגדירים את האופרטור ל-Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/kfsystem.yaml"
יצירת סוד ב-Kubernetes לפרטי הכניסה של Docker
יוצרים סוד של Kubernetes במרחב השמות של Kf עבור פרטי הכניסה של Docker שיצרתם למעלה בהגדרת חשבון שירות. לאחר מכן, מתקנים את הסוד של Kubernetes בפריסת subresource-apiserver להעלאות של מקורות.
מפעילים ומעדכנים את אופרטור Kf כדי להשתמש ב-Container Registry כמאגר התמונות.
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': {'featureFlags': {'enable_appdevexperience_builds': true}, 'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"export CONTAINER_REGISTRY=gcr.io/${CLUSTER_PROJECT_ID}kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry':'${CONTAINER_REGISTRY}'}}}]"מוודאים שמרחב השמות
kfנוצר על ידי אופרטור Kf. השלמת הפעולה עשויה להימשך כמה דקות.kubectl get namespace kf
יוצרים סוד של Kubernetes לשימוש עם רשומות Docker.
export secret_name=kf-gcr-key-${RANDOM}kubectl -n kf create secret docker-registry ${secret_name} \ --docker-username=_json_key --docker-server ${DOCKER_SERVER} \ --docker-password="${key_json}"מעדכנים את אופרטור Kf כדי לציין את הסוד שמכיל את פרטי הכניסה של Docker.
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
אימות ההתקנה
kf doctor --retries=20