yugabyte / yugabyte-db

YugabyteDB - the cloud native distributed SQL database for mission-critical applications.
https://www.yugabyte.com
Other
9.05k stars 1.08k forks source link

Versioning of YB/YW charts #1327

Closed aegershman closed 5 years ago

aegershman commented 5 years ago

In order to operationalize k8s deployments, the yugabyte and yugaware charts should be released with specific versions. Currently the Chart.yaml's version is pinned to latest. You cannot discern from one change to another; there is no way to determine which version of code is present in any given environment.

problems introduced

solutions

Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.

closing

Having to version things & follow semver spec kind of sucks. But it's hard to imagine a world where the YB/YW charts don't eventually start using some kind of semver for releases.

thanks for your time and consideration 👍thoughts?

xyloman commented 5 years ago

I agree one way to ease the consumption of releases is a GitHub release which can also act as a notification to consumers.

aegershman commented 5 years ago

Tried deploying YW on a fresh cluster today using the same steps I did back on Feb/March-ish. Which were...

I wanted to do an exact 1-for-1 replication of what we did on March 12th vs. now. But when the page came up, we got 404's. Prometheus was responding just fine on :9000, but yugaware itself on :80 had the page rendering but throwing a 404. The nginx container was showing the requests coming in, but still 404ing:

Screen Shot 2019-05-09 at 12 17 05 PM

I tried bumping the image.tag to 1.2.0.0-b7, and it still had the 404 problem. Then I bumped the image.tag to what I believe is latest, which is 1.2.8.0-b1, and things started working.


It doesn't make sense that the yugaware-1.0.0.tgz with image.tag=1.1.10.0-b3 would suddenly stop working. I did a diff on the yugaware-1.0.0.tgz chart I had saved from Feb/March-ish and the one I downloaded today, and there were differences between them:

>       proxy_http_version 1.1;
88,91d88
<         root /yugaware-ui/public/;
<         try_files $uri /index.html;
<       }
<       location /api {
diff yugaware/templates/rbac.yaml ../../../cernercf-k8s-cluster-monorepo/clusters/aws/spinnaker_sandbox_us-west-2_aws/config/yugaware/yugaware/templates/rbac.yaml
25a26
>   - pods/exec
39a41,45
> - apiGroups: ["", "extensions"]
>   resources:
>   - deployments
>   - services
>   verbs: ["create", "get", "list", "watch", "update", "delete"]
166,173d169
<           lifecycle:
<             postStart:
<               exec:
<                 command:
<                   - 'cp'
<                   - '-R'
<                   - '/opt/yugabyte/yugaware/public'
<                   - '/opt/yugaware-ui'
188,189d183
<           - name: yugaware-ui
<             mountPath: /opt/yugaware-ui
200,201d193
<           - mountPath: /yugaware-ui
<             name: yugaware-ui

outcomes:

Problems we found / recommended solutions:

Thanks for your time & consideration

/cc @ajcaldera1 @xyloman @dashaun

ramkumarvs commented 5 years ago

@aegershman Hey totally understand all the stuff you mentioned in the github and we will try to address these.

Let me give a quick background into both the helm charts

  1. Yugaware Helm Chart, I agree the versioning on this not done properly, but our plan for PCF users itself is to use the versioning we use in the pivnet tile. I have a PR for a newer version of that but it is waiting on some Open Source licensing documents that we have to provider. In an ideal world you would upgrade the PCF tile, and also download the helm chart which would be shipped as part of that tile.

  2. YugaByte helm chart, the reason we kept it latest, is we didn't want to introduce a new versioning scheme to that, but we were relying on the version of YugaWare to dictate what version of helm chart. Given that is tightly coupled we felt the version on that front is going to cause more confusion, given YugaWare would go through more versioning iterations vs YugaByte helm wouldn't necessary go through the same amount of version changes.

On the issues you faced when you upgraded the YugaWare image without the Helm upgrade, it a legit miss-communication on our front that it was a breaking change and ideally we should have bumped the version tag on YugaWare. I would take full responsibility on this front that I didn't communicate well with @ajcaldera1 before hand on this breaking change I did.

Next steps: Even before this github issue we have internally given enough thought into the version scheme for the helm charts and will try to address this issue as quickly as possible.

ramkumarvs commented 5 years ago

Version of YugaWare and YugaByte has been done and we have a charts repository as well, which folks can use. And it is also documented here in our docs https://docs.yugabyte.com/latest/deploy/kubernetes/helm-chart/#add-charts-repository.

We will setup a quick call to go over our internal release process around this.