Skip to content

Commit 9674564

Browse files
committed
[README] update readme.md & folder structure
1 parent e19fac0 commit 9674564

17 files changed

+103
-38
lines changed

README.md

+61-29
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,83 @@ Yorkie cluster on kubernetes
44

55
## Table of Contents
66

7-
- Getting Started
8-
- Prerequisites
9-
- Instructions
10-
- Development
11-
- Project Requirements
12-
- Project Structure
13-
- About Yorkie
14-
- Roadmap
15-
- Uploads
7+
- [Getting Started](#getting-started)
8+
- [Prerequisites](#prerequisites)
9+
- [Instructions](#instructions)
10+
- [Development](#development)
11+
- [Project Structure](#project-structure)
12+
- [About Yorkie](#about-yorkie)
13+
- [Roadmap](#roadmap)
1614

1715
## Getting Started
1816

19-
(WIP)
17+
If you want to setup and test yorkie cluster on k8s,
18+
just clone this repository and follow instructions bellow.
2019

2120
### Prerequisites
2221

23-
- (WIP)
22+
- `minikube` : local k8s for deploying yorkie cluster in local environment
23+
- `kubectl` : k8s cli for deploying & testing yorkie cluster
2424

2525
### Instructions
2626

2727
```bash
28-
(WIP)
28+
# 1. clone repository
29+
git clone https://github.com/Krapi0314/yorkie-kubernetes.git
30+
31+
# 2. change to project directory
32+
cd yorkie-kubernetes
33+
34+
# 3. start minikube cluster
35+
minikube start
36+
37+
# 4. enable minikube ingress addon
38+
minikube addons enable ingress
39+
40+
# 5. start minikube tunneling for local connection
41+
minikube tunnel
42+
43+
# 6. deploy all minikube manifests in minikube cluster
44+
kubectl apply -f minikube --recursive
45+
46+
# 7. test yorkie api!
47+
const client = new yorkie.Client('http://localhost');
2948
```
3049

31-
## Development
50+
For play with more fun stuff,
3251

33-
### Project Components
52+
```bash
53+
# 8. deploy monitoring tools if you want to see metrics
54+
# (ignore json error, it's grafana json file, not k8s manifest file)
55+
kubectl apply -f monitoring --recursive
3456

35-
- (WIP)
57+
# 9. enter grafana web url in your browser
58+
curl http://localhost
3659

37-
### Project Structure
60+
# 10. clone dashboard repository for admin dashboard!
61+
# (change REACT_APP_ADMIN_ADDR to http://localhost)
62+
git clone https://github.com/yorkie-team/dashboard.git
3863

39-
**Kubernetes**
64+
# 11. clone yorkie-tldraw repository for real-time collaboration whiteboard!
65+
# (change REACT_APP_YORKIE_RPC_ADDR to http://localhost)
66+
git clone https://github.com/Krapi0314/yorkie-tldraw.git
67+
```
4068

41-
(WIP)
69+
## Development
70+
71+
### Project Structure
72+
73+
- `kompose` : k8s manifests converted from yorkie docker-compose files
74+
- `minikube` : k8s manifests for local k8s cluster (minikube)
75+
- **istio & envoy sidecar is not implemented to simplify**
76+
**yorkie cluster architecture in local environment, and also instruction guide**
77+
- `monitoring` : k8s manifest for monitoring tool (prometheus & grafana)
4278

4379
### About Yorkie
4480

45-
Yorkie is an open source document store for building collaborative editing applications. Yorkie uses JSON-like documents(CRDT) with optional types.
81+
Yorkie is an open source document store for building
82+
collaborative editing applications.
83+
Yorkie uses JSON-like documents(CRDT) with optional types.
4684

4785
Yorkie references
4886

@@ -51,13 +89,7 @@ Yorkie references
5189

5290
## Roadmap
5391

54-
### **Phase 1**
55-
56-
- [x] (WIP)
57-
58-
59-
## Updates
60-
61-
### **v0.0.1**
62-
63-
- (WIP)
92+
- [x] yorkie broadcasting cluster mode on minikube (local)
93+
- [ ] yorkie broadcasting cluster mode on GKE (cloud)
94+
- [ ] yorkie cluster mode (other architectural approach) on minikube (local)
95+
- [ ] yorkie cluster mode (other architectural approach) on GKE (cloud)

minikube/config/envoy-configmap.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: ConfigMap
33
metadata:
44
name: envoy-configmap
5+
namespace: default
56
labels:
67
app: envoy
78
data:

minikube/deployment/envoy-deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: apps/v1
22
kind: Deployment
33
metadata:
44
name: envoy-deployment
5+
namespace: default
56
labels:
67
app: envoy
78
spec:
@@ -21,6 +22,8 @@ spec:
2122
- containerPort: 8080
2223
- containerPort: 9090
2324
- containerPort: 9901
25+
# resources will be configured in later updates
26+
# (need to load test to configure resource capacity)
2427
resources: {}
2528
volumeMounts:
2629
- name: envoy-config

minikube/deployment/etcd-statefulset.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: apps/v1
22
kind: StatefulSet
33
metadata:
44
name: etcd-statefulset
5+
namespace: default
56
labels:
67
app: etcd
78
spec:
@@ -33,6 +34,9 @@ spec:
3334
value: "revision"
3435
- name: ETCD_AUTO_COMPACTION_RETENTION
3536
value: "1000"
37+
# resources will be configured in later updates
38+
# (need to load test to configure resource capacity)
39+
resources: {}
3640
volumeClaimTemplates:
3741
- metadata:
3842
name: etcd-persistent-storage

minikube/deployment/mongo-statefulset.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: apps/v1
22
kind: StatefulSet
33
metadata:
44
name: mongo-statefulset
5+
namespace: default
56
labels:
67
app: mongo
78
spec:
@@ -25,6 +26,9 @@ spec:
2526
volumeMounts:
2627
- name: mongo-persistent-storage
2728
mountPath: /data/db
29+
# resources will be configured in later updates
30+
# (need to load test to configure resource capacity)
31+
resources: {}
2832
volumeClaimTemplates:
2933
- metadata:
3034
name: mongo-persistent-storage

minikube/deployment/yorkie-server-deployment.yaml

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ apiVersion: apps/v1
22
kind: Deployment
33
metadata:
44
name: yorkie-server-deployment
5+
namespace: default
56
labels:
67
app: yorkie-server
78
spec:
8-
replicas: 2
9+
replicas: 3
910
selector:
1011
matchLabels:
1112
app: yorkie-server
@@ -16,6 +17,8 @@ spec:
1617
spec:
1718
containers:
1819
- name: yorkie
20+
# env will be configured in later updates
21+
# (including secrets for certain variables)
1922
args:
2023
- server
2124
- --mongo-connection-uri
@@ -28,4 +31,6 @@ spec:
2831
- containerPort: 11101
2932
- containerPort: 11102
3033
- containerPort: 11103
34+
# resources will be configured in later updates
35+
# (need to load test to configure resource capacity)
3136
resources: {}

minikube/networking/ingress/yorkie-ingress.yaml

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
apiVersion: networking.k8s.io/v1
22
kind: Ingress
33
metadata:
4+
# using nginx ingress controller for minikube environment
45
name: yorkie-ingress
6+
namespace: default
57
spec:
68
rules:
79
- http:
@@ -20,10 +22,11 @@ spec:
2022
name: envoy-service
2123
port:
2224
number: 9090
23-
- path: /
24-
pathType: Prefix
25-
backend:
26-
service:
27-
name: grafana-service
28-
port:
29-
number: 3000
25+
# uncomment this section if you deployed monitoring manifests
26+
# - path: /
27+
# pathType: Prefix
28+
# backend:
29+
# service:
30+
# name: grafana-service
31+
# port:
32+
# number: 3000

minikube/service/envoy-service.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: envoy-service
5+
namespace: default
56
labels:
67
app: envoy
78
spec:
8-
type: NodePort
9+
clusterIP: None
910
selector:
1011
app: envoy
1112
ports:

minikube/service/etcd-service.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: etcd-service
5+
namespace: default
56
labels:
67
app: etcd
78
spec:

minikube/service/mongo-service.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: mongo-service
5+
namespace: default
56
labels:
67
app: mongo
78
spec:

minikube/service/yorkie-service.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: yorkie-service
5+
namespace: default
56
labels:
67
app: yorkie-server
78
spec:

minikube/config/prometheus-configmap.yaml monitoring/config/prometheus-configmap.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: ConfigMap
33
metadata:
44
name: prometheus-configmap
5+
namespace: default
56
data:
67
prometheus.yml: |
78
scrape_configs:

minikube/deployment/grafana-deployment.yaml monitoring/deployment/grafana-deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: apps/v1
22
kind: Deployment
33
metadata:
44
name: grafana-deployment
5+
namespace: default
56
labels:
67
app: grafana
78
spec:
@@ -19,4 +20,6 @@ spec:
1920
image: grafana/grafana:latest
2021
ports:
2122
- containerPort: 3000
23+
# resources will be configured in later updates
24+
# (need to load test to configure resource capacity)
2225
resources: {}

minikube/deployment/prometheus-deployment.yaml monitoring/deployment/prometheus-deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: apps/v1
22
kind: Deployment
33
metadata:
44
name: prometheus-deployment
5+
namespace: default
56
labels:
67
app: prometheus
78
spec:
@@ -27,6 +28,8 @@ spec:
2728
mountPath: /etc/prometheus/
2829
- name: prometheus-storage-volume
2930
mountPath: /prometheus/
31+
# resources will be configured in later updates
32+
# (need to load test to configure resource capacity)
3033
resources: {}
3134
volumes:
3235
- name: prometheus-config

minikube/service/grafana-service.yaml monitoring/service/grafana-service.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: grafana-service
5+
namespace: default
56
labels:
67
app: grafana
78
spec:

minikube/service/prometheus-service.yaml monitoring/service/prometheus-service.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Service
33
metadata:
44
name: protetheus-service
5+
namespace: default
56
labels:
67
app: protetheus
78
spec:
File renamed without changes.

0 commit comments

Comments
 (0)