blob: 24697719b7e17c42f81ed9c43da3903a48532b7b [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
10serving as the starting point for anyone that wants to come
11up-to-speed on the rest of the system.
12
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
91impact anyone that directly depends on the Docker toolchain. Also note
92that 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
111For more information about Aether's CI pipeline, including its QA and
112version control strategy, we recommend the Lifecycle Management
113chapter of our companion Edge Cloud Operations book.
114
115.. _reading_cicd:
116.. admonition:: Further Reading
117
118 L. Peterson, A. Bavier, S. Baker, Z. Williams, and B. Davie. `Edge
119 Cloud Operations: A Systems Approach
120 <https://ops.systemsapproach.org/lifecycle.html>`__. June 2022.
121
122OnRamp Repos
123~~~~~~~~~~~~~~~~~~~
124
Larry Petersondef1b672023-08-07 14:06:24 -0700125The process to deploy the artifacts listed above, sometimes
llpb3534642023-08-02 09:23:52 -0700126referred to as GitOps, manages the *Continuous Deployment (CD)* half
127of the CI/CD pipeline. OnRamp's approach to GitOps uses a different
128mechanism than the one the ONF ops team originally used to manage its
129multi-site deployment of Aether. The latter approach has a large
Larry Petersondef1b672023-08-07 14:06:24 -0700130startup cost, which has proven difficult to replicate. (It also locks
131you into deployment toolchain that may or may not be appropriate for
132your situation.)
llpb3534642023-08-02 09:23:52 -0700133
134In its place, OnRamp adopts minimal Ansible tooling. This makes it
135easier to take ownership of the configuration parameters that define
136your specific deployment scenario. The rest of this guide walks you
137through a step-by-step process of deploying and operating Aether on
138your own hardware. For now, we simply point you at the collection of
139OnRamp repos:
140
141 | Deploy Aether: https://github.com/opennetworkinglab/aether-onramp
142 | Deploy 5G Core: https://github.com/opennetworkinglab/aether-5gc
143 | Deploy 4G Core: https://github.com/opennetworkinglab/aether-4gc
144 | Deploy Management Plane: https://github.com/opennetworkinglab/aether-amp
145 | Deploy 5G RAN Simulator: https://github.com/opennetworkinglab/aether-gnbsim
146 | Deploy Kubernetes: https://github.com/opennetworkinglab/aether-k8s
147
148It is the first repo that defines a way to integrate all of the Aether
149artifacts into an operational system. That repo, in turn, includes the
150other repos as submodules. Note that each of the submodules is
151self-contained if you are interested in deploying just that subsystem,
152but this guide approaches the deployment challenge from an
153integrated/end-to-end perspective.
154
155Because OnRamp uses Ansible as its primary deployment tool, a general
156understanding of Ansible is helpful (see the suggested reference).
157However, this guide walks you, step-by-step, through the process of
158deploying and operating Aether, so previous experience with Ansible is
159not a requirement. Note that Ansible has evolved to be both a
160"Community Toolset" anyone can use to manage a software deployment,
161and an "Automation Platform" offered as a service by RedHat. OnRamp
162uses the toolset, but not the platform/service.
163
164.. _reading_ansible:
165.. admonition:: Further Reading
166
167 `Overview: How Ansible Works <https://www.ansible.com/overview/how-ansible-works>`__.
168