AWSManagementService

המשאב AWSManagementServiceמכיל מידע על ההגדרות של שירות הניהול של GKE ב-AWS.

לפני שיוצרים את שירות הניהול, מגדירים קובץ YAML בשם anthos-gke.yaml. הכלי anthos-gke משתמש בהגדרה כשיוצרים את שירות הניהול.

התוכן של קובץ anthos-gke.yaml תלוי בשיטה שבה משתמשים כדי ליצור ענן וירטואלי פרטי (VPC) ייעודי ב-AWS או כדי להשתמש בVPC קיים ב-AWS.anthos-gke

VPC ייעודי

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  dedicatedVPC:
    vpcCIDRBlock: VPC_CIDR_BLOCK
    availabilityZones:
    - ZONE_1
    - ZONE_2
    - ZONE_3
    privateSubnetCIDRBlocks:
    - PRIVATE_CIDR_BLOCK_1
    - PRIVATE_CIDR_BLOCK_2
    - PRIVATE_CIDR_BLOCK_3
    publicSubnetCIDRBlocks:
    - PUBLIC_CIDR_BLOCK_1
    - PUBLIC_CIDR_BLOCK_2
    - PUBLIC_CIDR_BLOCK_3
  # Optional section
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  tags:
    tag-name: tag-value
  bastionHost:
    allowedSSHCIDRBlocks:
    - SSH_CIDR_BLOCK
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

VPC קיים

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  securityGroupIDs:
    - SECURITY_GROUP_IDS
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  existingVPC:
    subnetID: [MANAGEMENT_SUBNET_ID]
    allowedSSHSecurityGroupIDs: [SSH_SECURITY_GROUPS]
  # Optional fields
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  ubuntuRepositoryMirror: 'packages.cloud.google.com'
  bastionHost:
    subnetID: [BASTION_HOST_SUBNET_ID]
    allowedSSHCIDRBlocks:
    - [SSH_CIDR_BLOCK]
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  tags:
    tag-name: tag-value
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

בקטעים הבאים מתוארים השדות האלה.

spec.version

הערך של spec.version הוא הגרסה של שירות הניהול ש-anthos- gke יוצר. הגרסה תואמת לפלט של anthos-gke version. לדוגמה, aws-1.14.1-gke.0.

spec.region

הערך של spec.region הוא אזור AWS שבו רוצים לפרוס את שירות הניהול. לדוגמה, us-east-1.

spec.authentication.awsIAM

הערך של spec.authentication.awsIAM.adminIdentityARNs הוא מחרוזת עם שם המשאב של אמזון (ARN) של משתמש AWS IAM עם הרשאות ליצירת שירות ניהול של GKE ב-AWS. לדוגמה: arn:aws:iam::123456789:user/someuser.

spec.kmsKeyARN

הערך של spec.kmsKeyARN הוא מחרוזת עם שם המשאב (ARN) או הכינוי של מפתח AWS KMS שנוצר בדרישות המוקדמות. ‫GKE ב-AWS משתמש במפתח להצפנת מעטפת. לדוגמה, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.databaseEncryption

הערך של spec.databaseEncryption.kmsKeyARN הוא מחרוזת עם שם משאב Amazon‏ (ARN) או כינוי מפתח של מפתח AWS KMS שמשמש את GKE ב-AWS להצפנת סודות בשכבת האפליקציה באשכולות. לדוגמה, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.securityGroupIDs

הערך של spec.securityGroupIDs הוא רשימה של מזהי קבוצות אבטחה נוספים ב-AWS שהוקצו למכונה הווירטואלית של שירות הניהול. לדוגמה, [sg-00123456789abcd, sg-00123456789def1]`.

spec.dedicatedVPC

השדה הזה מייצג את הגדרות ה-VPC הרצויות.

שם תיאור סוג דוגמה
vpcCIDRBlock בלוק ה-CIDR של ה-VPC הרצוי ב-AWS. המספר צריך להיות בין ‎ /16 ל-‎ /28 ביטים. string 10.0.0.0/16
availabilityZones אזורי זמינות לפריסת רפליקות של מישור הבקרה. לכל אזור תהיה רשת משנה משלו, ויהיה צורך בבלוק CIDR נפרד. list(string) ‫[us-east-1a, us-east-1b]
privateSubnetCIDRBlocks בלוק CIDR לתת-רשתות פרטיות ב-VPC בכל אזור זמינות. צריך להיות תת-קבוצה של vpcCIDRBlock. צריכה להיות לכם תת-רשת אחת לכל אזור זמינות. list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks בלוק CIDR לתת-רשתות ציבוריות ב-VPC בכל אזור זמינות. צריך להיות תת-קבוצה של vpcCIDRBlock. צריכה להיות לכם תת-רשת אחת לכל אזור זמינות. list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks בלוקים של CIDR שמהם מותרת גישת SSH נכנסת. השדה הזה הוצא משימוש ב-GKE ב-AWS 1.5. משתמשים ב-spec.bastionHost בגרסה 1.5 ואילך. string [104.132.0.0/14]

spec.existingVPC

השדות בקטע spec.existingVPC משמשים להגדרת GKE ב-AWS לשימוש ב-AWS VPC קיים.

שם תיאור סוג דוגמה
subnetID מזהה רשת המשנה שבה פועל שירות הניהול. string subnet-00123456789ab
allowedSSHSecurityGroupIDs רשימה של מזהי קבוצות אבטחה שמותרת להן גישת SSH ב-VPC. list(string) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

השדות בקטע spec.googleCloud configure your Google Cloud project ו-IAM service account keys.

שם תיאור סוג דוגמה
projectID Google Cloud Google Cloud פרויקט. string my-gcp-project-id
serviceAccountKeys נתיבי קבצים אל מפתחות של חשבונות שירות. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

השדות שמופיעים בקטע spec.googleCloud.serviceAccountKeys כוללים נתיבים של קבצים מקומיים למפתחות של חשבונות שירות ב-GCP. תיאורים מפורטים של כל מפתח זמינים בקטע תנאים מוקדמים.

שם תיאור סוג דוגמה
managementService מפתח של חשבון שירות שמשמש את אשכול הניהול מחרוזת path/to/key/management-sa-key.json
connectAgent מפתח לחשבון שירות שמשמש את סוכן החיבור של GKE Hub מחרוזת path/to/key/hub-sa-key.json
node מפתח של חשבון שירות שמשמש את הצמתים מחרוזת path/to/key/node-sa-key.json

spec.iam

השדות בקטע spec.iam מאפשרים להגדיר פרמטרים אופציונליים של AWS IAM עבור סביבת GKE ב-AWS.

שם תיאור סוג דוגמה
permissionsBoundary ‫ARN של גבולות ההרשאות לתפקידי IAM string arn:aws:iam::126285863215:policy/testPolicyBoundary
נתיב הנתיב לתפקיד IAM string /org_abc/team_abc/member_abc/

spec.bastionHost

הקטע spec.bastionHost הוא אופציונלי ומתאר יעד מבוצר (bastion host).

יעד מבוצר (bastion host) הוא מכונת EC2 שמוצבת ברשת משנה ציבורית. היא מאפשרת גישת SSH נכנסת מבלוק CIDR ספציפי וגישת SSH יוצאת לשירות הניהול ולאשכולות המשתמשים של GKE ב-AWS.

אפשר ליצור יעד מבוצר (bastion host) להתקנות של dedicatedVPC או של existingVPC. השדה allowedSSHCIDRBlocks מציין את טווח הכתובות הנכנסות המותרות, והוא לא יכול להיות ריק.

אם לא קיים מארח יעד מבוצר (bastion host),‏ GKE on AWS יוצר מארח יעד מבוצר (bastion host) חדש.

  • במהלך התקנת dedicatedVPC, המערכת של GKE ב-AWS יוצרת רשת משנה.
  • במקרה של התקנת existingVPC, צריך לספק רשת משנה עבור יעד מבוצר (bastion host) ולוודא שיש לרשת המשנה הזו קישוריות ל-VPC.

כדי לשנות את יעד הבסטיון (bastion host), משנים או מוחקים את השדה spec.bastionHost ומריצים את הפקודה anthos-gke aws management init ואחריה את הפקודה anthos-gke aws management apply.

שם תיאור סוג דוגמה
subnetID המזהה של רשת המשנה שבה פועל יעד מבוצר (bastion host). בהתקנות של existingVPC, רשת המשנה צריכה לאפשר תעבורת נתונים נכנסת ממקום הגישה ליציאה 22. בנוסף, צריך לוודא שרשת ה-VPC מאפשרת גישה נכנסת מתת-הרשת הזו. במקרים של התקנות dedicatedVPC, אין לציין את השדה הזה. ‫GKE ב-AWS יקצה את תת-הרשת עם הגישה הנדרשת. מחרוזת subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks בלוקים של CIDR שמהם מותרת גישת SSH נכנסת. list(string) [104.132.0.0/14]
rootVolume אובייקט שמתאר את נפח האחסון הבסיסי של מארח ה-bastion. object {volumeType: gp2}

‫spec.rootVolume,‏ spec.dataVolume ו-spec.bastionHost.rootVolume

בטבלה הבאה מתוארים שדות נפוצים לאובייקטים הבאים:

  • spec.rootVolume, עבור נפחי דיסקים בסיסיים במישור הבקרה
  • spec.dataVolume, עבור נפחי דיסקים של נתונים במישור הבקרה
  • spec.bastionHost.rootVolume, עבור נפחי דיסק הבסיס של יעד מבוצר (bastion host)
שם תיאור סוג דוגמה חובה
volumeType סוג נפח האחסון ב-EBS של AWS בצומת. הערך יכול להיות gp2 (ברירת מחדל) או gp3. string gp2 לא
iops הכמות של פעולות קלט/פלט (IOPS) שהוקצו לנפחים לשנייה. ההגדרה תקפה רק אם volumeType הוא GP3. מידע נוסף זמין במאמר General Purpose SSD volumes (gp3). integer 5000 לא
kmsKeyARN מספר ה-ARN של מפתח AWS KMS שמשמש להצפנת נפח ה-EBS. מידע נוסף מופיע במאמר בנושא שימוש במפתח CMK בניהול הלקוח להצפנת אמצעי אחסון. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee לא

spec.tags

שם תיאור סוג דוגמה
תגים מטא-נתונים אופציונליים של מפתח/ערך שמוקצים לכל משאב AWS שתומך בשירות הניהול. map(string) {Environment: Production, Team: Analytics}

spec.proxy

השדה spec.proxy מגדיר Proxy אופציונלי ל-HTTP או ל-HTTPS.

שם תיאור סוג דוגמה
שרת proxy הנתיב אל קובץ ההגדרה של ה-proxy. נתיב יחסי מanthos-gke.yaml proxy.json

spec.bootstrapS3Bucket

השדה spec.bootstrapS3Bucket מגדיר שם של קטגוריית S3 ל-GKE ב-AWS .

שם תיאור סוג דוגמה
bootstrapS3Bucket שדה אופציונלי לשם קטגוריית AWS S3 שבה GKE ב-AWS מאחסן את פרטי התצורה. אם רוצים ליצור כמה שירותי ניהול של GKE ב-AWS באותו אזור AWS, צריך להגדיר את הערך הזה לשם ייחודי של קטגוריה. string example-s3-bucket

spec.terraform

השדה spec.terraform.invokeManually מגדיר את הפקודה anthos-gke כך שלא ייצור שירות ניהול.

שם תיאור סוג דוגמה
invokeManually שדה אופציונלי שמגדיר את כלי שורת הפקודה anthos-gke כך שלא ייצור שירות ניהול אחרי בנייה ואימות של ההגדרה. אם מגדירים את invokeManually ל-Yes, אפשר לערוך ולהחיל את קובצי ההגדרות של Terraform באופן ידני. Yes, No Yes
stateGCSBucket שדה אופציונלי שמציין קטגוריה קיימת של Cloud Storage שבה Terraform ישמור את נתוני ההגדרה שלו. string example-GCS-bucket