-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Platform Chart changes to Temporal Deployment causing TLS issues. #43328
Platform Chart changes to Temporal Deployment causing TLS issues. #43328
Comments
…al databases. (#13095) Follow up to airbytehq/oncall#5843. Here is a suggested approach to automatically enabling SSL if the database type is external. The assumption here is all external database type databases have SSL turned on.
Hitting this issue as well. Please do not make assumptions without making it configurable. |
@davinchia Can we get a fix for this? This broke the helm chart. Edit: Why is it a bad assumption?
Hope that helps. |
Hi everyone, thanks for the feedback, and sorry for the inconvenience. Curious, why are folks setting this field? This doesn't do anything except enable Temporal SSL on the backend, and is more of an experimental flag we are testing internally. Unsetting this should fix this for everyone. |
I didn’t set any flag, I think. It failed when I upgraded the helm chart version. |
What field are you referring to? .Values.global.database.type? The issue here is that if .Values.global.database.type is set to external, then automatically the Temporal deployment gets specific TLS environment variables applied which is causing issues. I believe most of us who are running into issues are using external databases and setting .Values.global.database.type to external. Setting that flag to internal when actually using an external database does not seem like the right way to configure the charts values file. If thats the instruction, thats not an acceptable fix in my opinion. More like a workaround with other possible downstream affects. If not now, then in the future as that field may be referenced in other areas of the chart(s). As mentioned in the OP, these environment variables for Temporal TLS should be controlled in the temporal section of the charts values file rather than setting them based on an assumption. |
How was this solved? I am trying to use an external PostgreSQL database and having this notification of SSL. sql schema version compatibility check failed: pq: SSL is not enabled on the server |
For the moment I deploy the helm chart and manually edit the airbyte-temporal so the following envs are
If you're using something like kustomize you might be able to apply a patch to do this but the stack I have using Airbyte isn't set up that way. Hoping to see this issue fixed soon. |
Hello all 👋 sorry the lack of updates. I asked the platform team to take a look into airbytehq/airbyte-platform#361 any return from them I'm going to update here. |
Just checking in on this issue. This is still a problem in v1.1.1 of the helm chart. This is preventing us from updating. Thank you |
As a workaround to this issue, you can set ".Values.global.database.type" to internal, and then the TLS environment variables will not be added to the temporal deployment. I looked pretty heavily through the charts manifests, and currently it seems only the temporal deployment references the ".Values.global.database.type" key in values. If that key is ever used elsewhere in the future this could be problematic though.. but for now as a workaround you can set it to the default of internal. I do feel strongly that this should still be tied to something more specific and not by an assumption. |
@PurseChicken the problem is that we want to use an external database without SSL, as the |
@kev-datams By no means am I saying this is a fix. This should definitely not be the way. That said, since that key is only used for the temporal deployment, setting it to internal has no other affect. External databases can still be used (Or CloudSQL proxy etc). Its merely a workaround. |
@PurseChicken you mean we can set
and it will use the Also, do you already managed to set up an external db using the Cloud SQL Proxy on a GCP VM ? Thanks |
@kev-datams, Sorry for the delay. You are correct. Even if you set .Values.global.database.type to internal, it will still use an external database. The only thing that is currently set by that key is the TLS configuration on the temporal deployment. This is how I have configured it for CloudSQL Proxy using IAM credentials (Workload Identity)
Yes I have used Airbyte with cloudSQL proxy both as a sidecar to each pod as well as just a separate pod that was deployed along side the airbyte deployment. In the most recent versions of the Airbyte helm chart its been harder to use the sidecar approach, so moving to a separate pod deployment has been better \ easier. |
@PurseChicken thanks ! please could you share your YAML of the CloudSQLProxy ? 🙏 few complementary questions:
Thanks :) |
@kev-datams If you want to use Workload Identity for authentication into cloudSQLProxy, then yes the K8's SA needs to be bound to the IAM SA: role: roles/iam.workloadIdentityUser Also the IAM SA needs to have CloudSQL Client and CloudSQL Instance User GCP roles. Finally, yes, I use --auto-iam-authn on the proxy pod. Thanks! |
@PurseChicken, how did you manage the "first" deployment of Airbyte using
we have the below error message:
As the
...but Airbyte deployments need to reach the external DB via the so we face the chicken or the egg problem 🤕 Thanks a lot ! |
@kev-datams I use Argo for deployment. So I either sync the pod and service first or add an annotation which sync's those resources before anything else. That's how I make sure the pod is running first. Then everything else works. In your case it shows your hostname not existing, So the name is either wrong, or the service is not deployed yet. I never had to mess with abctl so I can't comment on that. |
looking at the helm chart code, the I changed |
@stemarks I think that .Values.externalDatabase might now be left over from a previous way to configure things. I also am not finding reference to that key in any of the templates. That said, deploying airbyte does require temporal databases if you have temporal enabled (which I believe it is by default). You can control what the database names are in .Values.temporal:
I use "SKIP_DB_CREATE" with the value of true so that the temporal pod does not try to create these databases, They are created using IaC as part of the overall airbyte deployment (external to the airbyte chart). |
@PurseChicken yep that fixed that thanks. Now onto the rest of the failing pods 😂 |
Thanks for sharing |
100 percent agree with you! That's the reason why this issue should still exist! |
Hello everyone I've asked the platform team to take a look into this issue and the pull request enables SSL/TLS for Temporal. Any update return to you here. |
Hi @PurseChicken, We are finally trying to deploy to GKE (bye bye abctl) with external CloudSQL DB using CloudSQL Proxy with sidecar pattern as recommended by GCP for those reasons. Do you have more elements on what you said: The issue looks related to airbyte-bootloader only, so let's crack it 🔥 |
Helm Chart Version
0.399.0
What step the error happened?
On deploy
Relevant information
The Temporal Deployment manifest was changed to assume that TLS\SSL is needed if using an external Database:
This causes significant issues when using, for example, a sidecar Proxy which does not require TLS.
We should not be making an assumption here. In my opinion, there should be a key value pair in values which enables \ disables TLS\SSL if required in the deployment.
E.G.
Relevant log output
The text was updated successfully, but these errors were encountered: