On 21/08/2018 20:33, Craig Martin wrote:
I have syncope now running on Kubernetes and created a simple (two
command) install with helm charts. Seems to work pretty well but
there is room for growth. I will add liveness probes, readiness
checks, and autoscaling for my own needs and would be happy to commit
that as well. I also created a simple installation document to assist
in the install.
Hi,
this is very nice to hear!
I tried to commit it but don't have access to the github repo. Can
someone grant me access (username: mornindew)? I was going to create
a feature branch off of master and let you all PR it, is that correct?
I think you could add it right after
http://syncope.apache.org/docs/2.1/getting-started.html#docker-compose-samples
e.g. in
https://github.com/apache/syncope/blob/master/src/main/asciidoc/getting-started/obtain.adoc
after line 463.
Then you can check the results by building docs, as explained in
http://syncope.apache.org/building#Building_documentation
Regarding how to contribute, you can simply fork the repository on
github and submit a PR - the full Git workflow is explained by
https://cwiki.apache.org/confluence/display/SYNCOPE/Git+workflow
Meanwhile, you could also send an ICLA:
http://syncope.apache.org/contributing#How_do_I_become_a_contributor_or_a_committer.3F
At The ASF, committership is "earned" by contribution - we're a do-cracy :-)
You can read more about how The ASF works at
https://www.apache.org/foundation/how-it-works.html
*Small comment and maybe feature request:*
The Syncope Bootstrap is very coupled to the database (obviously) but
it doesn't handle very well if it cannot connect to the DB on
startup(e.g. retrys or circuit breaking). K8s is actually pretty
opinionated that you shouldn't create tight coupling like this and it
should auto heal itself. It would be nice if Syncope-core was a bit
more resiliant and could poll or retry. This would make installation
only one command (as opposed to two) but more importantly could help
it recover if there is a connection issue.
Syncope Core requires a DataSource, which is immediately accessed during
application bootstrap for at least the following reasons:
* create the JPA EntityManager (by OpenJPA; this will also create the
required tables at first boot)
* if tables are empty, load the default content from the relevant
'*Content.xml' (by Syncope own code), indexes and views
* create the Quartz tables (by Spring, simple )
* create the Activiti / Flowable tables
* create and store the Quartz jobs from the stored Tasks
Once up and running, Syncope Core accesses the database through a
connection pool, whose main scope is to retain valid connections for a
whole lot of well-known good reasons; being unfamiliar with Kubernetes,
I am not sure to understand how connection pools can work in general
with it.
Thank you all for your stuff, I am happy to be digging deeper into
it. Cool stuff!!!
Thanks to your interest and future contribution!
Regards.
On Mon, Aug 6, 2018 at 4:03 PM craig <craigma...@gmail.com
<mailto:craigma...@gmail.com>> wrote:
I am setting up syncope in Kubernetes. I will be happy to
contribute my
yamls once I get it running as it doesn't seem to be a common
setup for
Syncope. I am new to Syncope and I am having some issues.
I was able to get the docker-compose examples working just fine
but having
connectivity issues when running in K8s. Without knowing Syncope
(or even
postgres) that well I am struggling on where to start.
Issue: Syncope cannot connect to postgres:5432
20:49:13.640 ERROR
org.flowable.common.engine.impl.AbstractEngineConfiguration -
Exception
while initializing Database connection
org.postgresql.util.PSQLException: Connection to postgres:5432
refused.
Check that the hostname and port are correct and that the
postmaster is
accepting TCP/IP connections.
at
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:245)
~[postgresql-42.2.2.jar:42.2.2]
at
org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
~[postgresql-42.2.2.jar:42.2.2]
at
org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
~[postgresql-42.2.2.jar:42.2.2]
at org.postgresql.Driver.makeConnection(Driver.java:452)
~[postgresql-42.2.2.jar:42.2.2]
at org.postgresql.Driver.connect(Driver.java:254)
~[postgresql-42.2.2.jar:42.2.2]
at
com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
~[HikariCP-3.2.0.jar:?]
at
com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
~[HikariCP-3.2.0.jar:?]
Things that I did:
1) Connect to database directly from postgres container command
line "psql
-U syncope"
2) Connect to database from syncope conatiner command line "psql
-U syncope
-h postgres"
3) Confirm that the port 5432 is open by running the command "telnet
postgres 5432" and it was open
4) Confirm that both a database named "syncope" and user named
"syncope"
exist in the postgres database
5) Confirmed the configuration of K8s looks correct. The port
appears to
be up, the replica sets look correct
Any help or guidance on things to look at would be helpful.
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/