I was still able to spin up the UI locally and debug in my testing. I am in complete agreement, we need to ensure the developer experience doesn't change.
On Fri, Nov 16, 2018 at 10:47 AM Michael Miklavcic < michael.miklav...@gmail.com> wrote: > Ryan, what's remote debugging look like for UI testing with Knox enabled? > Anything we lose from a dev testability standpoint? The discussion of > defaults sounds reasonable to me, and I'd like to understand any other > tradeoffs there may be for non-prod deployments like full dev. > > On Fri, Nov 16, 2018 at 7:20 AM Ryan Merriman <merrim...@gmail.com> wrote: > > > Most of the research I've done around adding Metron as a Knox service is > > based on how other projects do it. The documentation is not easy to > follow > > so I learned by reading other service definition files. The assumption > > that we are doing things drastically different is false. > > > > I completely agree with Simon. Why would we want to be dependent on > Knox's > > release cycle? How does that benefit us? It may reduce some operational > > complexity but it makes our install process more complicated because we > > require a certain version of Knox (who knows when that gets released). > > What do we do in the meantime? I would also like to point out that > Metron > > is inherently different than other Hadoop stack services. We are a > > full-blown application with multiple UIs so the way we expose services > > through Knox may be a little different. > > > > I think this will be easier to discuss when we can all see what is > actually > > involved. I am working on a PR that adds Metron as a Knox service and > will > > have that out soon. That should give everyone more context. > > > > On Fri, Nov 16, 2018 at 7:39 AM Simon Elliston Ball < > > si...@simonellistonball.com> wrote: > > > > > You could say the same thing about Ambari, but that provides mpacks. > Knox > > > is also designed to be extensible through Knox service stacks since > they > > > realized they can’t support every project. The challenge is that the > docs > > > have not made it as easy as they could for the ecosystem to plug into > > Knox, > > > which has led to some confusion around this being a recommended pattern > > > (which it is). > > > > > > The danger of trying to get your bits into Knox is that that ties you > to > > > their release cycle (a problem Ambari has felt hard, hence their > > community > > > is moving away from the everything inside model towards everything is > an > > > mpack). > > > > > > A number of implementations of Knox also use the approach Ryan is > > > suggesting for their own organization specific end points, so it’s not > > like > > > this is an uncommon, or anti-pattern, it’s more the way Knox is > designed > > to > > > work in the future, than the legacy of it only being able to handle a > > > subset of Hadoop projects. > > > > > > Knox remains optional In our scenario, but we keep control over the > > > shipping of things like rewrite rules, which allows Metron to control > its > > > release destiny should things like url patterns in the ui need to > change > > > (with a new release of angular / new module / new rest endpoint etc) > > > instead of making a Metron release dependent on a Knox release. > > > > > > Imagine how we would have done with the Ambari side if we’d had to wait > > > for them to release every time we needed to change something in the > > > mpack... we don’t want that happening with Knox. > > > > > > Simon > > > > > > > On 16 Nov 2018, at 13:22, Otto Fowler <ottobackwa...@gmail.com> > wrote: > > > > > > > > > > > > > > https://issues.apache.org/jira/browse/KNOX-841?jql=project%20%3D%20KNOX%20AND%20text%20~%20support > > > > > > > > Solr is angular for example. > > > > > > > > > > > > On November 16, 2018 at 08:12:55, Otto Fowler ( > ottobackwa...@gmail.com > > ) > > > > wrote: > > > > > > > > Ok, here is something I don’t understand, but would like to. > > > > > > > > Knox comes configured with build in services for a number of other > > apache > > > > products and UI’s. > > > > It would seem to me, that the best integration with Knox would be to > do > > > > what these other products have done. > > > > > > > > > > > > 1. Do whatever you have to do to make your own stuff compatible. > > > > 2. Create a knox service definition and provide it or try to get it > > into > > > > knox itself > > > > > > > > This would make the knox integration with metron optional and > pluggable > > > > wouldn’t it? > > > > > > > > Then knox with metron would just be the same as knox with anything > > else. > > > > Please help me if I am wrong, but we seem to be going our own way > here. > > > > Why don’t we just do what these other products have done? > > > > Why don’t we try to get apache metron services accepted to the knox > > > > project? Why don’t we model our knox integration with how XYZ does > it? > > > > Have we looked at how others integrate? Having all the code and > being > > > > able to track stuff is kind of the point of this whole thing isn’t > it? > > > > > > > > Maybe this is implied and I’m missing it, if so I apologize. > > > > > > > > I think consistency with the rest of the hadoop stack with knox helps > > us. > > > > > > > > > > > > > > > > On November 15, 2018 at 22:20:00, Ryan Merriman (merrim...@gmail.com > ) > > > wrote: > > > > > > > > 1) Sorry I misspoke. I meant to say this is not possible in the > Alerts > > UI > > > > as far as I know. I put up a PR with a proposed solution here: > > > > https://github.com/apache/metron/pull/1266. > > > > 2) Yes Knox is a service you can install with Ambari, similar to > Ranger > > > or > > > > Spark. There are some things that are specifically configured in Knox > > and > > > > there are some things specific to Metron. I will put up a PR with the > > > > changes needed so you can see exactly what is involved. > > > > 3) I don't understand what you mean here. Is this a question? > > > > 4) I think it's a little early to predict the Ambari changes > required. > > > > This will depend on how tasks 1-3 go. I imagine it's similar to other > > > > mpack work: expose some parameters in ambari and bind those to config > > > > files. My understanding from this thread so far is that we should > focus > > > on > > > > a manual, documented approach to start. > > > > > > > > On Thu, Nov 15, 2018 at 7:53 PM Michael Miklavcic < > > > > michael.miklav...@gmail.com> wrote: > > > > > > > >> Thanks Ryan, > > > >> > > > >> 1) Can you clarify "not a good way to do this?" Are you saying we > > don't > > > >> have a way to set this and need to add the config option, or that a > > > >> solution is not obvious and it's unclear what to do? It seems to me > > > you're > > > >> saying the former, but I'd like to be sure. > > > >> 2) Is Knox not a service made available by Ambari similar to Ranger > or > > > >> Spark? I'm assuming that similar to Kerberos, there are some things > > that > > > >> are specifically configured in Knox and others that are > app-specific. > > > Some > > > >> explanation of what this looks like would be helpful. > > > >> 3) Sounds like this follows pretty naturally from #1 > > > >> 4) Relates to #2. I think we need some guidance on what a manual vs > > > >> MPack/automated install would look like. > > > >> > > > >> Cheers, > > > >> Mike > > > >> > > > >> > > > >>> On Thu, Nov 15, 2018 at 4:07 PM Ryan Merriman <merrim...@gmail.com > > > > > wrote: > > > >>> > > > >>> Wanted to give an update on the context path issue. I investigated > > > >>> rewriting url links in the outgoing static assets with Knox and it > > was > > > >> not > > > >>> trivial. Fortunately I found a simple solution that works with or > > > >> without > > > >>> Knox. I changed the base tag in index.html from <base href="/"> to > > > <base > > > >>> href="./">, or in other words made the base href relative. > > > >>> > > > >>> I believe I am at the point where I can task this out and provide a > > > high > > > >>> level overview of the changes needed. I think that each task will > be > > a > > > >>> manageable size and can stand alone so I don't think we need a > > feature > > > >>> branch. > > > >>> > > > >>> The first task involves a general change to the UI code. We need a > > way > > > >> to > > > >>> set the path to the REST service with a configuration setting > because > > > it > > > >> is > > > >>> different with and without Knox. Currently there is not a good way > to > > > do > > > >>> this in the UI. We can use the environment files but that is a > build > > > >> time > > > >>> setting and is not flexible. I can see this capability being useful > > for > > > >>> other use cases in the future. I think we could even split this up > > into > > > >> 2 > > > >>> separate tasks, one for the alerts UI and one for the management > UI. > > > >>> > > > >>> The second task involves adding Knox to our stack either by default > > as > > > a > > > >>> dependency in the mpack or with a documented approach. We would add > > our > > > >>> REST service, Alerts UI, and Management UI as services in Knox. > > > >> Everything > > > >>> would continue to function as it currently does but with all > > > >> communication > > > >>> going through Knox. LDAP authentication would be required when > using > > > >> Knox > > > >>> and Knox will authenticate with the REST service by passing along > an > > > >>> Authorization header. Enabling Knox would be a manual process that > > > >>> involves deploying assets (Knox descriptor files) and changing > > > >>> configuration. There would be no change to how the UI functions by > > > >> default > > > >>> (without Knox) and either LDAP or JDBC authentication could still > be > > > >> used.. > > > >>> > > > >>> The third task involves enabling SSO with Knox. We would update the > > > REST > > > >>> service so that it can authenticate with a Knox SSO token. We would > > > >>> provide documentation on how to update the Knox settings in Ambari > to > > > >>> enable SSO. The Alerts/Management UI would need to expose > > configuration > > > >>> properties for the REST url and login url since these would be > > > different > > > >>> when Knox is enabled. We would also need to provide documentation > on > > > how > > > >>> to make these UI configuration changes, based on the work done in > > task > > > > 1. > > > >>> > > > >>> An optional forth task would be exposing configuration settings and > > > >>> enabling Knox with Ambari. We would eliminate the manual steps > > > necessary > > > >>> for enabling Knox and instead automate those steps with an Ambari > > input > > > >>> control, similar to how LDAP is enabled. > > > >>> > > > >>> Thoughts on this plan? > > > >>> > > > >>> On Thu, Nov 15, 2018 at 10:22 AM James Sirota <jsir...@apache.org> > > > >> wrote: > > > >>> > > > >>>> In my view Knox SSO is such a minor feature when it comes to > > Metron's > > > >>>> capabilities than it's not worth supporting multiple scenarios > where > > > > it > > > >>>> works with Knox or without Knox. Where we should be configurable > > (and > > > >>> are > > > >>>> configurable) is on the analytics and stream processing. But this? > > As > > > >>>> long as the UI authenticates securely I don't think anyone is > going > > to > > > >>> care > > > >>>> what proxy it's using. The code itself should be written in a way > > that > > > >>>> it's pluggable so if we ever wanted to use another proxy or > disable > > it > > > >>> all > > > >>>> together we could. But this should not be a configuration we pass > on > > > >> to > > > >>>> the user. The added complexity is simply not worth it here. We > have > > > >> to > > > >>>> start being opinionated about making sensible choices on behalf of > > the > > > >>>> user. A sensible choice here is to run with Knox and LDAP. The > JDBC > > > >>>> component should exist for another release to allow the community > to > > > >>>> migrate over to LDAP and then be deprecated. The code should still > > be > > > >>>> pluggable and if anyone wanted to extend it to work with JDBC they > > > >> could, > > > >>>> or if people wanted to plug in another proxy they could, but this > is > > > >> not > > > >>>> something we would officially support. > > > >>>> > > > >>>> Thanks, > > > >>>> James > > > >>>> > > > >>>> 12.11.2018, 07:36, "Ryan Merriman" <merrim...@gmail.com>: > > > >>>>> Let me clarify on exposing both legacy and Knox URLs at the same > > > >> time. > > > >>>> The > > > >>>>> base urls will look something like this: > > > >>>>> > > > >>>>> Legacy REST - http://node1:8082/api/v1 > > > >>>>> Legacy Alerts UI - http://node1:4201:/alerts-list > > > >>>>> > > > >>>>> Knox REST - https://node1:8443/gateway/default/metron/api/v1 > > > >>>>> Knox Alerts UI - > > > >>>>> https://node1:8443/gateway/default/metron-alerts-ui/alerts-list > > > >>>>> > > > >>>>> If Knox were turned on and the alerts UI deployed as is, it would > > > > not > > > >>>>> work. This is because static assets are referenced with > > > >>>>> http://node1:4201/assets/some-asset.js which does not include > the > > > >>>> correct > > > >>>>> context path to the alerts UI in knox. To make it work, you have > to > > > >> set > > > >>>>> the base ref to "/gateway/default/metron-alerts-ui" so that > static > > > >>> assets > > > >>>>> are referenced at > > > >>>>> > > > >>> > > > > https://node1:8443/gateway/default/metron-alerts-ui/assets/some-asset.js > > > >>>> . > > > >>>>> When you do that, the legacy alerts UI will no longer work. I > guess > > > >> the > > > >>>>> point I'm trying to make is that we would have to switch between > > > > them > > > >>> or > > > >>>>> have 2 separate application running. I imagine most users only > need > > > >> one > > > >>>> or > > > >>>>> the other running so probably not an issue. > > > >>>>> > > > >>>>> Jon, the primary upgrade consideration I see is with > > authentication. > > > >> To > > > >>>> be > > > >>>>> able to use Knox, you would have to upgrade to LDAP-based > > > >>> authentication > > > >>>> if > > > >>>>> you were still using JDBC-based authentication in REST. The urls > > > >> would > > > >>>>> also change obviously. > > > >>>>> > > > >>>>> On Sun, Nov 11, 2018 at 6:38 PM zeo...@gmail.com < > zeo...@gmail.com > > > > > > >>>> wrote: > > > >>>>> > > > >>>>>> Phew, that was quite the thread to catch up on. > > > >>>>>> > > > >>>>>> I agree that this should be optional/pluggable to start, and I'm > > > >>>> interested > > > >>>>>> to hear the issues as they relate to upgrading an existing > cluster > > > >>>> (given > > > >>>>>> the suggested approach) and exposing both legacy and knox URLs > at > > > >> the > > > >>>> same > > > >>>>>> time. > > > >>>>>> > > > >>>>>> Jon > > > >>>>>> > > > >>>>>> On Fri, Nov 9, 2018, 4:46 PM Michael Miklavcic < > > > >>>>>> michael.miklav...@gmail.com> > > > >>>>>> wrote: > > > >>>>>> > > > >>>>>>> A couple more things, and I think this goes without saying - > > > >>>> whatever we > > > >>>>>> do > > > >>>>>>> with Knox should NOT > > > >>>>>>> > > > >>>>>>> 1. Require unit and integration tests to use Knox > > > >>>>>>> 2. Break fulldev > > > >>>>>>> > > > >>>>>>> Also, I don't know that I saw you mention this, but I'm unsure > > > >> how > > > >>> we > > > >>>>>>> should leverage Knox as a core piece of the platform. i.e. > should > > > >>> we > > > >>>> make > > > >>>>>>> this required or optional? I'm open to hearing opinions on > this, > > > >>> but > > > >>>> I'm > > > >>>>>>> inclined to keep this a pluggable option. > > > >>>>>>> > > > >>>>>>> Mike > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> On Fri, Nov 9, 2018 at 2:42 PM Michael Miklavcic < > > > >>>>>>> michael.miklav...@gmail.com> wrote: > > > >>>>>>> > > > >>>>>>>> Thanks for the update Ryan. Per my earlier comments, I thought > > > >> it > > > >>>> might > > > >>>>>>> be > > > >>>>>>>> the case that we could dramatically simplify this by > leveraging > > > >>>> Knox's > > > >>>>>>>> proxy capabilities, and per your research that appears to be > > > >> the > > > >>>> case. > > > >>>>>>> This > > > >>>>>>>> is a dramatic simplification and improvement of this feature > > > >> imo, > > > >>>> +1. > > > >>>>>> I'm > > > >>>>>>>> also +1 on a couple distinct steps that you've laid out: fix > > > >> the > > > >>> UI > > > >>>>>>> issues > > > >>>>>>>> in master, then add Knox for SSO. That should help mitigate > > > >>> issues > > > >>>> with > > > >>>>>>>> merge conflicts with ongoing development. > > > >>>>>>>> > > > >>>>>>>>> I think it will be a challenge exposing the UIs through both > > > >>> the > > > >>>> Knox > > > >>>>>>>> url and legacy urls at the same time. > > > >>>>>>>> I'm not sure I understand the issue here. Are you referring to > > > >>> this > > > >>>>>>>> comment? "Added a ng build option to build the UI with base > > > >> href > > > >>>> set to > > > >>>>>>>> Knox base path." Isn't it just a matter of URL > > > >>>> rewriting/forwarding? I > > > >>>>>>>> thought we'd be exposing the URL's directly in one context, > and > > > >>>> through > > > >>>>>>>> Knox in the other. Either way, it seems like we should be able > > > >> to > > > >>>>>>> provide a > > > >>>>>>>> dynamic base path through configuration in our web > > > >> applications. > > > >>>> I'd > > > >>>>>>> expect > > > >>>>>>>> to modify that property based on whether Knox is configured or > > > >>> not. > > > >>>>>>>> > > > >>>>>>>>> I'm also not clear on how one would use Knox with REST set to > > > >>>> legacy > > > >>>>>>>> JDBC-based authentication. As far as I know Knox does not > > > >> support > > > >>>> JDBC > > > >>>>>> so > > > >>>>>>>> there would be a mismatch between Knox and REST. > > > >>>>>>>> I'm OK with not having Knox work with JDBC. That's a feature > of > > > >>>> Knox > > > >>>>>> and > > > >>>>>>>> probably not something we care much about. > > > >>>>>>>> > > > >>>>>>>>> We could initially make Knox an optional feature that > requires > > > >>>> setup > > > >>>>>>> with > > > >>>>>>>> the help of some documentation (like Kerberos) while keeping > > > >> the > > > >>>> system > > > >>>>>>> the > > > >>>>>>>> way it is now by default. > > > >>>>>>>> Sounds good to me. > > > >>>>>>>> > > > >>>>>>>>> I imagine we'll deprecate JDBC-based authentication at some > > > >>>> point so > > > >>>>>>>> that may be a good time to switch. > > > >>>>>>>> I would like to announce deprecation in our next release and > > > >> move > > > >>>> to > > > >>>>>>>> remove it in a following release. > > > >>>>>>>> > > > >>>>>>>> Thanks for taking this on and great job laying things out. > > > >>>>>>>> > > > >>>>>>>> Thanks, > > > >>>>>>>> Mike > > > >>>>>>>> > > > >>>>>>>> On Fri, Nov 9, 2018 at 2:09 PM Ryan Merriman < > > > >>> merrim...@gmail.com> > > > >>>>>>> wrote: > > > >>>>>>>> > > > >>>>>>>>> I have spent some time recently reviewing this discussion and > > > >>> the > > > >>>>>>> feature > > > >>>>>>>>> branch that Simon put out. I think this is an important > > > >> feature > > > >>>> and > > > >>>>>>> want > > > >>>>>>>>> to move it forward. I started another discussion on adding > > > >> Knox > > > >>> to > > > >>>>>> our > > > >>>>>>>>> stack but this discussion has a lot of good context so I will > > > >>>> continue > > > >>>>>>> it > > > >>>>>>>>> here. > > > >>>>>>>>> > > > >>>>>>>>> I think the main point of contention was that this feature > > > >>> branch > > > >>>>>>> included > > > >>>>>>>>> several different architectural changes and it was unclear if > > > >>> they > > > >>>>>> were > > > >>>>>>>>> needed and if so, could be done separately. Fortunately LDAP > > > >>>>>>>>> authentication has been accepted into master so we can cross > > > >> it > > > >>>> off > > > >>>>>> the > > > >>>>>>>>> list. From my understanding of the points people have made, > > > >> that > > > >>>>>> leaves > > > >>>>>>>>> Knox related SSO changes and migrating expressjs to a > > > >> different, > > > >>>>>>> JVM-based > > > >>>>>>>>> web server that includes proxying capabilities (Zuul). > > > >>>>>>>>> > > > >>>>>>>>> I think everyone agrees that if we can limit the scope to > just > > > >>>> Knox > > > >>>>>>>>> related > > > >>>>>>>>> SSO changes that would be ideal. I believe I have found a way > > > >> to > > > >>>> do > > > >>>>>>> that > > > >>>>>>>>> while working on a small POC this week. The key to this > (Simon > > > >>>>>> alluded > > > >>>>>>> to > > > >>>>>>>>> it earlier) is to put both REST and our UIs behind Knox. I > > > >>>> initially > > > >>>>>>> was > > > >>>>>>>>> focused on just adding REST as a service in Knox and decided > > > >> to > > > >>>>>>> experiment > > > >>>>>>>>> with also adding our UIs. After I did this it became clear > > > >> that > > > >>>> this > > > >>>>>>>>> simplifies things considerably: > > > >>>>>>>>> > > > >>>>>>>>> - The REST app and the UIs are now served from the same host > > > >> so > > > >>>>>> CORS > > > >>>>>>>>> concerns go away. > > > >>>>>>>>> - We no longer need to worry about proxying REST requests > from > > > >>> the > > > >>>>>>> UIs > > > >>>>>>>>> with express or Zuul because Knox handles that for us. This > > > >> will > > > >>>>>>> make > > > >>>>>>>>> our > > > >>>>>>>>> express configuration even simpler. In fact, all we need is a > > > >>>>>> simple > > > >>>>>>>>> way > > > >>>>>>>>> to serve static UI assets. > > > >>>>>>>>> - We no longer need to check for SSO tokens and redirect in > > > >> the > > > >>> UI > > > >>>>>>>>> web/app servers (or the REST app for that matter) because > Knox > > > >>>>>>> handles > > > >>>>>>>>> that > > > >>>>>>>>> for us. > > > >>>>>>>>> - The UIs can now easily access any Knox service (not just > our > > > >>>> REST > > > >>>>>>>>> app) > > > >>>>>>>>> without any extra proxy configuration. > > > >>>>>>>>> - SSO token authentication is only necessary in REST so there > > > >> is > > > >>>> no > > > >>>>>>>>> need > > > >>>>>>>>> to create shared Spring modules or split functionality out. > > > >>>>>>>>> > > > >>>>>>>>> The most significant change I had to make (borrowed from > > > >> Simon's > > > >>>>>> feature > > > >>>>>>>>> branch) was the SSO token authentication mentioned above. The > > > >>>> primary > > > >>>>>>>>> short term benefit with this approach is that outside of some > > > >>>> general > > > >>>>>>>>> deficiencies unrelated to this our UI architecture doesn't > > > >> need > > > >>> to > > > >>>>>>>>> fundamentally change. I could summarize the changes as: > > > >>>>>>>>> > > > >>>>>>>>> - Knox install and configuration (setting up REST and the > > > >> alerts > > > >>>> UI > > > >>>>>>> as > > > >>>>>>>>> Knox services) > > > >>>>>>>>> - Added Knox SSO token authentication to REST > > > >>>>>>>>> - Updated REST urls in the UI code (should be configurable) > > > >>>>>>>>> - Fixed a few UI bugs where relative paths were not being > used > > > >>>>>>>>> - Added a ng build option to build the UI with base href set > > > >> to > > > >>>>>> Knox > > > >>>>>>>>> base path ( > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://github.com/angular/angular-cli/wiki/build#base-tag-handling-in-indexhtml > > > >>>>>>>>> ) > > > >>>>>>>>> > > > >>>>>>>>> Most the UI changes are preexisting, minor issues that could > > > >> be > > > >>>> fixed > > > >>>>>>>>> directly in master. We would need to think of an approach for > > > >>> the > > > >>>>>> base > > > >>>>>>>>> href build requirement but I'm sure it's not that bad. > > > >>>>>>>>> > > > >>>>>>>>> However there will be some backwards compatibility issues we > > > >>> would > > > >>>>>> need > > > >>>>>>> to > > > >>>>>>>>> think through. I think it will be a challenge exposing the > UIs > > > >>>>>> through > > > >>>>>>>>> both the Knox url and legacy urls at the same time. I'm also > > > >> not > > > >>>>>> clear > > > >>>>>>> on > > > >>>>>>>>> how one would use Knox with REST set to legacy JDBC-based > > > >>>>>>> authentication. > > > >>>>>>>>> As far as I know Knox does not support JDBC so there would be > > > >> a > > > >>>>>> mismatch > > > >>>>>>>>> between Knox and REST. Knox does have the ability to pass > > > >> along > > > >>>> basic > > > >>>>>>>>> authentication headers so LDAP in REST would work. We could > > > >>>> initially > > > >>>>>>>>> make > > > >>>>>>>>> Knox an optional feature that requires setup with the help of > > > >>> some > > > >>>>>>>>> documentation (like Kerberos) while keeping the system the > way > > > >>> it > > > >>>> is > > > >>>>>> now > > > >>>>>>>>> by > > > >>>>>>>>> default. I imagine we'll deprecate JDBC-based authentication > > > >> at > > > >>>> some > > > >>>>>>>>> point > > > >>>>>>>>> so that may be a good time to switch. > > > >>>>>>>>> > > > >>>>>>>>> What do people think about this approach? Concerns? Are there > > > >>> any > > > >>>>>> huge > > > >>>>>>>>> holes in this I'm not thinking about? > > > >>>>>>>>> > > > >>>>>>>>> I want to highlight that the work Simon did in his feature > > > >>> branch > > > >>>> was > > > >>>>>>>>> crucial to better understanding this. I am pretty sure we'll > > > >> end > > > >>>> up > > > >>>>>>>>> reusing a lot code from that branch. > > > >>>>>>>>> > > > >>>>>>>>> On Thu, Sep 27, 2018 at 6:30 PM Michael Miklavcic < > > > >>>>>>>>> michael.miklav...@gmail.com> wrote: > > > >>>>>>>>> > > > >>>>>>>>>> Apparently, I hit send on my last email before finishing my > > > >>>> synopsis > > > >>>>>>>>> (per > > > >>>>>>>>>> @Otto's Q in Slack). To summarize, based on my current > > > >>>>>> understanding I > > > >>>>>>>>>> believe that each of the feature branch changes I've outline > > > >>>> above > > > >>>>>> are > > > >>>>>>>>>> units of work that are related, yet should be executed on > > > >>>>>>> independently. > > > >>>>>>>>>> Knox SSO in its own feature branch. Migrating technologies > > > >>> like > > > >>>>>> NodeJs > > > >>>>>>>>> or > > > >>>>>>>>>> migrating the auth DB to LDAP seem like they belong in their > > > >>> own > > > >>>>>>>>> separate > > > >>>>>>>>>> PR's or feature branches. > > > >>>>>>>>>> > > > >>>>>>>>>> Thanks, > > > >>>>>>>>>> Mike > > > >>>>>>>>>> > > > >>>>>>>>>> On Thu, Sep 27, 2018 at 4:08 PM Casey Stella < > > > >>>> ceste...@gmail.com> > > > >>>>>>>>> wrote: > > > >>>>>>>>>> > > > >>>>>>>>>>> I'm coming in late to the game here, but for my mind a > > > >>> feature > > > >>>>>>> branch > > > >>>>>>>>>>> should involve the minimum architectural change to > > > >>> accomplish > > > >>>> a > > > >>>>>>> given > > > >>>>>>>>>>> feature. > > > >>>>>>>>>>> The feature in question is SSO integration. It seems to me > > > >>>> that > > > >>>>>> the > > > >>>>>>>>>>> operative question is can we do the feature without making > > > >>> the > > > >>>>>> OTHER > > > >>>>>>>>>>> architectural change > > > >>>>>>>>>>> (e.g. migrating from expressjs to spring boot + zuul). I > > > >>> would > > > >>>>>>> argue > > > >>>>>>>>>> that > > > >>>>>>>>>>> if we WANT to do that, then it should be a separate > > > >> feature > > > >>>>>> branch. > > > >>>>>>>>>>> > > > >>>>>>>>>>> Thus, I leave with a question: is there a way to > > > >> accomplish > > > >>>> this > > > >>>>>>>>> feature > > > >>>>>>>>>>> without ripping out expressjs? > > > >>>>>>>>>>> > > > >>>>>>>>>>> - If so and it is feasible, I would argue that we should > > > >>>>>> decouple > > > >>>>>>>>> this > > > >>>>>>>>>>> into a separate feature branch. > > > >>>>>>>>>>> - If so and it is infeasible, I'd like to hear an argument > > > >>> as > > > >>>>>> to > > > >>>>>>>>> the > > > >>>>>>>>>>> infeasibility and let's decide given that > > > >>>>>>>>>>> - If it is not possible, then I'd argue that we should > > > >> keep > > > >>>>>> them > > > >>>>>>>>>> coupled > > > >>>>>>>>>>> and move this through as-is. > > > >>>>>>>>>>> > > > >>>>>>>>>>> On a side-note, it feels a bit weird that we're narrowing > > > >>> to a > > > >>>>>>> bundled > > > >>>>>>>>>>> proxy, rather than having that be a pluggable thing. I'm > > > >> not > > > >>>>>> super > > > >>>>>>>>>>> knowledgeable in this space, so I apologize > > > >>>>>>>>>>> in advance if this is naive, but isn't this a pluggable, > > > >>>> external > > > >>>>>>>>>> component > > > >>>>>>>>>>> (e.g. nginx)? > > > >>>>>>>>>>> > > > >>>>>>>>>>> On Thu, Sep 27, 2018 at 5:05 PM Michael Miklavcic < > > > >>>>>>>>>>> michael.miklav...@gmail.com> wrote: > > > >>>>>>>>>>> > > > >>>>>>>>>>>> I've spent some more time reading through Simon's > > > >> response > > > >>>> and > > > >>>>>> the > > > >>>>>>>>>> added > > > >>>>>>>>>>>> sequence diagram. This is definitely helpful - thank you > > > >>>> Simon. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> I need to redact my initial list: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> 1. Node migrated to Spring Boot, expressjs migrated to a > > > >>>>>>>>>>>> non-JS/non-NodeJs proxying mechanism (ie Zuul in this > > > >>> case) > > > >>>>>>>>>>>> 2. JDBC removed completely in favor of LDAP > > > >>>>>>>>>>>> 3. Knox/SSO > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> I'm a bit conflicted on the best way to move forward and > > > >>>> would > > > >>>>>>> like > > > >>>>>>>>>> some > > > >>>>>>>>>>>> thoughts from other community members on this. I think > > > >> an > > > >>>>>> argument > > > >>>>>>>>> can > > > >>>>>>>>>> be > > > >>>>>>>>>>>> made that 1 and 2 are independent of 3, and should/could > > > >>>> really > > > >>>>>> be > > > >>>>>>>>>>>> independent PR's against master. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> The need for a replacement for expressjs (Zuul in this > > > >>>> case) is > > > >>>>>> an > > > >>>>>>>>>>> artifact > > > >>>>>>>>>>>> that our request/response cycle for REST calls is a > > > >> simple > > > >>>>>> matter > > > >>>>>>> of > > > >>>>>>>>>>>> forwarding with some additional headers for > > > >>> authentication. > > > >>>>>>> There's > > > >>>>>>>>> a > > > >>>>>>>>>>>> JSESSIONID managed by the client browser in our current > > > >>>>>>>>> architecture, > > > >>>>>>>>>> for > > > >>>>>>>>>>>> example. You login to the alerts or the management UI > > > >>> which > > > >>>>>>>>> forwards a > > > >>>>>>>>>>>> request to REST, which looks up credentials in a backend > > > >>>>>> database, > > > >>>>>>>>> and > > > >>>>>>>>>>>> passes the results back up the chain. All browser > > > >> requests > > > >>>> go > > > >>>>>>>>> directly > > > >>>>>>>>>> to > > > >>>>>>>>>>>> the specific UI you're working with - this is the CORS > > > >>>> problem. > > > >>>>>>> You > > > >>>>>>>>>>> can't, > > > >>>>>>>>>>>> without some effort with headers for adding other > > > >> domains > > > >>>> to the > > > >>>>>>>>> safe > > > >>>>>>>>>>> list > > > >>>>>>>>>>>> or disabling the security check for CORS, make remote > > > >>> calls > > > >>>>>>>>> directly to > > > >>>>>>>>>>>> REST. That's why we proxy. Switching over to Spring Boot > > > >>>> leaves > > > >>>>>> a > > > >>>>>>>>> gap > > > >>>>>>>>>>> with > > > >>>>>>>>>>>> expressjs having handled the proxying and filtering, > > > >> since > > > >>>> it's > > > >>>>>>> only > > > >>>>>>>>>>>> available to a NodeJs application (it's server-side > > > >>>> javascript > > > >>>>>> vs > > > >>>>>>>>> the > > > >>>>>>>>>>>> client side javascript deployed via our Angular > > > >>>> applications). > > > >>>>>>> Enter > > > >>>>>>>>>>> Zuul, > > > >>>>>>>>>>>> which now effectively handles that. At runtime, Zuul is > > > >> a > > > >>>> part > > > >>>>>> of > > > >>>>>>>>> the > > > >>>>>>>>>>>> Spring app that serves up our UI's. It handles the > > > >>> requests > > > >>>> via > > > >>>>>>>>>>> filtering, > > > >>>>>>>>>>>> forwards them to REST, manages the response back to the > > > >>>> client. > > > >>>>>>> Very > > > >>>>>>>>>>>> similar to what expressjs was doing, per my current > > > >>>>>> understanding. > > > >>>>>>>>> The > > > >>>>>>>>>>>> sequence diagrams Simon added are useful, and I think > > > >> some > > > >>>> of > > > >>>>>> what > > > >>>>>>>>> was > > > >>>>>>>>>>> less > > > >>>>>>>>>>>> clear was what we currently vs what the new changes are > > > >>>> doing to > > > >>>>>>> the > > > >>>>>>>>>>>> architecture. This is no fault of Simon's - there simply > > > >>>> wasn't > > > >>>>>>> any > > > >>>>>>>>>>>> architecture diagrams/documents around this before. > > > >> Here's > > > >>>> my > > > >>>>>>>>>> impression > > > >>>>>>>>>>> of > > > >>>>>>>>>>>> the very very basic current state - someone more > > > >> familiar > > > >>>> with > > > >>>>>>> this > > > >>>>>>>>>>>> architecture please advise if I'm incorrect about > > > >> anything > > > >>>>>>> (probably > > > >>>>>>>>>>> Ryan). > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> https://imgur.com/f8GtSmh > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Zuul would be replacing the bit about expressjs in the > > > >>>> diagram, > > > >>>>>>> and > > > >>>>>>>>>>> instead > > > >>>>>>>>>>>> of node we have spring boot. This covers 1. 2 and 3 are > > > >>>> other > > > >>>>>>>>> issues. > > > >>>>>>>>>> I'd > > > >>>>>>>>>>>> like to see similar exposition of those server processes > > > >>>> with > > > >>>>>> knox > > > >>>>>>>>>>>> involved. I imagine in that case we bump up from 3 to 4 > > > >>>> server > > > >>>>>>>>>> instances > > > >>>>>>>>>>>> for the additional knox endpoint. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Mike > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> On Wed, Sep 19, 2018 at 11:28 AM James Sirota < > > > >>>>>> jsir...@apache.org > > > >>>>>>>> > > > >>>>>>>>>>> wrote: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> Thank you, Simon. The diagrams help a lot > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> 19.09.2018, 21:27, "Simon Elliston Ball" < > > > >>>>>>>>>> si...@simonellistonball.com > > > >>>>>>>>>>>> : > > > >>>>>>>>>>>>>> To clarify some of this I've put some documentation > > > >>> into > > > >>>>>>>>>>>>>> https://github.com/apache/metron/pull/1203 under > > > >>>>>> METRON-1755 > > > >>>>>>> ( > > > >>>>>>>>>>>>>> https://issues.apache.org/jira/browse/METRON-1755). > > > >>>>>> Hopefully > > > >>>>>>>>> the > > > >>>>>>>>>>>>> diagrams > > > >>>>>>>>>>>>>> there should make it clearer. > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> Simon > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> On Tue, 18 Sep 2018 at 14:17, Simon Elliston Ball < > > > >>>>>>>>>>>>>> si...@simonellistonball.com> wrote: > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Hi Mike, > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Some good points here which could do with some > > > >>>>>>> clarification. > > > >>>>>>>>> I > > > >>>>>>>>>>>> suspect > > > >>>>>>>>>>>>>>> the architecture documentation could be clearer and > > > >>>> fill > > > >>>>>> in > > > >>>>>>>>> some > > > >>>>>>>>>> of > > > >>>>>>>>>>>>> these > > > >>>>>>>>>>>>>>> gaps, and I'll have a look at working on that and > > > >>>>>> providing > > > >>>>>>>>> some > > > >>>>>>>>>>>>> diagrams. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> The short version is that the Zuul proxy gateway > > > >> has > > > >>>> been > > > >>>>>>>>> added > > > >>>>>>>>>> to > > > >>>>>>>>>>>>> replace > > > >>>>>>>>>>>>>>> the Nodejs express proxy used to gateway the REST > > > >> api > > > >>>>>> calls > > > >>>>>>> in > > > >>>>>>>>>> the > > > >>>>>>>>>>>>> current > > > >>>>>>>>>>>>>>> hosts. This is done in both cases to avoid CORS > > > >>>>>> restrictions > > > >>>>>>>>> by > > > >>>>>>>>>>>>> allowing > > > >>>>>>>>>>>>>>> the same host that serves the UI files to proxy > > > >> call > > > >>> to > > > >>>>>> the > > > >>>>>>>>> API. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> The choice of Zuul was partly a pragmatic one (it's > > > >>> the > > > >>>>>> one > > > >>>>>>>>>> that's > > > >>>>>>>>>>>>> there > > > >>>>>>>>>>>>>>> in the box as it were with Spring Boot, which we > > > >> use > > > >>>> for > > > >>>>>> the > > > >>>>>>>>> REST > > > >>>>>>>>>>>> API, > > > >>>>>>>>>>>>> via > > > >>>>>>>>>>>>>>> the Spring Cloud Netflix project which wraps a > > > >> bunch > > > >>> of > > > >>>>>>>>> related > > > >>>>>>>>>>>> pieces > > > >>>>>>>>>>>>> into > > > >>>>>>>>>>>>>>> Spring). The choice of Spring Boot to host the UIs > > > >>>>>>> themselves > > > >>>>>>>>> was > > > >>>>>>>>>>>>> similarly > > > >>>>>>>>>>>>>>> for parity with the REST host, to simplify the > > > >> stack > > > >>>> (we > > > >>>>>>>>> remove > > > >>>>>>>>>> the > > > >>>>>>>>>>>>>>> occasionally problematic need to install nodejs on > > > >>>> target > > > >>>>>>>>>> servers, > > > >>>>>>>>>>>>> which is > > > >>>>>>>>>>>>>>> outside of the regular OS and HDP stacks we > > > >> support). > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Arguably, the Zuul proxy is not necessary if we > > > >> force > > > >>>>>>>>> everything > > > >>>>>>>>>>>>> through a > > > >>>>>>>>>>>>>>> Knox instance, since Knox would provide a single > > > >>>> endpoint. > > > >>>>>>> We > > > >>>>>>>>>>>> probably > > > >>>>>>>>>>>>>>> however don't want to force Knox and SSL, hence > > > >> using > > > >>>> Zuul > > > >>>>>>> to > > > >>>>>>>>>> keep > > > >>>>>>>>>>> it > > > >>>>>>>>>>>>>>> closer to our current architecture. Zuul does some > > > >>>> other > > > >>>>>>> nice > > > >>>>>>>>>>> things, > > > >>>>>>>>>>>>> which > > > >>>>>>>>>>>>>>> might help us in future, so it's really about > > > >> laying > > > >>>> down > > > >>>>>>> some > > > >>>>>>>>>>>> options > > > >>>>>>>>>>>>> for > > > >>>>>>>>>>>>>>> potentially doing micro-services style things at a > > > >>>> later > > > >>>>>>> date. > > > >>>>>>>>>> I'm > > > >>>>>>>>>>>> not > > > >>>>>>>>>>>>>>> saying we have to, or even should go that way, it > > > >>> will > > > >>>>>> just > > > >>>>>>>>> make > > > >>>>>>>>>>> life > > > >>>>>>>>>>>>>>> easier later if we decide to. It will also help us > > > >> if > > > >>>> we > > > >>>>>>> want > > > >>>>>>>>> to > > > >>>>>>>>>>> add > > > >>>>>>>>>>>>> HA, > > > >>>>>>>>>>>>>>> circuit breaking etc to the architecture at a later > > > >>>> date. > > > >>>>>>> That > > > >>>>>>>>>>> said, > > > >>>>>>>>>>>> I > > > >>>>>>>>>>>>>>> regret that I ever said the word micro-services, > > > >>> since > > > >>>>>> it's > > > >>>>>>>>>> caused > > > >>>>>>>>>>>>>>> confusion. Just think of it as a proxy to deal with > > > >>> the > > > >>>>>> CORS > > > >>>>>>>>>>> problem. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Zuul is implemented as a set of filters, but we are > > > >>> not > > > >>>>>>> using > > > >>>>>>>>> it > > > >>>>>>>>>>> for > > > >>>>>>>>>>>>> its > > > >>>>>>>>>>>>>>> authentication filtering. We're using it as a > > > >> proxy. > > > >>>> Shiro > > > >>>>>>> is > > > >>>>>>>>> an > > > >>>>>>>>>>>>>>> authentication framework, and could arguably used > > > >> to > > > >>>>>> provide > > > >>>>>>>>> the > > > >>>>>>>>>>>>> security > > > >>>>>>>>>>>>>>> piece, but frankly wrapping shiro as a replacement > > > >>> for > > > >>>>>>> Spring > > > >>>>>>>>>>>> Security > > > >>>>>>>>>>>>> in a > > > >>>>>>>>>>>>>>> Spring application seemed like it will make life a > > > >>> lot > > > >>>>>>> harder. > > > >>>>>>>>>> This > > > >>>>>>>>>>>>> could > > > >>>>>>>>>>>>>>> be done, but it's not the native happy path, and > > > >>> would > > > >>>>>> pull > > > >>>>>>> in > > > >>>>>>>>>>>>> additional > > > >>>>>>>>>>>>>>> dependencies that duplicate functionality that's > > > >>>> already > > > >>>>>>>>> embedded > > > >>>>>>>>>>> in > > > >>>>>>>>>>>>> Spring > > > >>>>>>>>>>>>>>> Security. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> The version of Knox used is the default from HDP. > > > >> The > > > >>>> link > > > >>>>>>>>>> version > > > >>>>>>>>>>>> you > > > >>>>>>>>>>>>>>> mention is a docs link. I'll update it to be the > > > >>> older > > > >>>>>>>>> version, > > > >>>>>>>>>>> which > > > >>>>>>>>>>>>> is > > > >>>>>>>>>>>>>>> the same and we can decide if we want to maintain > > > >> the > > > >>>>>>>>> freshness > > > >>>>>>>>>> of > > > >>>>>>>>>>> it > > > >>>>>>>>>>>>> when > > > >>>>>>>>>>>>>>> we look to upgrade underlying patterns. Either way, > > > >>> the > > > >>>>>>>>> content > > > >>>>>>>>>> is > > > >>>>>>>>>>>> the > > > >>>>>>>>>>>>>>> same. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> I did consider other hosting mechanisms, including > > > >>>>>> Undertow > > > >>>>>>> a > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> If you have a different suggestion to using the > > > >>> Spring > > > >>>>>>> default > > > >>>>>>>>>> ways > > > >>>>>>>>>>>> of > > > >>>>>>>>>>>>>>> doing things, or we want to use a framework other > > > >>> than > > > >>>>>>> Spring > > > >>>>>>>>> for > > > >>>>>>>>>>>> this, > > > >>>>>>>>>>>>>>> then maybe we could change to that, but the route > > > >>>> chosen > > > >>>>>>> here > > > >>>>>>>>> is > > > >>>>>>>>>>>>> definitely > > > >>>>>>>>>>>>>>> the easy path in the context of the decision made > > > >> to > > > >>>> use > > > >>>>>>>>> Spring > > > >>>>>>>>>> in > > > >>>>>>>>>>>>> metron > > > >>>>>>>>>>>>>>> rest, and if anything opens up our choices while > > > >>>>>> minimising, > > > >>>>>>>>> in > > > >>>>>>>>>>> fact > > > >>>>>>>>>>>>>>> reducing, our dependency management overhead. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> I hope that explains some of the thinking behind > > > >> the > > > >>>>>> choices > > > >>>>>>>>>> made, > > > >>>>>>>>>>>> but > > > >>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>> guiding principals I followed were: > > > >>>>>>>>>>>>>>> * Don't fight the framework if you don't have to > > > >>>>>>>>>>>>>>> * Reduce the need for additional installation > > > >> pieces > > > >>>> and > > > >>>>>>> third > > > >>>>>>>>>>> party > > > >>>>>>>>>>>>> repos > > > >>>>>>>>>>>>>>> * Minimize dependencies we would have to manage > > > >>>>>>>>>>>>>>> * Avoid excessive change of the architecture, or > > > >>>> forcing > > > >>>>>>>>> users to > > > >>>>>>>>>>>> adopt > > > >>>>>>>>>>>>>>> Knox if they didn't want the SSL overhead. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Simon > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> On Tue, 18 Sep 2018 at 02:46, Michael Miklavcic < > > > >>>>>>>>>>>>>>> michael.miklav...@gmail.com> wrote: > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Thanks for the write-up Ryan, this is a great > > > >>> start. I > > > >>>>>> have > > > >>>>>>>>> some > > > >>>>>>>>>>>>> further > > > >>>>>>>>>>>>>>>> questions based on your feedback and in addition > > > >> to > > > >>> my > > > >>>>>>>>> initial > > > >>>>>>>>>>>> thread. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Just for clarification, what version of Knox are > > > >> we > > > >>>>>> using? > > > >>>>>>>>> HDP > > > >>>>>>>>>>>> 2.6.5, > > > >>>>>>>>>>>>>>>> which > > > >>>>>>>>>>>>>>>> is what we currently run full dev against, > > > >> supports > > > >>>>>> 0.12.0. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_release-notes/content/comp_versions.html > > > >>>>>>>>>>>>>>>> . > > > >>>>>>>>>>>>>>>> I see references to Knox 1.1.0 (latest) in this > > > >>>> committed > > > >>>>>>> PR > > > >>>>>>>>> - > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://github.com/apache/metron/pull/1111/files#diff-70b412194819f3cb829566f05d77c1a6R122 > > > >>>>>>>>>>>>>>>> . > > > >>>>>>>>>>>>>>>> This is probably just a super small mismatch, and > > > >> it > > > >>>>>>> probably > > > >>>>>>>>>> goes > > > >>>>>>>>>>>>> without > > > >>>>>>>>>>>>>>>> saying, but I just want to be doubly sure that > > > >> we're > > > >>>>>>>>> installing > > > >>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> default > > > >>>>>>>>>>>>>>>> via the standard install mechanism as opposed to > > > >>>>>> something > > > >>>>>>>>>>> separate > > > >>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>> manual. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> On the subject of Zuul wrt Nodejs filters. I'd > > > >> like > > > >>> to > > > >>>>>> hear > > > >>>>>>>>> some > > > >>>>>>>>>>>> more > > > >>>>>>>>>>>>>>>> detail on: > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> 1. Why do we need filtering via Zuul? For > > > >> instance, > > > >>> is > > > >>>>>>>>>>> filtering > > > >>>>>>>>>>>>>>>> routing > > > >>>>>>>>>>>>>>>> not handled by Knox? From the beginner docs: "The > > > >>>>>>> gateway > > > >>>>>>>>>>> itself > > > >>>>>>>>>>>>> is a > > > >>>>>>>>>>>>>>>> layer > > > >>>>>>>>>>>>>>>> over an embedded Jetty JEE server. At the very > > > >>> highest > > > >>>>>>>>> level > > > >>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> gateway > > > >>>>>>>>>>>>>>>> processes requests by using request URLs to lookup > > > >>>>>>>>> specific > > > >>>>>>>>>> JEE > > > >>>>>>>>>>>>> Servlet > > > >>>>>>>>>>>>>>>> Filter chain that is used to process the request. > > > >>> The > > > >>>>>>>>> gateway > > > >>>>>>>>>>>>> framework > > > >>>>>>>>>>>>>>>> provides extensible mechanisms to assemble chains > > > >> of > > > >>>>>>>>> custom > > > >>>>>>>>>>>> filters > > > >>>>>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>> support secured access to services." [1] > > > >>>>>>>>>>>>>>>> 2. What other library options were considered for > > > >>> this > > > >>>>>>>>>> feature > > > >>>>>>>>>>>> and > > > >>>>>>>>>>>>> how > > > >>>>>>>>>>>>>>>> was it chosen over the others? I search on "apache > > > >>>>>>> spring > > > >>>>>>>>> web > > > >>>>>>>>>>>>> filters" > > > >>>>>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>> it's almost all about Shiro - > > > >>>>>>>>>>>> https://shiro.apache.org/spring.html. > > > >>>>>>>>>>>>> I > > > >>>>>>>>>>>>>>>> also see quite a bit about filtering for Spring > > > >> Boot > > > >>>>>>>>>>> applications > > > >>>>>>>>>>>>> along > > > >>>>>>>>>>>>>>>> with a write-up of how to accomplish the same with > > > >>> Web > > > >>>>>>> MVC > > > >>>>>>>>>>> here - > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://stackoverflow.com/questions/19825946/how-to-add-a-filter-class-in-spring-boot > > > >>>>>>>>>>>>>>>> . > > > >>>>>>>>>>>>>>>> The Knox documentation boilerplate examples are > > > >> also > > > >>>>>>> using > > > >>>>>>>>>>> Shiro. > > > >>>>>>>>>>>>>>>> "shiro.ini - The configuration file for the Shiro > > > >>>>>>>>>>> authentication > > > >>>>>>>>>>>>>>>> provider’s > > > >>>>>>>>>>>>>>>> filters. This information is derived from the > > > >>>>>>> information > > > >>>>>>>>> in > > > >>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> provider > > > >>>>>>>>>>>>>>>> section of the topology file." [1] > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> My assumption is that there are deliberate > > > >> decisions > > > >>>> in > > > >>>>>>>>> favor of > > > >>>>>>>>>>>> this > > > >>>>>>>>>>>>> mix > > > >>>>>>>>>>>>>>>> of technologies over others, and I think some > > > >>>> additional > > > >>>>>>>>>>> explanation > > > >>>>>>>>>>>>> will > > > >>>>>>>>>>>>>>>> make that clear. As it stands per the Knox > > > >>>> documentation, > > > >>>>>>> it > > > >>>>>>>>>> looks > > > >>>>>>>>>>>>> like > > > >>>>>>>>>>>>>>>> we're going on a different route from the > > > >>>>>>>>> preferred/recommended > > > >>>>>>>>>>>>> idioms. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> [1] > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > http://knox.apache.org/books/knox-0-12-0/dev-guide.html#Architecture+Overview > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Ryan, I agree about microservices. This should not > > > >>>> derail > > > >>>>>>> nor > > > >>>>>>>>>> be a > > > >>>>>>>>>>>>> major > > > >>>>>>>>>>>>>>>> part of discussion around this feature, imho. I > > > >>> think > > > >>>>>>> there's > > > >>>>>>>>>>> quite > > > >>>>>>>>>>>> a > > > >>>>>>>>>>>>> bit > > > >>>>>>>>>>>>>>>> left to discuss on that subject. I want to make > > > >> sure > > > >>>> that > > > >>>>>>>>> we're > > > >>>>>>>>>>> not > > > >>>>>>>>>>>>>>>> prematurely favoring architectural choices by > > > >>> pulling > > > >>>> in > > > >>>>>>>>>> libraries > > > >>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>> are > > > >>>>>>>>>>>>>>>> potentially opinionated about how to accomplish > > > >>> those > > > >>>>>>> goals. > > > >>>>>>>>> If > > > >>>>>>>>>>> they > > > >>>>>>>>>>>>> are, > > > >>>>>>>>>>>>>>>> I > > > >>>>>>>>>>>>>>>> would expect we are comfortable ripping those > > > >>>> libraries > > > >>>>>> out > > > >>>>>>>>> if > > > >>>>>>>>>> the > > > >>>>>>>>>>>>>>>> community favors a different direction. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> On the subject of Spring Boot vs Nodejs. I can see > > > >>>> some > > > >>>>>>>>>> rationale > > > >>>>>>>>>>>> for > > > >>>>>>>>>>>>>>>> making things homogenous (though, in a > > > >> microservices > > > >>>>>>>>>> architecture, > > > >>>>>>>>>>>> if > > > >>>>>>>>>>>>> we > > > >>>>>>>>>>>>>>>> go > > > >>>>>>>>>>>>>>>> that route, that's not strictly necessary), but > > > >> what > > > >>>> is > > > >>>>>> the > > > >>>>>>>>>>>>> justification > > > >>>>>>>>>>>>>>>> for Spring Boot over Nodejs? Why would want one > > > >> over > > > >>>> the > > > >>>>>>>>> other? > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> On Mon, Sep 17, 2018 at 3:38 PM Ryan Merriman < > > > >>>>>>>>>>> merrim...@gmail.com> > > > >>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> I have reviewed a couple different PRs so I'll > > > >> add > > > >>>> some > > > >>>>>>>>>> context > > > >>>>>>>>>>>>> where I > > > >>>>>>>>>>>>>>>>> can. Obviously Simon would be the most qualified > > > >>> to > > > >>>>>>> answer > > > >>>>>>>>> but > > > >>>>>>>>>>>> I'll > > > >>>>>>>>>>>>>>>> add my > > > >>>>>>>>>>>>>>>>> thoughts. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> For question 1, while they may not all be > > > >>> necessary > > > >>>> I > > > >>>>>>>>> think it > > > >>>>>>>>>>>> does > > > >>>>>>>>>>>>> make > > > >>>>>>>>>>>>>>>>> sense to include them in this feature branch if > > > >>> our > > > >>>>>>> primary > > > >>>>>>>>>> goal > > > >>>>>>>>>>>> is > > > >>>>>>>>>>>>>>>>> integrating Knox SSO. We could push off removing > > > >>>> JDBC > > > >>>>>>>>>>>> authentication > > > >>>>>>>>>>>>>>>> for > > > >>>>>>>>>>>>>>>>> reasons I'll get to in my response to question > > > >> 2. > > > >>>> If we > > > >>>>>>>>> want > > > >>>>>>>>>> to > > > >>>>>>>>>>> do > > > >>>>>>>>>>>>> one > > > >>>>>>>>>>>>>>>> at > > > >>>>>>>>>>>>>>>>> a time (switch to spring boot, add Zuul as a > > > >>>>>> dependency, > > > >>>>>>>>> then > > > >>>>>>>>>>> add > > > >>>>>>>>>>>>> Knox > > > >>>>>>>>>>>>>>>> SSO) > > > >>>>>>>>>>>>>>>>> then that's ok but I do think there are > > > >>> dependencies > > > >>>>>> and > > > >>>>>>>>>> should > > > >>>>>>>>>>> be > > > >>>>>>>>>>>>> done > > > >>>>>>>>>>>>>>>> in > > > >>>>>>>>>>>>>>>>> order. For example, adding Knox SSO requires > > > >> some > > > >>>> work > > > >>>>>>>>> around > > > >>>>>>>>>>>>> request > > > >>>>>>>>>>>>>>>>> filtering. If we were to do this before moving > > > >> to > > > >>>>>> Spring > > > >>>>>>>>> Boot > > > >>>>>>>>>> we > > > >>>>>>>>>>>>> would > > > >>>>>>>>>>>>>>>>> need to implement the filters in Nodejs which > > > >>> would > > > >>>> be > > > >>>>>>>>>> throwaway > > > >>>>>>>>>>>>> once we > > > >>>>>>>>>>>>>>>>> get around to migrating away from that. For > > > >> Zuul, > > > >>> I > > > >>>>>>> believe > > > >>>>>>>>>> it's > > > >>>>>>>>>>>>>>>> purpose > > > >>>>>>>>>>>>>>>>> is to facilitate the filtering (although it > > > >> does a > > > >>>> lot > > > >>>>>>>>> more) > > > >>>>>>>>>> so > > > >>>>>>>>>>> it > > > >>>>>>>>>>>>>>>> doesn't > > > >>>>>>>>>>>>>>>>> make sense to add that separate from the Knox > > > >> SSO > > > >>>> work. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> For question 2, I think you bring up a good > > > >> point. > > > >>>> We > > > >>>>>>>>> probably > > > >>>>>>>>>>>> don't > > > >>>>>>>>>>>>>>>> want > > > >>>>>>>>>>>>>>>>> to just rip our current authentication method > > > >> out. > > > >>>> We > > > >>>>>>> might > > > >>>>>>>>>> want > > > >>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>> consider deprecating it instead and making Knox > > > >>> SSO > > > >>>> and > > > >>>>>>>>> LDAP > > > >>>>>>>>>>>>>>>> authentication > > > >>>>>>>>>>>>>>>>> optional. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> For question 3, this is a bigger shift than > > > >> just a > > > >>>>>>>>> component > > > >>>>>>>>>>>>> upgrade. > > > >>>>>>>>>>>>>>>> It's > > > >>>>>>>>>>>>>>>>> more like shifting platforms, from Elasticsearch > > > >>> to > > > >>>>>> Solr > > > >>>>>>>>> for > > > >>>>>>>>>>>>> example. > > > >>>>>>>>>>>>>>>> Like > > > >>>>>>>>>>>>>>>>> I alluded to in my response to question 1, I > > > >> don't > > > >>>>>> think > > > >>>>>>> we > > > >>>>>>>>>>> should > > > >>>>>>>>>>>>>>>> require > > > >>>>>>>>>>>>>>>>> throwaway work just because we want to review > > > >>> these > > > >>>>>> parts > > > >>>>>>>>>>>>> separately. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> For question 4, I will defer to Simon. I don't > > > >>>> believe > > > >>>>>> we > > > >>>>>>>>>>>>> necessarily > > > >>>>>>>>>>>>>>>>> require Zuul so I will let him elaborate on why > > > >> he > > > >>>>>> choose > > > >>>>>>>>> that > > > >>>>>>>>>>>>> library > > > >>>>>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>>> what the potential impact is of adding it to our > > > >>>>>> project. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> For question 5 and 6, I will also defer to Simon > > > >>> on > > > >>>>>> this. > > > >>>>>>>>> The > > > >>>>>>>>>>>> focus > > > >>>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>>> this feature as I understand it is a consistent > > > >>>>>>>>> authentication > > > >>>>>>>>>>>>> mechanism > > > >>>>>>>>>>>>>>>>> and support for SSO. I will let him lay out his > > > >>>> vision > > > >>>>>>> for > > > >>>>>>>>>> micro > > > >>>>>>>>>>>>>>>> services. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Knox SSO would be a great improvement and is > > > >> what > > > >>> I > > > >>>>>> think > > > >>>>>>>>> we > > > >>>>>>>>>>>> should > > > >>>>>>>>>>>>>>>> focus > > > >>>>>>>>>>>>>>>>> on in this feature branch. Micro services is > > > >>>> something > > > >>>>>> we > > > >>>>>>>>>> should > > > >>>>>>>>>>>>>>>> certainly > > > >>>>>>>>>>>>>>>>> discuss but it might be a bit of a distraction > > > >>> and I > > > >>>>>>>>> wouldn't > > > >>>>>>>>>>> want > > > >>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>> hold > > > >>>>>>>>>>>>>>>>> up the other useful parts. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> On Fri, Sep 14, 2018 at 8:38 PM Michael > > > >> Miklavcic > > > >>> < > > > >>>>>>>>>>>>>>>>> michael.miklav...@gmail.com> wrote: > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> Hey all, > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> I started looking through the Knox SSO feature > > > >>>> branch > > > >>>>>>>>> (see > > > >>>>>>>>>>> here > > > >>>>>>>>>>>>>>>>>> > > > >>> https://issues.apache.org/jira/browse/METRON-1663 > > > >>>> ). > > > >>>>>>>>> This is > > > >>>>>>>>>>>> some > > > >>>>>>>>>>>>>>>> great > > > >>>>>>>>>>>>>>>>> new > > > >>>>>>>>>>>>>>>>>> security functionality work and it looks like > > > >> it > > > >>>> will > > > >>>>>>>>> bring > > > >>>>>>>>>>> some > > > >>>>>>>>>>>>>>>>> important > > > >>>>>>>>>>>>>>>>>> new features to the Metron platform. I'm > > > >> coming > > > >>> at > > > >>>>>> this > > > >>>>>>>>>> pretty > > > >>>>>>>>>>>>> green, > > > >>>>>>>>>>>>>>>> so > > > >>>>>>>>>>>>>>>>> I > > > >>>>>>>>>>>>>>>>>> do have some questions regarding the proposed > > > >>>> changes > > > >>>>>>>>> from a > > > >>>>>>>>>>>> high > > > >>>>>>>>>>>>>>>> level > > > >>>>>>>>>>>>>>>>>> architectural perspective. There are a few > > > >>> changes > > > >>>>>>> within > > > >>>>>>>>>> the > > > >>>>>>>>>>>>> current > > > >>>>>>>>>>>>>>>> FB > > > >>>>>>>>>>>>>>>>>> PR's that I think could use some further > > > >>>> explanation. > > > >>>>>>> At > > > >>>>>>>>>> first > > > >>>>>>>>>>>>>>>> glance, it > > > >>>>>>>>>>>>>>>>>> seems we could potentially simplify this > > > >> branch > > > >>> a > > > >>>>>> great > > > >>>>>>>>> deal > > > >>>>>>>>>>> and > > > >>>>>>>>>>>>> get > > > >>>>>>>>>>>>>>>> it > > > >>>>>>>>>>>>>>>>>> completed much sooner if we narrowed the > > > >> focus a > > > >>>> bit. > > > >>>>>>>>> But I > > > >>>>>>>>>>>> could > > > >>>>>>>>>>>>>>>>> certainly > > > >>>>>>>>>>>>>>>>>> be wrong here and happy for other opinions. I > > > >>>>>> searched > > > >>>>>>>>>> through > > > >>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>> mailing > > > >>>>>>>>>>>>>>>>>> list history to see if there is any additional > > > >>>>>>> background > > > >>>>>>>>>> and > > > >>>>>>>>>>>> the > > > >>>>>>>>>>>>> main > > > >>>>>>>>>>>>>>>>>> DISCUSS thread I could find was regarding > > > >>>> initially > > > >>>>>>>>> setting > > > >>>>>>>>>> up > > > >>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>> feature > > > >>>>>>>>>>>>>>>>>> branch, which talked about adding Knox and > > > >> LDAP. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://lists.apache.org/thread.html/cac2e6314284015b487121e77abf730abbb7ebec4ace014b19093b4c@%3Cdev.metron.apache.org%3E > > > >>>>>>>>>>>>>>>>>> . > > > >>>>>>>>>>>>>>>>>> If I've missed any follow-up, please let me > > > >>> know. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> Looking at the broader set of Jiras associated > > > >>>> with > > > >>>>>>> 1663 > > > >>>>>>>>> and > > > >>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> first PR > > > >>>>>>>>>>>>>>>>>> 1665, it looks like there are 4 main thrusts > > > >> of > > > >>>> this > > > >>>>>>>>> branch > > > >>>>>>>>>>>> right > > > >>>>>>>>>>>>> now: > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> 1. Knox/SSO > > > >>>>>>>>>>>>>>>>>> 2. Node migrated to Spring Boot > > > >>>>>>>>>>>>>>>>>> 3. JDBC removed completely in favor of LDAP > > > >>>>>>>>>>>>>>>>>> 4. Introduction of Zuul, also microservices? > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> I strongly urge for the purpose of reviewing > > > >>> this > > > >>>>>>> feature > > > >>>>>>>>>>> branch > > > >>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>> we > > > >>>>>>>>>>>>>>>>>> base much of the discussion off of > > > >>>>>>>>>>>>>>>>>> > > > >>> https://issues.apache.org/jira/browse/METRON-1755 > > > >>>> , > > > >>>>>> the > > > >>>>>>>>>>>>> architecture > > > >>>>>>>>>>>>>>>>>> diagram. Minimally, an explanation of the > > > >>> current > > > >>>>>>>>>> architecture > > > >>>>>>>>>>>>> along > > > >>>>>>>>>>>>>>>> with > > > >>>>>>>>>>>>>>>>>> discussion around the additional proposed > > > >>> changes > > > >>>> and > > > >>>>>>>>>>> rationale > > > >>>>>>>>>>>>> would > > > >>>>>>>>>>>>>>>> be > > > >>>>>>>>>>>>>>>>>> useful for evaluation. I don't have a solid > > > >>> enough > > > >>>>>>>>>>> understanding > > > >>>>>>>>>>>>> yet > > > >>>>>>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>> full scope of changes and how they differ from > > > >>> the > > > >>>>>>>>> existing > > > >>>>>>>>>>>>>>>> architecture > > > >>>>>>>>>>>>>>>>>> just from looking at the PR's alone. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> 1. The first question is a general one > > > >> regarding > > > >>>> the > > > >>>>>>>>>> necessity > > > >>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>> 3 > > > >>>>>>>>>>>>>>>>>> additional features alongside Knox - migrating > > > >>>> Node > > > >>>>>> to > > > >>>>>>>>>> Spring > > > >>>>>>>>>>>>> Boot, > > > >>>>>>>>>>>>>>>>>> removing JDBC altogether, adding dependencies > > > >> on > > > >>>>>>>>> Netflix's > > > >>>>>>>>>>> Zuul > > > >>>>>>>>>>>>>>>>>> framework. > > > >>>>>>>>>>>>>>>>>> Are these necessary for adding Knox/SSO? They > > > >>> seem > > > >>>>>> like > > > >>>>>>>>>>>>> potentially > > > >>>>>>>>>>>>>>>>>> separate features, imo. > > > >>>>>>>>>>>>>>>>>> 2. It looks like LDAP will be a required > > > >>> component > > > >>>>>> for > > > >>>>>>>>>>>> interacting > > > >>>>>>>>>>>>>>>>> with > > > >>>>>>>>>>>>>>>>>> Metron via the UI's. I see this PR > > > >>>>>>>>>>>>>>>>>> https://github.com/apache/metron/pull/1186 > > > >>> which > > > >>>>>>> removes > > > >>>>>>>>>> JDBC > > > >>>>>>>>>>>>>>>>>> authentication. Are we ready to remove it > > > >>>> completely > > > >>>>>> or > > > >>>>>>>>>> would > > > >>>>>>>>>>> it > > > >>>>>>>>>>>>> be > > > >>>>>>>>>>>>>>>>>> better > > > >>>>>>>>>>>>>>>>>> to leave it as a minimal installation option? > > > >>>> What is > > > >>>>>>> the > > > >>>>>>>>>>>> proposed > > > >>>>>>>>>>>>>>>>>> migration path for existing users? Do we feel > > > >>>>>>> comfortable > > > >>>>>>>>>>>>> requiring > > > >>>>>>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>>>> all installations, including full dev, install > > > >>> and > > > >>>>>>>>> configure > > > >>>>>>>>>>>> LDAP? > > > >>>>>>>>>>>>>>>> For > > > >>>>>>>>>>>>>>>>>> comparison, in the PCAP feature branch we > > > >>>> discussed > > > >>>>>>>>> removing > > > >>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>> existing > > > >>>>>>>>>>>>>>>>>> PCAP REST application in the initial > > > >> discussion, > > > >>>> got > > > >>>>>>>>>>> agreement, > > > >>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>>>> later > > > >>>>>>>>>>>>>>>>>> removed it in the course of working on the > > > >>> feature > > > >>>>>>>>> branch. > > > >>>>>>>>>> The > > > >>>>>>>>>>>> PR > > > >>>>>>>>>>>>>>>> is > > > >>>>>>>>>>>>>>>>>> fairly > > > >>>>>>>>>>>>>>>>>> clear, however I think we're just missing some > > > >>>> basic > > > >>>>>>>>>>> discussion > > > >>>>>>>>>>>>>>>> around > > > >>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>> implications, as I've outlined above. Some > > > >>>> additional > > > >>>>>>>>>> relevant > > > >>>>>>>>>>>>>>>>>> discussion > > > >>>>>>>>>>>>>>>>>> occurred on this PR > > > >>>>>>>>>>> https://github.com/apache/metron/pull/1112 > > > >>>>>>>>>>>>>>>> which > > > >>>>>>>>>>>>>>>>>> would be good to summarize for purposes of > > > >> this > > > >>>>>>>>> overarching > > > >>>>>>>>>>>>>>>>> architecture > > > >>>>>>>>>>>>>>>>>> discussion. > > > >>>>>>>>>>>>>>>>>> 3. Migration from Node to Spring Boot. I > > > >> believe > > > >>>> this > > > >>>>>>> is > > > >>>>>>>>>>> already > > > >>>>>>>>>>>>>>>> used > > > >>>>>>>>>>>>>>>>> by > > > >>>>>>>>>>>>>>>>>> the REST application and if anything brings > > > >> some > > > >>>>>>>>> cohesion to > > > >>>>>>>>>>> our > > > >>>>>>>>>>>>>>>>> server > > > >>>>>>>>>>>>>>>>>> strategy. Strictly speaking, is there a reason > > > >>>> this > > > >>>>>> is > > > >>>>>>>>>>> required > > > >>>>>>>>>>>>> for > > > >>>>>>>>>>>>>>>>>> Knox? > > > >>>>>>>>>>>>>>>>>> It seems comparable to a component upgrade, > > > >> such > > > >>>> as > > > >>>>>>>>> moving > > > >>>>>>>>>>> from > > > >>>>>>>>>>>> ES > > > >>>>>>>>>>>>>>>> 2.x > > > >>>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> 5.6.x and upgrading Angular 6. > > > >>>>>>>>>>>>>>>>>> 4. Introduction of Netflix's Zuul. > > > >>>>>>>>>>>>>>>>>> > > > >>> https://issues.apache.org/jira/browse/METRON-1665 > > > >>>> . > > > >>>>>>>>>>>>>>>>>> - > "The UIs currently proxy to the REST API > > > >> to > > > >>>> avoid > > > >>>>>>>>> CORS > > > >>>>>>>>>>>>>>>> issues, > > > >>>>>>>>>>>>>>>>>> this will be achieved with Zuul." > > > >>>>>>>>>>>>>>>>>> - Can we elaborate more on where or how CORS > > > >> is > > > >>> a > > > >>>>>>> problem > > > >>>>>>>>>> with > > > >>>>>>>>>>>>>>>> our > > > >>>>>>>>>>>>>>>>>> existing architecture, how Zuul will help > > > >> solve > > > >>>> that, > > > >>>>>>> and > > > >>>>>>>>>> how > > > >>>>>>>>>>> it > > > >>>>>>>>>>>>>>>>>> fits with > > > >>>>>>>>>>>>>>>>>> Knox? Wouldn't this be handled by Knox? Since > > > >>>> Larry > > > >>>>>>> McCay > > > >>>>>>>>>>>>>>>> chimed in > > > >>>>>>>>>>>>>>>>>> with > > > >>>>>>>>>>>>>>>>>> interest on the original SSO thread about the > > > >>> FB, > > > >>>> I'm > > > >>>>>>>>> hoping > > > >>>>>>>>>>> he > > > >>>>>>>>>>>>>>>> is > > > >>>>>>>>>>>>>>>>>> also > > > >>>>>>>>>>>>>>>>>> willing to chime in on this as well. > > > >>>>>>>>>>>>>>>>>> - This looks like it has the potential to be a > > > >>>> rather > > > >>>>>>>>> large > > > >>>>>>>>>>>>>>>> piece > > > >>>>>>>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>>>> fundamental infrastructure (as it's also > > > >>>> pertinent to > > > >>>>>>>>>>>>>>>>> microservices) > > > >>>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> pull into the platform, and I'd like to be > > > >> sure > > > >>>> the > > > >>>>>>>>>> community > > > >>>>>>>>>>> is > > > >>>>>>>>>>>>>>>>>> aware of > > > >>>>>>>>>>>>>>>>>> and is OK with the implications. > > > >>>>>>>>>>>>>>>>>> 5. > "The proposal is to use a spring boot > > > >>>>>> application, > > > >>>>>>>>>>> allowing > > > >>>>>>>>>>>>>>>> us to > > > >>>>>>>>>>>>>>>>>> harmonize the security implementation across > > > >> the > > > >>>> UI > > > >>>>>>>>> static > > > >>>>>>>>>>>> servers > > > >>>>>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>> REST layer, and to provide a routing platform > > > >>> for > > > >>>>>> later > > > >>>>>>>>>>>>>>>>> microservices." > > > >>>>>>>>>>>>>>>>>> - > > > >>>>>>>>>>>>>>>>>> > > > >>> https://issues.apache.org/jira/browse/METRON-1665 > > > >>>> . > > > >>>>>>>>>>>>>>>>>> - Microservices is a pretty loaded term. I > > > >> know > > > >>>> there > > > >>>>>>> had > > > >>>>>>>>>> been > > > >>>>>>>>>>>>>>>> some > > > >>>>>>>>>>>>>>>>>> discussion a while back during the PCAP > > > >> feature > > > >>>>>> branch > > > >>>>>>>>>> start, > > > >>>>>>>>>>>>>>>> but I > > > >>>>>>>>>>>>>>>>>> don't > > > >>>>>>>>>>>>>>>>>> recall ever reaching a consensus on it. More > > > >>>> detail > > > >>>>>> in > > > >>>>>>>>> this > > > >>>>>>>>>>>>>>>> thread > > > >>>>>>>>>>>>>>>>> - > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://lists.apache.org/thread.html/1db7c6fa1b0f364f8c03520db9989b4f7a446de82eb4d9786055048c@%3Cdev.metron.apache.org%3E > > > >>>>>>>>>>>>>>>>>> . > > > >>>>>>>>>>>>>>>>>> Can we get some clarification on what is meant > > > >>> by > > > >>>>>>>>>>> microservices > > > >>>>>>>>>>>>>>>>>> in the case > > > >>>>>>>>>>>>>>>>>> of this FB and relevant PR's, what that > > > >>>> architecture > > > >>>>>>>>> looks > > > >>>>>>>>>>> like, > > > >>>>>>>>>>>>>>>>> and > > > >>>>>>>>>>>>>>>>>> how > > > >>>>>>>>>>>>>>>>>> it's achieved with the proposed changes in > > > >> this > > > >>>>>> PR/FB? > > > >>>>>>> It > > > >>>>>>>>>>> seems > > > >>>>>>>>>>>>>>>>> Zuul > > > >>>>>>>>>>>>>>>>>> is > > > >>>>>>>>>>>>>>>>>> also pertinent to this discussion, but there > > > >> are > > > >>>> many > > > >>>>>>>>> ways > > > >>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> skin this cat > > > >>>>>>>>>>>>>>>>>> so I don't want to presume - > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>> > > > >>>> > > > https://blog.heroku.com/using_netflix_zuul_to_proxy_your_microservices > > > >>>>>>>>>>>>>>>>>> 6. Zuul, Spring Boot, and microservices - > > > >>> Closely > > > >>>>>>>>> related to > > > >>>>>>>>>>>>>>>>> point 5 > > > >>>>>>>>>>>>>>>>>> above. It seems that we weren't quite ready > > > >> for > > > >>>> this > > > >>>>>>>>> when it > > > >>>>>>>>>>> was > > > >>>>>>>>>>>>>>>>>> brought up > > > >>>>>>>>>>>>>>>>>> in May, or at the very least we had some > > > >> concern > > > >>>> of > > > >>>>>>> what > > > >>>>>>>>>>>> direction > > > >>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> go. > > > >>>>>>>>>>>>>>>>>> What is the operational impact, mpack impact, > > > >>> and > > > >>>> how > > > >>>>>>> we > > > >>>>>>>>>>> propose > > > >>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> manage > > > >>>>>>>>>>>>>>>>>> it with Kerberos, etc.? > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > > > https://lists.apache.org/thread.html/c19904681e6a6d9ea3131be3d1a65b24447dca31b4aff588b263fd87@%3Cdev.metron.apache.org%3E > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> There is a lot to like in this feature branch, > > > >>>> imo. > > > >>>>>>> Great > > > >>>>>>>>>>>> feature > > > >>>>>>>>>>>>>>>>> addition > > > >>>>>>>>>>>>>>>>>> with Knox and SSO. Introduction of LDAP > > > >> support > > > >>>> for > > > >>>>>>>>>>>>> authentication for > > > >>>>>>>>>>>>>>>>>> Metron UI's. Simplification/unification of our > > > >>>> server > > > >>>>>>>>>> hosting > > > >>>>>>>>>>>>>>>>>> infrastructure. I'm hoping we can flesh out > > > >> some > > > >>>> of > > > >>>>>> the > > > >>>>>>>>>>> details > > > >>>>>>>>>>>>>>>> pointed > > > >>>>>>>>>>>>>>>>> out > > > >>>>>>>>>>>>>>>>>> above a bit more and get this feature through. > > > >>>> Great > > > >>>>>>>>> work so > > > >>>>>>>>>>>> far! > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> Best, > > > >>>>>>>>>>>>>>>>>> Mike Miklavcic > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> -- > > > >>>>>>>>>>>>>>> -- > > > >>>>>>>>>>>>>>> simon elliston ball > > > >>>>>>>>>>>>>>> @sireb > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> -- > > > >>>>>>>>>>>>>> -- > > > >>>>>>>>>>>>>> simon elliston ball > > > >>>>>>>>>>>>>> @sireb > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> ------------------- > > > >>>>>>>>>>>>> Thank you, > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> James Sirota > > > >>>>>>>>>>>>> PMC- Apache Metron > > > >>>>>>>>>>>>> jsirota AT apache DOT org > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>> > > > >>>>>>> > > > >>>>>> -- > > > >>>>>> > > > >>>>>> Jon Zeolla > > > >>>> > > > >>>> ------------------- > > > >>>> Thank you, > > > >>>> > > > >>>> James Sirota > > > >>>> PMC- Apache Metron > > > >>>> jsirota AT apache DOT org > > > >>>> > > > >>> > > > >> > > > > > >