74598e568a
#### Why I did it After k8s upgrade a container, k8s can only know the container is running, don't know the service's status inside container. So we need a probe inside container, k8s will call the probe to check whether the container is really ready. ##### Work item tracking - Microsoft ADO **(number only)**: 22453004 #### How I did it Add a health check probe inside config engine container, the probe will check whether the start service exit normally or not if the start service exists and call the python script to do container self-related specific checks if the script is there. The python script should be implemented by feature owner if it's needed. more details: [design doc](https://github.com/sonic-net/SONiC/blob/master/doc/kubernetes/health-check.md) #### How to verify it Check path /usr/bin/readiness_probe.sh inside container. #### Which release branch to backport (provide reason below if selected) - [ ] 201811 - [ ] 201911 - [ ] 202006 - [ ] 202012 - [ ] 202106 - [ ] 202111 - [x] 202205 - [x] 202211 #### Tested branch (Please provide the tested image version) - [x] 20220531.28 Co-authored-by: lixiaoyuner <35456895+lixiaoyuner@users.noreply.github.com>
62 lines
2.2 KiB
Django/Jinja
62 lines
2.2 KiB
Django/Jinja
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
|
|
FROM docker-base-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}
|
|
|
|
## Make apt-get non-interactive
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
apt-utils \
|
|
build-essential \
|
|
python3-dev
|
|
|
|
{%- if CONFIGURED_ARCH == "armhf" or CONFIGURED_ARCH == "arm64" %}
|
|
RUN apt-get install -y \
|
|
libxslt-dev \
|
|
libz-dev
|
|
{%- endif %}
|
|
|
|
# For sonic-config-engine Python 3 package
|
|
# Explicitly install pyangbind here, as pyangbind causes enum34 to be installed.
|
|
# enum34 causes Python 're' package to not work properly as it redefines an incompatible enum.py module
|
|
# https://github.com/robshakir/pyangbind/issues/232
|
|
RUN pip3 install pyangbind==0.8.1
|
|
RUN pip3 uninstall -y enum34
|
|
|
|
# Fix armhf build failure
|
|
# The option --no-build-isolation can be removed when upgrading PyYAML to 6.0.1
|
|
RUN pip3 install PyYAML==5.4.1 --no-build-isolation
|
|
|
|
# Install python-redis
|
|
RUN pip3 install redis==4.5.4
|
|
|
|
{% if docker_config_engine_bullseye_debs.strip() %}
|
|
# Copy locally-built Debian package dependencies
|
|
{{ copy_files("debs/", docker_config_engine_bullseye_debs.split(' '), "/debs/") }}
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
{{ install_debian_packages(docker_config_engine_bullseye_debs.split(' ')) }}
|
|
{% endif %}
|
|
|
|
{% if docker_config_engine_bullseye_whls.strip() %}
|
|
# Copy locally-built Python wheel dependencies
|
|
{{ copy_files("python-wheels/", docker_config_engine_bullseye_whls.split(' '), "/python-wheels/") }}
|
|
|
|
# Install locally-built Python wheel dependencies
|
|
{{ install_python_wheels(docker_config_engine_bullseye_whls.split(' ')) }}
|
|
{% endif %}
|
|
|
|
# Copy files
|
|
COPY ["files/swss_vars.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["files/readiness_probe.sh", "/usr/bin/"]
|
|
COPY ["files/container_startup.py", "/usr/share/sonic/scripts/"]
|
|
|
|
## Clean up
|
|
RUN apt-get purge -y \
|
|
python3-dev \
|
|
build-essential && \
|
|
apt-get clean -y && \
|
|
apt-get autoclean -y && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /debs /python-wheels ~/.cache
|