במאמר הזה מוסבר על אפשרויות ההגדרה של הגדרת משאב מותאם אישית של 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, צריך להגדיר את |
רשימה מופרדת בפסיקים |
| 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 |