-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gentics Mesh Helm Chart #1
Comments
@cschockaert Do you perhaps already use helm charts for Gentics Mesh? How do you setup and maintain your deployment? |
Yes, i created a helm chart to get getmesh working in cluster, i can share it with you if you want. I don't really understand the question 'how do you setup and maintain your deployment', you mean how did i wrote the helm chart, or how do we manage the lifecycle of our apps using getmesh? |
@cschockaert It would be great if you could share the repo. We would like to provide a helm chart for mesh. |
@Jotschi currently upgrading our chart to get working with 0.27.0, ill push it to github after that |
@Jotschi look at here: |
@cschockaert Great! I'll take a look. Thanks |
@Jotschi have you tested the chart? I dont know what we are doing wrong, but when we are in multi master mode and we modify node in mesh-ui instance throught a reserve proxy that roundrobin requests, we arrive (very fast) to a situation were instances are not 'synchronized' together anymore. It's why we stay in 1 master and 1 mesh-ui instance for editing nodes, then x slaves (replicas) used for quering GET requests only. are you sure that cluster mode is working properly? even under heavy load modifications / publish of the same node in multiples instances at the same time? |
@cschockaert We have customers which run Gentics Mesh in clustered mode which system in-front which regularly updates lots of nodes. The UI however is not much used in that setup. That said I can only think of two things:
I have not yet tested the chart. I hope to find some time soon. I would like to create a dedicated Repo for the helm chart under the Gentics Github umbrella. One thing I would like to change is the configuration management. I think it would be easier to use env variables only instead of configmaps for the config yaml file. |
@Jotschi It's perhaps relative to mesh ui internal state. I think perhaps when we save & publish, mesh-ui instance A save the node, but it's mesh-ui instance B that publish the node, (because XHR request from mesh-ui are loadbalanced to differents masters instances) In my remember i saw errors log server side about index exceptions. I'll try to test again the errors we are getting and report them here if needed. if there are an issue only in mesh-ui but not in mesh core api, a simple solution would be to sticky browser to 1 instance with a cookie for eg |
I got the Helm Chart working for the non-cluster setup. very cool. However, I cannot get the cluster to work - we need this for production setup. I was able to setup the external Elasticsearch (not embedded). But when I started the master pod. It complaints about a Then the DB and Mesh shut themselves down. The logging trace is show below. Could you please take a look. It seems the DistributedManager is Null. Is the plugin (ODistributedAbstractPlugin?) missing in the configuration? @cprerovsky Could you please take a look? Thanks.
|
@zhou Which version Gentics Mesh are you using? |
@Jotschi I upgraded to 0.32.0. Single node setup works great. |
@zhou Thanks for the info. I have to check this. |
The chart is not the lastest version i ll update it |
@Jotschi Thanks. I'm using a modified Helm Chart version of this. https://github.com/cschockaert/getmesh-chart |
@cschockaert do you have the cluster working in your latest chart? Looking forward to the update. Thanks! |
Yes we are running on production with cluster enabled on GCP. You need an NFS to get it working |
I figured out the way to mount a NFS volume in AWS. |
@cschockaert very curious to see what's missing to setup the cluster. Is a handler missing in orientdb-server-config.xml? |
@cschockaert I know you must be busy. But if you get a chance, could you please update the chart? or could you please point me to the right direction. Really appreciate it. |
Well il try to update it but i need to clean it from sensitive informations |
@zhou Can you post the full startup log and your settings? What is your node and cluster name? Somehow the OrientDB Server can't start in distributed mode. I suspect a configuration issue. |
@Jotschi I will post the full log after I tried it in another namespace. the settings are mostly in the original helm chart. |
@Jotschi Please find the full log below: kubectl logs pod/amx-mesh1-getmesh-master-0 --namespace=amx-mesh1 --container=getmesh -f
19:52:49.457 [amx-mesh1-getmesh-master-0] INFO [main] - Extracting OrientDB Studio |
I did not spot anything problematic except that you seem to run mesh via:
Normally you would not use You could try a simpler node name (e.g. test). But I don't think the dashes are problematic. |
@Jotschi I removed the |
@cschockaert understood. please take your time and post the update whenever is appropriate. Thanks. |
@zhou updated chart in this branch: cschockaert/getmesh-chart#1 this is a wip version, but it's working in cluster mode, there is a dedicated image for the ui but you can change that, |
@cschockaert Thanks a lot. I will check it out today. I did already create a keystore. |
@cschockaert thanks for the updated chart. I still in process to test it out. I see you use two images: |
Mesh ui is a forked version of old getmesh ui coz we needed a Quick and dirty fix on it. |
@cschockaert I ran into below error when installing the chart. Did we miss some settings in values.yaml? Error: render error in "getmesh/templates/getmesh-master-statefulset.yaml": template: getmesh/templates/getmesh-master-statefulset.yaml:144:20: executing "getmesh/templates/getmesh-master-statefulset.yaml" at <.Values.master.toler...>: can't evaluate field tolerations in type interface {} |
Yes add this missing block in the value file.(with empty value) |
@cschockaert after expanding the instance group, I'm able to start the cluster. However, it seems that the keystore I created for the old chart doesn't work anymore. I tried to recreate the keystore again using this command:
It still gave me the error below: |
@cschockaert another things is, can we leverage an outside, shared Elasticsearch environment? And how to set that up? |
You can use the keystore / password created on startup by a vanilla getmesh instance. |
@cschockaert @Jotschi I tried both approaches by using 1) keystore / password from a valina getmesh instance; 2) created a keystore with keytool. It still gave me the error of java.io.EOFException at at io.vertx.ext.auth.jwt.impl.JWTAuthProviderImpl.(JWTAuthProviderImpl.java:115) ~[mesh.jar:na] Please advice. Thanks. |
@zhou |
@Jotschi the image is using openjdk version "1.8.0_111-internal". My laptop is running JDK 11. Do you suggest me using keytool from Java 8 to create the keystore file? |
@zhou I personally would run:
You can CTRL+C mesh after a few seconds. Finally the keystore should be in the keystore folder. |
I think I got the cluster running! It seems that the new chart uses a NEW directory called secrets/. After I created the dir and put the keystore inside it and install the chart again. It works! @cschockaert can you confirm that this is part of the updates? Thanks! |
you are right, i updated the keystore path in the chart and added the secret folder (containing keystore) to .gitignore since we dont want to share sensitive information |
that caught me off guard - when I checked out the new branch, there was no "secrets" dir in it. So I still put the keystore in the "config" dir like before. And the cluster wouldn't start. Only after examining the keystore related information very carefully and thoroughly, I found the "secrets/" in the .gitignore and getmesh-cm.yaml. Then I realized the change of location and finally got the cluster running. Maybe creating the "secrets" dir and putting a simple README file in it would help others going forward. In the .gitignore, we can put the specific file in it to exclude it from getting into the git repo. For example: secrets/keystore.jceks Still, thanks a lot for sharing the Chart. @cschockaert |
yeah sry forgot to said it to you, it was made some time ago, i just pushed our draft work in the repository |
@cschockaert No problem. Did you push some more updates? To the master branch or the feat/ branch? Edit: just realized you were explaining the reason. No problem at all. Also. I'm sure I may have some further questions when I tweak the cluster to use a shared Elasticsearch cluster. Thanks again for sharing the work! |
@cschockaert could you please also share the Dockerfile to build mesh-ui? Thanks |
Hello @zhou , mesh-ui is our custom forked mesh-ui we use with official mesh docker server image, you can just dont use it and fallback to offical ui provided by mesh |
Basically, it's just a forked version of mesh-ui v1 with some bug corrected, since we rely on the old mesh-ui we did not make any MR to the official mesh repository |
It would be useful if we could provide a helm chart in our public k8s helm repo for Gentics Mesh.
The text was updated successfully, but these errors were encountered: