Last modified by Eduard Moraru on 2020/01/28

<
From version < 8.2 >
edited by Eduard Moraru
on 2019/09/04
To version < 9.2 >
edited by Eduard Moraru
on 2019/09/04
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,69 +1,0 @@
1 -= Mentors: =
2 -
3 -I want to thank my mentors Shubham Jain, Neha Gupta and Xwiki organisation for giving me such an opportunity and helping me out throughout my journey of GSOC. I also want to also thank Vincent Massol for helping me out in one of my dependent project.
4 -
5 -= A little bit about me =
6 -
7 -My name is Ashish Sharma, I am 23 and I am a final year student from Bharati Vidyapeeth's College of Engineering, India. I have participated in GSoC'19 program as a student in XWiki and worked on "Helm chart for Xwiki".
8 -
9 -= What did I expect from GSoC 2019 =
10 -
11 -This was my first Google Summer of Code and the concept to contribute for 3 months in an open-source organisation was exciting for me. I got an opportunity to work remotely on a project. I was curious to explore how an open-source organisation work. Anyway, I have expected new experience in remote internship, open source project contributing, Google Summer of Code participating and international only remote communication.
12 -
13 -In this post I want to describe what I have finished and what is not completed yet and why.
14 -
15 -= Description =
16 -
17 -This project focoused on creating a helm chart that would deploy xwiki on Kubernetes by using helm templating. The deployment should be configurable to be scalacble, highly available and roboust.
18 -
19 -= You can find the project code at =
20 -
21 -https://github.com/xwiki-contrib/xwiki-helm and
22 -
23 -= The issue tracker can be found =
24 -
25 -https://jira.xwiki.org/projects/HELM/issues
26 -
27 -= How to use the result of my work =
28 -
29 -git clone https://github.com/xwiki-contrib/xwiki-helm
30 -cd xwiki-helm-chart
31 -helm dependency update
32 -helm --debug upgrade -i --force xwiki -f ./values.yaml .
33 -
34 -[[Read about prerequite>>https://github.com/xwiki-contrib/xwiki-helm]]
35 -
36 -= Milestones =
37 -
38 -== Milestones 1: ==
39 -
40 -=== Creating a basic helm chart ===
41 -
42 -* Understanding xwiki's docker structure.
43 -* Understanding and taking the decision for using the correct resource to host xwiki.
44 -* So I started up using the StatefulSet, clusterIP service and ingress.
45 -* Added values files which help in making the chart dynamically configurable.
46 -* Then we neded to support multiple databases and was in a need of a solution that don't require to deploy database externally, so a good standard for adding dependency for other services like database were needed.
47 -* So we decided to add database as a helm dependency, that helped us to templatise the databases in our application which makes deploying databases easier, we don't need to deploy the chart seprately.
48 -* So we added support for database mysql and postgress through dependency and also given option for user to deploy it's own external database.
49 -
50 -== Milestestone 2: ==
51 -
52 -=== Adding support for ISTIO and other features ===
53 -
54 -* Till now we have a chart that would deploy our standalone application, now we need
55 -* Added support for ISTIO
56 -* Till now the helm were taking values from values file, we needed a way to manage our envoirnment variable that we pass to our container, and we also need to secure the sensetive variables like db password. For that I used Kubernetes resources configMaops and Secrets. These help us save and manage our variable securely and properly.
57 -* Xwiki-helm also needed an optional feature to havdle Pod disruption, if the users have a heavy dependency on xwiki. This features make the xwiki chart user configure the minimum number of pods that should be running while pods are been destroyed due to any reason.
58 -* A need for shared file storage were needed, secially when serviec provider like GKE does not provide //ReadWriteMany// option, so to run xwiki on cluster we need different database solution like Rook, I had researched about it and also written a blog on how to [[set up Rook on GKE for shared file system>>https://medium.com/@ashish932/f3abe23d9e79]]
59 -
60 -== Milestone 3: ==
61 -
62 -=== Adding support for clustering,HA and Unit testing ===
63 -
64 -* While moving towards HA and clustering we got to know that Xwiki need shared file storage for clustering which was not available in StatefulSet, so we made a desicion to migrate to Deployment.
65 -* We needed to add test-cases so I added unit-testing.
66 -* Clustering was required to take xwiki on HA. For that we need docker to enable option to configure clustering, so first I made changes in docker project and provided option to configure JGroups.
67 -* Then I needed to provide the option in helm. For that I had to face another challenge to how to pass configuration files needed by JGroup from my helm chart to the container. For that I took the file in ConfigMaps and mounted the file to the xwiki pods. Also provided option to enable and disable JGroups.
68 -* While enabling clustering we need to know which pods are avialable to accept request and which are dead so that we can route traffic accordingly, for that I needed to configure liveliness and readiness probes, so that kubernetes always get updated with the state of the container and if the container crashes it could restart the pod.
69 -* Xwiki uses solr and the docker it embededs solr internally, but as suggested by Xwiki for performance improvement solr should be externalised, so I tried to add it as a dependency but failed due to an immature helm chart of solr, and how the xwiki configures solr, it was not possible with the current solr chart state. So for now I have exposed the basic parameter and the user has to manually setup solr and pass the url of the solr.
Blog.BlogPostClass[0]
Content
... ... @@ -1,10 +1,10 @@
1 1  = Mentors: =
2 2  
3 -I want to thank my mentors Shubham Jain, Neha Gupta and Xwiki organisation for giving me such an opportunity and helping me out throughout my journey of GSOC. I also want to also thank Vincent Massol for helping me out in one of my dependent project.
3 +I want to thank my mentors Shubham Jain, Neha Gupta and XWiki organisation for giving me such an opportunity and helping me out throughout my journey of GSOC. I also want to also thank Vincent Massol for helping me out in one of my dependent project.
4 4  
5 5  = A little bit about me =
6 6  
7 -My name is Ashish Sharma, I am 23 and I am a final year student from Bharati Vidyapeeth's College of Engineering, India. I have participated in GSoC'19 program as a student in XWiki and worked on "Helm chart for Xwiki".
7 +My name is Ashish Sharma, I am 23 and I am a final year student from Bharati Vidyapeeth's College of Engineering, India. I have participated in GSoC'19 program as a student in XWiki and worked on "Helm chart for XWiki".
8 8  
9 9  = What did I expect from GSoC 2019 =
10 10  
... ... @@ -26,10 +26,12 @@
26 26  
27 27  = How to use the result of my work =
28 28  
29 +{{code}}
29 29  git clone https://github.com/xwiki-contrib/xwiki-helm
30 30  cd xwiki-helm-chart
31 31  helm dependency update
32 32  helm --debug upgrade -i --force xwiki -f ./values.yaml .
34 +{{/code}}
33 33  
34 34  [[Read about prerequite>>https://github.com/xwiki-contrib/xwiki-helm]]
35 35  
... ... @@ -54,7 +54,7 @@
54 54  * Till now we have a chart that would deploy our standalone application, now we need
55 55  * Added support for ISTIO
56 56  * Till now the helm were taking values from values file, we needed a way to manage our envoirnment variable that we pass to our container, and we also need to secure the sensetive variables like db password. For that I used Kubernetes resources configMaops and Secrets. These help us save and manage our variable securely and properly.
57 -* Xwiki-helm also needed an optional feature to havdle Pod disruption, if the users have a heavy dependency on xwiki. This features make the xwiki chart user configure the minimum number of pods that should be running while pods are been destroyed due to any reason.
59 +* XWiki-helm also needed an optional feature to havdle Pod disruption, if the users have a heavy dependency on xwiki. This features make the xwiki chart user configure the minimum number of pods that should be running while pods are been destroyed due to any reason.
58 58  * A need for shared file storage were needed, secially when serviec provider like GKE does not provide //ReadWriteMany// option, so to run xwiki on cluster we need different database solution like Rook, I had researched about it and also written a blog on how to [[set up Rook on GKE for shared file system>>https://medium.com/@ashish932/f3abe23d9e79]]
59 59  
60 60  == Milestone 3: ==
... ... @@ -61,9 +61,9 @@
61 61  
62 62  === Adding support for clustering,HA and Unit testing ===
63 63  
64 -* While moving towards HA and clustering we got to know that Xwiki need shared file storage for clustering which was not available in StatefulSet, so we made a desicion to migrate to Deployment.
66 +* While moving towards HA and clustering we got to know that XWiki need shared file storage for clustering which was not available in StatefulSet, so we made a desicion to migrate to Deployment.
65 65  * We needed to add test-cases so I added unit-testing.
66 66  * Clustering was required to take xwiki on HA. For that we need docker to enable option to configure clustering, so first I made changes in docker project and provided option to configure JGroups.
67 67  * Then I needed to provide the option in helm. For that I had to face another challenge to how to pass configuration files needed by JGroup from my helm chart to the container. For that I took the file in ConfigMaps and mounted the file to the xwiki pods. Also provided option to enable and disable JGroups.
68 68  * While enabling clustering we need to know which pods are avialable to accept request and which are dead so that we can route traffic accordingly, for that I needed to configure liveliness and readiness probes, so that kubernetes always get updated with the state of the container and if the container crashes it could restart the pod.
69 -* Xwiki uses solr and the docker it embededs solr internally, but as suggested by Xwiki for performance improvement solr should be externalised, so I tried to add it as a dependency but failed due to an immature helm chart of solr, and how the xwiki configures solr, it was not possible with the current solr chart state. So for now I have exposed the basic parameter and the user has to manually setup solr and pass the url of the solr.
71 +* XWiki uses solr and the docker it embededs solr internally, but as suggested by XWiki for performance improvement solr should be externalised, so I tried to add it as a dependency but failed due to an immature helm chart of solr, and how the xwiki configures solr, it was not possible with the current solr chart state. So for now I have exposed the basic parameter and the user has to manually setup solr and pass the url of the solr.

Get Connected