Menyebarkan aplikasi dari sumber ke Azure Red Hat OpenShift

Pelajari cara menyebarkan aplikasi ke kluster Azure Red Hat OpenShift dari kode sumber menggunakan strategi build Source-to-Image (S2I). Source-to-Image (S2I) adalah proses build untuk membangun gambar kontainer yang dapat direproduksi dari kode sumber. S2I menghasilkan gambar yang siap dijalankan dengan menginjeksikan kode sumber ke dalam gambar kontainer dan membiarkan kontainer mempersiapkan kode sumber tersebut untuk dieksekusi. Anda dapat meminta OpenShift membangun aplikasi dari sumber untuk menyebarkannya, jadi Anda tidak perlu membuat kontainer secara manual dengan setiap perubahan. OpenShift kemudian dapat membangun dan menyebarkan versi baru secara otomatis ketika diberitahu tentang perubahan kode sumber.

Sebelum Anda mulai

Catatan

Artikel ini mengasumsikan Anda telah menyiapkan rahasia penarikan. Jika Anda tidak memiliki rahasia penarikan untuk kluster, Anda dapat mengikuti dokumentasi untuk Menambahkan atau memperbarui rahasia penarikan Red Hat Anda.

Membuat kluster

Ikuti tutorial untuk membuat kluster Azure Red Hat OpenShift. Jika Anda memilih untuk menginstal dan menggunakan antarmuka baris perintah (CLI) secara lokal, tutorial ini mengharuskan Anda menggunakan Azure CLI versi 2.6.0 atau yang lebih baru. Jalankan az --version untuk menemukan versi Anda saat ini. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Menyambungkan ke kluster

Untuk mengelola kluster Azure Red Hat OpenShift, Anda perlu menggunakan oc, klien baris perintah OpenShift.

Catatan

Kami menyarankan agar Anda menginstal baris perintah OpenShift di Azure Cloud Shell dan anda menggunakannya untuk semua operasi baris perintah dalam artikel ini. Buka shell Anda dari shell.azure.com atau pilih tautan:

Button to launch Azure Cloud Shell

Ikuti tutorial untuk menginstal CLI Anda, untuk mengambil kredensial kluster Anda dan menyambungkan ke kluster dengan konsol web dan OpenShift CLI.

Setelah masuk, Anda akan melihat pesan yang mengatakan bahwa Anda menggunakan proyek default.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

Membuat proyek

Untuk membuat proyek baru bernama demoproject, jalankan perintah:

oc new-project demoproject

Anda akan melihat output yang mirip dengan ini:

Now using project "demoproject" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app django-psql-example

to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

Luncurkan konsol web

Cari tahu URL konsol web kluster dengan menjalankan:

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

Anda harus mendapatkan URL yang mirip dengan yang ini.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

Luncurkan URL konsol di browser dan masuk menggunakan kredensial kubeadmin.

Azure Red Hat OpenShift login screen

Beralih ke perspektif Pengembang, bukan perspektif Administrator, di menu sebelah kiri dan pilih demoproject dalam daftar proyek. Anda kemudian harus berada di halaman Topologi untuk proyek tersebut.

Azure Red Hat OpenShift project topology

Karena proyek kosong, tidak ada beban kerja yang ditemukan dan Anda akan disajikan dengan berbagai opsi untuk bagaimana Anda dapat menyebarkan aplikasi.

Menyebarkan menggunakan konsol web

Dari opsi yang disajikan untuk menyebarkan aplikasi, pilih Dari Git. Opsi ini akan mengarahkan Anda ke halaman Impor dari Git. Gunakan https://github.com/sclorg/django-ex.git sebagai URL Repo Git. Aplikasi web sampel diimplementasikan menggunakan bahasa pemrograman Python.

Azure Red Hat OpenShift project from Git

Catatan

OpenShift mendeteksi bahwa ini adalah proyek Python dan memilih gambar penyusun yang sesuai.

Gulir ke bawah ke Opsi Tingkat Lanjut dan pastikan bahwa Buat rute ke aplikasi dicentang. Tindakan ini akan membuat rute OpenShift, cara untuk mengekspos layanan dengan memberinya nama host yang dapat dijangkau secara eksternal.

Azure Red Hat OpenShift project from Git - Route setup

Saat Anda siap, di bagian bawah halaman klik Buat. Hal ini akan membuat sumber daya untuk mengelola build dan penyebaran aplikasi. Anda kemudian akan diarahkan ke gambaran umum topologi untuk proyek tersebut.

Azure Red Hat OpenShift project from Git - Topology

Ringkasan topologi memberikan representasi visual dari aplikasi yang telah Anda sebarkan. Dengan tampilan ini, Anda dapat melihat struktur aplikasi secara keseluruhan.

Ikon Git dapat diklik untuk membawa Anda ke repositori Git dari tempat kode sumber untuk aplikasi dibangun. Ikon yang ditampilkan di kiri bawah menunjukkan status build aplikasi. Mengklik ikon ini akan mengarakan Anda ke bagian detail build. Jika aplikasi telah membuka rute, ikon di kanan atas dapat diklik untuk membuka URL rute aplikasi yang telah dibuat.

Saat aplikasi sedang naik atau turun, memulai peluncuran dan membuat ulang pod, representasi aplikasi dalam tampilan topologi akan dianimasikan untuk memberi Anda tampilan real time tentang apa yang terjadi.

Mengklik ikon aplikasi akan memunculkan detail selengkapnya seperti yang ditunjukkan di bawah ini.

Azure Red Hat OpenShift project from Git - Details

Menampilkan log penyusun

Setelah build dimulai, klik tautan Lihat Log yang ditampilkan pada panel Sumber Daya.

Azure Red Hat OpenShift project from Git - Build logs

Hal ini akan memungkinkan Anda memantau kemajuan build saat berjalan. Gambar penyusun, Python dalam hal ini, akan menginjeksikan kode sumber aplikasi ke gambar akhir sebelum mendorongnya ke registri gambar internal OpenShift. Build akan berhasil diselesaikan ketika Anda melihat pesan akhir dari "Pendorongan berhasil".

Mengakses aplikasi

Setelah build gambar aplikasi selesai, gambar akan disebarkan.

Klik Topologi di bilah menu sebelah kiri untuk kembali ke tampilan topologi untuk proyek. Ketika Anda membuat aplikasi menggunakan konsol web, Rute secara otomatis dibuat untuk aplikasi dan akan diekspos di luar kluster. URL yang dapat digunakan untuk mengakses aplikasi dari browser web terlihat pada tab Sumber Daya untuk aplikasi yang Anda lihat sebelumnya.

Dari tampilan topologi, Anda dapat masuk ke URL untuk aplikasi yang disebarkan dengan mengklik ikon di kanan atas cincin. Ketika penyebaran selesai, klik ikon dan Anda akan melihat aplikasi yang Anda sebarkan.

Azure Red Hat OpenShift project from Git - Browse app

Menyebarkan menggunakan baris perintah

Anda telah mempelajari cara menyebarkan aplikasi menggunakan konsol web, sekarang mari kita sebarkan aplikasi web yang sama, tetapi kali ini menggunakan alat baris perintah oc.

Jalankan perintah berikut untuk menghapus proyek dan memulai kembali:

oc delete project demoproject

Anda akan mendapatkan pesan konfirmasi bahwa demoproject telah dihapus.

project.project.openshift.io "demoproject" deleted

Buat lagi demoproject dengan menjalankan:

oc new-project demoproject

Di dalam proyek, buat aplikasi baru dari sumber di GitHub, dengan menentukan penyusun S2I untuk versi terbaru Python yang disediakan.

oc new-app python:latest~https://github.com/sclorg/django-ex.git

Hal ini akan menampilkan output yang mirip dengan:

--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"

    Python 3.8
    ----------
   [...]

    Tags: builder, python, python38, python-38, rh-python38

    * A source build using source code from https://github.com/sclorg/django-ex.git will be created
      * The resulting image will be pushed to image stream tag "django-ex:latest"
      * Use 'oc start-build' to trigger a new build
    * This image will be deployed in deployment config "django-ex"
    * Port 8080/tcp will be load balanced by service "django-ex"
      * Other containers can access this service through the hostname "django-ex"

--> Creating resources ...
    imagestream.image.openshift.io "django-ex" created
    buildconfig.build.openshift.io "django-ex" created
    deploymentconfig.apps.openshift.io "django-ex" created
    service "django-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/django-ex'
    Run 'oc status' to view your app.

OpenShift akan menggunakan nama repositori Git sebagai nama untuk aplikasi. Tinjau status build dan penyebaran dengan menjalankan:

oc status

Saat build dan penyebaran selesai, Anda akan melihat output yang serupa.

In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443

svc/django-ex - 172.30.200.50:8080
  dc/django-ex deploys istag/django-ex:latest <-
    bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
    deployment #1 deployed about a minute ago - 1 pod


2 infos identified, use 'oc status --suggest' to see details.

Untuk mengekspos aplikasi di luar kluster OpenShift, Anda harus membuat rute dengan menjalankan:

oc expose service/django-ex

Anda akan mendapatkan konfirmasi.

route.route.openshift.io/django-ex exposed

Ambil URL dengan menjalankan:

oc get route django-ex

Anda harus mendapatkan kembali nama host yang ditetapkan ke rute yang dapat Anda gunakan untuk menelusuri ke aplikasi yang disebarkan.

NAME        HOST/PORT                                              PATH   SERVICES    PORT       TERMINATION   WILDCARD
django-ex   django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io          django-ex   8080-tcp                 None

Memicu build biner baru

Saat Anda mengerjakan aplikasi, Anda mungkin ingin membuat perubahan dan melihatnya disebarkan. Anda dapat dengan mudah menyiapkan webhook yang akan memicu build dan penyebaran baru dengan setiap penerapan kode. Namun, hal lini mungkin tidak diinginkan karena terkadang Anda ingin melihat perubahan tanpa harus mendorong setiap perubahan kode ke repositori.

Dalam kasus di mana Anda dengan cepat melakukan iterasi pada perubahan, Anda dapat menggunakan apa yang disebut penyusun biner. Untuk menunjukkan skenario ini, kloning repositori Git untuk aplikasi secara lokal dengan menjalankan:

git clone https://github.com/sclorg/django-ex.git

Hal ini akan membuat sub direktori django-ex yang berisi kode sumber untuk aplikasi:

Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.

Mengubah ke sub direktori:

cd django-ex

Buka editor Azure Cloud Shell terintegrasi:

code welcome/templates/welcome/index.html

Gulir ke bawah dan ubah baris yang mengatakan Welcome to your Django application on OpenShift untuk mengatakan Welcome to Azure Red Hat OpenShift. Simpan file dan tutup editor melalui menu ... di kanan atas.

Azure Red Hat OpenShift project from Git - Edit application in Azure Cloud Shell editor

Mulai build baru dengan menjalankan perintah:

oc start-build django-ex --from-dir=. --wait

Dengan meneruskan bendera --from-dir=., baris perintah OpenShift akan mengunggah kode sumber dari direktori yang ditentukan lalu memulai proses build dan penyebaran. Anda akan mendapatkan output yang mirip dengan di bawah ini, dan setelah beberapa menit, build akan selesai.

Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started

Jika Anda me-refresh browser dengan aplikasi, Anda akan melihat judul yang diperbarui.

Azure Red Hat OpenShift project from Git - Browse updated app

Membersihkan sumber daya

Setelah selesai dengan aplikasi, Anda dapat menjalankan perintah berikut untuk menghapus proyek:

oc delete project demoproject

Anda juga dapat menghapus kluster dengan mengikuti instruksi di Tutorial: Hapus kluster Azure Red Hat OpenShift 4.

Langkah berikutnya

Dalam panduan ini, Anda mempelajari cara:

  • Membuat proyek
  • Menyebarkan aplikasi dari kode sumber menggunakan konsol web
  • Menyebarkan aplikasi dari kode sumber menggunakan baris perintah OpenShift
  • Memicu build biner menggunakan baris perintah OpenShift

Pelajari selengkapnya tentang cara membangun dan menyebarkan aplikasi menggunakan sumber ke gambar dan strategi build lainnya.