@clescot, the catalog service now does validation as well, with a git repo… making sure it can load the whole catalog. You can look at the ./scripts/ci script in the Rancher catalog repo to see how to do it.
Purpose of the catalog… the official Rancher catalog is ideally moving towards production ready apps. Yes, its pretty hard to do The catalog entries are typically the 80% use case, but the compose files / confd files are aimed at being 100% customizable. Logstash works pretty well in that you can copy / paste whole sections of the file. Confd / metadata is just one way to get config. If you wanted to go the git route you could pass a config url and do a checkout in a sidekick. In the next release, you can add multiple git catalog repos at a global level.
Which configuration options… this depends… again shooting for the 80% use case of what people would need. We are working on DNS discovery mechanisms, so you could hit service.stack
as a DNS entry and get the other containers.
external access via catalog entry… No if statement support, but its something that has come up. We have also talked about suffix/prefix 'ing of values. So if you have
ports:
- ${var}8080
and a question like
- variable: var
type: string
suffix: ":"
you could get the user to enter in 80
and have it replace to 80:8080
contaienr config is always possible? I’d say so at this point. Though it requires some tricks. Theres a little side project(cloudnautique/giddyup) I have been working on to codify them. The big one is using rancher metadata, with that you can get at just about everything. The big thing there is network namespacing because metadata returns responses based on the requesting IP. So you would want to do something like:
kafka-data:
net: none
...
kafka-config:
net: 'container:kafka-main'
...
kafka-main:
labels:
io.rancher.sidekicks: kafka-data,kafka-config
volumes_from:
- kafka-data
....
with that setup when confd queries /self/container/primary_ip you get the correct rancher ip.
Also, in systems like this you want to wait for all services to come up first before writing config… so you want (psuedo code…)
while len(/self/service/containers) < /self/service/scale {
sleep
}
Take a look at Giddyup for some other use cases, Galera is going to be using it extensively.
what is intended content?.. we want to be able to deliver production ready systems. Ideally, once launched from the catalog it is immediately consumable, but still gives you the raw app experience. Glusterfs for instance creates a volume for immediate use, but you could still log in and create new volumes.