Overview of Kubernetes resources and manifests created by Cilium, explaining agents, Envoy, operator, ConfigMaps, ServiceAccounts, RBAC, CRDs, and installation methods
This lesson explains what Kubernetes resources Cilium creates during installation and why each one exists. Later lessons will cover installation methods in depth (Cilium CLI vs. Helm) and guidance for choosing the right option for your environment.At a high level, installing Cilium will create:
A DaemonSet to run the Cilium agent on every node
A DaemonSet to run Envoy (per-node) for L7 functionality
A Deployment for the cilium-operator (cluster-scoped controller)
ConfigMaps for agent and Envoy configuration
ServiceAccounts for each component
RBAC ClusterRoles and ClusterRoleBindings
CustomResourceDefinitions (CRDs) used by Cilium (for policies and observability)
Below are representative Kubernetes manifests and concise explanations for the primary components so you can recognize what gets deployed and why.Table: primary Cilium resources and their purpose
Resource Type
Purpose
Example / Notes
DaemonSet (cilium)
Runs one Cilium agent per node to manage datapath, identity, and policy enforcement
See DaemonSet example below
DaemonSet (cilium-envoy)
Runs Envoy on each node for L7 proxying and telemetry
Envoy provides HTTP/gRPC L7 functionality
Deployment (cilium-operator)
Cluster-scoped controller for CRD reconciliation, garbage collection, and node management
Typically deployed with multiple replicas for HA
ConfigMap
Holds agent and Envoy configuration consumed at runtime
cilium-config, cilium-envoy-config
ServiceAccount
Isolates permissions for each component
One per component (agent, envoy, operator)
RBAC (ClusterRole/Binding)
Grants cluster-wide permissions required by Cilium components
This DaemonSet ensures a Cilium agent runs on every node. The agent manages datapath programming, identity allocation, policy enforcement, node-local telemetry, and other responsibilities tied to the node’s networking stack.DaemonSet: Cilium Envoy (L7 proxy)
The Envoy DaemonSet provides per-node L7 proxying for HTTP/gRPC and richer telemetry. Envoy runs alongside the Cilium agent and handles L7 policies and observability when those features are enabled.Deployment: Cilium operator
This ConfigMap holds agent configuration values (identity mode, GC intervals, debugging, policy mode, datapath/tunneling options, etc.). You can customize many more settings depending on your cluster topology and feature needs.ConfigMap: cilium-envoy-config (Envoy bootstrap)
Envoy requires a bootstrap configuration (JSON/YAML). The key name must remain bootstrap-config.json for compatibility; the snippet above shows a minimal structure for Envoy’s admin interface and bootstrap extensions.ServiceAccounts
Each component uses a dedicated ServiceAccount so you can grant the minimal RBAC permissions required for its tasks.RBAC: ClusterRole and Binding (example for the agent)
ClusterRole and ClusterRoleBinding grant cluster-wide privileges to the component ServiceAccounts. Similar RBAC objects are created for the operator and other components.
Cilium requires elevated cluster privileges to watch and manipulate Kubernetes objects (nodes, pods, endpoints, CRDs). Review the RBAC rules before applying manifests in production clusters and follow your security policy for least-privilege access.
CustomResourceDefinitions (CRDs)Cilium installs several CRDs that enable high-level APIs for policy, visibility, and endpoint resources (for example: CiliumNetworkPolicy, CiliumClusterwideNetworkPolicy, CiliumEndpoint). These CRDs allow controllers and the operator to persist and reconcile Cilium-specific state.For more on Kubernetes CRDs, see: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/Putting it together — what to expect after installation
Node-local pods: cilium and cilium-envoy run across nodes via DaemonSets.
Cluster controller: cilium-operator runs as a Deployment with replicas.
Configuration: cilium-config and cilium-envoy-config ConfigMaps are created.
Security: ServiceAccounts and RBAC ClusterRoles/Bindings grant required permissions.
APIs: Cilium CRDs are registered for policy and resource management.
If you inspect a cluster after installing Cilium, look in the kube-system namespace for DaemonSets (cilium, cilium-envoy), the cilium-operator Deployment, ConfigMaps (cilium-config, cilium-envoy-config), component ServiceAccounts, and multiple Cilium-related CRDs.
Installation methods — CLI vs. HelmThere are two primary ways to install Cilium on Kubernetes:
Cilium CLI
The Cilium project provides a dedicated CLI (cilium) that generates and applies per-environment manifests.
The CLI bundles necessary tooling and renders Helm templates internally, so you do not need to install Helm separately.
Note: The Cilium CLI internally uses Helm templates to render manifests. Whether you install via the CLI or Helm directly, Helm templates are involved in producing the manifests applied to the cluster.