ספק שירותי הענן של 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מוודאים שה-pods של האפליקציה פועלים.
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.
