Header Ads

How to Run Kubernetes with Calico

How to Run Kubernetes with Calico

Kubernetes is an open-source container orchestration system that has revolutionized the way modern applications are deployed and managed. One of the critical aspects of running Kubernetes is the networking layer, which enables communication between different containers and services. Calico is a popular networking solution that is designed to work seamlessly with Kubernetes, providing a scalable, secure, and high-performance networking infrastructure. In this article, we will guide you through the steps to run Kubernetes with Calico.

Prerequisites:

  • A Kubernetes cluster up and running
  • Access to a terminal or command prompt
  • Kubectl CLI installed

Step 1: Install Calico

To install Calico, you can use the Kubernetes manifest provided by the Calico project. The manifest installs the Calico components, such as the Calico CNI plugin, the Calico node daemon, and the Calico control plane.

To install Calico, run the following command:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Step 2: Verify the installation

Once the Calico components are installed, you can verify the installation by checking if the Calico pods are running. You can do this by running the following command:

kubectl get pods -n kube-system -l k8s-app=calico-node

This should return a list of Calico nodes running in your cluster.

Step 3: Create a Kubernetes network policy with Calico

Calico provides advanced network policy features that enable you to define fine-grained rules for network traffic. To create a Kubernetes network policy with Calico, you can use the Calico policy API or the Kubernetes network policy API.

For example, you can create a network policy that allows traffic to a specific Kubernetes service by running the following command:

cat << EOF | kubectl apply -f -
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: allow-nginx
spec:
selector: app == "nginx"
ingress:
- action: Allow
source:
selector: app == "frontend"
destination:
ports:
- 80
EOF

This creates a network policy that allows traffic to the "nginx" app from pods with the label "app=frontend" on port 80.

Step 4: Test the network policy

To test the network policy, you can create two pods in the same namespace, one running the "nginx" app and the other running the "frontend" app. Then, you can try to access the nginx app from the frontend app.

To create the pods, you can run the following commands:

kubectl run nginx --image=nginx --labels=app=nginx --expose --port=80
kubectl run frontend --image=nginx --labels=app=frontend --command -- /bin/sh -c "while true; do wget -qO- nginx; done"

This creates two pods, one running the nginx app and the other running the frontend app.

To test the network policy, you can try to access the nginx app from the frontend app by running the following command:

kubectl exec frontend -- wget -qO- nginx

If the network policy is working correctly, you should be able to access the nginx app from the frontend app.

Running Kubernetes with Calico provides a powerful and flexible networking infrastructure for your containerized applications. By following the steps outlined in this article, you can install Calico, create network policies, and test the networking infrastructure in your Kubernetes cluster.

Related Searches and Questions asked:

  • Jenkins vs Kubernetes: What Is the Difference?
  • Kubernetes Service Discovery Guide
  • How to Deploy Redis Cluster on Kubernetes
  • How to Delete Kubernetes Namespace safely?
  • That's it for this post. Keep practicing and have fun. Leave your comments if any.

    Powered by Blogger.