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/Screenshot_2.png b/Screenshot_2.png new file mode 100644 index 000000000..68fdfbcbc Binary files /dev/null and b/Screenshot_2.png differ diff --git a/kubernetes/backend/karsajobs-deployment.yml b/kubernetes/backend/karsajobs-deployment.yml new file mode 100644 index 000000000..6b10f42e7 --- /dev/null +++ b/kubernetes/backend/karsajobs-deployment.yml @@ -0,0 +1,40 @@ +apiVersion: apps/v1 # versi API Kubernetes yang digunakan +kind: Deployment # jenis resource yang dibuat, yaitu Deployment +metadata: # informasi untuk mengidentifikasi objek + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-be + tier: backend + name: karsajobs-be # nama untuk Deployment ini +spec: # spesifikasi untuk Deployment + replicas: 1 # jumlah replika Pod yang akan dibuat + selector: # menghubungkan Deployment dengan Pod berdasarkan label tertentu + matchLabels: + app: karsajobs-be + tier: backend + template: # template untuk membuat Pod yang akan dikelola oleh Deployment + metadata: # informasi untuk mengidentifikasi Pod + labels: # label untuk menandai Pod + app: karsajobs-be + tier: backend + spec: # spesifikasi untuk Pod + containers: # konfigurasi untuk kontainer dalam Pod + - name: karsajobs # nama kontainer dalam Pod + image: ghcr.io/rzlpratama77/karsajobs:latest # image Docker yang akan digunakan + imagePullPolicy: IfNotPresent # atur untuk mengambil image hanya jika belum ada di lokal + ports: # port yang digunakan oleh kontainer + - containerPort: 8080 + env: # definisi variabel lingkungan (environment variables) yang digunakan + - name: APP_PORT # variabel APP_PORT dengan nilai 8080 + value: "8080" + - name: MONGO_HOST # variabel MONGO_HOST dengan nilai yang menunjuk ke MongoDB Service + value: karsajobs-mongodb + - name: MONGO_USER # variabel MONGO_USER dengan nilai dari Secret MongoDB (MONGO_ROOT_USERNAME) + valueFrom: + secretKeyRef: + name: karsajobs-mongodb-secret + key: MONGO_ROOT_USERNAME + - name: MONGO_PASS # variabel MONGO_PASS dengan nilai dari Secret MongoDB (MONGO_ROOT_PASSWORD) + valueFrom: + secretKeyRef: + name: karsajobs-mongodb-secret + key: MONGO_ROOT_PASSWORD diff --git a/kubernetes/backend/karsajobs-service.yml b/kubernetes/backend/karsajobs-service.yml new file mode 100644 index 000000000..8cef124f2 --- /dev/null +++ b/kubernetes/backend/karsajobs-service.yml @@ -0,0 +1,15 @@ +apiVersion: v1 # versi Kubernetes API yang digunakan +kind: Service # jenis resource yang dibuat, yaitu Service +metadata: # informasi untuk mengidentifikasi objek + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-be + tier: backend + name: karsajobs-be # nama untuk Service ini +spec: # spesifikasi untuk Service yang akan dibuat + ports: # konfigurasi port yang akan digunakan + - port: 8080 # port yang digunakan di dalam Cluster + nodePort: 30011 # port yang akan diakses dari luar Cluster + selector: # menghubungkan Service dengan Pod berdasarkan label + app: karsajobs-be + tier: backend + type: NodePort # tipe Service NodePort, agar bisa diakses dari luar Cluster melalui port Node diff --git a/kubernetes/frontend/karsajobs-ui-deployment.yml b/kubernetes/frontend/karsajobs-ui-deployment.yml new file mode 100644 index 000000000..9615de173 --- /dev/null +++ b/kubernetes/frontend/karsajobs-ui-deployment.yml @@ -0,0 +1,28 @@ +apiVersion: apps/v1 # versi API Kubernetes yang digunakan +kind: Deployment # jenis resource yang dibuat, yaitu Deployment +metadata: # informasi untuk mengidentifikasi objek + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-ui + tier: frontend + name: karsajobs-ui # nama untuk Deployment ini +spec: # spesifikasi untuk Deployment + replicas: 1 # jumlah replika Pod yang akan dibuat + selector: # menghubungkan Deployment dengan Pod berdasarkan label tertentu + matchLabels: + app: karsajobs-ui + tier: frontend + template: # template untuk membuat Pod yang akan dikelola oleh Deployment + metadata: # informasi untuk mengidentifikasi Pod + labels: # label untuk menandai Pod + app: karsajobs-ui + tier: frontend + spec: # spesifikasi untuk Pod + containers: # konfigurasi untuk kontainer dalam Pod + - name: karsajobs-ui # nama kontainer dalam Pod + image: ghcr.io/rzlpratama77/karsajobs-ui:latest # image Docker yang akan digunakan + imagePullPolicy: IfNotPresent # atur untuk mengambil image hanya jika belum ada di lokal + ports: # port yang digunakan oleh kontainer + - containerPort: 8000 + env: # definisi variabel lingkungan (environment variables) yang digunakan + - name: VUE_APP_BACKEND + value: "http://108.137.48.197:30011" # alamat IP dan port Node dari aplikasi backend diff --git a/kubernetes/frontend/karsajobs-ui-service.yml b/kubernetes/frontend/karsajobs-ui-service.yml new file mode 100644 index 000000000..7f0eeb08a --- /dev/null +++ b/kubernetes/frontend/karsajobs-ui-service.yml @@ -0,0 +1,15 @@ +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: Service # jenis resource yang dibuat, yaitu Service +metadata: # informasi untuk mengidentifikasi objek + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-ui + tier: frontend + name: karsajobs-ui # nama untuk Service ini +spec: # spesifikasi untuk Service yang akan dibuat + ports: # konfigurasi port yang akan diekspos + - port: 8000 # port yang digunakan di dalam Cluster + nodePort: 30010 # port yang akan diakses dari luar Cluster + selector: # menghubungkan Service dengan Pod berdasarkan label tertentu + app: karsajobs-ui + tier: frontend + type: NodePort # tipe NodePort, agar dapat diakses dari luar Cluster melalui port pada setiap Node diff --git a/kubernetes/mongodb/mongo-configmap.yml b/kubernetes/mongodb/mongo-configmap.yml new file mode 100644 index 000000000..f50f28ed7 --- /dev/null +++ b/kubernetes/mongodb/mongo-configmap.yml @@ -0,0 +1,8 @@ +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: ConfigMap # jenis resource yang dibuat, yaitu ConfigMap +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb-config # nama untuk ConfigMap ini +data: # data yang disimpan oleh ConfigMap, berisi konfigurasi penyimpanan database MongoDB + mongo.conf: | + storage: + dbPath: /data/db # lokasi penyimpanan data MongoDB diff --git a/kubernetes/mongodb/mongo-pv-pvc.yml b/kubernetes/mongodb/mongo-pv-pvc.yml new file mode 100644 index 000000000..1173d732e --- /dev/null +++ b/kubernetes/mongodb/mongo-pv-pvc.yml @@ -0,0 +1,26 @@ +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: PersistentVolume # jenis resource yang dibuat, yaitu PersistentVolume +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb-pv # nama untuk PersistentVolume ini + labels: # label untuk menandai dan mengelompokkan objek + type: local # tipe volume lokal +spec: # spesifikasi untuk PersistentVolume + storageClassName: manual # nama storage class yang digunakan adalah 'manual' + capacity: # kapasitas penyimpanan yang disediakan, yaitu 1 GB + storage: 1Gi + accessModes: # mode akses baca-tulis hanya satu Node pada satu waktu + - ReadWriteOnce + hostPath: # lokasi direktori pada host yang digunakan sebagai volume + path: /mnt/data +--- +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: PersistentVolumeClaim # jenis resource yang dibuat, yaitu PersistentVolumeClaim +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb-pvc # nama untuk PersistentVolumeClaim ini +spec: # spesifikasi untuk PersistentVolumeClaim + storageClassName: manual # nama storage class yang digunakan adalah 'manual' + accessModes: # mode akses baca-tulis hanya satu Node pada satu waktu + - ReadWriteOnce + resources: # spesifikasi sumber daya yang dibutuhkan + requests: # permintaan kapasitas penyimpanan + storage: 1Gi # meminta ruang penyimpanan sebesar 1 GB diff --git a/kubernetes/mongodb/mongo-secret.yml b/kubernetes/mongodb/mongo-secret.yml new file mode 100644 index 000000000..5f06e618b --- /dev/null +++ b/kubernetes/mongodb/mongo-secret.yml @@ -0,0 +1,7 @@ +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: Secret # jenis resource yang dibuat, yaitu Secret +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb-secret # nama untuk Secret ini +data: # data yang disimpan di Secret, nilainya dalam format base64 + MONGO_ROOT_USERNAME: YWRtaW4NCg== # username untuk MongoDB (dienkripsi base64) + MONGO_ROOT_PASSWORD: c3VwZXJzZWNyZXRwYXNzd29yZA== # password untuk MongoDB (dienkripsi base64) diff --git a/kubernetes/mongodb/mongo-service.yml b/kubernetes/mongodb/mongo-service.yml new file mode 100644 index 000000000..ee545e824 --- /dev/null +++ b/kubernetes/mongodb/mongo-service.yml @@ -0,0 +1,14 @@ +apiVersion: v1 # versi API Kubernetes yang digunakan +kind: Service # jenis resource yang dibuat, yaitu Service +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb # nama untuk Service ini + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-mongodb + tier: database +spec: # spesifikasi untuk Service + clusterIP: None # membuat headless service sehingga tidak mengalokasikan IP di dalam Cluster + selector: # menghubungkan Service dengan Pod yang memiliki label tertentu + app: karsajobs-mongodb + tier: database + ports: # konfigurasi port yang akan diekspos oleh Service + - port: 27017 # port yang digunakan di dalam Cluster diff --git a/kubernetes/mongodb/mongo-statefulset.yml b/kubernetes/mongodb/mongo-statefulset.yml new file mode 100644 index 000000000..28c24bed5 --- /dev/null +++ b/kubernetes/mongodb/mongo-statefulset.yml @@ -0,0 +1,53 @@ +apiVersion: apps/v1 # versi API Kubernetes yang digunakan +kind: StatefulSet # jenis resource yang dibuat, yaitu StatefulSet +metadata: # informasi untuk mengidentifikasi objek + name: karsajobs-mongodb # nama untuk StatefulSet ini + labels: # label untuk menandai dan mengelompokkan objek + app: karsajobs-mongodb + tier: database +spec: # spesifikasi untuk StatefulSet + serviceName: karsajobs-mongodb # nama Service yang digunakan oleh StatefulSet + replicas: 1 # jumlah replika Pod yang akan dibuat + minReadySeconds: 10 # waktu minimum yang diperlukan agar Pod dianggap siap, yaitu 10 detik + selector: # menghubungkan StatefulSet dengan Pod berdasarkan label tertentu + matchLabels: + app: karsajobs-mongodb + tier: database + template: # template untuk membuat Pod yang dikelola oleh StatefulSet + metadata: # informasi untuk mengidentifikasi Pod + labels: # label untuk menandai Pod + app: karsajobs-mongodb + tier: database + spec: # spesifikasi untuk Pod + terminationGracePeriodSeconds: 10 # waktu tenggang sebelum menghentikan Pod, yaitu 10 detik + containers: # konfigurasi untuk kontainer dalam Pod + - name: mongo # nama kontainer dalam Pod + image: mongo:latest # image Docker yang digunakan untuk kontainer + imagePullPolicy: IfNotPresent # mengatur agar image hanya di-pull jika belum ada di lokal + ports: # port yang digunakan oleh kontainer + - containerPort: 27017 + env: # mendefinisikan variabel lingkungan yang digunakan + - name: MONGO_INITDB_ROOT_USERNAME_FILE + value: /etc/mongo-credentials/MONGO_ROOT_USERNAME + - name: MONGO_INITDB_ROOT_PASSWORD_FILE + value: /etc/mongo-credentials/MONGO_ROOT_PASSWORD + volumeMounts: # mengatur volume mount dan jalur tempat mount + - name: mongo-persist-vol + mountPath: /data/db + - name: mongo-config-vol + mountPath: /config + - name: mongo-secret-vol + mountPath: /etc/mongo-credentials + volumes: # mengatur volume penyimpanan data yang digunakan oleh Pod + - name: mongo-persist-vol + persistentVolumeClaim: + claimName: karsajobs-mongodb-pvc # nama PersistentVolumeClaim yang digunakan + - name: mongo-config-vol + configMap: + name: karsajobs-mongodb-config # nama ConfigMap yang digunakan + items: + - key: mongo.conf + path: mongo.conf + - name: mongo-secret-vol + secret: + secretName: karsajobs-mongodb-secret # nama Secret yang digunakan diff --git a/link.txt b/link.txt new file mode 100644 index 000000000..b226762db --- /dev/null +++ b/link.txt @@ -0,0 +1,8 @@ +link github hasil fork +https://github.com/rzlpratama77/a433-microservices + +link package karsajobs backend +https://github.com/users/rzlpratama77/packages/container/package/karsajobs + +link package karsajobs frontend +https://github.com/users/rzlpratama77/packages/container/package/karsajobs-ui \ No newline at end of file diff --git a/monitoring.txt b/monitoring.txt new file mode 100644 index 000000000..9feeeeb25 Binary files /dev/null and b/monitoring.txt differ