Mengonfigurasi Penyedia Cloud OpenStack untuk Kubernetes

Penyedia Cloud OpenStack untuk Kubernetes memungkinkan Anda menggunakan load balancing OpenStack untuk cluster yang berjalan di VM OpenStack. Setelah Anda menginstal dan mengonfigurasi penyedia, setiap Service jenis LoadBalancer akan mendapatkan load balancer OpenStack Octavia dan alamat IP eksternal dari jaringan IP mengambang Anda. Dalam dokumen ini, Anda akan memverifikasi integrasi dengan mengekspos aplikasi contoh.

Prasyarat

Panduan ini mengasumsikan bahwa Anda memiliki cluster yang dibuat dengan Google Distributed Cloud yang berjalan di lingkungan OpenStack dengan penyiapan yang mirip dengan yang dijelaskan dalam panduan Men-deploy cluster bare metal di OpenStack. Ikuti panduan tersebut terlebih dahulu sebelum mencoba langkah-langkah ini.

Google Distributed Cloud yang diinstal di OpenStack.

Mengonfigurasi penyedia

Bagian berikut mengasumsikan bahwa Anda memulai dari jendela terminal di workstation lokal.

  1. Ambil file konfigurasi klien OpenStack (openrc). Anda dapat mendownloadnya dari WebUI OpenStack.

    source PATH_TO_OPENRC_FILE/openrc
    
  2. Buat file konfigurasi untuk Penyedia Cloud 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
    

    Ganti kode berikut:

    • OS_AUTH_URL, OS_USERNAME, OS_PASSWORD: Variabel ini seharusnya sudah ditetapkan di lingkungan dengan mengambil file openrc. Dengan demikian, perubahan tersebut akan otomatis diambil.
    • PUBLIC_NETWORK_ID: Ini adalah jaringan yang dapat diakses secara publik dalam deployment OpenStack Anda, tempat alamat IP Mengambang dialokasikan. Dari jaringan inilah LoadBalancer 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, tempat IP dialokasikan untuk VM yang menjalankan software-only Google Distributed Cloud. Anda dapat menggunakan perintah yang mirip dengan Mendapatkan ID jaringan publik di OpenStack untuk mengambil IP ini dari lingkungan OpenStack Anda.
  3. 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 '"')
    
  4. Salin file cloud.conf ke VM abm-ws di OpenStack.

    scp ./cloud.conf ubuntu@$FLOATING_IP:~
    
  5. Gunakan SSH untuk terhubung dengan aman ke VM abm-ws dan login sebagai pengguna root.

    Pengguna root seperti yang dikonfigurasi oleh skrip Terraform adalah abm.

    ssh ubuntu@$FLOATING_IP
    sudo -u abm -i
    
  6. Salin file cloud.conf ke direktori $HOME pengguna root.

    cp /home/ubuntu/cloud.conf $HOME
    
  7. 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
    
  8. 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

  1. 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
    
  2. Pastikan pod aplikasi 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
    
  3. Mengekspos aplikasi melalui layanan berjenis LoadBalancer.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yaml
    
  4. 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 Tempat Penjualan yang diakses menggunakan EXTERNAL-IP.

    Aplikasi Point-Of-Sales yang berjalan di cluster bare metal yang diekspos melalui LoadBalancer di OpenStack

    Anda dapat melihat Load Balancer OpenStack baru yang dibuat di OpenStack dengan membuka WebUI OpenStack.

    Aplikasi OpenStack yang menampilkan LoadBalancer yang disediakan oleh Google Distributed Cloud khusus software