Setelah kita selesai membangun cluster OpenStack dengan kolla ansible pada postingan sebelumnya, untuk mengoperasikan OpenStack melalui CLI terdapat beberapa langkah sebagai berikut:
Mengakses Cluster
Menggunakan OpenStack RC File
File RC berisi kumpulan variabel yang digunakan untuk mengakses OpenStack dengan user atau project tertentu.
source ~/admin-openrc.sh
Membuat Project
openstack project create --enable --description "project untuk kubernetes" kubernetes
openstack project list --long --fit-width
Membuat User
openstack user create --project admin --email [email protected] --password p@ssw0rd viki
openstack user create --project kubernetes --email [email protected] --password-prompt k8s
openstack user set viki --project kubernetes
Verifikasi
for i in {viki,k8s}; do
openstack user show $i;
done
Role Project
openstack role add --user viki --project admin admin
openstack role add --user viki --project kubernetes member
openstack role add --user k8s --project kubernetes admin
Verifikasi
for i in {viki,k8s}; do
openstack role assignment list --user $i --names;
done
Membuat Kuota Project
openstack quota set --core 24 --ram 20480 --instances 10 --volumes 10 --floating-ips 6 --secgroups 2 kubernetes
Membuat Image
Unduh file cloud image terlebih dahulu:
wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
curl -LO https://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img
Kemudian import image yang sudah diunduh ke OpenStack dengan perintah berikut:
openstack image create --public --disk-format qcow2 --file cirros-0.6.1-x86_64-disk.img cirros-test
openstack image create --public --disk-format qcow2 --file focal-server-cloudimg-amd64.img ubuntu20-focal
openstack image list
Membuat Flavor
Flavor mendefinisikan spesifikasi sebuah instance. Contohnya, membuat flavor dengan 1 VCPU, 1GB RAM, dan 10GB Disk dapat dilakukan dengan perintah berikut:
openstack flavor create --project kubernetes --private --vcpu 2 --ram 2048 --disk 2 n1-kubemaster
openstack flavor create --project kubernetes --private --vcpu 4 --ram 4096 --disk 4 n2-kubeworker
openstack flavor list --all
Membuat SSH Keypair
Keypair di sini adalah SSH keypair yang biasanya kita buat dengan perintah ssh-keygen, yang menghasilkan file public key dan private key. Ini membantu cloud-init untuk memasukkan public key ke dalam instance. Untuk membuat keypair, gunakan perintah berikut:
openstack keypair create --public-key ~/.ssh/id_rsa.pub controller-key
openstack keypair create --public-key ~/.ssh/k8s.pub k8s-key
Membuat Security Group
Security group berfungsi sebagai firewall pada level instance. Misalnya, kita dapat mengatur koneksi masuk (ingress) pada SSH (TCP port 22), layanan web (TCP port 80, 443), dan protokol ICMP dengan perintah berikut:
Membuat security group kubesecgroup
openstack security group create kubesecgroup
openstack security group rule create --ingress --protocol icmp
openstack security group rule create --ingress --protocol tcp --dst-port 22 --description ssh
openstack security group rule create --ingress --protocol tcp --dst-port 80 --description http
openstack security group rule create --ingress --protocol tcp --dst-port 443 --description https
openstack security group rule create --ingress --protocol tcp --dst-port 6443 --description api-service
openstack security group rule create --ingress --protocol tcp --dst-port 8443 --description ha-api-service
openstack security group show kubesecgroup
Membuat security group app-secgroup
openstack security group create app-secgroup
openstack security group rule create --ingress --protocol tcp --dst-port 30080 --description http-ingress
openstack security group rule create --ingress --protocol tcp --dst-port 30443 --description https-ingress
Membuat External Network
External network digunakan untuk komunikasi keluar dari instance melalui provider eksternal. Untuk membuatnya, kita perlu mengetahui physical network provider terlebih dahulu dengan perintah berikut:
sudo cat /etc/kolla/neutron-server/ml2_conf.ini | grep flat_network | awk '{print $3}'
Kemudian, definisikan network dan subnet dengan perintah berikut:
openstack network create --project admin --external --provider-network-type flat \
--provider-physical-network physnet1 ext-net
openstack subnet create --network ext-net \
--subnet-range 172.16.1.0/24 --gateway 172.16.1.1 --dns-nameserver 172.16.1.1 \
--allocation-pool start=172.16.1.242,end=172.16.1.254 --no-dhcp ext-subnet
openstack network list --long --fit-width
openstack subnet list --long --fit-width
Membuat Internal Network
Internal network digunakan untuk komunikasi antar instance melalui jaringan internal. Untuk membuatnya, definisikan network dan subnet dengan perintah berikut:
openstack network create --internal kubenet
openstack subnet create --network kubenet --subnet-range 10.1.0.0/24 --gateway 10.1.0.1 kubesubnet
openstack network list --long --fit-width
openstack subnet list --long --fit-width
Membuat Router
Di OpenStack, router digunakan untuk menghubungkan trafik internal ke trafik eksternal, baik masuk (ingress) maupun keluar (egress). Untuk membuat router, gunakan perintah berikut:
openstack router create kuberouter
openstack router set --external-gateway ext-net kuberouter
openstack router add subnet kuberouter kubesubnet
openstack router show kuberouter
Membuat Instance
Setelah langkah-langkah di atas selesai, Anda dapat membuat instance dengan perintah berikut:
openstack server create --flavor n1-kubemaster --network kubenet \
--key-name k8s-key --image ubuntu20-focal --security-group kubesecgroup k8s-master01
openstack server create --flavor n2-kubeworker --network kubenet \
--key-name k8s-key --image ubuntu20-focal --security-group kubesecgroup k8s-worker01
Membuat Floating IP
Floating IP berfungsi sebagai NAT yang diterapkan ke IP internal instance. Untuk membuat floating IP, gunakan perintah berikut:
openstack floating ip create --floating-ip 172.16.1.244 ext-net
openstack floating ip create --floating-ip 172.16.1.245 ext-net
openstack floating ip list
openstack server add floating ip k8s-master01 172.16.1.244
openstack server add floating ip k8s-worker01 172.16.1.245
openstack server list
Membuat Volume
Volume digunakan sebagai penyimpanan persisten untuk instance dalam bentuk block storage. Untuk membuat volume dan meng-attach ke instance, gunakan perintah berikut:
openstack volume create --size 1 mvolume
openstack server add volume k8s-master01 mvolume
Memperbesar Volume
openstack server remove volume k8s-master01 mvolume
openstack volume set --size 2 mvolume
openstack volume list
openstack server add volume k8s-master01 mvolume
openstack server show k8s-master01
Instance dengan Penyimpanan Persisten
Untuk membuat penyimpanan persisten pada partisi root saat instance dibuat, gunakan perintah berikut:
openstack volume create --size 10 --image ubuntu20-focal web-server-ubuntu02
openstack server create --flavor c1-standard-01 \
--key-name controllerkey \
--security-group secg-basic-web \
--network int-net01 \
--volume web-server-ubuntu02 --wait \
web-server-ubuntu02
Upgrade Instance dengan Flavor Baru
Seiring waktu, spesifikasi instance mungkin perlu di-upgrade untuk memenuhi kebutuhan resource baru. Untuk melakukan upgrade, ikuti perintah berikut:
openstack flavor create --vcpus 2 --ram 2048 --disk 15 --public c2-standard-01
openstack server resize --flavor c2-standard-01 web-server-ubuntu01
openstack server list | grep web-server-ubuntu01
openstack server resize confirm web-server-ubuntu01
Referensi
- https://docs.openstack.org/python-openstackclient/latest/cli
- https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/project-v2.html#project-create
- https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/user-v2.html#user-create
- https://docs.openstack.org/keystone/rocky/admin/cli-manage-projects-users-and-roles.html