github.com/cilium/cilium@v1.16.2/Documentation/contributing/development/codeoverview.rst (about) 1 .. only:: not (epub or latex or html) 2 3 WARNING: You are looking at unreleased Cilium documentation. 4 Please use the official rendered version released here: 5 https://docs.cilium.io 6 7 .. _code_overview: 8 9 Code Overview 10 ============= 11 12 This section provides an overview of the Cilium & Hubble source code directory 13 structure. It is useful to get an initial overview on where to find what. 14 15 High-level 16 ---------- 17 18 Top-level directories `github.com/cilium/cilium <https://github.com/cilium/cilium>`_: 19 20 api 21 The Cilium & Hubble API definition. 22 23 bpf 24 The eBPF datapath code 25 26 bugtool 27 CLI for collecting agent & system information for bug reporting 28 29 cilium 30 Cilium CLI client 31 32 contrib, tools 33 Additional tooling and resources used for development 34 35 daemon 36 The cilium-agent running on each node 37 38 examples 39 Various example resources and manifests. Typically require to be modified 40 before usage is possible. 41 42 hubble-relay 43 Hubble Relay server 44 45 install 46 Helm deployment manifests for all components 47 48 pkg 49 Common Go packages shared between all components 50 51 operator 52 Operator responsible for centralized tasks which do not require to be 53 performed on each node. 54 55 plugins 56 Plugins to integrate with Kubernetes and Docker 57 58 test 59 End-to-end integration tests run in the :ref:`testsuite-legacy`. 60 61 Cilium 62 ------ 63 64 api/v1/openapi.yaml 65 API specification of the Cilium API. Used for code generation. 66 67 api/v1/models/ 68 Go code generated from openapi.yaml representing all API resources 69 70 bpf 71 The eBPF datapath code 72 73 cilium 74 Cilium CLI client 75 76 cilium-health 77 Cilium cluster connectivity CLI client 78 79 daemon 80 cilium-agent specific code 81 82 plugins/cilium-cni 83 The CNI plugin to integrate with Kubernetes 84 85 plugins/cilium-docker 86 The Docker integration plugin 87 88 Hubble 89 ------ 90 91 The server-side code of Hubble is integrated into the Cilium repository. The 92 Hubble CLI can be found in the separate repository `github.com/cilium/hubble 93 <https://github.com/cilium/hubble>`_. The Hubble UI can be found in the 94 separate repository `github.com/cilium/hubble-ui 95 <https://github.com/cilium/hubble-ui>`_. 96 97 api/v1/external, api/v1/flow, api/v1/observer, api/v1/peer, api/v1/relay 98 API specifications of the Hubble APIs. 99 100 hubble-relay 101 Hubble Relay agent 102 103 pkg/hubble 104 All Hubble specific code 105 106 pkg/hubble/container 107 Ring buffer implementation 108 109 pkg/hubble/filters 110 Flow filtering capabilities 111 112 pkg/hubble/metrics 113 Metrics plugins providing Prometheus based on Hubble's visibility 114 115 pkg/hubble/observe 116 Layer running on top of the Cilium datapath monitoring, feeding the metrics 117 and ring buffer. 118 119 pkg/hubble/parser 120 Network flow parsers 121 122 pkg/hubble/peer 123 Peer service implementation 124 125 pkg/hubble/relay 126 Hubble Relay service implementation 127 128 pkg/hubble/server 129 The server providing the API for the Hubble client and UI 130 131 Important common packages 132 ------------------------- 133 134 pkg/allocator 135 Security identity allocation 136 137 pkg/bpf 138 Abstraction layer to interact with the eBPF runtime 139 140 pkg/client 141 Go client to access Cilium API 142 143 pkg/clustermesh 144 Multi-cluster implementation including control plane and global services 145 146 pkg/controller 147 Base controller implementation for any background operation that requires 148 retries or interval-based invocation. 149 150 pkg/datapath 151 Abstraction layer for datapath interaction 152 153 pkg/defaults 154 All default values 155 156 pkg/elf 157 ELF abstraction library for the eBPF loader 158 159 pkg/endpoint 160 Abstraction of a Cilium endpoint, representing all workloads. 161 162 pkg/endpointmanager 163 Manager of all endpoints 164 165 pkg/envoy 166 Envoy proxy interactions 167 168 pkg/fqdn 169 FQDN proxy and FQDN policy implementation 170 171 pkg/health 172 Network connectivity health checking 173 174 pkg/hive 175 A dependency injection framework for modular composition of applications 176 177 pkg/identity 178 Representation of a security identity for workloads 179 180 pkg/ipam 181 IP address management 182 183 pkg/ipcache 184 Global cache mapping IPs to endpoints and security identities 185 186 pkg/k8s 187 All interactions with Kubernetes 188 189 pkg/kvstore 190 Key-value store abstraction layer with backends for etcd 191 192 pkg/labels 193 Base metadata type to describe all label/metadata requirements for workload 194 identity specification and policy matching. 195 196 pkg/loadbalancer 197 Control plane for load-balancing functionality 198 199 pkg/maps 200 eBPF map representations 201 202 pkg/metrics 203 Prometheus metrics implementation 204 205 pkg/monitor 206 eBPF datapath monitoring abstraction 207 208 pkg/node 209 Representation of a network node 210 211 pkg/option 212 All available configuration options 213 214 pkg/policy 215 Policy enforcement specification & implementation 216 217 pkg/proxy 218 Layer 7 proxy abstraction 219 220 pkg/service 221 Representation of a load-balancing service 222 223 pkg/trigger 224 Implementation of trigger functionality to implement event-driven 225 functionality