Support for Dockers and Kubernetes

Support for Dockers and Kubernetes

  

Does OutSystems support deployment on Dockers and Kubernetes? I saw a previous forum where the answer was NO (but that was from 2 years ago). I am hoping there has been a change since. 

Hello Prasuna.


It's not built into the product, if that's what you're asking.

Finally https://success.outsystems.com/Support/Enterprise_Customers/OutSystems_Support/OutSystems_2018_EAP :) 


Questions for the engineering department: Can we use istio.io (envoy + Jaeger + Fluentd + OpenTracing) calico and linkerd with OutSystems? 


p.s are you guys coming to KubeCon/CloudNativeCon next month?

Edit: Can we expose metrics from OutSystems Applications with prometheus? :)

2 Edit: Can we deploy OutSystems with helm ? 

Solution

Hi Mario, 

I'm glad that you like the scope of OutSystems 2018 =)

O11 enables deployment to container platforms. In O11, OutSystems will generate and package the applications and required assets that will allow you to build the Windows containers images and deploy them using your own automation tools (to automate and streamline the deployment process) and orchestration/management tools for the deployment in the containerized system.

This approach allows you to use most, if not all, of the container-related tools of your choice. But we don't develop anything specific for a particular tool. In particular, we are not exposing metrics for Prometheus.

You can apply to the Early Access Program, in the page the EAP page. The EAP is a great opportunity to discuss further the current and future capabilities of OutSystems for containers.

Solution

Hi Tiago,

Thank you for your feedback!

I might ask someone to apply to EAP for me. I really want to see how can I use patterns like sidecar injection, ambassador or adapter with OutSystems :) 

By the way, this topic was a really hot topic is the last OutSystems meetup here in the Netherlands :)

On a side, a note is quite sad that GKE is not being mentioned in the documentation, since is 10x better that azure or aws k8s offer.

 

Hi Joao,

Good to know, however, deploying to Kubernetes is not like, "Hey use this deployment.yaml and service.yaml, and is done".

Almost every application I deployed to production in Kuberenetes were built using container patterns like Sidecar, Ambassador or Adapter (the 3 most used patterns), which introduces a lot of application and infrastructure complexity and of course tools/applications/services (istio,envoy,linkerd,calico,cilium,fluentd,flannel etc...)

It would be nice to have some examples of how OutSystems applications will work with containerized applications that need to use the most common container patterns.



Hi Mário,

Thanks for the comments. There's one thing that I don't understand. Some/most of those container patterns and tools are advertised as "not requiring any modifications to the applications they bring features to".

Why do you suspect that they wouldn't work with OutSystems applications?

Nothing prevents you from deploying OutSystems containerized applications alongside with other containers in Kubernetes.


Joao


Hi Joao,


This "not requiring any modifications to the applications they bring features to" its a lie, a marketing buzzword. This is experience talking after deploying and maintaining around 50 containerized applications in production for some time already. 


Case scenarios: 

1 - You need a reverse proxy? Sidecar injection pattern.

2 - I have this Legacy application communicating with a remote service and i need a circuit breaker, here we go for the ambassador pattern.

3 - I want to monitor the health of my service / application / containers, here we go for the adapter pattern.

4 - I need to have multi-cluster ingress, sidecar injection pattern again (this is probably the most recent scenario that I am facing, 1 cluster for each region for HA, same application in all clusters, so in this case, I will use a data plane for service discovery, health check, routing, load balancing, auth, and observability)

5 - All communications between services need to be encrypted (security freaks), in this case, i will use mTLS (mutual tls), another case of sidecar injection pattern. 

6 - Upgrading applications without downtime, followed by blue and green deployments, canary releases. Because of that will need connection draining, http keep alives, replicasets etc... 

7 - I need to encrypt all my data in transit (Vault by hashiCorp), here you can go for adapter or sidecar. 

I have many questions like, how lifetime will work if the pod have this patterns, how the connection to SQL Server will work if the pod have this patterns since there is no ProxySQL for SQL Server, and much more :) By the way, many of this questions are coming from the development team here at vopak ;)

So resuming, you can't just migrate a production application that is non containerized to containers, 100% sure that will break :),

more info: https://vitalflux.com/container-design-patterns-kubernetes-pods-design/

About "how lifetime will work if the pod have this patterns"... there's no relationship between lifetime and the non-OutSystems containers running in the pod. I would say you can understand it better by reading the process overview in:

https://success.outsystems.com/Documentation/11/Managing_the_Applications_Lifecycle/Deploying_to_Containers/Running_Your_Application_in_a_Container/Deploying_an_Application_to_a_Docker_Container

So this is just "detach". Cool thx!


P.s. It would be nice to have something like this: https://docs.mendix.com/deployment/docker/run-mendix-on-kubernetes