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