funktionio / funktion

a CLI tool for working with funktion
https://funktion.fabric8.io/
Apache License 2.0
297 stars 25 forks source link

ConfigMap "catalog-letschat" is invalid: metadata.annotations: Too long: must have at most 262144 characters #33

Closed nickschuetz closed 7 years ago

nickschuetz commented 7 years ago

I get the following error when trying to run funktion install platform using an OpenShift Container Platform 3.4.0.40 installation and:

funktion version: 1.0.9

$ funktion install platform
kubectl apply --namespace funktion-system -f https://repo1.maven.org/maven2/io/fabric8/platform/packages/funktion-platform/2.4.21/funktion-platform-2.4.21-kubernetes.yml

namespace "user-secrets-source-admin" created
serviceaccount "configmapcontroller" created
serviceaccount "exposecontroller" created
serviceaccount "fabric8" created
serviceaccount "funktion-operator" created
service "fabric8" created
service "jenkinshift" created
configmap "catalog-apiman" created
configmap "catalog-apiman-gateway" created
configmap "catalog-artifactory" created
configmap "catalog-cd-pipeline" created
configmap "catalog-chaos-monkey" created
configmap "catalog-chat-irc" created
configmap "catalog-chat-letschat" created
configmap "catalog-chat-slack" created
configmap "catalog-configmapcontroller" created
configmap "catalog-content-repository" created
configmap "catalog-elasticsearch" created
configmap "catalog-elasticsearch-v1" created
configmap "catalog-exposecontroller" created
configmap "catalog-fabric8-docker-registry" created
configmap "catalog-fabric8-forge" created
configmap "catalog-fluentd" created
configmap "catalog-funktion" created
configmap "catalog-funktion-operator" created
configmap "catalog-funktion-runtimes" created
configmap "catalog-gerrit" created
configmap "catalog-git-collector" created
configmap "catalog-gitlab" created
configmap "catalog-gogs" created
configmap "catalog-grafana" created
configmap "catalog-ingress-nginx" created
configmap "catalog-jenkins" created
configmap "catalog-keycloak" created
configmap "catalog-kibana" created
configmap "catalog-kiwiirc" created
configmap "catalog-kubeflix" created
configmap "catalog-logging" created
configmap "catalog-manageiq" created
configmap "catalog-management" created
configmap "catalog-maven-shell" created
configmap "catalog-message-broker" created
configmap "catalog-message-gateway" created
configmap "catalog-messaging" created
configmap "catalog-metrics" created
configmap "catalog-nexus" created
configmap "catalog-prometheus" created
configmap "catalog-prometheus-blackbox-exporter" created
configmap "catalog-prometheus-node-exporter" created
configmap "catalog-social" created
configmap "catalog-taiga" created
configmap "catalog-turbine-server" created
configmap "catalog-zipkin" created
configmap "catalog-zookeeper" created
configmap "exposecontroller" created
configmap "fabric8" created
configmap "fabric8-environments" created
configmap "nodejs" created
deployment "configmapcontroller" created
deployment "exposecontroller" created
deployment "fabric8" created
deployment "funktion-operator" created
The ConfigMap "catalog-letschat" is invalid: metadata.annotations: Too long: must have at most 262144 characters
Failed: exit status 1
bbrowning commented 7 years ago

I've investigated this error a bit and it's happening because Kubernetes tries to save the entire catalog-letschat ConfigMap as an Annotation (in case of 3-way merges of the ConfigMap definition in the future) and this ConfigMap is HUGE. So, catalog-letschat either needs to be excluded from the platform or its overall size reduced substantially.

xetys commented 7 years ago

+1 for the option to disable unnecessary config maps. there comes a lot from and for fabric8...while I one doesn't need fabric8 related stuff (as this letschat config map), when running pure funktion

tobias commented 7 years ago

Related to #35.

rhuss commented 7 years ago

@tobias I think its related but still different as it is a limit of the size of the annotation not the configmap's value itself. But I agree, it all about what should be saved in ConfigMaps and where are the limitation of ConfigMaps w.r.t to size.

jimmidyson commented 7 years ago

@rhuss You're right, size restriction is on annotations, not configmap size (although there is a planned feature to put quotas on configmao size apparently). However, to be good citizens, we should try to keep configmap sizes down to reasonable sizes as far as we can.

rhuss commented 7 years ago

@jimmidyson completely agreed, and my gut feeling is that this applies to every (obscure) use case which could be mapped to Kubernetes objects but which was never designated by their inventors. This mostly always hit untested corner cases, limitations and non-functional issues like degraded performance.

dabdine-r7 commented 7 years ago

This issue was filed in January. It's now April 9th. So about 3 months later and there has been no fix. I was evaluating funktion for some use cases. However, I hit this, and then I had to search to find this bug, then dig around more to find that there is no workaround, nor should I care for one. So, I ignored that, but hit another issue, so as of now, I'm choosing to move on.

I believe there's a classic case of broken windows theory going on here. If the initial setup phase has issues that have gone unaddressed for months, the probability of folks adopting funktion for production use cases tends to trend down.

FWIW i'm an on-and-off camel contributor and Java programmer of of 10-12 years. I love what funktion is trying to do, but I have reasonable reservations due to issues I hit on first use.

jstrachan commented 7 years ago

apologies for the delay. I've finally got around to making a lean & mean distro of funktion that works on kubernetes/minikube, the latest minishift, openshift & openshift online without any of these issues

jstrachan commented 7 years ago

it was actually the fabric8 release that held back this fix - but I should have moved the function related distro to a separate git repo early BTW - my bad - its now independent so funktion no longer needs to be blocked on a fabric8 release: https://github.com/funktionio/funktion-platform