Panduan ini menjelaskan cara mengonfigurasi OpenStack Cloud Provider untuk Kubernetes di GKE pada cluster Bare Metal. Penyedia Cloud OpenStack harus dikonfigurasi untuk mengekspos Layanan Kubernetes menggunakan OpenStack LBaaS.
Prasyarat
Panduan ini mengasumsikan bahwa Anda memiliki GKE pada cluster Bare Metal yang berjalan di lingkungan OpenStack dengan penyiapan yang mirip dengan yang dijelaskan dalam panduan Men-deploy GDCV untuk Bare Metal di OpenStack. Harap ikuti panduan tersebut terlebih dahulu sebelum mencoba langkah-langkah ini.
Mengonfigurasi penyedia
Bagian berikut mengasumsikan bahwa Anda memulai dari jendela terminal di workstation lokal.
Sediakan file konfigurasi klien OpenStack (
openrc
). Anda dapat mendownloadnya dari OpenStack WebUI.source PATH_TO_OPENRC_FILE/openrc
Membuat file konfigurasi untuk 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
Ganti kode berikut:
OS_AUTH_URL
,OS_USERNAME
,OS_PASSWORD
: Variabel ini harus sudah ditetapkan di lingkungan dengan mengambil fileopenrc
sebagai sumber. Dengan demikian, data tersebut akan diambil secara otomatis.PUBLIC_NETWORK_ID
: Ini adalah jaringan yang dapat diakses secara publik di deployment OpenStack Anda tempat IP Mengambang dialokasikan. Dari jaringan ini,LoadBalancer IPs
untuk layanan Kubernetes akan ditetapkan. Anda dapat menggunakan perintah yang mirip dengan ini untuk mengambil IP tersebut dari lingkungan OpenStack Anda.ABM_NETWORK_SUBNET_ID
: Ini adalah subnet di jaringan pribadi di deployment OpenStack Anda tempat IP dialokasikan untuk VM yang menjalankan GKE di Bare Metal. Anda dapat menggunakan perintah yang mirip dengan ini untuk mengambil IP tersebut dari lingkungan OpenStack Anda.
Ambil alamat IP mengambang publik dari VM
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 '"')
Salin file
cloud.conf
ke VMabm-ws
di OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Login dengan aman ke VM
abm-ws
melalui SSH dan login sebagai penggunaroot
. Penggunaroot
seperti yang dikonfigurasi oleh skrip Terraform adalahabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Salin file
cloud.conf
ke direktori$HOME
penggunaroot
.cp /home/ubuntu/cloud.conf $HOME
Buat
Kubernetes Secret
dengan konfigurasi.# 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
Instal Penyedia Cloud OpenStack untuk 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
Memvalidasi integrasi OpenStack
Deploy contoh aplikasi Point-Of-Sales.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yaml
Verifikasi apakah pod aplikasi sedang berjalan.
kubectl get pods
Output yang diharapkan:
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
Mengekspos aplikasi melalui layanan jenis
LoadBalancer
.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yaml
Coba akses layanan dari browser.
# 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
Aplikasi Point-Of-Sales yang diakses menggunakan
EXTERNAL-IP
.Anda dapat melihat Load Balancer OpenStack baru yang dibuat di OpenStack dengan membuka WebUI OpenStack.