Hi all, > The next step is to complete WSDL endpoint injection and finalize the PR. > WSDL endpoint parameter injection has also been finalized. PR is linked herewith. https://github.com/apache/synapse/pull/55
Kind regards On Tue, Sep 13, 2022 at 8:58 PM Nuwan Jayawardene <nsga...@gmail.com> wrote: > Hi all, > been making progress on the development of this with support from @Isuru > Udana <isud...@gmail.com>. > After submitting the initial PR and undergoing code reviews, the current > state includes the finalization of SOAP endpoint parameter injection. > PR is linked herewith: https://github.com/apache/synapse/pull/55 > > Our initial attempts were to try and generalize the parameter injection > code to make it uniform across as many endpoints as possible. > However, this proved to be problematic given the variations of different > implementations. > > The next step is to complete WSDL endpoint injection and finalize the PR. > Will be moving onto subsequent features thereafter: > https://docs.google.com/spreadsheets/d/1L8lZ1ZLk6UxwuA0LijiZxsHXiNdVwG_bYUhccjfaB2g/edit?usp=sharing > > Kind regards > > > On Tue, Apr 12, 2022 at 12:36 PM Nuwan Jayawardene <nsga...@gmail.com> > wrote: > >> Hi all, >> after the PR was submitted with the changes >> <https://github.com/apache/synapse/pull/55> I was working on earlier, I >> decided to move into the next stage of the containerization project and >> begin adding the rest of the planned features. >> I've compiled an open Google Sheet linked herewith with the state of work >> thus far. >> >> https://docs.google.com/spreadsheets/d/1L8lZ1ZLk6UxwuA0LijiZxsHXiNdVwG_bYUhccjfaB2g/edit?usp=sharing >> >> As it can be seen, parameter injection via environment variables is the >> priority atm. >> I've used the WSO2 Micro Integrator as the closest analog to Synapse, imo >> and based this feature list off of that. >> >> Would appreciate any and all feedback on this. >> Kind regards >> >> On Tue, Oct 5, 2021 at 10:15 AM Nuwan Jayawardene <nsga...@gmail.com> >> wrote: >> >>> [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 >>> >>> >> >> -- >> *Nuwan Jayawardene* >> Assistant Lecturer, Informatics Institute of Technology (IIT). >> Research Assistant, University of Moratuwa >> >> 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 > > -- *Nuwan Jayawardene* Assistant Lecturer, Informatics Institute of Technology (IIT). Research Assistant, University of Moratuwa https://www.linkedin.com/m/in/nuwanjaya