שימוש בסודות לאחסון מידע רגיש
אתם יכולים להשתמש בסוד כדי לאחסן באשכול GKE מידע רגיש על הגדרות, כמו סיסמאות ומפתחות גישה. בדף הזה מוסבר איך Config Connector משתמש בערכי Secret כשמגדירים את המשאבים. Google Cloud
סקירה כללית
בקטע הזה מופיעה סקירה כללית על השימוש ב-Secrets עם Config Connector.
שימוש בסוד כשיוצרים משאב
אתם יכולים להשתמש בנתונים בתוך Secret כשאתם יוצרים משאב. במאמר העברת סוד למשאב, יוצרים סוד שמכיל סיסמה, ואז מפנים לסוד עבור משתמש במסד נתונים של Cloud SQL.
עדכון סודות
כשמחילים עדכון על Secret, Config Connector מעדכן את המשאב בפעם הבאה שהוא מבצע גישור בין המצב הרצוי לבין המצב בפועל. לדוגמה, אם מעדכנים את הסוד
שמוגדר כסיסמה עבור SQLUser, Config Connector יעודכן בהתאם
את הסיסמה של המשתמש.
מחיקת סודות
אם מוחקים סוד שנמצא בשימוש על ידי משאב, Config Connector לא יסיר את ההפניה של המשאב לסוד. לדוגמה, אם יוצרים SQLUser עם סיסמה שמפנה אל Secret ואז מוחקים את ה-Secret, הסיסמה תישאר ב-SQLUser.
פתרון בעיות
אם יוצרים משאב שמפנה ל-Secret שלא קיים, Config Connector ייצור DependencyNotFound או DependencyInvalid
Event.
סודות ומרחבי שמות של Kubernetes
מכיוון ש-Kubernetes לא מאפשר גישה לסודות בין מרחבי שמות, אם אתם משתמשים באותו ערך סודי למשאבים ממרחבי שמות שונים, אתם צריכים להחיל סודות בכל מרחב שמות.
העברת סוד למשאב
בקטע הזה תיצרו שרת Cloud SQL ותגדירו את הסיסמה של משתמש ברירת המחדל באמצעות סוד.
לפני שמתחילים
כדי לבצע את השלבים האלה, תצטרכו:
- Config Connector מותקן באשכול Kubernetes
Cloud SQL Admin API מופעל בפרויקט. כדי לוודא שממשק ה-API מופעל, מריצים את הפקודה הבאה של
gcloud:gcloud services list --filter=sqladmin.googleapis.comאם הפקודה מדפיסה
Listed 0 items., צריך להפעיל את ה-API. אפשר להפעיל את ה-API באמצעות Config Connector ו-Resource Manager API, או באמצעות פקודהgcloud.
Service Usage API
- Config Connector משתמש ב-Service Usage API כדי להפעיל ממשקי API של שירותים. כדי לבצע את השלבים האלה, צריך להפעיל את Service Usage API. אפשר להפעיל את ה-API הזה באמצעות Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
מעתיקים את קוד ה-YAML הבא לקובץ בשם
enable-sql.yamlapiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.comמחילים את
enable-sql.yamlעל האשכול באמצעותkubectl:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACEמחליפים את
CC_NAMESPACEבמרחב השמות ש-Config Connector מנהל ממנו משאבים.
gcloud
כדי להפעיל את SQL Admin API באמצעות Google Cloud CLI, מריצים את הפקודה הבאה:
gcloud services enable sqladmin.googleapis.com
יצירת שרת Cloud SQL
מעתיקים את קוד ה-YAML שבהמשך לקובץ בשם
sql-server-example.yaml. פעולה זו יוצרת שרת Cloud SQL בשםsqlserver-1ומשתמש בשםsqluser-sample. הסיסמה שלsqluser-sampleמוגדרת על ידי הפניה למשאב לסוד בשםsecret-1.apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extractedמעתיקים את קוד ה-YAML שבהמשך לקובץ בשם
example-secret.yaml. לפני ששומרים, צריך לערוך את הערך שלpassword. ההצהרה הזו מתייחסת ל-secret-1, שהוזכר בקטע הקודם.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORDמחילים את ההגדרות על האשכול.
kubectl apply -n CC_NAMESPACE -f example-secret.yamlkubectl apply -n CC_NAMESPACE -f sql-server-example.yamlמחליפים את
CC_NAMESPACEבמרחב השמות ש-Config Connector מנהל ממנו משאבים.Config Connector יוצר את מופע Cloud SQL ומשתמש עם הסיסמה שציינתם. הפעולה עשויה להימשך כמה דקות.
מחכים כמה דקות ומוודאים שהמופע זמין:
gcloud sql instances list --filter="name=sqlserver-1"
הפלט צריך לכלול שרת עם
STATUSשלRUNNABLE.מוודאים שאפשר להתחבר למופע SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
תוצג בקשה להזין את הסיסמה.
סידור וארגון
אם לא רוצים לשמור את המופע, צריך למחוק את המופע של Cloud SQL, את המשתמש ואת הסוד באמצעות kubectl.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
מחליפים את CC_NAMESPACE במרחב השמות ש-Config Connector מנהל ממנו משאבים.
המאמרים הבאים
איך מציינים הפניות למשאבים בין משאבי Config Connector
כדאי לעיין במידע המפורט על Kubernetes Secrets.