Skip to content
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

Keep envoy blob up-to-date #504

Closed
aminjam opened this issue Apr 23, 2020 · 15 comments
Closed

Keep envoy blob up-to-date #504

aminjam opened this issue Apr 23, 2020 · 15 comments

Comments

@aminjam
Copy link
Contributor

aminjam commented Apr 23, 2020

Enter an issue title

Keep envoy blob up-to-date

Summary

Recently envoy has updated their process whereby they've stopped publishing latest tag for https://hub.docker.com/r/envoyproxy/envoy docker images. We need a different way to pull the latest stable version of envoy in order to keep diego-release blob up-to-date.

@cf-gitbot
Copy link

We have created an issue in Pivotal Tracker to manage this. Unfortunately, the Pivotal Tracker project is private so you may be unable to view the contents of the story.

The labels on this github issue will be updated when the story is started.

@jvshahid
Copy link
Contributor

Why can't we use https://hub.docker.com/r/envoyproxy/envoy-dev/tags/? The dev docker images seem similar to what we used before. They are built after each commit to master.

@sunjayBhatia
Copy link
Contributor

There was a decision made in this commit/story: cloudfoundry/wg-app-platform-runtime-ci@25c4457#diff-993d49d192428a994f10185f8f68548c

from experience, master isn't the most stable tbh, if we're aiming for no-surprises stability using tagged releases might be safer, also given the Envoy community's security-release strategy, we could even stick on a minor release and consume patch releases for a while before bumping

@sunjayBhatia
Copy link
Contributor

while its unlikely our use case will cause us problems, there have been commits that get to master that cause crashes etc. or other regressions that aren't caught in Envoy CI

@jvshahid
Copy link
Contributor

According to https://github.com/envoyproxy/envoy/blob/master/RELEASES.md. 1.13 is supported until early next year. We might be able to stick to 1.13 and upgrade towards the end of 2020.

I am curious to know if the @cloudfoundry/cf-networking team has any opinions.

@sunjayBhatia
Copy link
Contributor

Yeah, I think we've bumped even past that to the 1.14.x range already so we can stick on that line for ~ a year from now

@jvshahid
Copy link
Contributor

I see the issue now. The Envoy team doesn't publish a 1.14 tag that tracks the latest 1.14.x version and Concourse doesn't allow the regex matching of the tags. An alternative is to run docker inside Concourse instead of using the Concourse resource. Or, we could submit a PR to the resource maintainers to allow the usage of a regexp to match the tag.

@christianang
Copy link
Contributor

I don't think we (cf-networking) have any strong opinions on bumping or not.

@chinigo
Copy link

chinigo commented Apr 30, 2020

Hi there! Our team needs to use a feature that envoy plans on adding in 1.15: the SNI dynamic forward proxy filter.

We don't have strong opinions about bumping or not—we could deploy our own envoy binary at whatever version we want—but it would be great if we could just invoke the one that's shipped by default on CF instances.

Thanks for considering our use case!

@sunjayBhatia
Copy link
Contributor

@chinigo while it is unlikely to change, I would caution against depending on components from the platform (like the location/version of the envoy binary mounted in a container etc.) as they really are just implementation details and not defined contracts we have made with the app environment

@sunjayBhatia
Copy link
Contributor

@mdelillo and I did some experimenting and have some findings for some of the above and offline discussions about how to auto-bump envoy:

  • the "docker in docker" approach:
    • follow tags/releases of envoy source
    • when the job is triggered, the latest tag of envoy source will produce a version we can use in a task
    • the subsequent task will run docker to extract the envoy binary from the container image
    • cons:
      • requires running docker within a concourse task container which is fraught with troubles (ask the buildpacks team for their experiences, apparently it has been complex)
      • when envoy source is tagged, there is a v small chance the docker image hasn't been pushed yet
  • download envoy image without docker approach
    • follow tags/releases of envoy source
    • when the job is triggered, the latest tag of envoy source will produce a version we can use in a task
    • the subsequent task will use this script (or some similar thing) to download the container image without docker
    • run something like ls ./*/layer.tar | xargs -n1 -I{} sh -c 'tar tf {} | grep "usr/local/bin/envoy" && tar xvf {} usr/local/bin/envoy' to extract the envoy binary
    • cons:
      • when envoy source is tagged, there is a v small chance the docker image hasn't been pushed yet
      • relying on a potentially unstable/unsupported contrib script from moby
      • we have know the internals of the container image format
  • some flavor of solution where we bump the envoy tag in our concourse task file
  • ask concourse resource maintainers to support a new feature so that the resource can follow semver in tags
  • ask envoy to tag releases in a minor version with a latest tag for that line (e.g. 1.14 or 1.14.x-latest or something)

@chinigo
Copy link

chinigo commented May 4, 2020 via email

@sunjayBhatia
Copy link
Contributor

@chinigo I think there are probably a good few options which vary in maintainability etc. in that space but that is maybe a conversation for a more general forum, not this specific issue about version management of envoy in diego-release

@chinigo
Copy link

chinigo commented May 4, 2020 via email

@aminjam
Copy link
Contributor Author

aminjam commented Jun 8, 2020

We are going to be consuming per-stable-version "latest" tag going forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants