Thanks for the Docker info. You’re looking for a management agent, not a different config admin. I suggested one, it would also be easy to write one that used suitably encoded keys for environment variables to construct configurations e.g. <pid>.<configkey>=<value>. Not knowing how much of the configuration one might want to supply in environment variables, or how many values might be reused in many places, I assumed this would be less convenient to use than substituting a few values into larger files. My point is intended to be that it’s not hard to write a management agent, especially after you’ve decided what you want it to do.
david jencks > On Jan 13, 2017, at 1:13 PM, Nick Baker <[email protected]> wrote: > > Injecting configuration into a containerized app (docker) is considered > standard practice. The friction here is the level of sophistication in OSGI > Configuration. > > It seems to me what you need isn't some hack to push configurations through > environment variables, but a new implementation of ConfigurationAdmin, or an > agent which interacts with CM mirroring configurations in from an external > system. > > In our usage it's common to have a "tenant", think Walmart vs Target. Setting > the tenant ID as an environment variable then having the configurations > loaded from Zookeeper or whatever, injected into CM seems right. > > -Nick > From: Dario Amiri <[email protected]> > Sent: Friday, January 13, 2017 3:21:17 PM > To: [email protected] > Subject: Re: Levels of Containerization - focus on Docker and Karaf > > Let me expand on why this is desirable. Without the ability to set > configuration through environment variables, I essentially have to create a > docker image for each deployment. I have a root Dockerfile which assembles > the main Karaf container image and brings in dependencies such as the JRE, > then I have a Dockerfile for each deployment environment which builds on top > of the root image by overriding deployment specific configuration. Automation > reduces this burden but it is not ideal. > If I could set the contents of a config file in an environment variable, I > could just pass the configuration directly to my root karaf docker image > without having to build on top of it. > > Being able to start Karaf as "java -jar karaf.jar" is desirable because it > makes it easier to use a Karaf based application with PaaS such as Heroku and > Cloud Foundry. > D > > On 01/13/2017 12:10 PM, Dario Amiri wrote: >> Ideally, I want to be able to do: >> java -jar my-karaf.jar >> And I can override individual configuration files using some environment >> variable convention. >> D >> >> On 01/13/2017 11:56 AM, Brad Johnson wrote: >>> Does it have to be an executable jar file or just a standalone executable? >>> The static profiles actually create and zip up a full >>> Karaf/felix/dependency/application implementation that when unzipped has >>> all the standard bin directory items. >>> >>> Brad >>> >>> From: Dario Amiri [mailto:[email protected] >>> <mailto:[email protected]>] >>> Sent: Friday, January 13, 2017 1:28 PM >>> To: [email protected] <mailto:[email protected]> >>> Subject: Re: Levels of Containerization - focus on Docker and Karaf >>> >>> I use Docker and Karaf. I've never had a problem creating a Docker image of >>> my Karaf container. What I gain is freedom from having to worry about >>> dependency related issues such as whether the right JRE is available. >>> >>> That being said there are some challenges when using Karaf to build >>> 12-factor apps. FWIW here's my two item list of what would make Karaf a >>> more attractive platform from a 12-factor app perspective. >>> >>> 1. The ability to inject Karaf configuration through the environment (e.g. >>> environment variables). Not just a single property, but an entire config >>> admin managed configuration file if necessary. Even the existing support >>> for reading property values from the environment is cumbersome because it >>> requires having to setup that relationship as a Java system property as >>> well. >>> 2. The ability to package Karaf as a standalone runnable jar. Looks like >>> Karaf boot is addressing this. I hope it comes with tooling that makes it >>> easy to transition to this kind of model. >>> >>> D >>> >>> On 01/12/2017 04:44 AM, Nick Baker wrote: >>> Thanks Guillaume! >>> >>> This is perfect for our microservice/containerized Karaf. I'll give this a >>> try and see if we can get our features in startup. We've had issues in the >>> past here. >>> >>> -Nick Baker >>> From: Guillaume Nodet <[email protected]> <mailto:[email protected]> >>> Sent: Thursday, January 12, 2017 5:55:24 AM >>> To: user >>> Subject: Re: Levels of Containerization - focus on Docker and Karaf >>> >>> Fwiw, starting with Karaf 4.x, you can build custom distributions which are >>> mostly static, and that more closely map to micro-services / docker images. >>> The "static" images are called this way because you they kinda remove all >>> the OSGi dynamism, i.e. no feature service, no deploy folder, read-only >>> config admin, all bundles being installed at startup time from >>> etc/startup.properties. >>> This can be easily done by using the karaf maven plugin and configuring >>> startupFeatures and referencing the static kar, as shown in: >>> https://github.com/apache/karaf/blob/master/demos/profiles/static/pom.xml >>> <https://github.com/apache/karaf/blob/master/demos/profiles/static/pom.xml> >>> >>> >>> 2017-01-11 21:07 GMT+01:00 CodeCola <[email protected] >>> <mailto:[email protected]>>: >>> Not a question but a request for comments. With a focus on Java. >>> >>> Container technology has traditionally been messy with dependencies and no >>> easy failsafe way until Docker came along to really pack ALL dependencies >>> (including the JVM) together in one ready-to-ship image that was faster, >>> more comfortable, and easier to understand than other container and code >>> shipping methods out there. The spectrum from (Classical) Java EE Containers >>> (e.g. Tomcat, Jetty) --> Java Application Servers that are containerized >>> (Karaf, Wildfly, etc), Application Delivery Containers (Docker) and >>> Virtualization (VMWare, Hyper-V) etc. offers a different level of isolation >>> with different goals (abstraction, isolation and delivery). >>> >>> What are the choices, how should they play together, should they be used in >>> conjunction with each other as they offer different kinds of >>> Containerization? >>> >>> <http://karaf.922171.n3.nabble.com/file/n4049162/Levels_of_Containerization.png >>> >>> <http://karaf.922171.n3.nabble.com/file/n4049162/Levels_of_Containerization.png>> >>> >>> >>> >>> -- >>> View this message in context: >>> <http://karaf.922171.n3.nabble.com/Levels-of-Containerization-focus-on-Docker-and-Karaf-tp4049162.html>http://karaf.922171.n3.nabble.com/Levels-of-Containerization-focus-on-Docker-and-Karaf-tp4049162.html >>> >>> <http://karaf.922171.n3.nabble.com/Levels-of-Containerization-focus-on-Docker-and-Karaf-tp4049162.html> >>> Sent from the Karaf - User mailing list archive at Nabble.com. >>> >>> >>> >>> -- >>> ------------------------ >>> Guillaume Nodet >>> ------------------------ >>> Red Hat, Open Source Integration >>> >>> Email: <mailto:[email protected]>[email protected] >>> <mailto:[email protected]> >>> Web: http://fusesource.com <http://fusesource.com/> >>> Blog: http://gnodet.blogspot.com/ <http://gnodet.blogspot.com/> >>> >>> >> > >
