In Kubernetes environments, networking is crucial for communication between pods and services. Cilium, a powerful CNI (Container Network Interface), offers advanced networking capabilities, while Argo, a GitOps continuous delivery tool, simplifies deployment workflows.
This guide illustrates how to install Cilium with Argo on Google Kubernetes Engine (GKE), combining the strengths of both tools for efficient networking and deployment management.
Prerequisites:
- A Google Cloud Platform (GCP) account
- Access to the Google Cloud Console
- Basic understanding of Kubernetes concepts
- Installed Google Cloud SDK (gcloud) on your local machine
Instructions
Step 1: Set Up Google Kubernetes Engine (GKE) Cluster:
Step 2: Install Cilium with Argo on GKE:
Install ArgoCD using the following command:
Retrieve the ArgoCD admin password:
Access the ArgoCD UI using port forwarding:
Open a browser and navigate to https://localhost:8080
. Log in using the admin username (admin
) and the password obtained in step 2.
Create a new Git repository or use an existing one to store your Cilium configuration.
Add your Git repository as a new application in the ArgoCD UI, providing the repository URL and other necessary details.
Configure ArgoCD to deploy Cilium on your GKE cluster by specifying the Helm chart repository and values file containing your configuration.
Sample values:
Note: To get ipv4NativeRoutingCIDR
you can run the following commands:
Click “Sync” in the ArgoCD UI to initiate the deployment of Cilium on your GKE cluster.
Step 3: Verify Cilium Installation:
Ensure that the Cilium pods are running in the kube-system
namespace:
Confirm that Cilium is functioning correctly by testing network connectivity and policies within your Kubernetes cluster, or run the cilium connectivity tests.
Install the Cilium CLI:
Run the test:
By following this guide, you have successfully installed Cilium with Argo on Google Kubernetes Engine (GKE). Leveraging Argo’s GitOps capabilities, you can automate the deployment of Cilium, ensuring consistent networking across your Kubernetes clusters. This integrated approach simplifies management tasks and enhances the scalability and security of your Kubernetes infrastructure.