In dieser Anleitung wird erläutert, wie Sie den OpenStack Cloud Provider für Kubernetes in Ihrem GKE on Bare Metal-Cluster konfigurieren. Der OpenStack Cloud Provider muss so konfiguriert sein, dass Kubernetes-Dienste mithilfe des OpenStack LBaaS verfügbar gemacht werden.
Vorbereitung
In diesem Leitfaden wird davon ausgegangen, dass in Ihrer OpenStack-Umgebung ein GKE on Bare Metal-Cluster mit einer ähnlichen Konfiguration wie im Leitfaden GKE on Bare Metal auf OpenStack bereitstellen ausgeführt wird. Folgen Sie dieser Anleitung, bevor Sie die folgenden Schritte ausführen.
Anbieter konfigurieren
Im folgenden Abschnitt wird davon ausgegangen, dass Sie von einem Terminalfenster auf Ihrer lokalen Workstation aus beginnen.
Verwenden Sie als Quelle die OpenStack-Clientkonfigurationsdatei (
openrc
). Sie können sie über die OpenStack WebUI herunterladen.source PATH_TO_OPENRC_FILE/openrc
Erstellen Sie die Konfigurationsdatei für den OpenStack Kubernetes Cloud Provider.
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
Ersetzen Sie Folgendes:
OS_AUTH_URL
,OS_USERNAME
,OS_PASSWORD
: Diese Variablen sollten bereits in der Umgebung festgelegt sein, indem Sie die Dateiopenrc
als Quelle verwenden. Daher werden sie automatisch erfasst.PUBLIC_NETWORK_ID
: Dies ist das öffentlich zugängliche Netzwerk in Ihrer OpenStack-Bereitstellung, über das Floating-IP-Adressen zugewiesen werden. Aus diesem Netzwerk werden dieLoadBalancer IPs
für die Kubernetes-Dienste zugewiesen. Sie können diese IP-Adresse mit einem Befehl wie diesem aus Ihrer OpenStack-Umgebung abrufen.ABM_NETWORK_SUBNET_ID
: Dies ist das Subnetz im privaten Netzwerk in Ihrer OpenStack-Bereitstellung, über das den VMs, auf denen GKE on Bare Metal ausgeführt wird, IP-Adressen zugewiesen werden. Sie können diese IP-Adresse mit einem Befehl wie diesem aus Ihrer OpenStack-Umgebung abrufen.
Rufen Sie die öffentliche Floating-IP-Adresse der
abm-ws
-VM ab.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 '"')
Kopieren Sie die Datei
cloud.conf
in dieabm-ws
-VM in OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Melden Sie sich sicher über SSH in der
abm-ws
-VM an und melden Sie sich alsroot
-Nutzer an. Der von den Terraform-Skripts konfigurierteroot
-Nutzer istabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Kopieren Sie die
cloud.conf
-Dateien in das$HOME
-Verzeichnis desroot
-Nutzers.cp /home/ubuntu/cloud.conf $HOME
Erstellen Sie ein
Kubernetes Secret
mit der Konfiguration.# make sure the kubectl client is pointing towards your Anthos on bare metal 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
Installieren Sie den OpenStack Cloud Provider für 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-Integration validieren
Stellen Sie die Point-Of-Sales-Anwendung bereit.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yaml
Prüfen Sie, ob die Anwendungs-Pods ausgeführt werden.
kubectl get pods
Erwartete Ausgabe:
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
Stellen Sie die Anwendung über einen Dienst vom Typ
LoadBalancer
bereit.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yaml
Versuchen Sie, über einen Browser auf den Dienst zuzugreifen.
# 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
Point-Of-Sales-Anwendung, die über die
EXTERNAL-IP
aufgerufen wird.Sie sehen, dass in OpenStack ein neuer OpenStack-Load-Balancer erstellt wird, indem Sie die OpenStack WebUI aufrufen.