✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

איך להריץ פקודות של kubectl ממכונה וירטואלית ללא מפתחות והזדהות מול ענן ה-Oracle?

דניאל קגנוביץ'
|
Jul 30, 2020
alt="blogs"
Event
Events
alt="blogs"
alt="blogs"
title="Google"

כדי להשיג את המטרה, עלינו להגדיר מכונה וירטואלית הנמצאת בתוך הענן של Oracle, כ-Instance Principal.

מה זה Instance Principals? זה פיצ'ר בתוך ה-IAM - Identity Access Management, שמאפשר למכונות להיות מאומתות ולגשת למשאבים בתוך הענן.

ראשית יש להבין את היתרון ב-Instance Principal. בתצורה זו, אנו חותמים את המכונה ומסירים ממנה פרטי הזדהות אל הענן, כולל מפתחות פרטיים שיושבים על המכונה, מה שמונע גניבה של מפתחות וסרבול הגדרות.

 

בדוגמא הבאה השתמשתי בהפצה של לינוקס מסוג 7 Centos: 

 

לפני שנתחיל - אם יש מכונה של Linux ב-OCI, ראשית יש לוודא שמותקנים עליה הכלים הבאים:

OCI CLI

Kubectl

(אפשר להשתמש ב Image-הנקראImage : Oracle Developer Cloud) הזמין בענן ומבוסס על הפצה של Oracle Linux ומגיע עם OCI CLI וכלי פיתוח שמותקנים מראש, מלבד Kubectl נכון לרגע כתיבת המדריך.

 

 -  הערה: במידה ואין את הכלים זמינים, צריך להתקין אותם וההוראות במדריך נפרד.

 

1. בשלב הראשון מתחברים ב-SSH למכונה ומריתים את הפקודות הבאות:

[opc@my-oracle-vm ~] $ kubectl version --short

זה בסדר גם אם יופיע רק ה-Client Version.

[opc@my-oracle-vm ~] $ oci --version

 

 

2. מתחברים דרך הדפדפן ל Console  של הענן. מעתיקים את ה-Instance OCID של המכונה שאנחנו רוצים לעבוד דרכה. בתפריט הצידי לוחצים על Compute > Instances

 

        

לאחר מכן בוחרים את המכונה ברשימה:

 

         מעתיקים את ה-Instance OCID של המכונה, בלחיצה על כפתור ה-copy:

 

3.  פותחים שוב את התפריט ומנווטים ל-Identity > Dynamic Groups

 

 

יוצרים Dynamic Group דרך הכפתור "Create Dynamic Group":

 

ממלאים את הפרמטרים הבאים:

Name – שם הקבוצה.

Description – כדי לתאר למה.

Rule 1 – החוק עם אותו Instance ID שהעתקנו במקום <Instance-OCID>.

למידע נוסף לגבי חוקים:

https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm

 

דוגמא: 

לבסוף לוחצים על הכפתור "Create".

הסבר: בשלב זה יצרנו את ה-Dynamic Group עם המזהה של המכונה שלנו, עכשיו יש לתת הרשאה לאותו Dynamic Group, לפי ה-Policy בענן אנחנו יכולים לתת הרשאות לקבוצות משתמשים, בעזרת Dynamic Group, אנחנו יכולים לתת הרשאות למשאבים – כמו מכונות לדוגמא. 

 

4. נתקדם ונפתח את התפריט הצידי וננווט ל Identity > Policies.

 

 

הולכים ל-policy קיים או מייצרים חדש, עם ה-Rule הבא (כל ההרשאות):

 

 

לוחצים על הכפתור "Edit Policy Statements":

 

ומוסיפים את ה-Rule הבא:

 

allow dynamic-group <dynamic-group-name> to manage all-resources in compartment <compartment-name> 

יש להזין את שם ה-Dynamic Group ואת שם ה-Compartment שלנו. דוגמא:

 

 

 - הערה: מומלץ לא לעשות את זה, הדוגמא להמחשה בלבד. אנחנו נותנים למכונה את כל ההראשות, יש להחליט על הרשאות ספציפיות.

 

לקריאה נוספת על Policies:

https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Concepts/commonpolicies.htm

 

5. חוזרים לחלון SSH במכונה שלנו ועושים בדיקה שההרשאות עובדות, במידה וההרשאות עובדות ניתן יהיה להריץ את הפקודה הבאה, בלי OCI CONFIG FILE.

oci os ns get --auth instance_principal

 

 

במידה ואנחנו מקבלים שגיאה, יש לבדוק את ההרשאות שהוגדרו בצורה נכונה.

 -  כדי לוודא שזה עובד, מי שהיה לו OCI Config file, יכול למחוק את הקובץ: $HOME/.oci/config rm -rf

ולהריץ שוב את הפקודה:

oci os ns get --auth instance_principal

 

6. חוזרים לדפדפן לחלון ה-OCI, מנווטים בתפריט צד ל- Developer Services > Container Clusters (OKE).

 

 

לוחצים על שם ה- OKE Cluster שלנו:

 

ולוחצים על הכפתור "copy" כדי להעתיק את ה Cluster ID:

 

7. חוזרים למכונה – כדי ליצור קובץ kubeconfig:

לפני שמייצרים אותו, מומלץ למחוק ולוודא שאין אחד שקיים לפני:

rm -rf $HOME/.kube/config

oci ce cluster create-kubeconfig --cluster-id <oke-ocid> --auth instance_principal

 

8. לאחר שיצרנו את ה Kubeconfig, נייצא אותו כמשתנה סביבה:

export KUBECONFIG=$HOME/.kube/config

 

9. נוסיף את המשתנה של הזדהות באמצעות Instance Principal כמשתנה סביבה לתוך ה-bashrc:

echo "export OCI_CLI_AUTH=instance_principal" >> $HOME/.bashrc

ונעשה Source לbashrc לאחר השינוי.

source $HOME/.bashrc

 

10. בואו נוודא שזה עובד: - עכשיו אפשר לבדוק שהכל עובד ולהריץ פקודה שלkubectl

kubectl get nodes

אם התקבלה תוצאה ללא שגיאה, הכל מוגדר כמו שצריך!

 

המאמר נכתב ע"י דניאל קגנוביץ', Cloud Solutions Architect, אורקל



כדי להשיג את המטרה, עלינו להגדיר מכונה וירטואלית הנמצאת בתוך הענן של Oracle, כ-Instance Principal.

מה זה Instance Principals? זה פיצ'ר בתוך ה-IAM - Identity Access Management, שמאפשר למכונות להיות מאומתות ולגשת למשאבים בתוך הענן.

ראשית יש להבין את היתרון ב-Instance Principal. בתצורה זו, אנו חותמים את המכונה ומסירים ממנה פרטי הזדהות אל הענן, כולל מפתחות פרטיים שיושבים על המכונה, מה שמונע גניבה של מפתחות וסרבול הגדרות.

 

בדוגמא הבאה השתמשתי בהפצה של לינוקס מסוג 7 Centos: 

 

לפני שנתחיל - אם יש מכונה של Linux ב-OCI, ראשית יש לוודא שמותקנים עליה הכלים הבאים:

OCI CLI

Kubectl

(אפשר להשתמש ב Image-הנקראImage : Oracle Developer Cloud) הזמין בענן ומבוסס על הפצה של Oracle Linux ומגיע עם OCI CLI וכלי פיתוח שמותקנים מראש, מלבד Kubectl נכון לרגע כתיבת המדריך.

 

 -  הערה: במידה ואין את הכלים זמינים, צריך להתקין אותם וההוראות במדריך נפרד.

 

1. בשלב הראשון מתחברים ב-SSH למכונה ומריתים את הפקודות הבאות:

[opc@my-oracle-vm ~] $ kubectl version --short

זה בסדר גם אם יופיע רק ה-Client Version.

[opc@my-oracle-vm ~] $ oci --version

 

 

2. מתחברים דרך הדפדפן ל Console  של הענן. מעתיקים את ה-Instance OCID של המכונה שאנחנו רוצים לעבוד דרכה. בתפריט הצידי לוחצים על Compute > Instances

 

        

לאחר מכן בוחרים את המכונה ברשימה:

 

         מעתיקים את ה-Instance OCID של המכונה, בלחיצה על כפתור ה-copy:

 

3.  פותחים שוב את התפריט ומנווטים ל-Identity > Dynamic Groups

 

 

יוצרים Dynamic Group דרך הכפתור "Create Dynamic Group":

 

ממלאים את הפרמטרים הבאים:

Name – שם הקבוצה.

Description – כדי לתאר למה.

Rule 1 – החוק עם אותו Instance ID שהעתקנו במקום <Instance-OCID>.

למידע נוסף לגבי חוקים:

https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm

 

דוגמא: 

לבסוף לוחצים על הכפתור "Create".

הסבר: בשלב זה יצרנו את ה-Dynamic Group עם המזהה של המכונה שלנו, עכשיו יש לתת הרשאה לאותו Dynamic Group, לפי ה-Policy בענן אנחנו יכולים לתת הרשאות לקבוצות משתמשים, בעזרת Dynamic Group, אנחנו יכולים לתת הרשאות למשאבים – כמו מכונות לדוגמא. 

 

4. נתקדם ונפתח את התפריט הצידי וננווט ל Identity > Policies.

 

 

הולכים ל-policy קיים או מייצרים חדש, עם ה-Rule הבא (כל ההרשאות):

 

 

לוחצים על הכפתור "Edit Policy Statements":

 

ומוסיפים את ה-Rule הבא:

 

allow dynamic-group <dynamic-group-name> to manage all-resources in compartment <compartment-name> 

יש להזין את שם ה-Dynamic Group ואת שם ה-Compartment שלנו. דוגמא:

 

 

 - הערה: מומלץ לא לעשות את זה, הדוגמא להמחשה בלבד. אנחנו נותנים למכונה את כל ההראשות, יש להחליט על הרשאות ספציפיות.

 

לקריאה נוספת על Policies:

https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Concepts/commonpolicies.htm

 

5. חוזרים לחלון SSH במכונה שלנו ועושים בדיקה שההרשאות עובדות, במידה וההרשאות עובדות ניתן יהיה להריץ את הפקודה הבאה, בלי OCI CONFIG FILE.

oci os ns get --auth instance_principal

 

 

במידה ואנחנו מקבלים שגיאה, יש לבדוק את ההרשאות שהוגדרו בצורה נכונה.

 -  כדי לוודא שזה עובד, מי שהיה לו OCI Config file, יכול למחוק את הקובץ: $HOME/.oci/config rm -rf

ולהריץ שוב את הפקודה:

oci os ns get --auth instance_principal

 

6. חוזרים לדפדפן לחלון ה-OCI, מנווטים בתפריט צד ל- Developer Services > Container Clusters (OKE).

 

 

לוחצים על שם ה- OKE Cluster שלנו:

 

ולוחצים על הכפתור "copy" כדי להעתיק את ה Cluster ID:

 

7. חוזרים למכונה – כדי ליצור קובץ kubeconfig:

לפני שמייצרים אותו, מומלץ למחוק ולוודא שאין אחד שקיים לפני:

rm -rf $HOME/.kube/config

oci ce cluster create-kubeconfig --cluster-id <oke-ocid> --auth instance_principal

 

8. לאחר שיצרנו את ה Kubeconfig, נייצא אותו כמשתנה סביבה:

export KUBECONFIG=$HOME/.kube/config

 

9. נוסיף את המשתנה של הזדהות באמצעות Instance Principal כמשתנה סביבה לתוך ה-bashrc:

echo "export OCI_CLI_AUTH=instance_principal" >> $HOME/.bashrc

ונעשה Source לbashrc לאחר השינוי.

source $HOME/.bashrc

 

10. בואו נוודא שזה עובד: - עכשיו אפשר לבדוק שהכל עובד ולהריץ פקודה שלkubectl

kubectl get nodes

אם התקבלה תוצאה ללא שגיאה, הכל מוגדר כמו שצריך!

 

המאמר נכתב ע"י דניאל קגנוביץ', Cloud Solutions Architect, אורקל



לפרטים נוספים ויצירת קשר עם נציג אורקל

תודה הודעתך התקבלה

הודעתך לא התקבלה - נסה שוב מאוחר יותר

דניאל קגנוביץ'

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות