Perusahaan pada zaman modern saat ini telah mengimplementasikan private cloud menggunakan OpenStack untuk mengelola infrastruktur TI secara lebih fleksibel dan efisien. Namun, dalam operasional sehari-hari, tantangan sering muncul terkait dengan pengelolaan sumber daya dan meminimalkan risiko human error, terutama ketika pengembang melakukan pengujian pada lingkungan yang sama dengan produksi. Risiko ini dapat mengganggu stabilitas sistem dan mengakibatkan pemanfaatan resource cloud tidak efisiensi. Untuk mengatasi tantangan tersebut, manajer tim operasional berencana untuk memisahkan lingkungan antara project developer dan production.
Selain itu, perusahaan ingin memantau dan menghitung penggunaan resource secara terukur menggunakan Yuyu, sebuah solusi untuk pencatatan dan perhitungan pemakaian resource OpenStack dengan integrasi Yuyu, karena dapat melacak penggunaan sumber daya mulai dari volume, flavor, image, dan lain – lain, bahkan sampai router pada OpenStack yang digunakan. Serta dapat menganalisa biaya penggunaan agar dapat menghemat pengeluaran operasional perusahaan.
Tools yang digunakan
- OpenStack– Antelope – v2023.1
- Kolla Ansible – v2023.1
- Ansible – v2.14.18
- Horizon – v2023.1
- Yuyu – v2023.1
- Python – 3.10.12
Topologi

Langkah Implementasi
1. Konfigurasi SSL Certificate untuk service Horizon dan Yuyu.
- Buat file IP SAN untuk Node Controller karena Service Horizon dan Yuyu berada pada Node Controller.
sudo nano /etc/ssl/IP_SANS.txtsubjectAltName=IP:<IP Server / Node>
- Buat directory untuk menyimpan Certificate di dalam directory “/etc/ssl/” agar lebih rapi serta mudah di identifikasi.
~$ sudo mkdir -p /etc/ssl/ ~$ sudo mkdir -p /etc/ssl/
- Buat certificate untuk service Horizon dan Yuyu
- Horizon.
sudo openssl genrsa -out /etc/ssl/horizon/horizon.key 2048 sudo openssl req -sha512 -new \ -subj "/C=IN/ST=jateng/L=kendal/0=Horizon Najwan/OU=Horizon Najwan/CN=Horizon Najwan>" \ -key /etc/ssl/horizon/horizon.key \ -out /etc/ssl/horizon/horizon.csr sudo openssl x509 -req -sha512 -days 3650 \ -key /etc/ssl/horizon/horizon.key \ -extfile /etc/ssl/IP_SANS.txt \ -in /etc/ssl/horizon/horizon.csr\ -out /etc/ssl/horizon/horizon.crt
- Yuyu.
sudo openssl genrsa -out /etc/ssl/yuyu/yuyu.key 2048 sudo openssl req -sha512 -new \ -subj "/C=IN/ST=jateng/L=kendal/0=Yuyu Najwan/OU=Yuyu Najwan/CN=Yuyu Najwan>" \ -key /etc/ssl/yuyu/yuyu.key \ -out /etc/ssl/yuyu/yuyu.csr sudo openssl x509 -req -sha512 -days 3650 \ -key /etc/ssl/yuyu/yuyu.key \ -extfile /etc/ssl/IP_SANS.txt \ -in /etc/ssl/yuyu/yuyu.csr\ -out /etc/ssl/yuyu/yuyu.crt
- Horizon.
- Kemudian pindahkan file certificate (dengan format .crt ) yang sudah dibuat tadi, agar certificate nya di akui oleh system operasi ubuntu, agar tidak menjadi certificate self-signed. Karena untuk Django di Horizon perlu di buat seperti itu.
~$ sudo apt-get install ca-certificates ~$ sudo cp /etc/ssl/horizon/horizon.crt /usr/local/share/ca-certificates ~$ sudo cp /etc/ssl/yuyu/yuyu.crt /usr/local/share/ca-certificates ~$ sudo update-ca-certificates
2. Install OpenStack dengan Kolla-Ansible
OpenStack terdiri dari beberapa service, yang nantinya berinteraksi satu sama dengan API dari setiap service yang ada, untuk service nya sendiri itu adalah sebagai berikut :
- Keystone, untuk identity service (verifikasi akses).
- Neutron, untuk Networking OpenStack.
- Nova, untuk Compute Service (yang Membuat Instance).
- Glance, untuk menyimpan Image yang digunakan untuk membuat Instance.
- Cinder, untuk membuat Volume yang digunakan Instance
- RabbitMQ, untuk Message Broker yang mengirim event dari komponen OpenStack.
Untuk lebih detail terkait Penjelasan dan Installasi nya bisa ke Postingan saya, akan tetapi harus menjalankan perintah di bawah ini terlebih dahulu. Karena nanti akan ada tambahan penyesuaian dan harus redeploy ulang cluster OpenStacknya, jadi lumayan ribet. Baru bisa mengikuti dari Postingan ini OpenStack and Kolla-Ansible.
- Edit pada file global.yaml untuk opsi enable TLS pada service internal OpenStack dan untuk copy CA ke Container Service nya, pada {DIR_KOLLA} ubah menjadi {{ node_config }} dan {DIR_KOLLA_CERT} pada ubah menjadi {{ kolla_certificates_dir }}.
openstack_cacert: "/etc/ssl/certs/ca-certificates.crt" kolla_enable_tls_internal: "yes" kolla_certificates_dir: "{DIR_KOLLA}/certificates" kolla_admin_openrc_cacert: "/etc/kolla/certificates/ca/root.crt" kolla_copy_ca_into_containers: "yes" kolla_enable_tls_backend: "yes" kolla_verify_tls_backend: "no" kolla_tls_backend_cert: "{DIR_KOLLA_CERT}/backend-cert.pem" kolla_tls_backend_key: "{DIR_KOLLA_CERT}/backend-key.pem"
- lalu pada step sebelum deploy, jalankan perintah ini untuk membuat Certificate.
(kolla-venv) student@controller:~$ kolla-ansible -i ./multinode certificates
3. Installasi Horizon dan Yuyu dengan TLS
Service Horizon dan Yuyu atau lebih tepatnya Yuyu Api, keduanya menggunakan Django dalam Implementasinya, jadi untuk menambahkan opsi TLS, kita hanya perlu mengatur pada konfigurasi dari Django nya, untuk menambahkan file Certificate dan key Certificate. Untuk Installasi Horizon dan Yuyu, bisa kunjungi postingan saya yang ini Yuyu Billing in OpenStack Horizon, untuk penjelasan serta hasil akhirnya juga.
Ada beberapa penyesuaian apabila ingin di tambahkan opsi TLS pada kedua service ini, yaitu sebagai berikut langkah - langkahnya
A. Untuk di bagian Horizon
- Update konfigurasi dari “local_setting.py” pada directory Horizon, seperti contoh saya letakan pada directory /var/www/html/horizon/openstack_dashboard/local/ menjadi seperti dibawah ini.
WEBROOT = '/' YUYU_URL = 'https://{IP HOST}:8182' SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') CSRF_COOKIE_SECURE = True SESSION_COOKIE_SECURE = True OPENSTACK_KEYSTONE_URL = 'https://{IP HOST}:5000/v3' OPENSTACK_KEYSTONE_DEFAULT_ROLE = 'member' OPENSTACK_SSL_NO_VERIFY = False OPENSTACK_SSL_CACERT = '/etc/ssl/certs/ca-certificates.crt' OPENSTACK_KEYSTONE_BACKEND = { 'name': 'native', 'can_edit_group': True, 'can_edit_user': True, 'can_edit_role': True, 'can_edit_project': True, 'can_edit_domain': True, }
- pada saat generate file konfigurasi apache, tambahkan opsi seperti ini untuk auto generate apache conf dengan SSL/TLS.
~# ./manage.py make_web_conf --apache \ --sslkey /etc/ssl/horizon/horizon.key \ --sslcert /etc/ssl/horizon/horizon.crt \ --cacert /etc/ssl/certs/ca-certificates.crt \ --ssl > /etc/apache2/sites-available/horizon.conf
- restart service Apache dan Memcached
~# systemctl restart apache2.service memcached
B. Untuk di bagian Yuyu Api
- Update konfigurasi dari “local_setting.py” pada directory Yuyu API, seperti contoh, saya letakan pada directory /var/yuyu/yuyu/ menjadi seperti dibawah ini.
ALLOWED_HOSTS = ['*'] SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') SECURE_SSL_HOST = True SECURE_SSL_REDIRECT = False SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True
- Lalu edit pada service Yuyu API, menjadi seperti berikut untuk menambahkan opsi TLS.
~# nano /etc/systemd/system/yuyu_api.service --- ExecStart=/var/yuyu/env/bin/gunicorn yuyu.wsgi \ --workers 2 \ --keyfile /etc/ssl/yuyu/yuyu.key \ --certfile /etc/ssl/yuyu/yuyu.crt \ --bind 10.18.18.10:8182 \ --log-file=logs/gunicorn.log
- lalu restart service Yuyu API, Apache dan Memcache.
~# systemctl restart yuyu_api.service spache2.service memcached
Kendala yang mungkin dapat di terjadi saat pembuatan.
- Error saat debug Login ke Project Admin via CLI dengan File Openrc.
Solusi:
- Ubah pada file Openrc pada bagian “export OS_CACERT”, kalau tidak ada bisa ditambahkan di line baru, isikan certificate ini “/etc/kolla/certificates/ca/root.crt”.
- Bisa gunakan ”/etc/ssl/certs/ca-certificate.crt” pada saat berubah file openrc di bagian export OS_CACERT, apabila file “/etc/kolla/certificates/ca/root.crt” sudah di masukan ke ca-certificate ubuntu, dengan cara copy file “/etc/kolla/certificates/ca/root.crt” ke “/usr/local/share/ca-certificates”, lalu update ca-certificates dengan perintah ini “sudo update-ca-certificates”.
- Error “SSLError at /admin/billing_overview/” saat membuka page Billing di Horizon, karena Django yang digunakan oleh Horizon tidak diperbolehkan “Self-Signed Certificate”.
Solusi:
- Tambahkan certificate Horizon dan Yuyu ke “/usr/local/share/ca-certificates” lalu update ca-certificate, referensi
- Error “AttributeError at /auth/logout/” saat logout atau sign out project di Horizon.
Solusi:
- Versi dari library “python-memcached” harus menggunakan versi 1.59. kalau pake yang terbaru tidak bisa.
- Error saat mencoba curl dan ada log error seperti ini, “Invalid HTTP_HOST header: ’10.18.18.10:8183’, you may need to add ’10.18.18.10’ to ALLOWED_HOSTS”.
Solusi:
- Bisa setting untuk “ALLOWED_HOSTS“ pada file konfigurasi “local_setting.py” dari Yuyu, bisa langsung ke IP 10.18.18.10 (menyesuaikan IP Host masing - masing) atau tanda bintang “ * ” jika ingin semua IP boleh masuk.
- Error “Did Not Connect: Potential Security Issue” pada Console Instance di Horizon, bisa disebabkan karena Certificate tidak public (Tidak Berbayar), atau karena Image yang di pakai Instance error.
Solusi:
- Bisa coba klik di bawah kata “Instance Console” yang ada kotak biru, lalu klik “Click here to show only console”. Error itu bisa disebabkan karena Image yang dipakai rusak.
Untuk hasil akhir nya, kurang lebih sama seperti pada Postingan saya yang Yuyu Billing in OpenStack Horizon
Di blog ini, saya berbagi pengalaman tentang bagaimana mengamankan layanan OpenStack, dashboard Horizon, dan Yuyu Billing OpenStack dengan menggunakan TLS (Transport Layer Security). Langkah-langkah yang saya jelaskan mencakup pembuatan sertifikat SSL, konfigurasi, hingga tips mengatasi masalah yang sering muncul.
Selain teknis, saya juga menambahkan gambaran topologi agar lebih mudah dipahami, terutama bagi yang baru terjun ke dunia cloud. Dengan langkah-langkah ini, layanan OpenStack jadi lebih aman, data yang dikirim juga terlindungi, dan pastinya bikin pengguna lebih percaya sama sistem yang kita bangun.
Kalau kalian lagi cari cara untuk bikin OpenStack lebih aman atau ingin tahu tentang TLS, semoga tulisan ini bisa membantu ya!