I’m not sure you understand the difference between config admin and a management agent. IMO you are asking for a different management agent than the one Karaf usually uses.
So far I’ve proposed two sorts of environment-variable aware management agents: - property substation into something like property files. This might be appropriate if the configurations needed for OSGI have a lot of stuff that doesn’t need to be configured per-docker-instance - interpreting environment keys into pid + configuration key. This might be appropriate if all the information needed for OSGI should be configured per-docker-instance Obviously there are a lot of other possible approaches. Figuring out how this might interact with the configurator spec proposed for R7 might be a good idea too. Once you’ve decided what you want the management agent to do, writing it and assembling a karaf using it is pretty easy. I’m assuming that whoever does this is going to contribute it to Karaf and that since it’s obviously a good idea it will get included in some form. If I understand Elliot Metsger’s posts correctly karaf already supports the property substitution approach. What specifically do you want different from what’s already working? david jencks > On Jan 13, 2017, at 2:01 PM, Dario Amiri <dariusham...@hotmail.com> wrote: > > You should not have to build a new docker container image for every possible > type of configuration. Just look at any standard docker images in the public > Docker registry. All configuration is driven from the environment variables. > There is a multitude of examples in the public docker registry. > > A new implementation of ConfigurationAdmin sounds like a good way to solve > the problem. However, I don't have the expertise to build and maintain that > on my own. Nor should I because this is an ubiquitous pattern for all > Dockerized applications. Karaf should do this out of the box if it wants to > play well with Docker. > > Zookeeper is great, but what about the coordinates to Zookeeper? Where do I > configure that? We're back to the same problem. Also, Zookeeper is likely too > heavy a solution for some people (me included). > > D > > On 01/13/2017 01:13 PM, Nick Baker 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 <dariusham...@hotmail.com> >> <mailto:dariusham...@hotmail.com> >> Sent: Friday, January 13, 2017 3:21:17 PM >> To: user@karaf.apache.org <mailto:user@karaf.apache.org> >> 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:dariusham...@hotmail.com >>>> <mailto:dariusham...@hotmail.com>] >>>> Sent: Friday, January 13, 2017 1:28 PM >>>> To: user@karaf.apache.org <mailto:user@karaf.apache.org> >>>> 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 <gno...@apache.org> <mailto:gno...@apache.org> >>>> 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 <prasen...@rogers.com >>>> <mailto:prasen...@rogers.com>>: >>>> 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:gno...@redhat.com>gno...@redhat.com >>>> <mailto:gno...@redhat.com> >>>> Web: http://fusesource.com <http://fusesource.com/> >>>> Blog: http://gnodet.blogspot.com/ <http://gnodet.blogspot.com/> >>>> >>>> >>> >> > >