How I did DigitalOcean's Kubernetes Challenge
Tags: kubernetes, digitalocean, cncf, cloud
Published: 2022-02-22 13:55:37



## About Kubernetes and Clusters

Kubernetes (also known as k8s or “kube”) is an open source container orchestration platform that automates many of the manual processes involved in deploying, managing, and scaling containerized applications.

You can cluster together groups of hosts running containers, and Kubernetes helps you easily and efficiently manage those clusters.

Kubernetes clusters can span hosts across on-premise, public, private, or hybrid clouds. For this reason, Kubernetes is an ideal platform for hosting cloud-native applications that require rapid scaling.

## About [DigitalOcean](https://www.digitalocean.com/)

[DigitalOcean](https://www.digitalocean.com/) simplifies cloud computing so developers and businesses can spend more time building software that changes the world. With its mission-critical infrastructure and fully managed offerings, DigitalOcean helps developers, startups and small and medium-sized businesses (SMBs) rapidly build, deploy and scale applications to accelerate innovation and increase productivity and agility. DigitalOcean combines the power of simplicity, community, open source, and customer support, so customers can spend less time managing their infrastructure and more time building innovative applications that drive business growth.

## [About this Challenge](https://www.digitalocean.com/community/pages/kubernetes-challenge)
Whether you’re new to Kubernetes, or you have been running production clusters for years, this challenge will give you an opportunity to level-up your Kubernetes skill set before the end of 2021. This challenge is for everyone from beginner to export on K8s. There are four different challenges.



## Choose your Challenge

New to Kubernetes? Try one of these challenges. You’ll get $60 in DigitalOcean credits for your project.

- **Deploy an internal container registry** Kubernetes does not provide an internal container registry but it is often useful to add one. There are many projects which enable you to deploy an internal container registry, such as Harbour or Trow.
- **Deploy a log monitoring system** So your applications produce logs. Lots of logs. How are you supposed to analyze them? A common solution is to aggregate and analyze them using the ELK stack, alongside fluentd or fluentbit.
- **Deploy a scalable SQL database cluster** When deploying a database on Kubernetes, you have to make it redundant and scalable. You can rely on database management operators like KubeDB or database-specific solutions like Kubegres for PostgreSQL or the MySQL Operator for MySQL.
- **Deploy scalable NoSQL database cluster** When it comes to cloud native, using No-SQL solutions has its advantages. You can deploy a cluster of MongoDB, Cassandra, or CouchDB instances to explore how to run a NoSQL database in Kubernetes.

I chose Deploy a scalable NoSQL database cluster in kubernetes.

**My Github Repo**

Here is the link of github repository in which I did the [DigitalOcean Kubernetes Challenge](https://www.digitalocean.com/community/pages/kubernetes-challenge)

https://github.com/prajalsharma/mongodb-kubernetes-cluster

## Deployment Guide

## Prerequisites

- [DigitalOcean Account](https://cloud.digitalocean.com/registrations/new)
- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
- [Doctl](https://docs.digitalocean.com/reference/doctl/how-to/install/)

## Step 1 : Creating a Kubernetes Cluster on DigitalOcean

- Create a new kubernetes cluster in your project segment by clicking on the Kubernetes button in Create dropdown button on the top right.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bah0dppcid1h5ndxm9ju.jpg)
- Choose and fill in the following fields (choose wisely as they will affect your money consumption etc)
- For my project I chose , DataCenter:Bangalore , Nodeplan:10$/month per node , Node Count : 1,etc. (You can choose the name for your cluster as well)
- Click on 'Create Cluster'.
- Wait for a few minutes for the cluster to be created .

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ht7exds9oh65awu80dvm.jpg)

## Step 2 : Connecting to the cluster

- After node Creation,scroll down and press "Overview"
- Press "Get started!"
- In "connecting to kubernetes" , copy the command and paste it in terminal. (make sure kubectl and doctl are installed as it won't work if they aren't installed)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezx7f2oxegjy14vxus43.jpg)
- Run the copied command on your terminal.
- After it runs it will look like this on windows , if your result is same then you've connected your device with the Kubernetes Cluster.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jinrsuxk33u2ndapy70q.png)

## Step 3 : Deploy a MongoDB Cluster

- Clone this repository by running the command below on your terminal
```
git clone https://github.com/prajalsharma/mongodb-kubernetes-cluster.git
```
- Go to the repo directory on you local machine through terminal.
- Run `kubectl apply -f` to to deploy the MongoDB Cluster.
- Run `kubectl get all` to get the status of deployment.
- The result will look like image below , that means you've comleted this step successfully.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qqc5ttj64hemmtcrksi0.jpg)

## Step 4 : Verify the Deployment

- Run `kubectl exec deployment/mongo-client -it -- /bin/bash` to connect to the MongoDB cluster.
- The Command Prompt should change to root@mongo-client-xxxx
- Run `mongo --host mongo-nodeport-svc --port 27017 -u <username> -p <password>` where username and password are the decoded values for the base64 credentials you entered in mongodb-secrets.yaml file.
- You should see the mongoDB info and prompt for mongo commands.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whcalms74uq4b5evkecm.jpg)

## The End

Congratulations you've made it till the end of this repo and now the terminal will show this after `show dbs` command.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4wfpze1y26z6bqrtuidb.jpg)
You have successfully deployed a NoSQL Database on Kubernetes. 

## Miscellaneous
I have used Windows 10 for this , so people using other OS might get some errors. It was my first time using Kubernetes on DigitalOcean . Thanks to Organisers and everyone , got to learn a lot .