ספק שירותי הענן של OpenStack ל-Kubernetes מאפשר להשתמש באיזון העומסים של OpenStack לאשכול שפועל במכונות וירטואליות של OpenStack.
אחרי שמתקינים ומגדירים את הספק, כל שירות מסוג LoadBalancer מקבל מאזן עומסים של OpenStack Octavia וכתובת IP חיצונית מרשת ה-IP הדינמית. במסמך הזה, תאמתו את השילוב על ידי חשיפת אפליקציה לדוגמה.
דרישות מוקדמות
המדריך הזה מבוסס על ההנחה שיש לכם אשכול שנוצר באמצעות Google Distributed Cloud שפועל בסביבת OpenStack, עם הגדרה דומה לזו שמוסברת במדריך פריסת אשכול Bare Metal ב-OpenStack. לפני שמנסים את השלבים האלה, צריך לפעול לפי המדריך הזה.

הגדרת הספק
בקטע הבא אנחנו מניחים שאתם מתחילים מחלון הטרמינל בתחנת העבודה המקומית.
מאתרים את קובץ התצורה של לקוח OpenStack (
openrc). אפשר להוריד אותו מ-OpenStack WebUI.source PATH_TO_OPENRC_FILE/openrcיוצרים את קובץ התצורה של ספק שירותי הענן של Kubernetes ב-OpenStack.
cat > cloud.conf << EOF [Global] auth-url=${OS_AUTH_URL} username=${OS_USERNAME} password=${OS_PASSWORD} region=RegionOne tenant-name=admin domain-id=default # this is for using a self-signed cert if your using a CA then comment this line # and point to the CA certificate using the "ca-file" arg tls-Insecure=true [LoadBalancer] use-octavia=true # this is generally the public network on OpenStack floating-network-id=PUBLIC_NETWORK_ID # this should be private network subnet where vip is allocated for the ABM nodes subnet-id=ABM_NETWORK_SUBNET_ID [BlockStorage] bs-version=v2 EOFמחליפים את מה שכתוב בשדות הבאים:
-
OS_AUTH_URL, OS_USERNAME, OS_PASSWORD: המשתנים האלה כבר אמורים להיות מוגדרים בסביבה באמצעות הפעלת הקובץopenrc. לכן, הן ייאספו באופן אוטומטי. -
PUBLIC_NETWORK_ID: זוהי הרשת שנגישה לכולם בפריסת OpenStack, שממנה מוקצות כתובות IP צפות. מהרשת הזו יוקצו כתובות ה-LoadBalancer IPsלשירותי Kubernetes. אתם יכולים להשתמש בפקודה של שורה אחת כדי לאחזר את כתובת ה-IP הזו מסביבת OpenStack. -
ABM_NETWORK_SUBNET_ID: זוהי תת-הרשת ברשת הפרטית בפריסת OpenStack, שממנה מוקצות כתובות IP למכונות הווירטואליות שמריצות את תוכנת Google Distributed Cloud בלבד. כדי לאחזר את כתובת ה-IP הזו מסביבת OpenStack, אתם יכולים להשתמש בפקודה שדומה ל-Get the ID of the public network in OpenStack.
-
משיגים את כתובת ה-IP הציבורית הדינמית של המכונה הווירטואלית של
abm-ws.export OPENSTACK_IPS=$(openstack floating ip list --tags=abm_ws_floatingip -f json) export FLOATING_IP=$(jq -c '.[]."Floating IP Address"' <<< $OPENSTACK_IPS | tr -d '"')מעתיקים את הקובץ
cloud.confלמכונה הווירטואליתabm-wsב-OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~משתמשים ב-SSH כדי להתחבר באופן מאובטח למכונה הווירטואלית
abm-wsונכנסים בתור משתמשroot.המשתמש
root, כפי שהוגדר על ידי הסקריפטים של Terraform, הואabm.ssh ubuntu@$FLOATING_IP sudo -u abm -iמעתיקים את הקבצים של
cloud.confלספרייה$HOMEשל המשתמשroot.cp /home/ubuntu/cloud.conf $HOMEיוצרים
Kubernetes Secretעם ההגדרות האישיות.# make sure the kubectl client is pointing towards your cluster export KUBECONFIG=~/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig # store the provider configurations as a Kubernetes secret kubectl create secret -n kube-system generic cloud-config --from-file=cloud.confמתקינים את ספק שירותי הענן של OpenStack ל-Kubernetes.
# create the necessary roles for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-roles.yaml # create the required role-bindings for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-role-bindings.yaml # create the OpenStack controller manager kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml
אימות השילוב של OpenStack
פורסים את אפליקציית נקודת המכירה לדוגמה.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yamlבודקים אם הפודים של האפליקציה פועלים.
kubectl get podsהפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE api-server-7db4777f7f-zflk5 1/1 Running 0 74s inventory-58c6fb5568-dqk2x 1/1 Running 0 74s payments-68d5d65d5c-5mjl6 1/1 Running 0 74sהאפליקציה נחשפה באמצעות שירות מסוג
LoadBalancer.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yamlנסו לגשת לשירות דרך דפדפן.
# wait for the external IP to be assigned kubectl get service api-server-lb NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE api-server-lb LoadBalancer 10.203.77.215 172.29.249.159 80:32378/TCP 4m12sאפליקציית נקודת מכירה שאפשר לגשת אליה באמצעות
EXTERNAL-IP.
בממשק המשתמש של OpenStack תוכלו לראות שנוצר מאזן עומסים חדש של OpenStack.
