Panduan ini menjelaskan cara mengonfigurasi Penyedia Cloud OpenStack untuk Kubernetes di cluster Google Distributed Cloud Anda. Penyedia Cloud OpenStack harus dikonfigurasi untuk mengekspos Layanan Kubernetes menggunakan metode LBaaS OpenStack.
Prasyarat
Panduan ini mengasumsikan bahwa Anda memiliki cluster Google Distributed Cloud yang berjalan di lingkungan OpenStack Anda dengan pengaturan yang mirip dengan yang dijelaskan dalam Panduan Men-deploy Google Distributed Cloud di OpenStack. Ikuti panduan tersebut terlebih dahulu sebelum mencoba langkah-langkah ini.
Mengonfigurasi penyedia
Bagian berikut mengasumsikan bahwa Anda memulai dari jendela terminal di {i>workstation<i} lokal Anda.
Mendapatkan file konfigurasi klien OpenStack (
openrc
). Anda dapat mendownload 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 sudah ditetapkan di lingkungan dengan mencari fileopenrc
. Dengan demikian, mereka akan diambil secara otomatis.PUBLIC_NETWORK_ID
: Ini adalah widget yang dapat diakses secara publik jaringan Anda di deployment OpenStack yang berisi Alamat IP mengambang yang dialokasikan. Dari jaringan inilahLoadBalancer IPs
untuk Layanan Kubernetes akan ditetapkan. Anda dapat menggunakan perintah satu baris untuk mengambil IP ini dari lingkungan OpenStack Anda.ABM_NETWORK_SUBNET_ID
: Ini adalah subnet di jaringan pribadi dalam deployment OpenStack Anda, yang menjadi sumber alokasi IP untuk VM yang menjalankan Google Distributed Cloud. Anda dapat menggunakan perintah yang mirip dapat Mendapatkan ID jaringan publik di OpenStack untuk mengambil IP ini 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:~
Gunakan SSH untuk terhubung dengan aman ke VM
abm-ws
dan login sebagai penggunaroot
.Pengguna
root
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 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
Men-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
Pastikan bahwa 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 dengan mengunjungi WebUI OpenStack.