<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.gmail-
        {mso-style-name:gmail-;}
span.E-MailFormatvorlage19
        {mso-style-type:personal;
        font-family:"Arial",sans-serif;
        color:windowtext;
        font-weight:normal;
        font-style:normal;}
span.E-MailFormatvorlage20
        {mso-style-type:personal-compose;
        font-family:"Arial",sans-serif;
        color:windowtext;
        font-weight:normal;
        font-style:normal;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif">Hi Ulf,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif">thanks, this clarifies it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">And an interesting solution, dealing with the missing templating feature in Kubernetes (just had a look at the corresponding k8s github issue).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Best regards
<br>
<br>
<b>Carsten Lohmann<br>
</b><br>
(INST/ECS4) <br>
Bosch Software Innovations GmbH | Schöneberger Ufer 89-91 | 10785 Berlin | <span style="text-transform:uppercase">
GERMANY</span></span><span lang="DE"> | </span><a href="http://www.bosch-si.com"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif">www.bosch-si.com</span></a><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">
<br>
Tel. +49 30 726112-130 | Fax +49 30 726112-100 | </span><a href="mailto:carsten.lohmann@bosch-si.com"><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif">carsten.lohmann@bosch-si.com</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">
</span><span lang="DE" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:black"><br>
<br>
Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B<br>
Geschäftsführung: Dr.-Ing. Rainer Kallenbach, Michael Hahn<br>
<br>
</span><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<br>
</span><span lang="DE" style="font-size:10.0pt;font-family:"Arial",sans-serif"><o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="DE" style="font-size:11.0pt;font-family:"Calibri",sans-serif">Von:</span></b><span lang="DE" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Ulf Lilleengen [mailto:ulilleen@redhat.com]
<br>
<b>Gesendet:</b> Montag, 19. Juni 2017 13:33<br>
<b>An:</b> Lohmann Carsten (INST/ECS4) <Carsten.Lohmann@bosch-si.com><br>
<b>Cc:</b> enmasse@redhat.com<br>
<b>Betreff:</b> Re: [EnMasse] Adapting the EnMasse deployment<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="DE"><o:p> </o:p></span></p>
<div>
<div>
<div>
<p class="MsoNormal">Hi Carsten,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">In EnMasse, there are currently 4 types of addresses: 'anycast', 'multicast', 'queue', 'topic'. The first two are 'direct' address that only makes use of the dispatch router. Whenever you create an address with 'queue' or 'topic' semantics,
 you get a broker. The way this is done is that whenever you create a queue (store_and_forward=true, multicast=false, flavor='vanilla-queue' for instance), then the address-controller will create the Deployment for a broker to handle that queue. If an address
 with the same group exists, it will reuse that deployment and the queue on the broker will be created. See <a href="https://github.com/EnMasseProject/enmasse/blob/master/documentation/getting-started/openshift.md#configuring-addresses">https://github.com/EnMasseProject/enmasse/blob/master/documentation/getting-started/openshift.md#configuring-addresses</a>
 for more on address configuration.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">My slides from RivieraDev may help in explaining how brokers are created today: <a href="https://www.slideshare.net/UlfLilleengen/rivieradev-75928765">https://www.slideshare.net/UlfLilleengen/rivieradev-75928765</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The conceptual model around how addresses are defined is subject to change, and a design draft will be published on this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The address-controller is the component that applies the JSON in those config maps. It uses the fabric8 kubernetes client, which has a capability of processing OpenShift templates locally even when running on Kubernetes. This essentially
 allows us to use OpenShift templates for the 'instance infrastructure (router ++)' (only 1 instance in the single-tenant case) and the 'broker infrastructure' (multiple of these depending on the address config) on Kubernetes. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">An OpenShift template is basically a list of Kubernetes resources that can be processed (parameter substitution) and then applied (creates the processed resources). When running on OpenShift, the address controller processes the templates
 'remotely' rather than from the resources in the config map.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">When running on Kubernetes, the 'enmasse-template-config' configmap is mounted within the address-controller pod, and i.e. whenever you create a queue, it will process one of the template files within that ConfigMap and substitute parameters
 like the ADDRESS etc (which originally comes from the user input).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Ulf<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On Mon, Jun 19, 2017 at 1:04 PM, Lohmann Carsten (INST/ECS4) <<a href="mailto:Carsten.Lohmann@bosch-si.com" target="_blank">Carsten.Lohmann@bosch-si.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<p class="MsoNormal">Good, thank you for the info.<br>
<br>
One further difference in the Hono qdrouter config is the inclusion of the artemis broker.<br>
<br>
While I see an artemis image being referenced in the nested JSONs of the Kubernetes enmasse.yaml,<br>
it seems there is no such container being deployed after applying enmasse.yaml.<br>
Is inclusion of the broker in Kubernetes currently not enabled/supported? <o:p></o:p></p>
</blockquote>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<p class="MsoNormal">One thing I'm still trying to grasp is the way the Kubernetes resources defined in the ConfigMap with the JSONs<br>
actually get applied/deployed.<br>
Do you have pointers here on the corresponding Kubernetes mechanisms used for that?<br>
<br>
<span lang="DE">Best regards<br>
<br>
 Carsten Lohmann<br>
<br>
<span class="gmail-">(INST/ECS4)</span><br>
<span class="gmail-">Bosch Software Innovations GmbH | Schöneberger Ufer 89-91 | 10785 Berlin | GERMANY |
</span></span><a href="http://www.bosch-si.com" target="_blank"><span lang="DE">www.bosch-si.com</span></a><span lang="DE"><br>
<span class="gmail-">Tel. </span></span><a href="tel:%2B49%2030%20726112-130"><span lang="DE">+49 30 726112-130</span></a><span class="gmail-"><span lang="DE"> | Fax
</span></span><a href="tel:%2B49%2030%20726112-100"><span lang="DE">+49 30 726112-100</span></a><span class="gmail-"><span lang="DE"> |
</span></span><a href="mailto:carsten.lohmann@bosch-si.com"><span lang="DE">carsten.lohmann@bosch-si.com</span></a><span lang="DE"><br>
<br>
<span class="gmail-">Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B</span><br>
<span class="gmail-">Geschäftsführung: Dr.-Ing. Rainer Kallenbach, Michael Hahn</span><br>
<br>
<br>
<br>
<br>
-----Ursprüngliche Nachricht-----<br>
<span class="gmail-">Von: Ulf Lilleengen [mailto:</span></span><a href="mailto:ulilleen@redhat.com"><span lang="DE">ulilleen@redhat.com</span></a><span class="gmail-"><span lang="DE">]</span></span><span lang="DE"><br>
Gesendet: Freitag, 16. Juni 2017 14:30<br>
An: Lohmann Carsten (INST/ECS4) <</span><a href="mailto:Carsten.Lohmann@bosch-si.com"><span lang="DE">Carsten.Lohmann@bosch-si.com</span></a><span lang="DE">>;
</span><a href="mailto:enmasse@redhat.com"><span lang="DE">enmasse@redhat.com</span></a><span lang="DE"><br>
Betreff: Re: [EnMasse] Adapting the EnMasse deployment<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="DE"><br>
</span>On 16. juni 2017 12:44, Ulf Lilleengen wrote:<br>
> On 16. juni 2017 12:08, Lohmann Carsten (INST/ECS4) wrote:<br>
>> Hi Ulf,<br>
>><br>
>>>  Out of curiosity, what is it that you wish to modify in this config?<br>
>><br>
>> We want to use a config similar to the one used in Hono:<br>
>><br>
>> <a href="https://github.com/eclipse/hono/blob/master/dispatchrouter/qpid/qdrou" target="_blank">
https://github.com/eclipse/hono/blob/master/dispatchrouter/qpid/qdrou</a><br>
>> terd-with-broker.json<br>
>><br>
>>  > I.e. with our sslProfile / certificates and vhost definitions.<br>
>><br>
><br>
> One thing to look out for there is that the enmasse router config is<br>
> created dynamically from a static fixed template + configuration from<br>
> the router agent (address config for instance).<br>
><br>
> To make it work properly in EnMasse, you have to merge that config<br>
> with the static enmasse router config:<br>
><br>
> <a href="https://github.com/EnMasseProject/dockerfiles/blob/master/qdrouterd/qd" target="_blank">
https://github.com/EnMasseProject/dockerfiles/blob/master/qdrouterd/qd</a><br>
> routerd.conf.template<br>
><br>
><br>
<br>
Just to elaborate on this part: Eventually we hope to provide a way in EnMasse to do this without overriding the router config. For certs, you can edit the certificates used by the router by creating/editing the secret 'certs-$namespace' where $namespace is
 the namespace where you deployed EnMasse to, which will be used for external connections.<br>
<br>
We intend to improve the certificate management in the near future in combination with keycloak integration.<br>
<br>
How to add vhost definitions is something that needs more discussion, but we're working on a backlog so this is useful input.<br>
<br>
--<br>
Ulf<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">_______________________________________________<br>
enmasse mailing list<br>
<a href="mailto:enmasse@redhat.com">enmasse@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/enmasse" target="_blank">https://www.redhat.com/mailman/listinfo/enmasse</a><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>