Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

start proyek ketiga #43

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

30 changes: 30 additions & 0 deletions RabbitMQ/rabbitmq-deployment.yml
Original file line number Diff line number Diff line change
@@ -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: {}
13 changes: 13 additions & 0 deletions RabbitMQ/rabbitmq-headless-service.yml
Original file line number Diff line number Diff line change
@@ -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
65 changes: 65 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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-network
# 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-network
# 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-network
# Mengatur agar container selalu restart jika terhenti
restart: always

# Mendefinisikan jaringan dengan tipe bridge network
networks:
rabbitmq-network:
driver: bridge
33 changes: 33 additions & 0 deletions kubernetes/order-service-gateway.yml
Original file line number Diff line number Diff line change
@@ -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
47 changes: 47 additions & 0 deletions kubernetes/order-service.yml
Original file line number Diff line number Diff line change
@@ -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://guest:$(AMQP_PASSWORD)@rabbitmq-headless:5672/"
47 changes: 47 additions & 0 deletions kubernetes/shipping-service.yml
Original file line number Diff line number Diff line change
@@ -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://guest:$(AMQP_PASSWORD)@rabbitmq-headless:5672/"
9 changes: 9 additions & 0 deletions link.txt
Original file line number Diff line number Diff line change
@@ -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