From bcf52d7ca953ec167791d3e132af963beff90be4 Mon Sep 17 00:00:00 2001 From: Rizal Date: Sun, 1 Sep 2024 17:49:06 +0700 Subject: [PATCH 1/4] start proyek ketiga --- README.md | 2 -- docker-compose.yml | 0 link.txt | 0 3 files changed, 2 deletions(-) delete mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 link.txt diff --git a/README.md b/README.md deleted file mode 100644 index 96ca8c917..000000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# a433-microservices -Repository ini digunakan untuk kebutuhan kelas Belajar Membangun Arsitektur Microservices diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..e69de29bb diff --git a/link.txt b/link.txt new file mode 100644 index 000000000..e69de29bb From 4aaa885ac486c891197de8421c84534ca311f0f5 Mon Sep 17 00:00:00 2001 From: Rizal Date: Sun, 1 Sep 2024 18:28:04 +0700 Subject: [PATCH 2/4] update proyek ketiga --- docker-compose.yml | 65 ++++++++++++++++++++++++++++ kubernetes/order-service-gateway.yml | 33 ++++++++++++++ kubernetes/order-service.yml | 47 ++++++++++++++++++++ kubernetes/shipping-service.yml | 47 ++++++++++++++++++++ link.txt | 9 ++++ 5 files changed, 201 insertions(+) create mode 100644 kubernetes/order-service-gateway.yml create mode 100644 kubernetes/order-service.yml create mode 100644 kubernetes/shipping-service.yml diff --git a/docker-compose.yml b/docker-compose.yml index e69de29bb..f8302c7f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -0,0 +1,65 @@ +# Menggunakan versi Docker Compose 3.8 +version: '3.8' + +# Mendefinisikan services +services: + + order-svc: + # Menggunakan image dari GitHub Container Registry + image: ghcr.io/rzlpratama77/order-service:latest + # Memetakan port dari container ke host + ports: + - 3000:3000 + # Service ini bergantung pada RabbitMQ + depends_on: + - rabbitmq-svc + # Menentukan jaringan yang digunakan oleh container + networks: + - rabbitmq-net + # Mengatur agar container selalu restart jika terhenti + restart: always + # Mendefinisikan variabel lingkungan untuk URL RabbitMQ + environment: + AMQP_URL: "amqp://guest:guest@rabbitmq-local:5672/" + + shipping-svc: + # Menggunakan image dari GitHub Container Registry + image: ghcr.io/rzlpratama77/shipping-service:latest + # Memetakan port dari container ke host + ports: + - 3001:3001 + # Service ini bergantung pada RabbitMQ + depends_on: + - rabbitmq-svc + # Menentukan jaringan yang digunakan oleh container + networks: + - rabbitmq-net + # Mengatur agar container selalu restart jika terhenti + restart: always + # Mendefinisikan variabel lingkungan untuk URL RabbitMQ + environment: + AMQP_URL: "amqp://guest:guest@rabbitmq-local:5672/" + + rabbitmq-svc: + # Menggunakan image RabbitMQ dari Docker Hub + image: rabbitmq:3.11-management + # Menentukan nama container + container_name: 'rabbitmq-local' + # Memetakan port dari container ke host + ports: + - 5672:5672 + - 15672:15672 + # Memetakan volume untuk menyimpan data dan log RabbitMQ + volumes: + - ~/.docker/rabbitmq/data/:/var/lib/rabbitmq/ + - ~/.docker/rabbitmq/log/:/var/log/rabbitmq/ + # Menentukan jaringan yang digunakan oleh container + networks: + - rabbitmq-net + # Mengatur agar container selalu restart jika terhenti + restart: always + +# Mendefinisikan jaringan dengan tipe bridge network +networks: + rabbitmq-net: + driver: bridge diff --git a/kubernetes/order-service-gateway.yml b/kubernetes/order-service-gateway.yml new file mode 100644 index 000000000..328da2236 --- /dev/null +++ b/kubernetes/order-service-gateway.yml @@ -0,0 +1,33 @@ +apiVersion: networking.istio.io/v1alpha3 # Versi API yang digunakan oleh Istio +kind: Gateway # Jenis objek yang dibuat adalah Gateway +metadata: # Metadata untuk mengidentifikasi objek + name: order-service-gateway # Nama Gateway ini adalah 'order-service-gateway' +spec: # Spesifikasi untuk Gateway + selector: # Selector untuk memilih resource yang sesuai dengan label tertentu + istio: ingressgateway # Menggunakan Istio ingress gateway + servers: # Konfigurasi server untuk Gateway + - port: # Port yang digunakan adalah 80 dengan protokol HTTP + number: 80 + name: http + protocol: HTTP + hosts: # Menerima lalu lintas dari host manapun + - "*" +--- +apiVersion: networking.istio.io/v1alpha3 # Versi API yang digunakan oleh Istio +kind: VirtualService # Jenis objek yang dibuat adalah VirtualService +metadata: # Metadata untuk mengidentifikasi objek + name: order-service-vs # Nama VirtualService ini adalah 'order-service-vs' +spec: # Spesifikasi untuk VirtualService + hosts: # Menerima permintaan dari host manapun + - "*" + gateways: # Merujuk pada Gateway yang dibuat sebelumnya + - order-service-gateway + http: # Konfigurasi untuk lalu lintas HTTP + - match: # Mencocokkan URL yang mengandung path '/order' + - uri: + exact: /order + route: # Konfigurasi rute untuk permintaan + - destination: # Tujuan rute permintaan adalah 'order-service' pada port 3000 + host: order-service + port: + number: 3000 \ No newline at end of file diff --git a/kubernetes/order-service.yml b/kubernetes/order-service.yml new file mode 100644 index 000000000..f25b5d2ec --- /dev/null +++ b/kubernetes/order-service.yml @@ -0,0 +1,47 @@ +apiVersion: v1 # Versi API Kubernetes yang digunakan +kind: Service # Jenis sumber daya adalah Service +metadata: # Metadata untuk identifikasi objek + labels: # Label untuk mengidentifikasi Service + app: order-service + tier: producer + name: order-service # Nama Service +spec: # Spesifikasi Service + selector: # Selector untuk mengasosiasikan Pod yang memiliki label tertentu + app: order-service + tier: producer + ports: # Spesifikasi port yang diekspos oleh Service + - name: http-nodejs + port: 3000 # Port yang diekspos oleh Service +--- +apiVersion: apps/v1 # Versi API Kubernetes yang digunakan untuk Deployment +kind: Deployment # Jenis sumber daya adalah Deployment +metadata: # Metadata untuk identifikasi objek + labels: # Label untuk mengidentifikasi Deployment + app: order-service + tier: producer + name: order-service # Nama Deployment +spec: # Spesifikasi Deployment + replicas: 1 # Jumlah replika Pod yang akan dibuat + selector: # Selector untuk mengasosiasikan Pod yang dikelola oleh Deployment ini + matchLabels: + app: order-service + tier: producer + template: # Template untuk membuat Pod baru + metadata: # Metadata untuk identifikasi Pod + labels: # Label untuk Pod yang dibuat oleh Deployment ini + app: order-service + tier: producer + spec: # Spesifikasi Pod + containers: # Daftar kontainer dalam Pod + - name: order-service # Nama kontainer + image: ghcr.io/rzlpratama77/order-service:latest # Image Docker yang digunakan + ports: # Port yang digunakan oleh kontainer + - containerPort: 3000 + env: # Definisi variabel environment untuk kontainer + - name: AMQP_PASSWORD # Mengambil nilai password dari secret + valueFrom: + secretKeyRef: + name: rabbitmq + key: rabbitmq-password + - name: AMQP_URL # URL untuk menghubungkan ke RabbitMQ + value: "amqp://user:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" \ No newline at end of file diff --git a/kubernetes/shipping-service.yml b/kubernetes/shipping-service.yml new file mode 100644 index 000000000..9222c0419 --- /dev/null +++ b/kubernetes/shipping-service.yml @@ -0,0 +1,47 @@ +apiVersion: v1 # Versi API Kubernetes yang digunakan +kind: Service # Jenis sumber daya adalah Service +metadata: # Metadata untuk identifikasi objek + name: shipping-service # Nama Service + labels: # Label untuk mengidentifikasi Service + app: shipping-service + tier: consumer +spec: # Spesifikasi Service + selector: # Selector untuk mengasosiasikan Pod yang memiliki label tertentu + app: shipping-service + tier: consumer + ports: # Spesifikasi port yang diekspos oleh Service + - name: http-nodejs + port: 3001 # Port yang diekspos oleh Service +--- +apiVersion: apps/v1 # Versi API Kubernetes yang digunakan untuk Deployment +kind: Deployment # Jenis sumber daya adalah Deployment +metadata: # Metadata untuk identifikasi objek + name: shipping-service # Nama Deployment + labels: # Label untuk mengidentifikasi Deployment + app: shipping-service + tier: consumer +spec: # Spesifikasi Deployment + replicas: 1 # Jumlah replika Pod yang akan dibuat + selector: # Selector untuk mengasosiasikan Pod yang dikelola oleh Deployment ini + matchLabels: + app: shipping-service + tier: consumer + template: # Template untuk membuat Pod baru + metadata: # Metadata untuk identifikasi Pod + labels: # Label untuk Pod yang dibuat oleh Deployment ini + app: shipping-service + tier: consumer + spec: # Spesifikasi Pod + containers: # Daftar kontainer dalam Pod + - name: shipping-service # Nama kontainer + image: ghcr.io/rzlpratama77/shipping-service:latest # Image Docker yang digunakan + ports: # Port yang digunakan oleh kontainer + - containerPort: 3001 + env: # Definisi variabel environment untuk kontainer + - name: AMQP_PASSWORD # Mengambil nilai password dari secret + valueFrom: + secretKeyRef: + name: rabbitmq + key: rabbitmq-password + - name: AMQP_URL # URL untuk menghubungkan ke RabbitMQ + value: "amqp://user:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" diff --git a/link.txt b/link.txt index e69de29bb..f80b525b0 100644 --- a/link.txt +++ b/link.txt @@ -0,0 +1,9 @@ + +Link github +https://github.com/rzlpratama77/a433-microservices + +Link package order-service +https://github.com/users/rzlpratama77/packages/container/package/order-service + +Link package shipping-service +https://github.com/users/rzlpratama77/packages/container/package/shipping-service \ No newline at end of file From 9fdf409cbcad93da30a03df74d7e7db5a2d73832 Mon Sep 17 00:00:00 2001 From: Rizal Date: Sun, 1 Sep 2024 23:21:17 +0700 Subject: [PATCH 3/4] fix rabbitmq --- docker-compose.yml | 8 ++++---- kubernetes/order-service.yml | 2 +- kubernetes/shipping-service.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f8302c7f1..2beb81a70 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: - rabbitmq-svc # Menentukan jaringan yang digunakan oleh container networks: - - rabbitmq-net + - rabbitmq-network # Mengatur agar container selalu restart jika terhenti restart: always # Mendefinisikan variabel lingkungan untuk URL RabbitMQ @@ -33,7 +33,7 @@ services: - rabbitmq-svc # Menentukan jaringan yang digunakan oleh container networks: - - rabbitmq-net + - rabbitmq-network # Mengatur agar container selalu restart jika terhenti restart: always # Mendefinisikan variabel lingkungan untuk URL RabbitMQ @@ -55,11 +55,11 @@ services: - ~/.docker/rabbitmq/log/:/var/log/rabbitmq/ # Menentukan jaringan yang digunakan oleh container networks: - - rabbitmq-net + - rabbitmq-network # Mengatur agar container selalu restart jika terhenti restart: always # Mendefinisikan jaringan dengan tipe bridge network networks: - rabbitmq-net: + rabbitmq-network: driver: bridge diff --git a/kubernetes/order-service.yml b/kubernetes/order-service.yml index f25b5d2ec..1bf8658b0 100644 --- a/kubernetes/order-service.yml +++ b/kubernetes/order-service.yml @@ -44,4 +44,4 @@ spec: # Spesif name: rabbitmq key: rabbitmq-password - name: AMQP_URL # URL untuk menghubungkan ke RabbitMQ - value: "amqp://user:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" \ No newline at end of file + value: "amqp://guest:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" \ No newline at end of file diff --git a/kubernetes/shipping-service.yml b/kubernetes/shipping-service.yml index 9222c0419..e5492d95b 100644 --- a/kubernetes/shipping-service.yml +++ b/kubernetes/shipping-service.yml @@ -44,4 +44,4 @@ spec: # Spes name: rabbitmq key: rabbitmq-password - name: AMQP_URL # URL untuk menghubungkan ke RabbitMQ - value: "amqp://user:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" + value: "amqp://guest:$(AMQP_PASSWORD)@rabbitmq-headless:5672/" From 997934b3ace41b143493c84223ed26eb7e11b281 Mon Sep 17 00:00:00 2001 From: Rizal Date: Sun, 1 Sep 2024 23:26:23 +0700 Subject: [PATCH 4/4] rabbitmq --- RabbitMQ/rabbitmq-deployment.yml | 30 ++++++++++++++++++++++++++ RabbitMQ/rabbitmq-headless-service.yml | 13 +++++++++++ 2 files changed, 43 insertions(+) create mode 100644 RabbitMQ/rabbitmq-deployment.yml create mode 100644 RabbitMQ/rabbitmq-headless-service.yml diff --git a/RabbitMQ/rabbitmq-deployment.yml b/RabbitMQ/rabbitmq-deployment.yml new file mode 100644 index 000000000..697ed5d8d --- /dev/null +++ b/RabbitMQ/rabbitmq-deployment.yml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: rabbitmq +spec: + replicas: 1 + selector: + matchLabels: + app: rabbitmq + template: + metadata: + labels: + app: rabbitmq + spec: + containers: + - name: rabbitmq + image: rabbitmq:3.11-management + ports: + - containerPort: 5672 + - containerPort: 15672 + volumeMounts: + - name: rabbitmq-data + mountPath: /var/lib/rabbitmq/ + - name: rabbitmq-log + mountPath: /var/log/rabbitmq/ + volumes: + - name: rabbitmq-data + emptyDir: {} + - name: rabbitmq-log + emptyDir: {} diff --git a/RabbitMQ/rabbitmq-headless-service.yml b/RabbitMQ/rabbitmq-headless-service.yml new file mode 100644 index 000000000..9fd1d45a4 --- /dev/null +++ b/RabbitMQ/rabbitmq-headless-service.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: rabbitmq-headless + labels: + app: rabbitmq +spec: + ports: + - port: 5672 + name: amqp + clusterIP: None + selector: + app: rabbitmq