https://github.com/msadeqsirjani/navisite
Getting to know the basic concepts of cloud computing, working with docker, creating an orchestration using Kubernetes
https://github.com/msadeqsirjani/navisite
cloud container docker docker-compose dotnet kubernetes kubernetes-cluster kubernetes-deployment minimal-api nginx postgresql reverse-proxy
Last synced: 5 months ago
JSON representation
Getting to know the basic concepts of cloud computing, working with docker, creating an orchestration using Kubernetes
- Host: GitHub
- URL: https://github.com/msadeqsirjani/navisite
- Owner: msadeqsirjani
- License: mit
- Created: 2022-12-07T14:22:59.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T08:33:47.000Z (over 1 year ago)
- Last Synced: 2024-05-01T12:11:58.092Z (over 1 year ago)
- Topics: cloud, container, docker, docker-compose, dotnet, kubernetes, kubernetes-cluster, kubernetes-deployment, minimal-api, nginx, postgresql, reverse-proxy
- Language: C#
- Homepage:
- Size: 14 MB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![LinkedIn][linkedin-shield]][sadeq-linkedin-url]
Navisite
Hey !!
In This Repo We are going to Learn Some Docker, Docker-Compose And Kubernetes together
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
## About The Repository
[![Product Name Screen Shot][product-screenshot]](https://example.com)
### Built With
List of major frameworks/libraries used to bootstrap this project.
- [![Docker][docker]][docker-url]
- [![Linux][linux]][linux-url]
- [![Kubernetes][kubernetes]][kubernetes-url]
- [![Nginx][nginx]][nginx-url]
- [![.NET][.net]][.net-url]
- [![Postgres][postgres]][postgres-url]
## Getting Started
To get a local copy up and running follow these simple steps.
### Prerequisites
#### 1. Installing Docker and Docker-Compose
- **Note 1**: Replace **version** with the latest version number from the Docker Engine - Community repository.
- **Note 2**: For X86_64 Architecture CPUs use amd64 in place of **arch** if you are using a different architecture than x86_64, you can find the correct arch by running `uname -m` on your machine.
- ### In Ubuntu
1. Update Your apt
```sh
sudo apt-get update
```
2. Download Docker Desktop for Ubuntu
```sh
wget https://desktop.docker.com/linux/main/amd64/docker-desktop--.deb
```
3. Installing Docker Desktop
```sh
sudo apt install ./docker-desktop--.deb
```
- ### In Arch Linux
1. Update Your Pacman
```sh
sudo pacman -Syu
```
2. Downloading and Installing Docker and Docker-Compose Plugin for Arch
```sh
sudo pacman -S docker docker-compose
```
- ### In Windows Command Prompt
1. Download Docker Desktop With This Command
```sh
Invoke-WebRequest https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
```
2. Type Command Below For installing Docker Desktop
```sh
start /w "" "Docker Desktop Installer.exe" install
```
### Installation
installing and setting up the app
1. Clone the repo
```sh
git clone https://github.com/msadeqsirjani/Navisite.git
```
2. Install ... packages
```sh
... install
```
## Usage
_For more examples, please refer to the [Documentation](https://example.com)_
## Roadmap
### Phase (1)
1. > Choose a Web-Server image from [Docker Hub](https://hub.docker.com/) (Like: Nginx, Apache, etc.)
- **Nginx** is the one we are going to use in this project.
- Downloading WebServer Image From Docker Hub
- [ ] Downloading Nginx Image From Docker Hub
2. > Writing Dockerfile For WebServer That Do One of these Tasks :
>
> 1. > Acting as Reverse Proxy for a simple application.
> 2. > Hosting an HTML Page.
- > _Note_ : First Task Can Have Extra Points For Architecture and Richer Configuration
1. > WebServer must be able to host a Content of a Folder Outside of the Container
- [ ] Writing Dockerfile that can host a Content of a Folder Outside of the Container
2. > Choosing a way of Configuring the WebServer (Like: copying in image, mounting a volume, etc.)
- [ ] ... is the one we are going to use in this project.
3. > Choose a Database image from [Docker Hub](https://hub.docker.com/) (Like: Elasticsearch, MySQL, MongoDB, etc.)
- **PostgreSQL** is the one we are going to use in this project.
- Downloading Database Image From Docker Hub
- [ ] Downloading PostgreSQL Image From Docker Hub
- > _Note_ : The related image configuration must written in docker-compose.yml file that have these four features :
>
> 1. > The Configuration file must be Stateful (Meaning that the data will be saved even if the container is removed)
> 2. > Each container must use Limited amount of resources (Like: CPU, Memory, etc.)
> 3. > For choosen database Define a separate username and password
> 4. > Need to run automatically after each system restart.
- [ ] Downloading The Database Image From Docker Hub
- [ ] The Related image Configuration must write
4. > By using Pervious Step Dockerfile do the build opration note that both images must run together
- [ ] Writing docker-compose.yml File
5. > Push the built image to Docker Hub
- [ ] Pushing The Built Image To Docker Hub
- [ ] Putting Docker Hub Image Link In issue Phase 1
### Phase (2)
In this phase, we plan to launch a self-hosted version of kubernetes together. We suggest you minikube.
1. > At first, as always, we apply the update command
```bash
sudo apt-get update
```
2. > At first, as always, we apply the update command
```bash
sudo apt-get install curl
```
3. > In continuation of the previous case, the binary installation files are downloaded from the domains with the http tag, and what is better is to enter the following command as well.
```bash
sudo apt-get install apt-transport-https
```
4. > As you know, to install minikube, you must use the hypervisor feature and install a version of virtual box on your operating system. This can be done as follows
```bash
sudo apt install virtualbox virtualbox-ext-packs
```
5. > In this step, we download the minikube installation binary files
```bash
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
```
6. > In order to be able to apply the commands related to the execution of minikube, we must move the executable files to the following path.
```bash
sudo cp minikube-linux-amd64 /usr/local/bin/minikube
```
7. > We give the necessary access to the executable files of minikube as follows.
```bash
sudo chmod 755 /usr/local/bin/minikube
```
8. > Now we have installed minikube and we can enter the following command in the command line to check the correctness of the program installation.
```bash
minikube version
```
9. > There are 3 ways to communicate with minikube. The most important and powerful method is to use command line commands or kubectl
```bash
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
```
> With the above command, we download the kubectl binary installation files.
10. > The necessary access to the kubectl executable is given as follows
```bash
chmod +x ./kubectl
```
11. > We move the kubectl execution file to the execution path of other programs.
```bash
sudo mv ./kubectl /usr/local/bin/kubectl
```
12. > We have now installed kubectl. We can make sure of the correct performance by executing the following command
```bash
kubectl version -o json
```
13. > By running the following command, minikube will run on a virtualbox
```bash
minikube start
```
14. > You can connect to minikube using kubectl using the following commands
```bash
kubectl config view
kubectl cluster-info
kubectl get nodes
```
15. > At the end, you can get the necessary information from the latest status of minikube with the following command
```bash
minikube status
```
See the [open issues](https://github.com/msadeqsirjani/Navisite/issues) for a full list of proposed features (and known issues).
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## License
Distributed under the MIT License. See `LICENSE` for more information.
## Contact
Mohammad Sadeq Sirjani - [@msadeqsirjani](https://twitter.com/msadeqsirjani) - m.sadeq.sirjani@gmail.com
Project Link: [https://github.com/msadeqsirjani/Navisite](https://github.com/msadeqsirjani/Navisite)
## Acknowledgments
- [Docker-Compose](https://docs.docker.com/compose/)
- [Dockerfile](https://docs.docker.com/engine/reference/builder/)
- [Choose an Open Source License](https://choosealicense.com)
- [Malven's Flexbox Cheatsheet](https://flexbox.malven.co/)
- [Malven's Grid Cheatsheet](https://grid.malven.co/)
- [Img Shields](https://shields.io)
[contributors-shield]: https://img.shields.io/github/contributors/msadeqsirjani/Cloud-Computing-Project.svg?style=for-the-badge
[contributors-url]: https://github.com/msadeqsirjani/Cloud-Computing-Project/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/msadeqsirjani/Cloud-Computing-Project.svg?style=for-the-badge
[forks-url]: https://github.com/msadeqsirjani/Cloud-Computing-Project/network/members
[stars-shield]: https://img.shields.io/github/stars/msadeqsirjani/Cloud-Computing-Project.svg?style=for-the-badge
[stars-url]: https://github.com/msadeqsirjani/Cloud-Computing-Project/stargazers
[issues-shield]: https://img.shields.io/github/issues/msadeqsirjani/Cloud-Computing-Project.svg?style=for-the-badge
[issues-url]: https://github.com/msadeqsirjani/Cloud-Computing-Project/issues
[license-shield]: https://img.shields.io/github/license/msadeqsirjani/Cloud-Computing-Project.svg?style=for-the-badge
[license-url]: https://github.com/msadeqsirjani/Cloud-Computing-Project/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge&logo=linkedin&logoColor=white
[sadeq-linkedin-url]: https://www.linkedin.com/in/msadeqsirjani/
[product-screenshot]: images/screenshot.png
[kubernetes]: https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white
[kubernetes-url]: https://kubernetes.io/
[docker]: https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white
[docker-url]: https://www.docker.com/
[docker-compose]: https://img.shields.io/badge/dockercompose-35495E?style=for-the-badge&logo=dockercompose&logoColor=4FC08D
[docker-compose-url]: https://docs.docker.com/compose/
[.net]: https://img.shields.io/badge/dotnet-4122aa?style=for-the-badge&logo=dotnet&logoColor=fbfbfb
[.net-url]: https://dotnet.microsoft.com/en-us/
[nginx]: https://img.shields.io/badge/nginx-%23009639.svg?style=for-the-badge&logo=nginx&logoColor=white
[nginx-url]: https://www.nginx.com/
[linux]: https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black
[linux-url]: https://www.linux.org/
[postgres]: https://img.shields.io/badge/Postgres-31648c.svg?style=for-the-badge&logo=Postgres&logoColor=white
[postgres-url]: https://www.postgresql.org/