יצירת הפניות למשאבים

משאב Google Cloud שנוצר באמצעות Config Connector יכול להפנות למשאבים אחרים. ‫Config Connector מגדיר את הקשרים האלה באמצעות הפניות למשאבים. בנושא הזה מוסבר איך ליצור משאבים עם הפניות.

סוגי קובצי עזר

ב-Config Connector, הפניות יכולות להיות תלויות או קישורים.

תלויות
הפניה לתלות מתייחסת למשאב קיים Google Cloud שנדרש למשאב Config Connector. לדוגמה, כלל חומת אש לא יכול להתקיים בלי רשת
קישורים
הפניה לקישור קושרת בין משאבים עצמאיים. לדוגמה, אפשר לשייך פרויקט לחשבון לחיוב.

ציון הפניות למשאבים

מציינים הפניות למשאבים ב-spec של המשאב. שם השדה הוא השם הקצר של המשאב ואחריו Ref. לדוגמה:

  • ההפניה ל-PubSubTopic בשם topic היא topicRef.
  • ההפניה ל-StorageBucket בשם bucket היא bucketRef.

ההפניה היא אובייקט עם שדה יחיד (name). המשאב ב-resourceRef מוחלף בשם ההפניה.

קובץ ה-YAML הבא מתאר נושא ב-Pub/Sub‏ PubSubSubscription שמפנה אל PubSubTopic בשם myTopic.

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic

דוגמה ל-Pub/Sub

יצירת PubSubTopic

בדוגמה הזו, יוצרים PubSubSubscription שתלוי ב-PubSubTopic.

  1. מעתיקים את הקוד הבא לקובץ בשם pubsub-topic.yaml:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
    name: TOPIC_NAME
    

    מחליפים את TOPIC_NAME בשם PubSubTopic הרצוי.

    לדוגמה, כדי ליצור נושא בשם myTopic, אפשר להשתמש בקובץ ה-YAML הבא:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      name: myTopic
    
  2. יצירת PubSubTopic באמצעות kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml

    מחליפים את CC_NAMESPACE במרחב השמות ש-Config Connector מנהל ממנו משאבים.

יצירת PubSubSubscription

  1. מעתיקים את הקוד הבא לקובץ בשם pubsub-subscription.yaml:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: TOPIC_NAME
    

    מחליפים את TOPIC_NAME בPubSubTopicשם שבו השתמשתם בשלב 1. לדוגמה, קובץ ה-YAML שמתייחס לנושא myTopic שיצרתם קודם הוא:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: myTopic
    
  2. יצירת PubSubSubscription באמצעות kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml 

    מחליפים את CC_NAMESPACE במרחב השמות ש-Config Connector מנהל ממנו משאבים.

הפניות חיצוניות

‫Config Connector יכול להפנות למשאבים שהוא לא מנהל. הן נקראות הפניות חיצוניות. לדוגמה, הקטע ComputeURLMap שבהמשך מתייחס ל-BackendService בשם test-backendservice.

apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeURLMap
metadata:
  name: test-urlmap
spec:
  location: global
  defaultService:
    backendServiceRef:
      external: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/test-backendservice

הפורמט של הערכים שמתקבלים על ידי external תלוי במשאב. בהפניה למשאבים תוכלו לעיין במסמכי העזרה של משאבים ספציפיים. כדי לדעת אילו ערכים external מקבל, אפשר לקרוא את התיאורים של השדות external של המשאב.

‫IAMPolicy, ‏ IAMPartialPolicy ו-IAMPolicyMember

IAMPolicy, ‏ IAMPartialPolicy ו-IAMPolicyMember תומכים גם בהפניות חיצוניות. לדוגמה, IAMPolicyMember שבהמשך מתייחסת אל Project עם מזהה הפרויקט test-project.

apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
metadata:
  name: test-iampolicymember
spec:
  member: serviceAccount:test-serviceaccount@test-project.iam.gserviceaccount.com
  role: roles/storage.admin
  resourceRef:
    kind: Project
    external: projects/test-project

כדי לדעת באיזה פורמט אפשר להזין ערך בשדה external, אפשר לקרוא את מסמכי העזר. בדפים IAMPolicy,‏ IAMPartialPolicy ו-IAMPolicyMember מפורט הפורמט הקביל לכל המשאבים הנתמכים. הפורמטים מפורטים בעמודה 'פורמטים של הפניות חיצוניות' בטבלה משאבים נתמכים. אפשר גם לעבור לדף ההפניה של משאב ספציפי (לדוגמה, PubSubTopic) ולבדוק את הערך שמופיע בשורה 'פורמט הפניה חיצונית של IAM' בטבלת הסיכום של המשאב.

הפניות בין מרחבי שמות

‫Config Connector מאפשר למשאבים להפנות למשאבים במרחבי שמות אחרים. עם זאת, אם Config Connector מותקן במצב מרחב שמות, צריך להעניק ל-Config Connector הרשאות נוספות כדי לאפשר הפניות בין מרחבי שמות.

לדוגמה, אם רוצים ליצור משאבים ב-NAMESPACE_A שמפנים למשאבים ב-NAMESPACE_B, צריך ליצור את RoleBinding הבאים:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: NAMESPACE_B
  name: allow-references-from-NAMESPACE_A
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cnrm-viewer
subjects:
- kind: ServiceAccount
  name: cnrm-controller-manager-NAMESPACE_A
  namespace: cnrm-system

המאמרים הבאים