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

הגדרת הספק
בקטע הבא מניחים שאתם מתחילים מחלון טרמינל בתחנת העבודה המקומית שלכם.
מפעילים את קובץ ההגדרות של לקוח OpenStack (
openrc). אפשר להוריד אותו מממשק המשתמש האינטרנטי של OpenStack.source PATH_TO_OPENRC_FILE/openrcיוצרים את קובץ התצורה לספק שירותי הענן OpenStack Kubernetes.
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: המשתנים האלה כבר צריכים להיות מוגדרים בסביבה על ידי הפעלת הפקודה source בקובץopenrc. לכן, הם ייבחרו באופן אוטומטי. -
PUBLIC_NETWORK_ID: זו הרשת שנגישה לציבור בפריסת OpenStack שלכם, שממנה מוקצות כתובות IP צפות. מהרשת הזו יוקצו כתובות ה-IP של שירותי KubernetesLoadBalancer IPs. אתם יכולים להשתמש בפקודה בשורה אחת כדי לאחזר את כתובת ה-IP הזו מסביבת OpenStack. -
ABM_NETWORK_SUBNET_ID: רשת המשנה ברשת הפרטית בפריסת OpenStack שממנה מוקצים כתובות IP למכונות הווירטואליות שמריצות את התוכנה בלבד של Google Distributed Cloud. אפשר להשתמש בפקודה דומה לGet the ID of the public network in OpenStack כדי לאחזר את כתובת ה-IP הזו מסביבת 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 כשנכנסים לממשק המשתמש של OpenStack באינטרנט.
