参考github上的dockerfile https://github.com/Kong/docker-kong/tree/master/centos ,在dockefile里面添加自定义的内容进行进行编译。本例中在官方的例子上安装了telnet、iproutes等软件包,同时为了实现网关的后续的应用程序认证鉴权,增加了graphql的lua扩展模块
准备dockerfile
wget https://codeload.github.com/Kong/docker-kong/zip/refs/tags/2.3.2
unzip docker-kong-2.3.2.zip
cd docker-kong-2.3.2/centos/
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