blob: 9c7f7bca2ce5c05abf3170239a2f7ed847e69a2a [file] [log] [blame]
Larry Peterson92497752023-08-16 14:17:24 -07001.. Repositories
2.. ---------------
llpb3534642023-08-02 09:23:52 -07003
Larry Peterson92497752023-08-16 14:17:24 -07004Aether is a complex system, assembled from multiple components
5spanning several Git repositories. These include repos for different
6subsystems (e.g., AMP, SD-Core, SD-RAN), but also for different stages
Larry Peterson5d6b3b32023-09-05 15:11:55 -07007of the development pipeline (e.g., source code, deployment artifacts,
8configuration specs). This rest of this section identifies all the
9Aether-related repositories, with the OnRamp repos listed at the end
Larry Petersoncebca8d2023-10-26 07:24:27 -070010serving as the starting point for anyone who wants to come
11up to speed on the rest of the system.
Larry Peterson5d6b3b32023-09-05 15:11:55 -070012
13.. admonition:: Troubleshooting Hint
14
15 This guide includes *Troubleshooting Hints* like this one. Our first
16 hint is to recommend that the guide be followed sequentially. This
17 is because each section establishes a milestone that may prove
18 useful when you find yourself trying to troubleshoot a problem in a
19 later section. For example, isolating a problem with a physical gNB
20 is easier if you know that connectivity to the AMF and UPF works
21 correctly, which the *Emulated RAN* section helps to establish.
22
23 Our second hint is to join the ``#aether-onramp`` channel of the
24 `ONF Workspace <https://onf-community.slack.com/>`__ on Slack, where
25 questions about using OnRamp to bring up Aether are asked and
26 answered. The ``Troubleshooting`` bookmark for that channel includes
27 summaries of known issues.
llpb3534642023-08-02 09:23:52 -070028
29Source Repos
30~~~~~~~~~~~~~~~~
31
32Source code for Aether and all of its subsystems can be found in
33the following repositories:
34
35* Gerrit repository for the CORD Project
36 (https://gerrit.opencord.org): Microservices for AMP, plus source
37 for the jobs that implement the CI/CD pipeline.
38
39* GitHub repository for the OMEC Project
40 (https://github.com/omec-project): Microservices for SD-Core, plus
41 the emulator (gNBsim) that subjects SD-Core to RAN workloads.
42
43* GitHub repository for the ONOS Project
44 (https://github.com/onosproject): Microservices for SD-Fabric and
45 SD-RAN, plus the YANG models used to generate the Aether API.
46
47* GitHub repository for the Stratum Project
48 (https://github.com/stratum): On-switch components of SD-Fabric.
49
50For Gerrit, you can either browse Gerrit (select the `master` branch)
51or clone the corresponding *<repo-name>* by typing:
52
53.. code-block::
54
55 $ git clone ssh://gerrit.opencord.org:29418/<repo-name>
56
57If port 29418 is blocked by your network administrator, you can try cloning
58using https instead of ssh:
59
60.. code-block::
61
62 $ git clone https://gerrit.opencord.org/<repo-name>
63
64Anyone wanting to participate in Aether's ongoing development will
65want to learn how to contribute new features to these source repos.
66
67Artifact Repos
68~~~~~~~~~~~~~~~~
69
70Aether includes a *Continuous Integration (CI)* pipeline that builds
71deployment artifacts (e.g., Helm Charts, Docker Images) from the
72source code. These artifacts are stored in the following repositories:
73
74Helm Charts
75
76 | https://charts.aetherproject.org
77 | https://charts.onosproject.org
78 | https://charts.opencord.org
79 | https://charts.atomix.io
80 | https://sdrancharts.onosproject.org
81 | https://charts.rancher.io/
82
83Docker Images
84
85 | https://registry.aetherproject.org
86
87Note that as of version 1.20.8, Kubernetes uses the `Containerd
88<https://containerd.io/>`__ runtime system instead of Docker. This is
89transparent to anyone using Aether, which manages containers
90indirectly through Kubernetes (e.g., using ``kubectl``), but does
Larry Petersoncebca8d2023-10-26 07:24:27 -070091impact anyone who directly depends on the Docker toolchain. Also note
llpb3534642023-08-02 09:23:52 -070092that while Aether documentation often refers its use of "Docker
93containers," it is now more accurate to say that Aether uses
94`OCI-Compliant containers <https://opencontainers.org/>`__.
95
96The Aether CI pipeline keeps the above artifact repos in sync with the
97source repos listed above. Among those source repos are the source
98files for all the Helm Charts:
99
100 | ROC: https://gerrit.opencord.org/plugins/gitiles/roc-helm-charts
101 | SD-RAN: https://github.com/onosproject/sdran-helm-charts
102 | SD-Core: https://gerrit.opencord.org/plugins/gitiles/sdcore-helm-charts
103 | SD-Fabric (Servers): https://github.com/onosproject/onos-helm-charts
104 | SD-Fabric (Switches): https://github.com/stratum/stratum-helm-charts
105
106The QA tests run against code checked into these source repos can be
107found here:
108
109 | https://gerrit.opencord.org/plugins/gitiles/aether-system-tests
110
Larry Petersoncebca8d2023-10-26 07:24:27 -0700111The specification for the CI pipeline, which invokes these QA tests,
112gates merge requests, and publishes artifacts, can be found here:
113
114 | https://gerrit.opencord.org/plugins/gitiles/aether-ci-management
115
llpb3534642023-08-02 09:23:52 -0700116For more information about Aether's CI pipeline, including its QA and
117version control strategy, we recommend the Lifecycle Management
118chapter of our companion Edge Cloud Operations book.
119
120.. _reading_cicd:
121.. admonition:: Further Reading
122
123 L. Peterson, A. Bavier, S. Baker, Z. Williams, and B. Davie. `Edge
124 Cloud Operations: A Systems Approach
125 <https://ops.systemsapproach.org/lifecycle.html>`__. June 2022.
126
127OnRamp Repos
128~~~~~~~~~~~~~~~~~~~
129
Larry Petersondef1b672023-08-07 14:06:24 -0700130The process to deploy the artifacts listed above, sometimes
llpb3534642023-08-02 09:23:52 -0700131referred to as GitOps, manages the *Continuous Deployment (CD)* half
132of the CI/CD pipeline. OnRamp's approach to GitOps uses a different
133mechanism than the one the ONF ops team originally used to manage its
134multi-site deployment of Aether. The latter approach has a large
Larry Petersondef1b672023-08-07 14:06:24 -0700135startup cost, which has proven difficult to replicate. (It also locks
136you into deployment toolchain that may or may not be appropriate for
137your situation.)
llpb3534642023-08-02 09:23:52 -0700138
139In its place, OnRamp adopts minimal Ansible tooling. This makes it
140easier to take ownership of the configuration parameters that define
141your specific deployment scenario. The rest of this guide walks you
142through a step-by-step process of deploying and operating Aether on
143your own hardware. For now, we simply point you at the collection of
144OnRamp repos:
145
146 | Deploy Aether: https://github.com/opennetworkinglab/aether-onramp
147 | Deploy 5G Core: https://github.com/opennetworkinglab/aether-5gc
148 | Deploy 4G Core: https://github.com/opennetworkinglab/aether-4gc
149 | Deploy Management Plane: https://github.com/opennetworkinglab/aether-amp
150 | Deploy 5G RAN Simulator: https://github.com/opennetworkinglab/aether-gnbsim
151 | Deploy Kubernetes: https://github.com/opennetworkinglab/aether-k8s
152
153It is the first repo that defines a way to integrate all of the Aether
154artifacts into an operational system. That repo, in turn, includes the
155other repos as submodules. Note that each of the submodules is
156self-contained if you are interested in deploying just that subsystem,
157but this guide approaches the deployment challenge from an
Larry Petersoncebca8d2023-10-26 07:24:27 -0700158integrated, end-to-end perspective.
llpb3534642023-08-02 09:23:52 -0700159
160Because OnRamp uses Ansible as its primary deployment tool, a general
161understanding of Ansible is helpful (see the suggested reference).
162However, this guide walks you, step-by-step, through the process of
163deploying and operating Aether, so previous experience with Ansible is
164not a requirement. Note that Ansible has evolved to be both a
165"Community Toolset" anyone can use to manage a software deployment,
166and an "Automation Platform" offered as a service by RedHat. OnRamp
167uses the toolset, but not the platform/service.
168
169.. _reading_ansible:
170.. admonition:: Further Reading
171
172 `Overview: How Ansible Works <https://www.ansible.com/overview/how-ansible-works>`__.
173