-
Notifications
You must be signed in to change notification settings - Fork 43
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
Deploy Tools using ArgoCD if installed #113
Conversation
We want turn ScmmRepo into a class that is responsible for using SCMM and want to move away from being tightly coupled with the ArgoCD class
We want to move the responsibility for managing the temporary directory from the caller to the ScmmRepo class. This removes the burden to create the directory and ensure deletion from the caller. We want to simplify the callers code regarding absolute paths. As a result, we deprecate the original constructor to move away from passing the temporary directory to the object instance. Co-authored-by: Johannes Schnatterer <johannes.schnatterer@cloudogu.com> Co-authored-by: Philipp Dziosa <philipp.dziosa@cloudogu.com> Co-authored-by: Sentürk Ugras <sentuerk.ugras-extern@cloudogu.com>
We want to deploy features using Argo CD and Helm depending on the configuration. Every strategy is responsible for one of these tools. We want to abstract this logic from these features (e.g. mailhog, prometheus). Co-authored-by: Johannes Schnatterer <johannes.schnatterer@cloudogu.com> Co-authored-by: Philipp Dziosa <philipp.dziosa@cloudogu.com> Co-authored-by: Sentürk Ugras <sentuerk.ugras-extern@cloudogu.com>
src/main/groovy/com/cloudogu/gitops/features/deployment/ArgoCdApplicationStrategy.groovy
Outdated
Show resolved
Hide resolved
8861553
to
c2c80ed
Compare
We already have a deployment strategy using Helm. This is the counterpart using Argo CD.
We need multi source applications otherwise. However, these are still in beta.
We want to install Mailhog using Argo CD when it is installed. We use the previously established concept of the Deployer which uses different strategies (Helm, ArgoCD) to deploy tools. In future steps, the other tools will also be migrated to this approach.
c2c80ed
to
1e4353e
Compare
Reviewed, looks good. I like the design! I've made some minor polishing. Please have a look. Are you alright with the changes? I have one issue and some points to discuss: I'd like to simplify helm:
releaseName: "mailhog"
parameters:
- name: "service.type"
value: "NodePort"
- name: "service.port.http"
value: "80" I'm convinced this would be easier to maintain releaseName: "mailhog"
values: |
service:
type: LoadBalancer
port:
http: 80 Reference Things to discuss:
|
I fixed a typo. Otherwise happy with it.
Yes, absolutely. I didn't realize that this was possible.
Is it allowed to install the playground using different features? e.g. first without parameters, next run add In this case, we probably want to add a concept of uninstalling to the strategies. That way, we would also solve that weird state where ArgoCD and Helm manage the application at the same time when upgrading from no parameters to
I would not do that as long as we also support installation via helm. In that case we don't use the cluster-resources repository; and I wouldn't expect them there. The systems folder was surprising me as well when I first encountered it. I think we do want to have a folder that is common to different parts of the playground. I think this could be solved by naming. |
We can embed the yaml directly into the application.yaml. Therefore, we don't need to convert it into dot-notation anymore.
Co-authored-by: Tim Siebels <tim.siebels@cloudogu.com>
From /system to /applications/cluster-resources In order to move to a more unified wording. No longer use the word "system", but the word "cluster-resources". Co-authored-by: Tim Siebels <tim.siebels@cloudogu.com>
And move decision about "Deploying Cluster Resources with Argo CD using inline YAML" from README to decision. Less noise for the user, more context for developers. Co-authored-by: Tim Siebels <tim.siebels@cloudogu.com>
Avoids dependency missmatches that eventually lead to failing e2e tests with error: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: c8730323-d1bc-4e1c-921a-c62413072ca6 java.lang.NoSuchMethodError: No such DSL method 'junit' found among steps
We discussed and decided upon the issues mentioned above. I then did a final manual test (successful). While trying to finish up this PR, I stumbled on a number of issues on our build system:
Started by user Jenkins Admin
java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.base/java.net.Socket.connect(Socket.java:609)
at okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128)
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused: java.util.concurrent.ExecutionException
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
at com.cloudogu.scmmanager.scm.api.Futures.resolveUnchecked(Futures.java:30)
Caused: java.io.IOException
Caused: java.io.UncheckedIOException: failed to fetch
at com.cloudogu.scmmanager.scm.api.Futures.unchecked(Futures.java:40)
at com.cloudogu.scmmanager.scm.api.Futures.resolveUnchecked(Futures.java:35)
at com.cloudogu.scmmanager.scm.ScmManagerSourceRetriever.create(ScmManagerSourceRetriever.java:123)
at com.cloudogu.scmmanager.scm.ScmManagerSource.handleRequest(ScmManagerSource.java:127)
at com.cloudogu.scmmanager.scm.ScmManagerSource.retrieve(ScmManagerSource.java:119)
at jenkins.scm.api.SCMSource._retrieve(SCMSource.java:372)
at jenkins.scm.api.SCMSource.retrieve(SCMSource.java:597)
at jenkins.scm.api.SCMSource.fetch(SCMSource.java:581)
at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:99)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:312)
at hudson.model.ResourceController.execute(ResourceController.java:101)
at hudson.model.Executor.run(Executor.java:442)
Finished: FAILURE
|
I recognized one more issue: #115. |
No description provided.