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

[8.0] Remove use of Cloudflare zlib (#84680) #84696

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 2 additions & 19 deletions distribution/docker/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ apply plugin: 'elasticsearch.test.fixtures'
apply plugin: 'elasticsearch.internal-distribution-download'
apply plugin: 'elasticsearch.rest-resources'

ext.cloudflareZlibVersion = '1.2.8'

String buildId = providers.systemProperty('build.id').getOrNull()
boolean useLocalArtifacts = buildId != null && buildId.isBlank() == false

Expand All @@ -36,15 +34,6 @@ repositories {
content { includeGroup 'krallin' }
}

ivy {
url 'https://github.com/'
patternLayout {
artifact '/[organisation]/[module]/archive/refs/tags/v[revision].[ext]'
}
metadataSources { artifact() }
content { includeGroup 'cloudflare' }
}

// Cloud builds bundle some beats
ivy {
if (useLocalArtifacts) {
Expand Down Expand Up @@ -73,7 +62,6 @@ configurations {
allPlugins
filebeat
metricbeat
cloudflareZlib
}

String beatsArch = Architecture.current() == Architecture.AARCH64 ? 'arm64' : 'x86_64'
Expand All @@ -87,7 +75,6 @@ dependencies {
allPlugins project(path: ':plugins', configuration: 'allPlugins')
filebeat "beats:filebeat:${VersionProperties.elasticsearch}:${beatsArch}@tar.gz"
metricbeat "beats:metricbeat:${VersionProperties.elasticsearch}:${beatsArch}@tar.gz"
cloudflareZlib "cloudflare:zlib:${cloudflareZlibVersion}@tar.gz"
}

ext.expansions = { Architecture architecture, DockerBase base ->
Expand All @@ -112,8 +99,7 @@ ext.expansions = { Architecture architecture, DockerBase base ->
'docker_base' : base.name().toLowerCase(),
'version' : VersionProperties.elasticsearch,
'major_minor_version': "${major}.${minor}",
'retry' : ShellRetry,
'zlib_version' : cloudflareZlibVersion
'retry' : ShellRetry
]
}

Expand Down Expand Up @@ -302,8 +288,7 @@ void addTransformDockerContextTask(Architecture architecture, DockerBase base) {
eachFile { FileCopyDetails details ->
if (details.name.equals("Dockerfile")) {
filter { String filename ->
String result = filename.replaceAll('^RUN curl.*artifacts-no-kpi.*$', "COPY ${distributionName} /tmp/elasticsearch.tar.gz")
return result.replaceAll('^RUN curl.*cloudflare/zlib.*$', "COPY zlib-${cloudflareZlibVersion}.tar.gz /tmp")
return filename.replaceAll('^RUN curl.*artifacts-no-kpi.*$', "COPY ${distributionName} /tmp/elasticsearch.tar.gz")
}
}
}
Expand All @@ -317,8 +302,6 @@ void addTransformDockerContextTask(Architecture architecture, DockerBase base) {
from configurations.dockerSource
}

from configurations.cloudflareZlib

if (base == DockerBase.IRON_BANK) {
from (configurations.tini) {
rename { _ -> 'tini' }
Expand Down
29 changes: 0 additions & 29 deletions distribution/docker/src/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,32 +25,6 @@ ARG BASE_IMAGE=ironbank/redhat/ubi/ubi8
ARG BASE_TAG=8.5
<% } %>

################################################################################
# Build stage 0 `zlib`:
# Compile zlib for the current architecture
################################################################################

FROM ${base_image} AS zlib

<% if (docker_base == 'default' || docker_base == 'cloud') { %>
RUN <%= retry.loop(package_manager, "${package_manager} update && DEBIAN_FRONTEND=noninteractive ${package_manager} install -y curl gcc make") %>
<% } else { %>
RUN <%= retry.loop(package_manager, "${package_manager} install -y curl gcc make tar gzip") %>
<% } %>

<%
// Fetch the zlib source. Keep this command on one line - it is replaced
// with a `COPY` during local builds.
%>
WORKDIR /tmp
RUN curl --retry 10 -S -L -o zlib-${zlib_version}.tar.gz https://github.com/cloudflare/zlib/archive/refs/tags/v${zlib_version}.tar.gz
RUN echo "7e393976368975446b263ae4143fb404bc33bf3b436e72007700b5b88e5be332cd461cdec42d31a4b6dffdca2368550f01b9fa1165d81c0aa818bbf2b1ac191e zlib-${zlib_version}.tar.gz" \\
| sha512sum --check -
RUN tar xf zlib-${zlib_version}.tar.gz

WORKDIR /tmp/zlib-${zlib_version}
RUN ./configure --prefix=/usr/local/cloudflare-zlib && make && make install

################################################################################
# Build stage 1 `builder`:
# Extract Elasticsearch artifact
Expand Down Expand Up @@ -162,7 +136,6 @@ RUN chmod -R 0555 /opt/plugins
################################################################################
# Build stage 2 (the actual Elasticsearch image):
#
# Copy zlib from stage 2
# Copy elasticsearch from stage 1
# Add entrypoint
################################################################################
Expand Down Expand Up @@ -224,14 +197,12 @@ WORKDIR /usr/share/elasticsearch

COPY --from=builder --chown=0:0 /usr/share/elasticsearch /usr/share/elasticsearch
COPY --from=builder --chown=0:0 /bin/tini /bin/tini
COPY --from=zlib --chown=0:0 /usr/local/cloudflare-zlib /usr/local/cloudflare-zlib

<% if (docker_base == 'cloud') { %>
COPY --from=builder --chown=0:0 /opt /opt
<% } %>

ENV PATH /usr/share/elasticsearch/bin:\$PATH
ENV ES_ZLIB_PATH /usr/local/cloudflare-zlib/lib

COPY ${bin_dir}/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh

Expand Down
8 changes: 0 additions & 8 deletions distribution/src/bin/elasticsearch
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,6 @@ if [ -z "$LIBFFI_TMPDIR" ]; then
export LIBFFI_TMPDIR
fi

if [ -n "$ES_ZLIB_PATH" ]; then
if [ ! -d "$ES_ZLIB_PATH" ]; then
echo "zlib path specified in ES_ZLIB_PATH does not exist or is not a directory: $ES_ZLIB_PATH" >&2
exit 1
fi
export LD_LIBRARY_PATH="$ES_ZLIB_PATH:$LD_LIBRARY_PATH"
fi

# get keystore password before setting java options to avoid
# conflicting GC configurations for the keystore tools
unset KEYSTORE_PASSWORD
Expand Down
5 changes: 5 additions & 0 deletions docs/changelog/84680.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pr: 84680
summary: Remove use of Cloudflare zlib
area: Packaging
type: bug
issues: []
Original file line number Diff line number Diff line change
Expand Up @@ -413,17 +413,6 @@ public void test050BasicApiTests() throws Exception {
runElasticsearchTestsAsElastic(PASSWORD);
}

/**
* Check that the JDK uses the Cloudflare zlib, instead of the default one.
*/
public void test060JavaUsesCloudflareZlib() {
waitForElasticsearch(installation, "elastic", PASSWORD);

final String output = sh.run("bash -c 'pmap -p $(pidof java)'").stdout();

assertThat("Expected java to be using cloudflare-zlib", output, containsString("cloudflare-zlib"));
}

/**
* Check that the default config can be overridden using a bind mount, and that env vars are respected
*/
Expand Down