参考github上的dockerfile https://github.com/Kong/docker-kong/tree/master/centos ,在dockefile里面添加自定义的内容进行进行编译。本例中在官方的例子上安装了telnet、iproutes等软件包,同时为了实现网关的后续的应用程序认证鉴权,增加了graphql的lua扩展模块
准备dockerfile
FROM centos:7
LABEL maintainer="Kong <support@konghq.com>"
ARG ASSET=ce
ENV ASSET $ASSET
ARG EE_PORTS
COPY kong.rpm /tmp/kong.rpm
ARG KONG_VERSION=2.3.2
ENV KONG_VERSION $KONG_VERSION
ARG KONG_SHA256="aad05b5b7425a0c1dc3095363c785a4147d3cd91064f0221a2a818c7bdcc97dc"
RUN set -ex; \
if [ "$ASSET" = "ce" ] ; then \
curl -fL "https://bintray.com/kong/kong-rpm/download_file?file_path=centos/7/kong-$KONG_VERSION.el7.amd64.rpm" -o /tmp/kong.rpm \
&& echo "$KONG_SHA256 /tmp/kong.rpm" | sha256sum -c -; \
fi; \
yum install -y -q unzip shadow-utils git net-tools iproute langpacks-zh_CN telnet lrzsz \
&& yum clean all -q \
&& rm -fr /var/cache/yum/* /tmp/yum_save*.yumtx /root/.pki \
# Please update the centos install docs if the below line is changed so that
# end users can properly install Kong along with its required dependencies
# and that our CI does not diverge from our docs.
&& yum install -y /tmp/kong.rpm \
&& yum clean all \
&& rm /tmp/kong.rpm \
&& chown kong:0 /usr/local/bin/kong \
&& chown -R kong:0 /usr/local/kong \
&& luarocks install graphql && \
if [ "$ASSET" = "ce" ] ; then \
kong version ; \
fi;
COPY docker-entrypoint.sh /docker-entrypoint.sh
USER kong
ENTRYPOINT ["/docker-entrypoint.sh"]
EXPOSE 8000 8443 8001 8444 $EE_PORTS
STOPSIGNAL SIGQUIT
CMD ["kong", "docker-start"]
编译推送docker镜像
docker build -t harbor.59iedu.com/fjhb/kong:2.3.2 .
docker push harbor.59iedu.com/fjhb/kong:2.3.2
更新运行中的docker
- 修改k8s的deployment文件,替换镜像版本后进行apply
- 涉及到版本升级,需要进入init-container wait-for-migrations,分别执行下列命令,否则proxy和ingress-controller无法成功启动
kong migrations up kong migrations finish