AWSCluster

במאמר הזה מוסבר על אפשרויות ההגדרה של הגדרת משאב מותאם אישית של AWSCluster.

הגדרת AWSCluster

AWSCluster הוא משאב מותאם אישית של Kubernetes שמוגדר על ידי GKE ב-AWS. המשאב הזה מייצג מישור בקרה של GKE ב-AWS.

כדי ליצור אשכול מהתבנית הזו, מעתיקים את ה-YAML הבא וממלאים את הערכים המודגשים שמוגדרים בהגדרות השדות spec.networking ו-spec.controlPlane. לאחר מכן, מחילים את מניפסט המשאבים על שירות הניהול.

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSCluster
metadata:
  name: CLUSTER_NAME
spec:
  region: AWS_REGION
  networking:
    vpcID: VPC_ID
    podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
    serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
    serviceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
  controlPlane:
    version: GKE_VERSION # Latest version is 1.25.5-gke.2100
    instanceType: AWS_INSTANCE_TYPE
    keyName: SSH_KEY_NAME
    subnetIDs:
    - CONTROL_PLANE_SUBNET_IDS
    securityGroupIDs:
    - CONTROL_PLANE_SECURITY_GROUPS
    iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
    databaseEncryption:
      kmsKeyARN: ARN_OF_KMS_KEY
    hub:
      membershipName: ANTHOS_CONNECT_NAME
    cloudOperations: # Optional
      projectID: YOUR_PROJECT
      location: GCP_LOCATION
      enableLogging: ENABLE_LOGGING
      enableMonitoring: ENABLE_MONITORING
    tags:
      TAG_KEY: TAG_VALUE
    proxySecretName: PROXY_SECRET_NAME
    workloadIdentity:
      oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
    rootVolume:  # Optional
      sizeGiB: ROOT_VOLUME_SIZE
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
    etcd:  # Optional
      mainVolume:
        sizeGiB: ETCD_VOLUME_SIZE
        volumeType: ETCD_VOLUME_TYPE
        iops: ETCD_VOLUME_IOPS
        kmsKeyARN: ETCD_VOLUME_KEY
  authentication:
    awsIAM:
      adminIdentityARNs: ADMIN_IAM_ARN
    oidc: # Optional
    - certificateAuthorityData: CERTIFICATE_STRING
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      extraParams:  EXTRA_PARAMS
      groupsClaim:  GROUPS_CLAIM
      groupPrefix:  GROUP_PREFIX
      issuerURI:  ISSUER_URL
      kubectlRedirectURI:  KUBECTL_REDIRECT_URL
      scopes:  SCOPES
      userClaim:  USER_CLAIM
      userPrefix:  USER_PREFIX

בקטעים הבאים מוסבר על שדות המשנה שמופיעים מתחת ל-spec.

spec.networking

האובייקט הזה מגדיר את תצורת הרשת בכל האשכול.

שם תיאור סוג דוגמה חובה
vpcID המזהה של ה-VPC שבו האשכול פועל. מישור הבקרה ומאגרי הצמתים של אשכול משתמשים פועלים ב-VPC יחיד. string vpc-0814934042d983118 כן
podAddressCIDRBlocks טווח כתובות IPv4 שמשמשות את הפודים של האשכול. בשלב הזה יש תמיכה רק בטווח אחד. הטווח לא יכול לחפוף לרשתות משנה שאפשר להגיע אליהן מהרשת שלכם. אפשר להשתמש באותו טווח בכמה אובייקטים שונים של AWSCluster. list(string) [10.1.0.0/16] כן
serviceAddressCIDRBlocks טווח כתובות IPv4 שמשמשות את השירותים של האשכול. בשלב הזה יש תמיכה רק בטווח אחד. הטווח לא יכול לחפוף לרשתות משנה שאפשר להגיע אליהן מהרשת שלכם. אפשר להשתמש באותו טווח בכמה אובייקטים שונים של AWSCluster. list(string) [10.2.0.0/16] כן
serviceLoadBalancerSubnetIDs מזהי רשתות משנה שבהן אפשר ליצור מאזני עומסים ציבוריים או פרטיים ב-GKE on AWS. ‫GKE ב-AWS מוסיף תגים לכל אחת מרשתות המשנה האלה כדי לתמוך באיזון עומסים. כדי לתמוך ב-ALB, צריך לציין יותר מתת-רשת אחת. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

האובייקט הזה כולל פרמטרים נפוצים למישור הבקרה של האשכול.

שם תיאור סוג דוגמה חובה
גרסה גרסת GKE של מישור הבקרה. מידע נוסף זמין במאמרים בנושא ניהול גרסאות ושדרוגים ושדרוג אשכול משתמשים. string 1.25.5-gke.2100 כן
instanceType סוג של מופע AWS EC2 לכל רפליקה של מישור הבקרה. סוגי האינסטנסים הנתמכים string m5.large כן
keyName זוג המפתחות של AWS EC2 שמוקצה לכל רפליקה של מישור הבקרה. string my-key-pair כן
subnetIDs רשימה של תת-רשתות VPC לשכפול של מישור הבקרה. list(string) [subnet-06a004869a1eae947] כן
securityGroupIDs ‫GKE on AWS יוצר באופן אוטומטי קבוצות אבטחה עם הכללים המינימליים שנדרשים לאשכול פעיל. אם רוצים להוסיף עוד קבוצות אבטחה עם גישה לרפליקות של מישור הבקרה, מוסיפים את המזהים שלהן אל securityGroupIDs. list(string) [sg-0ec06559d997a796f] לא
iamInstanceProfile השם של פרופיל מכונת AWS EC2 שהוקצה לשכפול של מישור הבקרה. string my-control-plane-profile כן
databaseEncryption.kmsKeyARN שם משאב Amazon‏ (ARN) של מפתח AWS KMS שמשמש את GKE ב-AWS להצפנת סודות בשכבת האפליקציה באשכולות. מחרוזת arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName השם של חברות Connect שמשמש לרישום האשכול. מחרוזת projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations ההגדרה של Cloud Logging ו-Cloud Monitoring לצמתים של מישור הבקרה. object {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} לא
תגים מטא-נתונים של מפתח/ערך שמוקצים לכל משאב AWS שתומך ב-AWSCluster. מידע נוסף זמין במאמר בנושא שיטות מומלצות לתיוג map(string) {Environment: Production, Team: Analytics} לא
proxySecretName שם שהמשתמש בחר ל-Secret שמשמש להגדרת שרתי proxy ברשת שספציפיים לאשכול מחרוזת proxy-secret-0 לא
workloadIdentity קטגוריה של Cloud Storage להגדרת Workload Identity. מכיל שדה יחיד: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} לא
rootVolume פרמטרים של נפחי הבסיס של רפליקות מישור הבקרה. מכיל אובייקט שמוגדר בקטע הבא. object {sizeGiB: 10} כן
etcd פרמטרים של נפחי etcd. מכיל אובייקט שמוגדר בקטע הבא. object {sizeGiB: 10} כן

‫spec.controlPlane.rootVolume ו-spec.etcd.rootVolume

השדות האלה רלוונטיים גם ל-spec.controlPlane.rootVolume וגם ל-spec.etcd.mainVolume.

שם תיאור סוג דוגמה חובה
sizeGiB גודל נפח הבסיס בגיגה-בייט. integer 10 כן
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.authentication.awsIAM

האובייקט הזה מציין תפקידים שקיבלו הרשאת אדמין באשכול באמצעות AWS IAM.

שם תיאור סוג דוגמה חובה
adminIdentityARNs מספר ה-ARN של משתמשי IAM או תפקידים ב-AWS שקיבלו גישת אדמין לאשכול. מחרוזת arn:aws:iam::123456789012:user/admin חובה רק אם משתמשים באימות AWS IAM.

spec.authentication.oidc

אפשר לציין יותר מאובייקט oidc אחד. האובייקט oidc מוגדר בהמשך. מידע נוסף זמין במאמר אימות באמצעות OIDC.

שדה חובה תיאור פורמט
certificateAuthorityData לא אישור בקידוד PEM בקידוד Base64 של ספק OIDC. כדי ליצור את המחרוזת, מקודדים את האישור, כולל הכותרות, ל-Base64. כוללים את המחרוזת שמתקבלת ב-certificateAuthorityData כשורה אחת. דוגמה: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== String
clientID כן מזהה של אפליקציית הלקוח ששולחת בקשות אימות לספק OpenID. String
clientSecret לא סוד לשימוש עם טוקן צרכן בין אפליקציית לקוח OIDC לבין ספק OIDC. String
extraParams לא פרמטרים נוספים של מפתח/ערך לשליחה לספק OpenID. אם אתם מאשרים קבוצה, צריך להעביר את resource=token-groups-claim.

אם שרת ההרשאות מבקש הסכמה לאימות באמצעות Microsoft Azure ו-Okta, צריך להגדיר את extraParams ל-prompt=consent. ב-Google Cloud Identity, מגדירים את הערך extraParams ל-prompt=consent,access_type=offline.

רשימה מופרדת בפסיקים
groupsClaim לא הצהרת JWT שהספק משתמש בה כדי להחזיר את קבוצות האבטחה שלכם. String
groupPrefix לא קידומת שנוספת לתביעות של קבוצות כדי למנוע התנגשויות עם שמות קיימים. לדוגמה, אם שם הקבוצה הוא foobar והקידומת היא gid-, שם הקבוצה המלא יהיה gid-foobar. String
issuerURI כן כתובת ה-URL שאליה נשלחות בקשות הרשאה ל-OpenID, למשל https://example.com/adfs. שרת ה-API של Kubernetes משתמש בכתובת ה-URL הזו כדי לגלות מפתחות ציבוריים לאימות אסימונים. מזהה ה-URI חייב להשתמש ב-HTTPS. מחרוזת כתובת URL
kubectlRedirectURI כן כתובת ה-URL להפניה אוטומטית שמשמשת את kubectl לאישור. מחרוזת כתובת URL
היקפי הרשאות כן היקפי הרשאות נוספים לשליחה לספק OpenID. ‫Microsoft Azure ו-Okta דורשים את ההיקף offline_access. רשימה מופרדת בפסיקים
userClaim לא הצהרת JWT לשימוש כשם המשתמש. ברירת המחדל היא sub, שאמור להיות מזהה ייחודי של משתמש הקצה. אפשר לבחור טענות אחרות, כמו אימייל או שם, בהתאם לספק OpenID. עם זאת, לתלונות שאינן אימייל מתווספת קידומת של כתובת ה-URL של הגורם שהנפיק את התלונות כדי למנוע התנגשויות בשמות. String
userPrefix לא תחילית שמוספת לתביעות של שמות משתמשים כדי למנוע התנגשויות עם שמות קיימים. אם לא מציינים את השדה הזה, ושם המשתמש הוא ערך שאינו כתובת אימייל, קידומת ברירת המחדל היא issuerurl#. אם מגדירים את userPrefix לערך -, הוספת הקידומת מושבתת. String