במאמר הזה נסביר איך להגדיר ענן וירטואלי פרטי (VPC) קיים ב-AWS עם תת-רשתות ציבוריות ופרטיות, ולהריץ את anthos-gke כדי להשלים את ההתקנה של שירות ניהול.
לפני שמתחילים
כדי לבצע את השלבים הבאים, תצטרכו:
הרשאות AWS IAM כפי שמתואר בדרישות.
ענן וירטואלי פרטי קיים ב-AWS עם:
- לפחות רשת משנה ציבורית אחת.
- לפחות רשת משנה פרטית אחת.
- שער לאינטרנט עם נתיב לתת-הרשת הציבורית.
- שער NAT עם נתיב לרשת המשנה הפרטית.
- שמות מארחים של DNS מופעלים.
- לא מוגדר ערך מותאם אישית של
domain-nameבקבוצות האפשרויות של DHCP. מידע נוסף מופיע במאמר פתרון בעיות. GKE ב-AWS לא תומך בערכים אחרים מלבד שמות הדומיין שמוגדרים כברירת מחדל ב-EC2.
מידע נוסף על הגדרת AWS VPC זמין במאמר בנושא VPC עם תת-רשתות ציבוריות ופרטיות.
מזהי רשתות המשנה הציבוריות והפרטיות של ה-VPC הקיים. לדוגמה,
subnet-1234567890abcdefg.בגרסאות אשכול 1.20 ומטה, נדרשת קבוצת אבטחה של AWS שמאפשרת כניסה של SSH (יציאה 22) מקבוצות האבטחה או מטווח כתובות ה-IP שבהן תנהלו את ההתקנה של GKE ב-AWS.
בגרסאות של אשכולות 1.21 ומעלה, קבוצת אבטחה של AWS שמאפשרת חיבורים של Konnectivity (יציאה 8132) יוצאים מטווח כתובות ה-IP של ה-VPC שבו נמצאים מאגרי הצמתים של GKE ב-AWS.
יצירת סביבת העבודה
יוצרים קובץ בשם
anthos-gke.yamlבכלי לעריכת טקסט. מדביקים את התוכן הבא בקובץ.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSManagementService metadata: name: management spec: version: aws-1.14.1-gke.0 region: AWS_REGION authentication: awsIAM: adminIdentityARNs: - ADMIN_AWS_IAM_ARN kmsKeyARN: KMS_KEY_ARN databaseEncryption: kmsKeyARN: DATABASE_KMS_KEY_ARN securityGroupIDs: - SECURITY_GROUP_IDS googleCloud: projectID: GCP_PROJECT_ID serviceAccountKeys: managementService: MANAGEMENT_KEY_PATH connectAgent: HUB_KEY_PATH node: NODE_KEY_PATH existingVPC: subnetID: VPC_SUBNET_ID allowedSSHSecurityGroupIDs: - SSH_SECURITY_GROUP # Optional fields rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE iops: ROOT_VOLUME_IOPS kmsKeyARN: ROOT_VOLUME_KEY bastionHost: subnetID: BASTION_HOST_SUBNET_ID allowedSSHCIDRBlocks: - SSH_CIDR_BLOCK rootVolume: # Optional kmsKeyARN: BASTION_VOLUME_KEY proxy: PROXY_JSON_FILEמחליפים את הערכים הבאים:
- AWS_REGION עם האזור ב-AWS שבו רוצים להריץ את האשכול.
- ADMIN_AWS_IAM_ARN עם שם משאב Amazon של מפתח AWS IAM של האדמין.
- KMS_KEY_ARN עם שם משאב Amazon של מפתח AWS KMS שמאבטח את הנתונים של שירות הניהול כששירות הניהול נוצר.
- DATABASE_KMS_KEY_ARN עם שם משאב Amazon של מפתח AWS KMS שמאבטח את מסדי הנתונים של
etcd. - SECURITY_GROUP_IDS עם מזהים נוספים של קבוצות אבטחה שמורשים לגשת למכונות הווירטואליות של שירות הניהול.
- GCP_PROJECT_ID עם Google Cloud הפרויקט שמארח את סביבת GKE ב-AWS.
- MANAGEMENT_KEY_PATH עם המיקום של Google Cloudמפתח חשבון השירות לניהול.
- HUB_KEY_PATH עם המיקום של Google Cloud Connect מפתח חשבון השירות.
- NODE_KEY_PATH עם המיקום של מפתח חשבון השירות של הצומת GKE ב-AWS.
- VPC_SUBNET_ID במזהה רשת המשנה שבה פועל שירות הניהול.
- SSH_SECURITY_GROUP עם רשימת מזהי קבוצות האבטחה שמורשות גישת SSH במופעים של שירות הניהול.
אופציונלי: אם רוצים להצפין את אמצעי האחסון של שירות הניהול, מחליפים את הערכים הבאים:
- ROOT_VOLUME_SIZE עם גודל עוצמת הקול בגיגה-בייט עבור שירות הניהול. לדוגמה,
10. - ROOT_VOLUME_TYPE עם סוג הנפח EBS.
לדוגמה,
gp3. - ROOT_VOLUME_IOPS עם הנפח של פעולות הקלט/פלט שהוקצו לכל שנייה (IOPS) עבור אמצעי האחסון. ההגדרה תקפה רק אם
volumeTypeהואGP3. מידע נוסף זמין במאמר בנושא כרכים של SSD לשימוש כללי (gp3). - ROOT_VOLUME_KEY עם שם משאב Amazon של מפתח AWS KMS שמצפין את נפחי הבסיס של מופע שירות הניהול. מידע נוסף מופיע במאמר בנושא שימוש במפתח CMK בניהול הלקוח להצפנת אמצעי אחסון.
אופציונלי: אם רוצים ליצור יעד מבוצר (bastion host) כדי לגשת לסביבת GKE ב-AWS באמצעות מנהרת SSH, מחליפים את הערכים הבאים:
- BASTION_HOST_SUBNET_ID במזהה רשת המשנה שבה פועל שרת הבסטיון. מוודאים ש-VPC_SUBNET_ID מאפשר חיבורים נכנסים מ-BASTION_HOST_SUBNET_ID.
- SSH_CIDR_BLOCK עם בלוק ה-CIDR שממנו מארח ה-bastion מאפשר חיבור SSH נכנס. לדוגמה:
203.0.113.0/24. אם רוצים לאפשר SSH מכל כתובת IP, משתמשים ב-0.0.0.0/0. - BASTION_VOLUME_KEY עם שם משאב Amazon של מפתח AWS KMS שמאבטח את נפח הבסיס של ה-bastion.
אופציונלי: אם רוצים תעבורה ישירה דרך פרוקסי HTTP, מחליפים את הערך הבא:
- PROXY_JSON_FILE עם הנתיב היחסי של קובץ התצורה של ה-proxy. אם אתם לא משתמשים ב-Proxy, צריך להסיר את השורה הזו.
מריצים את הפקודה
anthos-gke aws management initכדי ליצור קובצי תצורה:anthos-gke aws management initמריצים את הפקודה
anthos-gke aws management applyכדי ליצור את האשכול.anthos-gke aws management applyיכול להיות שיחלפו עד עשר דקות עד שהפקודה
anthos-gke aws management applyתושלם. כשהתהליך שלanthos-gkeיסתיים, שירות הניהול יפעל ב-AWS.
תיוג של רשתות המשנה בשם האשכול
אם אתם משתמשים בתתי-רשתות קיימות של AWS עם GKE ב-AWS ורוצים ליצור מאזני עומסים, אתם צריכים לתייג את ה-VPC ואת תתי-הרשתות בשם של שירות הניהול שלכם. אם יצרתם את ה-VPC באמצעות anthos-gke או שכבר תייגתם את תת-הרשתות, אתם יכולים לדלג על השלב הזה.
כדי לתייג את רשתות המשנה:
עוברים לספרייה עם ההגדרה של GKE ב-AWS. יצרתם את הספרייה הזו כשהתקנתם את שירות הניהול.
cd anthos-aws
מייצאים את מזהה האשכול בתור משתנה הסביבה
$CLUSTER-ID. בוחרים את הגרסה של Terraform ומריצים את הפקודות הבאות:Terraform 0.12, 0.13
export CLUSTER_ID=$(terraform output cluster_id)Terraform 0.14.3 ואילך
export CLUSTER_ID=$(terraform output -raw cluster_id)מייצאים את מזהה ה-VPC ב-AWS כמשתנה הסביבה
$VPC_ID. בוחרים את הגרסה של Terraform ומריצים את הפקודות הבאות:Terraform 0.12, 0.13
export VPC_ID=$(terraform output vpc_id)Terraform 0.14.3 ואילך
export VPC_ID=$(terraform output -raw vpc_id)אפשר לקבל את המזהים של תת-הרשתות הפרטיות באמצעות כלי ה-CLI
aws.aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output textמתייגים את רשתות המשנה באמצעות מזהה האשכול. מריצים את הפקודה הבאה לכל אחת מרשתות המשנה.
aws ec2 create-tags \ --resources SUBNET_IDS \ --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_IDמחליפים את SUBNET_IDS ברשימה של מזהי רשתות המשנה, מופרדים ברווחים. לדוגמה,
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef.
מתבצעת התחברות לשירות הניהול
בקטע הזה, אתם יוצרים קישור לשירות הניהול שלכם. אפשר להשתמש ביעד מבוצר (bastion host) כדי להעביר את הפקודות בטנלינג. אם יש לכם חיבור ישיר ל-AWS VPC, דלגו אל יצירת פרטי כניסה וחיבור.
התחברות ליעד מבוצר (bastion host)
אם אתם משתמשים ביעד מבוצר (bastion host) כדי להגדיר את מנהרת ה-SSH, קודם צריך להגדיר את המארח ב-anthos-gke.yaml. לאחר מכן, יוצרים סקריפט כדי לפתוח את המנהרה, כך:
משתמשים ב-
terraformכדי ליצור סקריפט שפותח מנהרת SSH למארח bastion.terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.shTerraform יוצר סקריפט
bastion-tunnel.shשמשתמש במפתח ה-SSH של שרת הבסטיון (~/.ssh/anthos-gke).כדי לפתוח את המנהרה, מריצים את הסקריפט
bastion-tunnel.sh. המנהרה מעבירה את הנתונים מ-localhost:8118ליעד המבוצר (bastion host).כדי לפתוח מנהרה ליעד המבוצר (bastion host), מריצים את הפקודה הבאה:
./bastion-tunnel.sh -Nההודעות ממנהרת ה-SSH מופיעות בחלון הזה. כשמוכנים לסגור את החיבור, מפסיקים את התהליך באמצעות Control+C או סוגרים את החלון.
עוברים לספרייה עם ההגדרה של GKE ב-AWS.
cd anthos-aws
יצירת פרטי כניסה וחיבור
במסמכי התיעוד של GKE ב-AWS מניחים שאתם משתמשים במנהרת SSH ביציאה localhost 8118 כדי לגשת לאשכול. אם אתם משתמשים בסוג אחר של חיבור ל-VPC, כמו חיבור ישיר, VPN או שיטה אחרת, אתם יכולים להסיר את השורה env HTTP_PROXY=http://localhost:8118 מהפקודות.
יצירת
kubeconfigלאימות. משתמשים ב-anthos-gkeכדי לצרף פרטי כניסה להגדרה שמאוחסנת ב-~/.kube/config.anthos-gke aws management get-credentialsמוודאים שאפשר להתחבר לשירות הניהול באמצעות
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
kubectlמדפיס את הסטטוס של האשכול.
המאמרים הבאים
- יצירת אשכול משתמשים
- שימוש ב-proxy עם GKE ב-AWS.
- משנים את ההגדרה של
kubectlכדי להתחבר ל-GKE ב-AWS עם פחות אפשרויות של שורת פקודה. - כאן מפורטות קבוצות האבטחה הנדרשות לניהול שירות GKE ב-AWS ולניהול אשכולות משתמשים.