[image: image.gif]Hi all,
Took more time than expected how the Medium post is finalized and can be
found here:
https://nuwnjay.medium.com/how-to-containerize-an-esb-26d8a5404ee9

It includes all the design decisions, implementation steps and general
experience we had when working on the project.
Kind regards

On Tue, Aug 31, 2021 at 1:20 PM Nuwan Jayawardene <nsga...@gmail.com> wrote:

> Hi[image: image.gif] all,
> I've created a video recording of the demo that showcases the changes
> mentioned above.
> https://www.youtube.com/watch?v=jeqBZOi60DQ
>
> The slides used as supplementary material in the video can be found here
>
> https://docs.google.com/presentation/d/1rZjEwvnET91aa-4kd7tgw6ATapPb8bWZpiARioSM6Uo/edit?usp=sharing
>
> This will be followed with a Medium post detailing the implementation
> decisions within this week.
> Kind regards
>
>
>
> [image: image.gif]
> On Mon, Aug 23, 2021 at 9:47 PM Nuwan Jayawardene <nsga...@gmail.com>
> wrote:
>
>> Hi All,
>> this project I was working on was related to GSoC 2021, and with it
>> coming to a conclusion, I'd like to give an update on how it has progressed
>> up until this point.
>> After the initial proposal, on-boarding and preliminary development work
>> we settled on the following main objectives;
>>
>>    1. Containerizing Synapse and running on k8s cluster (via Minikube)
>>    2. Parameter passing to container/pods
>>    3. Abiding to the 12 Factor app spec especially when considering
>>    factor 3 (Config)
>>
>> The way I went about achieving the above (and the reasons for certain
>> decisions taken) is as follows;
>>
>>    1. This objective was quite straightforward. I used the OpenJDK 8
>>    image <https://hub.docker.com/_/openjdk> as the base and copied a
>>    built pack onto it.
>>    A Dockerfile was written to achieve this and is linked here:
>>    https://github.com/n-jay/gsoc-2021/blob/feature1/synapse/Dockerfile.
>>
>>    2. This is similar to a currently available feature
>>    
>> <https://docs.wso2.com/display/EI660/Injecting+Parameters+as+Environment+Variables>
>>    in the Micro Intergrator component of WSO2 EI; a fork of Synapse.
>>    The goal was to enable parameter passing at runtime such that certain
>>    config fields (eg: URIs) can be updated at deployment, instead of 
>> hardcoded.
>>
>>    As mentioned in the previous mail this was done via the use of a
>>    ConfigMap.
>>    Endpoint factories within Synapse were amended to extract the
>>    injected parameters (visible within the pod as environment variables), and
>>    the config file populated thereafter.
>>
>>    The ConfigMap used for the demo is linked here:
>>    https://github.com/n-jay/gsoc-2021/blob/feature1/synapse-config.yml
>>    Code changes done to Synapse is present as 2 commits linked here
>>    
>> <https://github.com/n-jay/synapse/commit/d725f3fcaaac5e3e110a40161a984a3a88236f32>
>>    and here
>>    
>> <https://github.com/n-jay/synapse/commit/a85a439e10a75d75a925e33414c2e75c5f07e1f5>
>>  which
>>    are currently on my personal fork.
>>    They will be compiled into a single PR once a code review has been
>>    conducted and unit tests written.
>>
>>    3. Config separation as per 12 Factor apps was done via Kubernetes
>>    PersistentVolumes.
>>    First a PersistentVolume was created and then allocated to the
>>    Synapse deployment via a PersistenVolume Claim.
>>    It was created such that the a directory created within the node
>>    (with synapse.xml files already within it) gets mounted onto the
>>    {SYNAPSE_HOME}/repostory/conf/synape-config directory.
>>    PersistentVolume:
>>    
>> https://github.com/n-jay/gsoc-2021/blob/feature1/synapse-persistent-volume.yml
>>    PersistentVolumeClaim:
>>    
>> https://github.com/n-jay/gsoc-2021/blob/feature1/synapse-persistent-volume-claim.yml
>>
>>    What this allows is for hot swapping the synapse configuration as
>>    needed as opposed to having it baked into the docker image, requiring
>>    different images for different configs.
>>    This combined with the the parameter injection allows for complete
>>    independence as to what variables are passed.
>>
>>
>> Once the above were reached they were demoed against customized versions
>> of config sample 56
>> <https://synapse.apache.org/userguide/samples/sample56.html> and 800
>> <https://synapse.apache.org/userguide/samples/sample800.html>.
>> The implementation arrangement consisted of containerized Apache Axis2
>> server and client along with Synapse in an Ambassador pattern arrangement.
>> The 3 deployments were connected together using 2 k8s services.
>>
>> All deployment files are available in the repository linked here:
>> https://github.com/n-jay/gsoc-2021/tree/feature1.
>> The README has been updated to include directory and file details, it
>> will be further amended with deployment instructions.
>>
>> A medium blog post is also being written and will me attached to this
>> thread upon completion along with a screencapped video of the impementation.
>> Kind regards
>>
>> [image: image.gif]
>> On Tue, Aug 10, 2021 at 11:46 AM Nuwan Jayawardene <nsga...@gmail.com>
>> wrote:
>>
>>> [image: image.gif]
>>> Hi all,
>>>
>>>>
>>>>    1. Inject configuration parameters to Synapse at runtime
>>>>    This would include parameters such as URI endpoints
>>>>
>>>> I've been working on the above function and as for progress so far;
>>>
>>>    1. Created a ConfigMap setup in Kubernetes and connected it with the
>>>    Synapse deployment to pass environment variables.
>>>    This is to make the image completely environment independent, in
>>>    keeping with the 12 Factors.
>>>    2. Took inspiration from WSO2 EI
>>>    <https://ei.docs.wso2.com/en/latest/> and which already has similar
>>>    functionality
>>>    
>>> <https://docs.wso2.com/display/EI660/Injecting+Parameters+as+Environment+Variables>,
>>>    and ported it to Synapse.
>>>    The first pull request including the relevant classes can be found
>>>    in linked PR to my local fork:
>>>    https://github.com/n-jay/synapse/pull/1.
>>>    Haven't merged it yet due to CD build failure because of a version
>>>    mismatch.
>>>
>>> I'm currently debugging this implementation.
>>>
>>> Would appreciate some feedback on this.
>>> Kind regards
>>>
>>>
>>>
>>> [image: image.gif]
>>>
>>> On Fri, Aug 6, 2021 at 3:27 PM Nuwan Jayawardene <nsga...@gmail.com>
>>> wrote:
>>>
>>>> Hi All,
>>>> I’m currently working on a project containerizing Synapse, taking it
>>>> into a cloud-native form.
>>>> The work done so far is as follows;
>>>>
>>>>    - Dockerize Synapse using Dockerfile
>>>>    - Get Synapse to run within Kubernetes environment in a deployment
>>>>    - Setup a Kubernetes cluster in the Ambassador pattern with Synapse
>>>>    acting as a proxy between a dockerized client and server (for testing
>>>>    purposes).
>>>>
>>>> Moving forward I’m working on developing the following;
>>>>
>>>>    1. Inject configuration parameters to Synapse at runtime
>>>>    This would include parameters such as URI endpoints
>>>>    2. Reduce Synapse image size by making runtime more lean.
>>>>    By measuring performance metrics and reducing
>>>>    legacy/redundant/superfluous components
>>>>
>>>> Would greatly appreciate your thoughts and feedback on this.
>>>> Regards
>>>>
>>>> --
>>>> *Nuwan Jayawardene*
>>>> Assistant Lecturer, Informatics Institute of Technology (IIT).
>>>> Research Assistant, University of Moratuwa
>>>> Tel - +94 71 181 3299
>>>> https://www.linkedin.com/m/in/nuwanjaya
>>>>
>>>>
>>>> [image: image.gif]
>>>> [image: image.gif]
>>>>
>>>
>>>
>>> --
>>> *Nuwan Jayawardene*
>>> Assistant Lecturer, Informatics Institute of Technology (IIT).
>>> Research Assistant, University of Moratuwa
>>> Tel - +94 71 181 3299
>>> https://www.linkedin.com/m/in/nuwanjaya
>>>
>>>
>>
>> --
>> *Nuwan Jayawardene*
>> Assistant Lecturer, Informatics Institute of Technology (IIT).
>> Research Assistant, University of Moratuwa
>> Tel - +94 71 181 3299
>> https://www.linkedin.com/m/in/nuwanjaya
>>
>>
>
> --
> *Nuwan Jayawardene*
> Assistant Lecturer, Informatics Institute of Technology (IIT).
> Research Assistant, University of Moratuwa
> Tel - +94 71 181 3299
> https://www.linkedin.com/m/in/nuwanjaya
>
>

-- 
*Nuwan Jayawardene*
Assistant Lecturer, Informatics Institute of Technology (IIT).
Research Assistant, University of Moratuwa

https://www.linkedin.com/m/in/nuwanjaya

Reply via email to