GNU/Linux >> Belajar Linux >  >> Linux

Cara Men-deploy Aplikasi Multi-Tier dengan Kubernetes

Aplikasi multi-tingkat adalah aplikasi yang didistribusikan di antara lebih dari satu lapisan. Ini secara logis memisahkan lapisan operasional. Jumlah lapisan bervariasi dengan kebutuhan bisnis dan aplikasi. Pada artikel ini, kita akan melihat sebuah aplikasi dibagi menjadi 2 layer, backend dan frontend layer. Kami akan menggunakan MongoDB sebagai backend untuk menyimpan data dan Python Flask sebagai Webserver frontend. Kami akan menerapkan kedua aplikasi ini menggunakan penerapan di Kubernetes dan memiliki layanan untuk meneruskan permintaan kepada mereka.

Prasyarat

  1. Cluster Kubernetes dengan setidaknya 1 node pekerja.
    Jika Anda ingin belajar membuat Cluster Kubernetes, klik di sini. Panduan ini akan membantu Anda membuat cluster Kubernetes dengan 1 Master dan 2 Node di Instans AWS Ubuntu 18.04 EC2.
  2. Pemahaman dasar tentang Penerapan dan Layanan.
    Lihat Penerapan dan Layanan untuk mendapatkan pemahaman dasar.

Apa yang akan kita lakukan?

  1. Menerapkan Aplikasi Multi-Tingkat

Menerapkan Aplikasi Multi-Tingkat

Buat file baru bernama "test-db-deployment.yaml" dengan konten berikut. Ini akan menentukan penerapan MongoDB yang akan bertindak sebagai database, lapisan backend.

vim test-db-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-db
spec:
  selector:
    matchLabels:
      appdb: testdb
  replicas: 1
  template:
    metadata:
      labels:
        appdb: testdb
    spec:
      containers:
      - name: test-db
        image: mongo:3.3
        env:
        - name: MONGODB_DATABASE
          value: testdata
        ports:
        - containerPort: 27017

Sekarang, buat layanan yang akan melayani permintaan ke MongoDB dari aplikasi frontend kita. Layanan ini akan mendengarkan pada Port 27017 dan meneruskan permintaan ke MongoDB pada port yang sama.

vim test-db-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: mongodb
  labels:
    app: testdb
spec:
  ports:
  - port: 27017
    protocol: TCP
  selector:
    appdb: testdb

Langkah selanjutnya adalah mendefinisikan aplikasi frontend. Buat file baru yang berisi definisi penerapan berikut.

Ini akan mendengarkan di Port 5000.

Permintaan ke MongoDB akan diteruskan ke MONGODB_HOST yaitu layanan mongodb.

vim test-web-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app: test
  replicas: 1
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test-app
        image: teamcloudyuga/rsvpapp
        env:
        - name: MONGODB_HOST
          value: mongodb
        ports:
        - containerPort: 5000
          name: web-port

Untuk mengakses frontend, kita akan membuat layanan dengan tipe NodePort listening pada Port 31081. Artinya, Python Flask Webserver dapat diakses di IP=IP-Of-Any-Node dan Port=31081. Buat yang baru dengan definisi layanan berikut.

vim test-web-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: test
  labels:
    apps: test
spec:
  type: NodePort
  ports:
  - name: tcp-31081-5000
    nodePort: 31081
    port: 5000
    protocol: TCP
  selector:
    app: test

Sekarang, kita siap untuk membuat aplikasi sampel 2 tingkat. Sebelum melanjutkan, mari kita periksa apakah cluster memiliki objek.

Jalankan perintah berikut untuk memeriksa pod, penerapan, dan layanan yang berjalan di cluster.

kubectl dapatkan pod

kubectl dapatkan penerapan

kubectl dapatkan layanan

Pada screenshot di atas, terlihat bahwa hanya ada 1 layanan default kubernetes di dalam cluster.

Sekarang, jalankan perintah berikut satu per satu dari direktori tempat Anda membuat 4 file untuk membuat penerapan MongoDB, layanan MongoDB, penerapan Server Web Python Flask, dan layanan Server Web Python Flask.

kubectl create -f test-db-deployment.yaml

kubectl create -f test-db-service.yaml

kubectl create -f test-web-deployment.yaml

kubectl create -f test-web-service.yaml

Pada tangkapan layar di atas, Anda dapat melihat bahwa penerapan MongoDB, layanan MongoDB, penerapan Server Web Python Flask, dan layanan server Web Python Flask telah berhasil dibuat.

Untuk memverifikasi hal yang sama, jalankan perintah berikut.

kubectl dapatkan pod

kubectl dapatkan penerapan

kubectl dapatkan layanan

Pada tangkapan layar berikut, Anda dapat melihat bahwa 2 pod dan 2 layanan telah dibuat. Pod yang telah dibuat dikendalikan oleh penerapan yang kita buat.

Sekarang, kita siap untuk mengakses aplikasi di IP-of-any-Node:NodePort yaitu IP-of-any-Node:31081.

Setelah Anda menekan URL di browser, Anda akan melihat aplikasi sebagai berikut. Ini adalah contoh aplikasi yang menggunakan gambar buruh pelabuhan yang tersedia untuk umum dan milik CloudYuga. Di sini Anda dapat melihat bahwa jumlah RSVP adalah 0, ini berarti MongoDB tidak memiliki data apa pun di dalamnya.

Sekarang, kita dapat menambahkan beberapa entri demo.

Setelah menambahkan beberapa entri, kita dapat melihat bahwa jumlah telah berubah. Ini berarti data telah disimpan di MongoDB.

Sekarang, ketika Anda tidak lagi membutuhkan aplikasi ini, Anda dapat menghapus semua objek dengan menjalankan perintah berikut dari direktori tempat Anda memiliki semua file objek Kubernetes.

kubectl delete -f .

Perintah di atas akan menghapus penerapan MongoDB, layanan MongoDB, penerapan Server Web Python Flask, dan layanan Server Web Python Flask yang kita buat.

Untuk memeriksa apakah semua objek yang kita buat telah berhasil dihapus, jalankan perintah berikut.

kubectl dapatkan semua

Pada tangkapan layar berikut, Anda dapat melihat bahwa hanya ada satu layanan kubernetes default dan objek yang telah kita buat tidak ada lagi.

Kesimpulan

Dalam artikel ini, kami membuat penerapan database dan layanan backend MongoDB untuk mengakses database dan untuk frontend, kami membuat penerapan dan layanan aplikasi berbasis Python Flask untuk mengakses ini paling depan. Kami juga melihat data disimpan di database backend. Ini adalah contoh aplikasi tingkat 2 yang menggunakan gambar buruh pelabuhan yang tersedia untuk umum.


Linux
  1. Deploy Aplikasi Flask dengan Dokku

  2. Cara Deploy Aplikasi Flask dengan Nginx dan Gunicorn di Ubuntu 20.04

  3. Bagaimana cara menghapus file dengan nama aneh?

  1. Cara Mengatur Cluster Kubernetes dengan Rancher

  2. Cara Menyebarkan Elasticsearch di Kubernetes

  3. Cara menghapus folder dengan nama tertentu

  1. Cara Menginstal Jenkins di Kubernetes

  2. Cara Menyebarkan RabbitMQ di Kubernetes

  3. Cara Menyebarkan PostgreSQL di Kubernetes