This article was published as a part of the Data Science Blogathon.
Introduction
Niti Ayog, one of the transforming national institutions, has published an article on Blockchain use cases in India. Few questions about Blockchain, why Blockchain, and how we can deploy our applications through the docker and Kubernetes we should know.
Objectives
We will discuss in this article Blockchain and deployment of applications on the Docker Hub and Kubernetes. I hope you all will be interested to know about this in detail.
What is Blockchain?
Blockchain, the word suggests each data of ours is stored in Blocks by a technique called cryptography or encryption. It changes our digital data into codes that are not readable by everyone. The digital data gets added in the form of a Block. When one block of the data is stored, and no space is left, another block gets ready for storing the data.
Why do we need it?
To stop fraud and secure our data, we need Blockchain technology.
Some of the applications of Blockchain in our day-to-day life
1. Cybersecurity
Blockchain can play a vital role in security systems with its decentralized solutions means not a single person is the leader but many authorities. For the centralized system, only one is a head leader.
2. Medical Healthcare
It is a hassle for patients to keep medical records, but they can upload them to Blockchain and update it. It is beneficial in both ways for patients and doctors to have a look at the medical record.
3. In the Lands registry
We have seen many fraud cases in lands and properties, and with the help of Blockchain technology, we can save it to some extent.
4. In Financial Security
When we have to transfer money online overseas, banks use one of the cryptocurrencies (Digital currency not controlled by the so-called government) called a ripple. If you are involved in any charity work and a donation online, you must also want to know where your hard-earned money went. In this case, blockchain technology can give insight as it provides transparency.
Now the question arises in our mind what cryptocurrencies are in actuality?
Cryptocurrencies
Cryptocurrencies are digital currencies used to buy or sell goods online or transfer money and have no connection with the government. It is also referred to as a decentralized currency because of the role of government.
Bitcoin and Ethereum are old Cryptocurrencies, and almost more than a thousand cryptocurrencies occur in the world.
What is Bitcoin?
It is one of the oldest digital currencies, can be used globally without the involvement of any govt or financial institutions, and uses a decentralized protocol. In other words, it is a peer-peer exchange of values.
What is Ethereum?
Ethereum is blockchain technology after Bitcoin in the market that uses Ether digital currency based on a decentralized protocol.
Now the question arises how is it created?
How are cryptocurrencies created?
So how do cryptocurrencies are created? It is software that runs on Blockchain. It is decentralized and distributed on various servers of one company where data in the form of code exists.
Most new cryptocurrencies occur when the transaction is confirmed, and the process is known as mining. It’s not necessary that cryptocurrencies by mining only exist; they can use other technology.
Docker and Blockchain
To make our applications or websites run, we used to need a LAMP, but if more traffic is, how we make our website or application run?
Docker provides the sources for running our application.
We will now use the docker applications to deploy our application which consists of HTML, CSS, and JavaScript files.
We have made the Employer Applications form Employment Applications (codepen.io)
How to install Docker Desktop on windows?
We can install the Docker application on window10 pro by going to the website Docker Desktop for Windows by Docker | Docker Hub.
We can uninstall on windows by going to the setting, selecting Apps and features, and uninstalling by right clicking the docker app. However, the new version will be there only if the previous version from windows doesn’t exist. The docker engine can be removed by going to Task Manager and ending the task of the docker engine. All the files will be easily removed by going to Program Files and deleting the folder by going to the app and features.
It will download the newer images.
C:>docker run -d -p 80:80 docker/getting-started Unable to find image 'docker/getting-started: latest' locally latest: Pulling from docker/getting-started 97518928ae5f: Pull complete a4e156412037: Pull complete e0bae2ade5ec: Pull complete 3f3577460f48: Pull complete e362c27513c3: Pull complete a2402c2da473: Pull complete eb65930377cd: Pull complete 69465e074227: Pull complete Digest: sha256:86093b75a06bf74e3d2125edb77689c8eecf8ed0cb3946573a24a6f71e88cf80 Status: Downloaded newer image for docker/getting-started:latest 2dca1872873605d54ba811c57838c0dff183220c9a1acd5fc6bea114cea897e2
We will make a folder with the name docker test where the dockerfile will be and then another folder called HTML where we will keep our HTML files.
To create a Docker file in Windows echo. > Dockerfile
>>>FROM httpd:2.4 COPY ./public-HTML/ /usr/local/apache2/htdocs/
>>>docker build -t my-apache2.
>>>docker run -dit -p 8080:80 --name my-running app my-apache2
After the docker hub, we will go to Kubernetes in detail.
What is Kubernetes?
Kubernetes is the most widely used open-source container engine in the world. It allows you to schedule and manage containers. It can run on a desktop, on-premises, or in the cloud because it is open-source. It makes it simple to move your workload across these distinct contexts.
Why Blockchain on Kubernetes (BoK)?
Azure, Evernote, and Shopify use Kubernetes.
Kubernetes provides easy deployment for Blockchain applications to run the easy deployment, and services are necessary.
It provides interoperability, and blockchain applications that run on Kubernetes can run on different architecture styles hosted by the host. IBM and AWS are some examples that offer templates through Kubernetes for creating blockchain networks.
Difference between Kubernetes and Docker
Deployment of applications occurs in pods, deployment forms, and services, whereas on Docker hub occurs in the form of only services.
Setup and installation are not much easy, whereas, on the docker hub, it’s easy.
Azure and Shopify are examples of Kubernetes, whereas Google and Amazon are some examples of Docker hub.
Kubernetes works with the docker for smooth running and better control of containerized applications.
Code Work
We will first learn to use Minikube to get a Kubernetes environment up and running on Windows. Then, using the Kubernetes dashboard, launch an example Kubernetes application and manage it.
Importance of Kubectl
The Kubernetes Cluster gets controlled through Kubectl. When the setup is complete, it is one of the fundamental components of Kubernetes, and it operates on any operating workstation. It manages the nodes. Kubernetes objects, the cluster is managed by using the commands of Kubectl.
Installing Kubectl
You can download the latest release from the recent release version v1.23.0.
If you have curl installed, you can go to the command line.
kubectl checksum file
compare CertUtil’s output to the checksum file
CertUtil -hashfile kubectl.exe SHA256
type kubectl.exe.sha256
Checking the version
kubectl version --client
The tutorial can be found on Install and Set Up kubectl on Windows | Kubernetes.
Kubectl Configuration kubectl cluster-info
It will throw an error if kuberctl configuration is not correct.
We have to install minikube before going further.
Importance of Minikube
Minikube enables Kubernetes run locally. minikube creates a single-node Kubernetes cluster on your computer (including operating systems Microsoft Windows and macOS so you may experiment with Kubernetes or do daily development work.
Installing Minikube
Minikube we have installed from the website Release v1.2.0 · kubernetes/minikube (github.com).
We will copy the Kubectl and Minikube on C drive to have the same path. Hyper-V is required. Once installed, open the Hyper-V Manager and click Virtual Switch Manager.
Let’s make the new name minikube. After it chooses an internal network, apply and hit the button OK.
Afterward, open the control panel, click on Network and Internet, Network and Sharing Center, and then click on New Virtual Switch and Properties. Then goes to tab sharing and allows it to connect by selecting and choosing minikube and hitting the button OK.
Finally, on the Command line, type minikube start
Before typing, make sure Docker Daemon is running. Otherwise, it will show an error.
C:>minikube start
After configuring type
C:>kubectl get nodes
NAME STATUS ROLES AGE VERSION minikube Ready control-plane,master 2m3s v1.22.3 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 443/TCP 4m43s
C:>kubectl get all
Running First Application Hello World
C:>git clone https://github.com/skynet86/hello-world-k8s.git C:>cd hello-world-k8s/
helloworld.yaml file contents apiVersion: apps/v1 kind: Deployment metadata: name: hello-world-deployment labels: app: hello-world spec: selector: matchLabels: app: hello-world replicas: 2
Where the “name” parameter indicates that a Deployment named “hello-world-deployment” is created.
The replicas column means two replicated Pods.
The “selector” column indicates how the Deployment determines which Pods it should manage.
apiVersion: v1 kind: Service metadata: name: hello-world spec: selector: app: hello-world ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30081 type: NodePort kubectl create -f hello-world.yaml
It creates the “hello-world” service. We are exposing our application at a node using this service. The “type” field specifies the service type. Node 30081 -> Service 80 -> Pod/container 80 are the ports. You can visit the application from your local machine by going to http://localhost:30081.
You can also create your file example we created happybirthday.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: happybirthday spec: selector: matchLabels: app: happybirthday metadata: labels: app: happybirthday spec: containers: - name: happybirthday image: karthequian/happybirthday:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: happybirthday spec: selector: app: happybirthday ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 32700 type: NodePort Note: NodePort can be selected between 30000- 32727. C:hello-world-k8s>kubectl create -f happybirthday.yaml deployment.apps/happybirthday created
C:>kubectl get all NAME READY STATUS RESTARTS AGE pod/happybirthday-584b65cd4-fvhjh 1/1 Running 0 20m pod/hello-world-deployment-b9558ff44-24hn7 1/1 Running 0 35m pod/hello-world-deployment-b9558ff44-5jbqs 1/1 Running 0 35m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/happybirthday NodePort 10.111.3.87 80:32700/TCP 30s service/hello-world NodePort 10.108.12.73 80:30081/TCP 35m service/kubernetes ClusterIP 10.96.0.1 443/TCP 79m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/happybirthday 1/1 1 1 20m deployment.apps/hello-world-deployment 2/2 2 2 35m NAME DESIRED CURRENT READY AGE replicaset.apps/happybirthday-584b65cd4 1 1 1 20m replicaset.apps/hello-world-deployment-b9558ff44 2 2 2 35m C:>minikube service list C:>minikube service happybirthday
Application of Kubernetes
Kubernetes allows several containers to run at the same time. A developer constructs a Deployment for these containers, defines the number of replicas, then presents a set of instructions humans can understand.
Supported by multiple cloud infrastructures and can run anywhere. It saves money since it optimizes infrastructural resources by using hardware for companies that use K8s.
It monitors the health of the nodes and containers at all times. According to the Container survey, half of the respondents use Kubernetes in their production environment.
Kubernetes and Amazon EC2
Kubernetes uses deployment, maintenance, and scaling processes to manage clusters for Amazon EC2, compute instances, and run containers on these instances.
It allows you to execute any containerized application using the same toolset. Amazon Elastic Kubernetes Services (EKS) manage the Kubernetes control plane.
Kubernetes and Apache Spark
Apache Spark is a distributed computing framework that is free and open-source. With the help of a cluster of machines, Spark can manage large data sets.
Real-world example
We will use kubectl apply minus f to deploy some example infrastructure from LinkedIn learning exercise files, and we have a file called sample-infrastructure .yaml in Exercise Files. Let us put that to the test. It is generating namespaces and deploying a slew of pods.
kubectl apply -f sample-infrastructure.yaml
So, when you run kubectl get pods after this has deployed, it looks a little strange since we just produced pods, but we don’t see any pods over here. It’s because we’ve deployed pods in various namespaces in this case. Let’s take a look at the namespaces we’ve made so far.
C:hello-world-k8s>kubectl get pods NAME READY STATUS RESTARTS AGE happybirthday-584b65cd4-fvhjh 1/1 Running 1 (13m ago) 3d7h hello-world-deployment-b9558ff44-24hn7 1/1 Running 1 (13m ago) 3d8h hello-world-deployment-b9558ff44-5jbqs 1/1 Running 1 (13m ago) 3d8h
C:hello-world-k8s>kubectl get namespaces NAME STATUS AGE auth Active 6m41s cart Active 6m41s catalog Active 6m40s default Active 3d8h infra Active 6m38s kube-node-lease Active 3d8h kube-public Active 3d8h kube-system Active 3d8h purchasing Active 6m38s quote Active 6m39s social Active 6m41s web Active 6m42s
If you run Kubectl, get pods and choose the cart namespace, you will see a minus n for the namespace, and the namespace will be called cart. We can also use kubectl to get pods and minus all dash namespaces to see it for all namespaces. It returns all infrastructures, including heapster, influxdb, and other services operating in the Kube-system namespace, other namespaces, quotation, social, and so on.
kubectl get pods -n cart NAME READY STATUS RESTARTS AGE cart-dev 1/1 Running 0 13m cart-prod 1/1 Running 0 13m cart-staging 1/1 Running 0 13m C:hello-world-k8s>kubectl get pods --all-namespaces
We can use kubectl to get pods without O. It gives us more information, specifically IP and node information. Other output formats are also available.
C:hello-world-k8s>kubectl get pods -o wide --all-namespaces
Conclusion
Blockchain is an emerging technology that can prevent fraud. We can run the application on the docker and Kubernetes machines. In this article, our objective was to deploy the application through Docker and Kubernetes.
Key Takeaways
1. We discuss in detail the meaning of Blockchain and why we need Blockchain. You must now know how to define the Blockchain, where our data gets stored in the form of Blocks.
2. Uses of Blockchain in various Industries. We get to see in the Medical, Bank sector where we can in maximum amount prevent fraud from happening.
3. We saw how to deploy our application on the docker hub in windows. It is easier once the docker gets installed on windows.
4. We mentioned the definition of Cryptocurrencies, how some have formed, and a few examples of cryptocurrencies, Bitcoin and Ethereum.
5. We mentioned Kubernetes and how to install it step by step. It is not easy to install, but going step by step will not be difficult either.
6. We discuss the difference between Kubernetes and the docker hub.
7. We took some terms named Minikube and Kubectl. After going through the article, you must now be able to define them, why we need to install and about Kubetcl.
8. Why do we need Kubernetes? We can see the uses of Kubernetes along with the docker engine.
9. We used some present real-world examples.
The media shown in this article is not owned by Analytics Vidhya and is used at the Author’s discretion.