You are browsing a read-only backup copy of Wikitech. The primary site can be found at wikitech.wikimedia.org
Calico: Difference between revisions
Jump to navigation
Jump to search
imported>Giuseppe Lavagetto No edit summary |
imported>JMeybohm (Updated the docs with new packaging instructions) |
||
Line 1: | Line 1: | ||
[http://docs.projectcalico.org Calico] is a virtual network infrastructure that we use to manage kubernetes networking. | [http://docs.projectcalico.org Calico] is a virtual network infrastructure that we use to manage kubernetes networking. | ||
== | == Packaging == | ||
{{note|<dist> below stands for one of the Debian distribution's codenames, e.g. jessie, stretch, buster, bullseye. Make sure you use the one you target}}We don't actually build calico but package it's components from upstream binary releases. | |||
Because of that, you will need to set [[HTTP proxy]] variables for internet access on the build host. | |||
The general process to follow is:*Check out {{Gitweb|project=operations/debs/calico}} on your workstation | |||
*Decide if you want to package a new master (production) or future (potential next production) version | |||
- | *Create a patch to bump the debian changelog | ||
<syntaxhighlight lang="bash"> | |||
export NEW_VERSION=3.16.5 # Calico version you want to package | |||
dch -v ${NEW_VERSION}-1 -D unstable "Update to v${NEW_VERSION}" | |||
git commit debian/changelog | |||
# If you're packaging a new future version, make sure to submit the patch to the correct branch | |||
git review future | |||
</syntaxhighlight> | |||
= | * Merge | ||
* Check out {{Gitweb|project=operations/debs/calico}} on the build host | |||
* Build the packages: | |||
<syntaxhighlight lang="bash"> | |||
git checkout future # If you want to build a new version not directly to be released to production | |||
# Ensure you allow networking in pbuilder | |||
# This option needs to be in the file, an environment variable will *not* work! | |||
echo "USENETWORKING=yes" >> ~/.pbuilderrc | |||
# Build the package | |||
# | https_proxy=http://webproxy.$(hostname -d):8080 DIST=<dist> pdebuild | ||
/ | </syntaxhighlight> | ||
==Publishing== | |||
</syntaxhighlight> | |||
=== | === The Debian Packages: === | ||
<syntaxhighlight lang="bash"> | |||
# | # On apt1001, copy the packages from the build host | ||
rsync -vaz deneb.codfw.wmnet::pbuilder-result/<dist>-amd64/calico*<PACKAGE VERSION>* . | |||
< | |||
# If you want to import a new production version, import to component main | |||
sudo -i reprepro -C main --ignore=wrongdistribution include <dist>-wikimedia /path/to/<PACKAGE>.changes | |||
</syntaxhighlight> | # If you want to import a test/pre-production version, import to component calico-future | ||
sudo -i reprepro -C component/kubernetes-future --ignore=wrongdistribution include <dist>-wikimedia /path/to/<PACKAGE>.changes | |||
</syntaxhighlight> | |||
# | |||
=== The Docker Images: === | |||
Calico also includes a bunch of docker images which need to be published into our docker registry. To simplify the process, the packaging generates a debian package named "calico-images" that includes the images as well as a script to publish them:<syntaxhighlight lang="bash"> | |||
</syntaxhighlight> | # On the build host, extract the calico-images debian package | ||
tmpd=$(mktemp -d) | |||
dpkg -x /var/cache/pbuilder/result/<dist>-amd64/calico-images_<PACKAGE_VERSION>_amd64.deb $tmpd | |||
# Load and push the images | |||
sudo CALICO_IMAGE_DIR=${tmpd}/usr/share/calico ${tmpd}/usr/share/calico/push-calico-images.sh | |||
rm -rf $tmpd | |||
</syntaxhighlight> |
Revision as of 15:58, 17 November 2020
Calico is a virtual network infrastructure that we use to manage kubernetes networking.
Packaging
![]() | <dist> below stands for one of the Debian distribution's codenames, e.g. jessie, stretch, buster, bullseye. Make sure you use the one you target |
We don't actually build calico but package it's components from upstream binary releases.
Because of that, you will need to set HTTP proxy variables for internet access on the build host.
The general process to follow is:*Check out operations/debs/calico on your workstation
- Decide if you want to package a new master (production) or future (potential next production) version
- Create a patch to bump the debian changelog
export NEW_VERSION=3.16.5 # Calico version you want to package
dch -v ${NEW_VERSION}-1 -D unstable "Update to v${NEW_VERSION}"
git commit debian/changelog
# If you're packaging a new future version, make sure to submit the patch to the correct branch
git review future
- Merge
- Check out operations/debs/calico on the build host
- Build the packages:
git checkout future # If you want to build a new version not directly to be released to production
# Ensure you allow networking in pbuilder
# This option needs to be in the file, an environment variable will *not* work!
echo "USENETWORKING=yes" >> ~/.pbuilderrc
# Build the package
https_proxy=http://webproxy.$(hostname -d):8080 DIST=<dist> pdebuild
Publishing
The Debian Packages:
# On apt1001, copy the packages from the build host
rsync -vaz deneb.codfw.wmnet::pbuilder-result/<dist>-amd64/calico*<PACKAGE VERSION>* .
# If you want to import a new production version, import to component main
sudo -i reprepro -C main --ignore=wrongdistribution include <dist>-wikimedia /path/to/<PACKAGE>.changes
# If you want to import a test/pre-production version, import to component calico-future
sudo -i reprepro -C component/kubernetes-future --ignore=wrongdistribution include <dist>-wikimedia /path/to/<PACKAGE>.changes
The Docker Images:
Calico also includes a bunch of docker images which need to be published into our docker registry. To simplify the process, the packaging generates a debian package named "calico-images" that includes the images as well as a script to publish them:
# On the build host, extract the calico-images debian package
tmpd=$(mktemp -d)
dpkg -x /var/cache/pbuilder/result/<dist>-amd64/calico-images_<PACKAGE_VERSION>_amd64.deb $tmpd
# Load and push the images
sudo CALICO_IMAGE_DIR=${tmpd}/usr/share/calico ${tmpd}/usr/share/calico/push-calico-images.sh
rm -rf $tmpd