As I’ve mentioned in recent posts, VMware’s Container Service Extension 2.0 (CSE) has recently been released. The big news around the 2.0 release is the ability to provision Enterprise PKS clusters via CSE.
It’s important to note that CSE 2.0 has a dependency on Python 3.7.3 or later. I had some trouble managed different versions of Python3 on the CentOS host I used to support the CSE server component. I wanted to document my steps in creating a virtual environment via
virtualenv utilizing Python 3.7.3 and installing CSE Server 2.0 within the virtual environment.
virtualenv is a tool to create isolated Python environments. virtualenv creates a folder which contains all the necessary executables to use the packages that a Python project would need. This is useful in my situation as I had various versions of Python 3 installed on my CentOS server and I wanted to ensure Python 3.7.3 was being utilized exclusively for the CSE installation while not effecting other services running on the server utilizing Python3.
Installing Python 3.7.3 on CentOS
The first thing we need to do is install (and compile) Python 3.7.3 on our CentOS server.
We’ll need some development packages and the
GCC compiler installed on the server:
# yum install -y zlib-devel gcc openssl-devel bzip2-devel libffi-devel
Next, we’ll pull down the Python 3.7.3 bits from the official Python site and unpack the archive:
# cd /usr/src
# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
# tar xzf Python-3.7.3.tgz
# cd Python-3.7.3
At this point we need to compile the Python source code on our system. We’ll use
altinstall as not to replace the system’s default python binary located at
# ./configure --enable-optimizations
# make altinstall
Now that we’ve compiled our new version of Python, we can clean up the archive file and check our
python3.7 version to ensure we compiled our source code correctly:
# rm /usr/src/Python-3.7.3.tgz
# python3.7 -V
Finally, we need to use
pip to install the
virtualenv tool on our server:
# pip3.7 install virtualenv
Creating our virtualenv
Now we’re ready to create our virtual environment within which to install CSE 2.0 server. First, let’s create a user that we’ll utilize to deploy the CSE server within the virtual environment. We can create the user and then switch to that user’s profile:
# useradd cse
# su - cse
Now we need to create a directory that will contain our virtual environment. In this example, I used the
cse-env directory to house my virtual environment:
$ mkdir ~/cse-env
Now we need to create our virtual environment for our Python 3.7.3 project:
$ python3.7 -m virtualenv cse-env
Using base prefix '/usr/local'
New python executable in /home/cse/cse-env/bin/python3.7
Also creating executable in /home/cse/cse-env/bin/python
Installing setuptools, pip, wheel...
Before you can start installing or using packages in the virtual environment, we’ll need to activate it. Activating a virtual environment will put the virtual environment-specific python and pip executables into your shell’s PATH. Run the following command to activate your virtual environment:
$ source ~/cse-env/bin/activate
Now check the default python version within the environment to verify we are using 3.7.3:
$ python -V
$ pip -V
pip 19.1.1 from /home/cse/cse-env/lib/python3.7/site-packages/pip (python 3.7)
Now we’re ready to install the CSE server and we won’t have to worry about Python version conflicts as we are installing the CSE packages within our virtual environment, which will only utilize Python 3.7.3.
Stay tuned for my next post which will walk through an installation of Container Service Extension server!!