Update base image to redis:5.0.9-alpine3.11 and builder images
[ric-plt/dbaas.git] / README.md
1 # Database as a service repository
2
3 This repository containes all the needed elements to deploy database as a service to kubernetes
4
5 ## Architecture
6
7 Redis is the chosen database technology and the final product will deploy autonomous
8 redis cluster. Supported deployment options are standalone Redis server and HA
9 (Sentinel) Redis deployment. Either deployment option won't provide data persistency.
10
11 ## Subsystem structure
12
13 **docker** Contains dockerfiles to produce dbaas / testapplication container images
14 **charts** Contais helm charts to deploy dbaas service / testapplication
15 **testapplication** Contains dbaas test applications with various languages such as go, ..
16
17 ## Container image creation
18
19 The images must be built at subsystem root level
20
21 To produce dbaas service image:
22 ```
23 docker build --file docker/Dockerfile.redis --tag redis-standalone .
24 ```
25
26 To produce testapplication image:
27 ```
28 docker build --file docker/Dockerfile.testapp --tag dbaas-test .
29 ```
30
31 ## Deployment
32
33 ### DBaaS service
34
35 Dbaas service is realized either with single container running redis database
36 or with HA deployment implemented by a redis sentinel solution.
37 Standalone dbaas database is configured to be non-persistent and
38 non-redundant. HA dbaas provides redundancy but it is also configured to be
39 non-persistent.
40
41 After dbaas service is installed, environment variables **DBAAS_SERVICE_HOST**
42 and **DBAAS_SERVICE_PORT** are exposed to application containers. In the case
43 of HA dbaas deployment environment variables **DBAAS_MASTER_NAME** and
44 **DBAAS_SERVICE_SENTINEL_PORT** are also exposed to application containers.
45 SDL library will automatically use these environment variables.
46
47 The service is installed via helm by using dbaas-service chart. Modify the
48 values accordingly before installation (repository location, image name, ..)
49
50 ```
51 helm install ./dbaas-service
52 ```
53
54 ### DBaaS test application
55
56 Test application is installed via helm by using dbaas-test chart. Modify the
57 values accordingly before installation (repository location, image name, ..)
58
59 ```
60 helm install ./dbaas-test
61 ```
62
63 ## Testing
64
65 Make sure that dbaas-service and dbaas-test application are deployed:
66 ```
67 >>helm ls
68 NAME            REVISION  UPDATED                    STATUS     CHART                   APP VERSION     NAMESPACE
69 angry-greyhound 1         Thu Mar 21 11:36:23 2019   DEPLOYED   dbaas-test-0.1.0        1.0             default
70 loitering-toad  1         Thu Mar 21 11:35:21 2019   DEPLOYED   dbaas-0.1.0             1.0             default
71 ```
72
73 Check the deployed pods
74 ```
75 >>kubectl get pods
76 NAME                                READY   STATUS    RESTARTS   AGE
77 dbaas-test-app-7695dbb9ff-qn8c2     1/1     Running   0          5s
78 redis-standalone-78978f4c6f-54b2s   1/1     Running   0          66s
79 ```
80
81 Connect to the test application container:
82 ```
83 kubectl exec -it dbaas-test-app-7695dbb9ff-qn8c2 -- /bin/bash
84 ```
85
86 In test application container:
87 ```
88 The environment variables for database backend should be set:
89
90 >>printenv
91 DBAAS_SERVICE_HOST=10.108.103.51
92 DBAAS_SERVICE_PORT=6379
93
94
95 Go test application using preliminary go SDL-API should be able to perform reads and writes:
96
97 >>./testapp
98 key1:data1
99 key3:%!s(<nil>)
100 key2:data2
101 num1:1
102 num2:2
103 -------------
104 mix2:2
105 num1:1
106 num2:2
107 pair1:data1
108 array1:adata1
109 mix1:data1
110 mix3:data3
111 mix4:4
112 arr1:
113 key1:data1
114 key2:data2
115 pair2:data2
116 array2:adata2
117
118
119 Redis server can be pinged with redis-cli:
120
121 >>redis-cli -h $DBAAS_SERVICE_HOST -p $DBAAS_SERVICE_PORT ping
122 PONG
123 ```
124
125 ## License
126 This project is licensed under the Apache License 2.0 - see the [LICENSE.md](LICENSE.md) file for details