diff --git a/WORKSPACE b/WORKSPACE index e152300d73d..3b255e3fa7a 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -69,3 +69,19 @@ load( ) envoy_repositories() + +new_http_archive( + name = "docker_ubuntu", + build_file_content = """ +load("@bazel_tools//tools/build_defs/docker:docker.bzl", "docker_build") +docker_build( + name = "xenial", + tars = ["xenial/ubuntu-xenial-core-cloudimg-amd64-root.tar.gz"], + visibility = ["//visibility:public"], +) +""", + sha256 = "de31e6fcb843068965de5945c11a6f86399be5e4208c7299fb7311634fb41943", + strip_prefix = "docker-brew-ubuntu-core-e406914e5f648003dfe8329b512c30c9ad0d2f9c", + type = "zip", + url = "https://codeload.github.com/tianon/docker-brew-ubuntu-core/zip/e406914e5f648003dfe8329b512c30c9ad0d2f9c", +) diff --git a/script/release-docker b/script/release-docker new file mode 100755 index 00000000000..d21caffee55 --- /dev/null +++ b/script/release-docker @@ -0,0 +1,46 @@ +#!/bin/bash +# +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ +# +set -ex + +# This docker image can be used as: +# +# docker run IMAGE -a backend_address -p PORT -m MIXER_SERVER +# + +PROJECT=istio-testing +IMAGE_PREFIX="gcr.io/${PROJECT}/proxy" + +DATE_PART=$(date +"%Y%m%d") +SHA_PART=$(git show -q HEAD --pretty=format:%h) +DOCKER_TAG="${DATE_PART}${SHA_PART}" + +IMAGE_NAME="${IMAGE_PREFIX}:${DOCKER_TAG}" + +gcloud docker --authorize-only + +bazel run --config=release //src/envoy/mixer:proxy "${IMAGE_NAME}" + +gcloud docker -- push "${IMAGE_NAME}" + +IMAGE_LATEST="${IMAGE_PREFIX}:latest" + +docker tag -f "${IMAGE_NAME}" "${IMAGE_LATEST}" + +gcloud docker -- push "${IMAGE_LATEST}" + diff --git a/src/envoy/mixer/BUILD b/src/envoy/mixer/BUILD index 45c96e25f96..917e627e073 100644 --- a/src/envoy/mixer/BUILD +++ b/src/envoy/mixer/BUILD @@ -16,6 +16,7 @@ # load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") +load("@bazel_tools//tools/build_defs/docker:docker.bzl", "docker_build") cc_library( name = "filter_lib", @@ -47,3 +48,42 @@ pkg_tar( mode = "0755", package_dir = "/usr/local/bin/", ) + +pkg_tar( + name = "start_envoy_tar", + extension = "tar.gz", + files = ["start_envoy"], + mode = "0755", + package_dir = "/usr/local/bin/", +) + +pkg_tar( + name = "config_tar", + extension = "tar.gz", + files = ["envoy.conf.template"], + mode = "0666", + package_dir = "/etc/opt/proxy", + tags = ["manual"], +) + +docker_build( + name = "proxy", + base = "@docker_ubuntu//:xenial", + entrypoint = [ + "/usr/local/bin/start_envoy", + "-e", + "/usr/local/bin/envoy", + "-c", + "/etc/opt/proxy/envoy.conf", + "-t", + "/etc/opt/proxy/envoy.conf.template", + ], + ports = ["9090"], + repository = "istio", + tags = ["manual"], + tars = [ + ":config_tar", + ":envoy_tar", + ":start_envoy_tar", + ], +) diff --git a/src/envoy/mixer/README.md b/src/envoy/mixer/README.md index 43304785198..21f7403f77c 100644 --- a/src/envoy/mixer/README.md +++ b/src/envoy/mixer/README.md @@ -38,7 +38,7 @@ This Proxy will use Envoy and talk to Mixer server. * Start Envoy proxy, run ``` - bazel-bin/src/envoy/mixer/envoy -c src/envoy/mixer/envoy-mixer.conf + bazel-bin/src/envoy/mixer/start_envoy ``` * Then issue HTTP request to proxy. diff --git a/src/envoy/mixer/envoy-mixer.conf b/src/envoy/mixer/envoy.conf.template similarity index 92% rename from src/envoy/mixer/envoy-mixer.conf rename to src/envoy/mixer/envoy.conf.template index 3b494c96b59..f1a00d1fb3e 100644 --- a/src/envoy/mixer/envoy-mixer.conf +++ b/src/envoy/mixer/envoy.conf.template @@ -1,7 +1,7 @@ { "listeners": [ { - "port": 9090, + "port": ${PORT}, "bind_to_port": true, "filters": [ { @@ -35,7 +35,7 @@ "type": "both", "name": "mixer", "config": { - "mixer_server": "localhost:9091" + "mixer_server": "${MIXER_SERVER}" } }, { @@ -62,7 +62,7 @@ "lb_type": "round_robin", "hosts": [ { - "url": "tcp://localhost:8080" + "url": "tcp://${BACKEND}" } ] } diff --git a/src/envoy/mixer/start_envoy b/src/envoy/mixer/start_envoy new file mode 100755 index 00000000000..0a24b959ae2 --- /dev/null +++ b/src/envoy/mixer/start_envoy @@ -0,0 +1,67 @@ +#!/bin/bash +# +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ +# + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)" + +function usage() { + [[ -n "${1}" ]] && echo "${1}" + + cat < "${CONFIG}" + +"${ENVOY}" -c "${CONFIG}" "${DEBUG}" +