- About 🐳
- Prerequisites ☁️
- Deployment Instructions 🔨
- Step-By-Step Manual Installations (Optional) 🛠️
- Contributors 🧑🤝🧑
- FAQ ❓
- Support 🙏
- License ⚖️
- References 📃
This repo is for the creation of an OpenStack profile in CloudLab that supports the inclusion of one additional compute node type that provides support for Docker virtualization in a host server. This project will serve as an ease to launch Docker containers via OpenStack in CloudLab. The installation and usage of this project is for educational purposes only.
Access to a cloud computing platform such as Cloudlab or Google Cloud.
- At the top of this git repo, click the green Clone or download button and copy the git repo link.
- In your CloudLab homepage, click on the Experiments menu in the top blue menu bar and select Create Experiment Profile.
- Name your OpenStack profile and select your project. For the source code, select Git Repo and paste the git repo link you copied earlier. Then Confirm and wait for the page to load.
- Once the page finishes loading, click Create to create your OpenStack profile.
- Navigate to your new OpenStack profile. Scroll all the way to the bottom of the webpage and Instantiate the master branch.
- Click Next twice. Select your project if it has not already been selected. Select a cluster. Click Next. Click Finish.
- Wait for 10 minutes for your OpenStack experiment to get created. Once it is created, you will see two nodes in the List View section: the controller node (ctl) and the compute node (cp-1). SSH into the compute node and run
docker version
to check that Docker is working. - Once you verify that Docker is running, you can access your Horizon dashboard through cloudlab by navigating to your experiment page and expanding Profile Instructions. There you will find your password and link to your dashboard. Once you access your dashboard, you will see a tab on the side labeled Containers. Enter this section and click Create Container.
- After that, add the name of your container as well as its container name or ID. Click Next and specify the number of virtual CPUs and amount of memory you want allocated to your container. Click Next one more time and then click Create.
- 🎉 Congratulations! 🎉 👏 👏 👏 You can now deploy your own cloud computing services in OpenStack and take advantage of the powerful containerization that Docker has to offer.
See the following links for manual Installation of Zun
Controller Node:
https://docs.openstack.org/zun/latest/install/controller-install.html
Compute Node:
https://docs.openstack.org/zun/latest/install/compute-install.html
Verify Operation:
https://docs.openstack.org/zun/latest/install/verify.html
Launch a container (without the use of Horizon dashboard):
https://docs.openstack.org/zun/latest/install/launch-container.html
- Austin Bramley - https://github.com/ab922530
- Akash Kumar - https://github.com/KumarUniverse
- Endri Koti - https://github.com/EndriKCyber
- Simeon McGraw - https://github.com/simeonjmcg
- Andrew Valenci - https://github.com/avalenci
Q1:
What kinds of modifications were necessary in order for a proper deployment?
A:
The types of changes we needed to make to the configuration files were pretty minimal, but one of the most common issues was in the URLs. Our controller node was referred to http://controller:5000 when in fact our controller node was actually called http://ctl:5000.
The same error was found in compute vs cp for our compute node.
We realized these errors were needed when we could not properly deploy the app container service on the compute node and were receiving networking errors.
Q2:
In your opinion, what is the most valuable skill you learned from doing this?
A:
Akash Kumar: Hello! The most valuable skill we learned from doing this project is the ability to research project requirements and errors to find the simplest solution that works. If you don't know what the problem is, then it can be quite hard or even impossible to fix it. So being able to identify the problem in the first place can prove to be a great help.
Austin Bramley: I think the most valuable skill I learned during this project was how to write a bash script. I think that it is a very valuable skill to have and I'm glad this project gave me an opportunity to work with them.
Endri Koti: How to pay attention and not to mismatch directories in linux!
Q3:
Is there anything that you would change if you did it again? Also, how did you figure out where to go and where to start? This seems really interesting.
A:
Andrew Valenci: If we had to do it again, we would probably choose to setup our OpenStack configuration in Google Cloud rather than CloudLab. When we first started with this project, we knew we had to add one additional compute node to the default OpenStack profile that provides support for Docker virtualization, but we did not have a plan as to how to accomplish this. Then, Dr. Ngo proposed the use of Zun, an OpenStack container service. Zun provides API endpoints for Openstack to integrate with other OpenStack Services, such as Keystone, Neutron and Glance. With Zun, we were able to give OpenStack the ability to manage application containers such as Docker. After doing some research, we realized that before installing Zun, we had to install Etcd in the controller node (to store data), Docker in the compute node, and Kuryr in both nodes (to function as a bridge between container frameworks and OpenStack).
Thanks to Dr. Linh Ngo for his expertise and support on this project.
GNU General Public License v2.0
- CloudLab
- CloudLab OpenStack default profile
- Intro to OpenStack OpenStack Wikipedia page
- Intro to Docker
- Docker documentation
- Install Docker Engine on Ubuntu
- Zun Wiki page
- Zun documentation
- Install and configure Zun in controller node
- Install and configure Zun in the compute node
- Install and configure Kuryr in the controller node
- Install and configure Kuryr in the compute node for Ubuntu
- Install Etcd in the controller node for Ubuntu
- Launch a container in Zun
- OpenStack Forums
Made with ❤️ by Austin Bramley, Akash Kumar, Endri Koti, Simeon McGraw & Andrew Valenci