78102c9984
This commit changes the way we produce kuryr-cni Docker image. Previously we've distributed the kuryr-driver as pyinstaller binary that contained Python 3 interpreter and all the dependencies. This binary was called from CNI. That approach had some disadvantages, the major being complicated build procedure and having to see false-positive BrokenPipeError tracebacks in kubelet logs. This commit implements distributing kuryr-driver as a virtualenv with kuryr-kubernetes and all the dependecies installed. That virtualenv is then copied onto the host system and CNI can easily activate it and run kuryr-cni binary. This should solve issues caused by pyinstaller. Closes-Bug: 1747058 Change-Id: I65b01ba27cbe39b66f0a972d12f3abc166934e62
29 lines
944 B
Docker
29 lines
944 B
Docker
FROM centos:7
|
|
LABEL authors="Antoni Segura Puimedon<toni@kuryr.org>, Vikas Choudhary<vichoudh@redhat.com>"
|
|
|
|
RUN yum install -y epel-release https://rdoproject.org/repos/rdo-release.rpm \
|
|
&& yum install -y --setopt=tsflags=nodocs python-pip iproute bridge-utils openvswitch sudo \
|
|
&& yum install -y --setopt=tsflags=nodocs gcc python-devel git \
|
|
&& pip install virtualenv \
|
|
&& virtualenv /kuryr-kubernetes
|
|
|
|
COPY . /opt/kuryr-kubernetes
|
|
|
|
RUN cd /opt/kuryr-kubernetes \
|
|
&& /kuryr-kubernetes/bin/pip install . \
|
|
&& virtualenv --relocatable /kuryr-kubernetes \
|
|
&& rm -fr .git \
|
|
&& yum -y history undo last
|
|
|
|
COPY ./cni_ds_init /usr/bin/cni_ds_init
|
|
|
|
ARG CNI_CONFIG_DIR_PATH=/etc/cni/net.d
|
|
ENV CNI_CONFIG_DIR_PATH ${CNI_CONFIG_DIR_PATH}
|
|
ARG CNI_BIN_DIR_PATH=/opt/cni/bin
|
|
ENV CNI_BIN_DIR_PATH ${CNI_BIN_DIR_PATH}
|
|
ARG CNI_DAEMON=False
|
|
ENV CNI_DAEMON ${CNI_DAEMON}
|
|
|
|
VOLUME [ "/sys/fs/cgroup" ]
|
|
ENTRYPOINT [ "cni_ds_init" ]
|