An open API service indexing awesome lists of open source software.

https://github.com/shadyosama9/zoom-clone-k8s

Deploy a containerized application on Kubernetes with streamlined traffic management using Ingress rules. This setup includes Kubernetes manifests for deployment, service, and ingress, alongside an ArgoCD configuration for GitOps-based application deployment and management.
https://github.com/shadyosama9/zoom-clone-k8s

argo-cd eks kubernetes

Last synced: 7 months ago
JSON representation

Deploy a containerized application on Kubernetes with streamlined traffic management using Ingress rules. This setup includes Kubernetes manifests for deployment, service, and ingress, alongside an ArgoCD configuration for GitOps-based application deployment and management.

Awesome Lists containing this project

README

          




Argo and K8s Banner

Zoom Clone K8s and Argo


## 📋 Overview

This repository is part of a collection of three repositories that follow GitOps principles to deploy a Zoom clone application to an AWS EKS cluster.

The other repositories in this collection are:
- [Application code repository](https://github.com/shadyosama9/Zoom-Clone-App.git)
- [Infrastructure as Code (IaC) repository](https://github.com/shadyosama9/Zoom-Clone-Infra)

This repository contains Kubernetes definitions for deploying application files along with the ArgoCD application file for creating an ArgoCD application.

### Included Files

- **zoom-deploy.yml**: Defines the deployment specifications for the application.
- **zoom-service.yml**: Configures the service settings to expose the application.
- **zoom-ingress.yml**: Sets up ingress rules for managing external access to the application.
- **argo-ingress.yml**: Contains the ingress configurations specifically for ArgoCD.

---

## 🚀 Application Deployment

**Prerequisites**

- An AWS account
- AWS CLI installed
- kubectl installed on your machine
- Docker installed
- DockerHub account
- Domain
- Make sure you created the infrastructer in [Infrastructure as Code (IaC) repository](https://github.com/shadyosama9/Zoom-Clone-Infra)


**Steps**
1. **DockerHub Repo**
- Create a docker hub repository for the image

2. **Build The Docker Image**
- Build the docker image from - [Application code repository](https://github.com/shadyosama9/Zoom-Clone-App.git)
```bash
docker build -t :V1
```

3. **Upload The Image**
- Push the image to your dockerhub repository
```bash
docker push

```
4. **Route 53 SetUp**
- Go to your AWS account
- search for route53 service
- create hosted zones for the app and argocd

5. **Creating NS Records**
- Go to your domain register (eg. godaddy)
- Create NS records from your route 53 hosed zones

6. **Certificate Claming**
- To enable HTTPS with your app you can issue a certificate from AWS Certificate Manager
- Go to your AWS acoount
- Search for certificate manager
- Issue a certificate for your domain with the format `*.`
- Go to your domain register
- Create CNAME record for the certificate
- For the name copy the name provided from AWS certificate manager and remove the domain part
- For the value copy the one provided by AWS Certificate Manager and remove the last `.`

6. **Configure AWS CLI**
- Set up your AWS credentials and default region:
```bash
aws configure
```

7. **Clone The Repository**
- Clone the required repository to your local machine:
```bash
git clone
```

8. **Update Kubeconfig File**
- Get your eks cluster kubeconfig file
```bash
aws eks update-kubeconfig --region --name
```

9. **Deploy The App**
- To deploy the app go to `kuberentes/`
- Update the image name in `zoom-deploy.yml` with your image name
- Update the domain name in `zoom-ingress.yml` with your hosted zone name
- Update the certificate arn in `zoom-ingress.yml` with your cerificate arn
- Run
```bash
kubectl apply -f .
```
5. **Deploy Argocd App**
- First go to `kuberentes/`
- Update the domain name in `argo-ingress.yml` with your hosted zone name
- Update the certificate in `argo-ingress.yml` with your certificate arn
- To create an argocd app go back to the root and run
```bash
kubctl apply -f application.yml
```

---

## 🔑 Accessing The Application

Once the app has been deployed and the load blancer has been provisioned:

- Go to route 53 on aws
- Create a record in the app hosted zone
- Select alias and choose `Alias to Application and Classic Load Balancer` in endpoint
- Select your region
- Choose your Load Balancer

Now you can access the app from the domain sepcified in `zoom-ingress.yml`




Zoom Clone Page


---

## ⚙️ Accessing ArgoCD

For ArgoCD it's the same as the app but:

- Create the record in argo hosted zone if you've seprated the hosted zones

You Access argocd from the domain specified in




Argo Application Page



- The username for argo is "admin"
- To get the passwords run:
```bash
kubectl get secret/argocd-initial-admin-secret -n argocd -o yaml
```
- Decode the password by running:
```bash
echo | base64 --decode
```




Argo Login Page