Skip to content

Commit 1cf4cd0

Browse files
committed
Part 1 and 2 content
1 parent f60bc6a commit 1cf4cd0

File tree

1 file changed

+92
-48
lines changed

1 file changed

+92
-48
lines changed

docs/en/install-upgrade/air-gapped-install.asciidoc

Lines changed: 92 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
Some components of the {stack} require additional configuration and local dependencies in order to deploy in environments without internet access. This guide gives an overview of this setup scenario and helps bridge together existing documentation for individual parts of the stack.
55

6+
// Self-managed install
67
* <<air-gapped-self-managed-linux>>
78
** <<air-gapped-elasticsearch>>
89
** <<air-gapped-kibana>>
@@ -17,17 +18,15 @@ Some components of the {stack} require additional configuration and local depend
1718
** <<air-gapped-elastic-artifact-registry>>
1819
** <<air-gapped-elastic-endpoint-artifact-repository>>
1920

20-
// force line break
21-
22-
* <<air-gapped-kubernetes-and-open-shift>>
21+
// Kubernetes and Open Shift
22+
* <<air-gapped-kubernetes-and-openshift>>
2323
** <<air-gapped-k8s-os-elastic-kubernetes-operator>>
2424
** <<air-gapped-k8s-os-elastic-package-registry>>
2525
** <<air-gapped-k8s-os-elastic-artifact-registry>>
2626
** <<air-gapped-k8s-os-elastic-endpoint-artifact-repository>>
2727
** <<air-gapped-k8s-os-ironbank-secure-images>>
2828

29-
// force line break
30-
29+
// Appendices
3130
* <<air-gapped-elastic-package-registry-example>>
3231
* <<air-gapped-elastic-artifact-registry-example>>
3332
* <<air-gapped-epr-kubernetes-example>>
@@ -42,120 +41,165 @@ Some components of the {stack} require additional configuration and local depend
4241
[[air-gapped-self-managed-linux]]
4342
=== 1. Self-Managed Install (Linux)
4443

45-
**TBD Intro text**
44+
Refer to the section for each Elastic compopnent for air-gapped installation configuration and dependencies in a self-managed Linux environment.
4645

4746
[discrete]
4847
[[air-gapped-elasticsearch]]
49-
=== 1.1. {es}
48+
==== 1.1. {es}
5049

51-
Air-gapped install of Elasticsearch is fairly straightforward, as this component does not have any default dependencies on other services. Detailed install & configuration guides are available in the {es} {ref}/install-elasticsearch.html[official install docs].
50+
Air-gapped install of {es} is fairly straightforward, as this component does not have any default dependencies on other services. Detailed install and configuration instructions are available in the {ref}/install-elasticsearch.html[{es} install documentation].
5251

5352
[discrete]
5453
[[air-gapped-kibana]]
55-
=== 1.2. {kib}
54+
==== 1.2. {kib}
55+
56+
Air-gapped install of {kib} may require a number of additional services in the local network in order to access some of the features. General install and configuration guides are available in the {kibana-ref}/install.html[{kib} install documentation].
57+
58+
Specifically (see appropriate sections in the rest of the doc):
59+
60+
* To be able to use {kib} mapping visualizations, you need to set up and configure the <<air-gapped-elastic-maps-service,Elastic Maps Service>>.
61+
* To be able to use {kib} sample data, install or update hundreds of prebuilt alert rules, and explore available data integrations, you need to set up and configure the <<air-gapped-elastic-package-registry,{package-registry}>>.
62+
To provide detection rule updates for {endpoint-sec} agents, you need to set up and configure the <<air-gapped-elastic-endpoint-artifact-repository,Elastic Endpoint Artifact Repository>>.
63+
To access {ents} capabilities (in addition to the general search capabilities of {es}), you need to set up and configure <<air-gapped-enterprise-search,{ents}>>.
64+
To access the APM integration, you need to set up and configure <<air-gapped-elastic-apm,Elastic APM>>.
5665

57-
tbd
5866

5967
[discrete]
6068
[[air-gapped-beats]]
61-
=== 1.3. {beats}
69+
==== 1.3. {beats}
6270

63-
tbd
71+
Elastic {beats} are light-weight data shippers. They do not require any unique setup in the air-gapped scenario. To learn more, refer to the {beats-ref}/beats-reference.html[{beats} documentation].
6472

6573
[discrete]
6674
[[air-gapped-logstash]]
67-
=== 1.4. {ls}
75+
==== 1.4. {ls}
6876

69-
tbd
77+
{ls} is a versatile data shipping and processing application. It does not require any unique setup in the air-gapped scenario. To learn more, refer to the {logstash-ref}/introduction.html[{ls} documentation].
7078

7179
[discrete]
7280
[[air-gapped-elastic-agent]]
73-
=== 1.5. {agent}
81+
==== 1.5. {agent}
82+
83+
Air-gapped install of {agent} depends on the <<air-gapped-elastic-package-registry,{package-registry}>> and the <<air-gapped-elastic-artifact-registry,Elastic Artifact Registry>> for most use-cases. The agent itself is fairly lightweight and installs dependencies only as required by its configuration. In terms of connections to these dependencies, {agents} need to be able to connect to the Elastic Artifact Registry directly, but {package-registry} connections are handled through <<air-gapped-kibana,{kib}>>.
84+
85+
Additionally, if the {agent} {elastic-defend} integration is used, then <<air-gapped-elastic-endpoint-artifact-repository,Elastic Endpoint Artifact Repository>> is necessary in order to deploy updates for some of the detection and prevention capabilities.
86+
87+
To learn more about install and configuration, refer to the {fleet-guide}/elastic-agent-installation.html[{agent} install documentation].
88+
89+
To get a better understanding of how to work with {agent} configuration settings and policies, refer to <<air-gapped-agent-integration-guide>>.
7490

75-
tbd
7691

7792
[discrete]
7893
[[air-gapped-fleet]]
79-
=== 1.6. {fleet}
94+
==== 1.6. {fleet-server}
8095

81-
tbd
96+
{fleet-server} is a required middleware component for any scalable deployment of the {agent}. Air-gapped dependencies of {fleet-server} are the same as those of the <<air-gapped-elastic-agent,{agent}>>.
97+
98+
To learn more about installing {fleet-server}, refer to the {fleet-guide}/fleet-server.html[{fleet-server} set up documentation].
8299

83100
[discrete]
84101
[[air-gapped-elastic-apm]]
85-
=== 1.7. Elastic APM
102+
==== 1.7. Elastic APM
86103

87-
tbd
104+
Air-gapped setup of the APM server is possible in two ways:
105+
106+
* By setting up one of the {agent} deployments with an APM integration, as described in {apm-guide-ref}/apm-integration-upgrade-steps.html[Switch a self-installation to the APM integration].
107+
* Or, by installing a standalone Elastic APM Server, as described in the APM {apm-guide-ref}/configuring-howto-apm-server.html[configuration documentation].
88108

89109
[discrete]
90110
[[air-gapped-elastic-maps-service]]
91-
=== 1.8. {ems}
111+
==== 1.8. {ems}
92112

93-
tbd
113+
To learn about air-gapped setup of the {ems}, refer to {kibana-ref}/maps-connect-to-ems.html#elastic-maps-server[Host {ems} locally] in the {kib} documentation.
94114

95115
[discrete]
96116
[[air-gapped-enterprise-search]]
97-
=== 1.9. {ents}
117+
==== 1.9. {ents}
98118

99-
tbd
119+
Detailed install and configuration instructions are available in the {enterprise-search-ref}/installation.html[{ents} install documentation].
100120

101121
[discrete]
102122
[[air-gapped-elastic-package-registry]]
103-
=== 1.10. {package-registry}
123+
==== 1.10. {package-registry}
104124

105-
tbd
125+
Air-gapped install of the EPR is possible using any OCI-compatible runtime like Podman (a typical choice for RHEL-like Linux systems) or Docker. Links to the official container image and usage guide is available on the {fleet-ref}/air-gapped.html[Air-gapped environments] page in the {fleet} and {agent} Guide.
126+
127+
Refer to <<air-gapped-elastic-package-registry-example>> for additional setup examples.
128+
129+
NOTE: Besides setting up the EPR service, you also need to <<air-gapped-kibana,configure {kib}>> to use this service. If using TLS with the EPR service, it is also necessary to set up {kib} to trust the certificate presented by the EPR.
106130

107131
[discrete]
108132
[[air-gapped-elastic-artifact-registry]]
109-
=== 1.11. Elastic Artifact Registry
133+
==== 1.11. Elastic Artifact Registry
110134

111-
tbd
135+
Air-gapped install of the Elastic artifact registry is necessary in order to enable {agent} deployments to perform self-upgrades and install certain components which are needed for some of the data integrations (that is, in addition to what is also retrieved from the EPR). To learn how to set up such a repository, refer to {fleet-guide}/air-gapped.html#host-artifact-registry[Host your own artifact registry for binary downloads] in the {fleet} and {elastic-agent} Guide.
136+
137+
Refer to <<air-gapped-elastic-artifact-registry-example>> for additional setup examples.
138+
139+
NOTE: When setting up own web server, such as NGINX, to function as the Elastic Artifact Registry, it is recommended not to use TLS as there are, currently, no direct ways to establish certificate trust between {agents} and this service.
112140

113141
[discrete]
114142
[[air-gapped-elastic-endpoint-artifact-repository]]
115-
=== 1.12. Elastic Endpoint Artifact Repository
143+
==== 1.12. Elastic Endpoint Artifact Repository
144+
145+
Air-gapped setup of this component is, essentially, identical to the setup of the <<air-gapped-elastic-artifact-registry,Elastic Artifact Registry>> except that different artifacts are served. To learn more, refer to {security-guide}/offline-endpoint.html[Configure offline endpoints and air-gapped environments] in the Elastic Security guide.
116146

117147
[discrete]
118-
[[air-gapped-kubernetes-and-open-shift]]
148+
[[air-gapped-kubernetes-and-openshift]]
119149
=== 2. Kubernetes & OpenShift Install
120150

121-
Setting up air-gapped kubernetes/openshift installs of the {stack} has some unique concerns, but the general dependencies are the same as in the self-managed install case on a regular Linux machine.
122-
151+
Setting up air-gapped Kubernetes or OpenShift installs of the {stack} has some unique concerns, but the general dependencies are the same as in the self-managed install case on a regular Linux machine.
123152

124153
[discrete]
125154
[[air-gapped-k8s-os-elastic-kubernetes-operator]]
126-
=== 2.1. Elastic Kubernetes Operator (ECK)
155+
==== 2.1. Elastic Kubernetes Operator (ECK)
127156

128-
tbd
157+
The Elastic Kubernetes operator is an additional component in the Kubernetes OpenShift install that, essentially, does a lot of the work in installing, configuring, and updating deployments of the {stack}. For details, refer to the {eck-ref}/k8s-air-gapped.html[{eck} install instructions].
158+
159+
The main requirements are:
160+
161+
* Syncing container images for ECK and all other {stack} components over to a locally-accessible container repository.
162+
* Modifying the ECK helm chart configuration so that ECK is aware that it is supposed to use your offline container repository instead of the public Elastic repository.
163+
* Optionally, disabling ECK telemetry collection in the ECK helm chart. This configuration propagates to all other Elastic components, such as {kib}.
164+
* Building your custom deployment container image for the Elastic Artifact Registry.
165+
* Building your custom deployment container image for the Elastic Endpoint Artifact Repository.
129166

130167
[discrete]
131168
[[air-gapped-k8s-os-elastic-package-registry]]
132-
=== 2.2. Elastic Package Registry
169+
==== 2.2. Elastic Package Registry
133170

134-
tbd
171+
The container image can be downloaded from the official Elastic Docker repository, as described in the {fleet} and {elastic-agent} {fleet-guide}/air-gapped.html[air-gapped environments] documentation.
172+
173+
This container would, ideally, run as a Kubernetes deployment. Refer to <<air-gapped-epr-kubernetes-example>> for examples.
135174

136175
[discrete]
137176
[[air-gapped-k8s-os-elastic-artifact-registry]]
138-
=== 2.3. Elastic Artifact Registry
177+
==== 2.3. Elastic Artifact Registry
139178

140-
tbd
179+
A custom container would need to be created following similar instructions to setting up a web server in the <<air-gapped-elastic-artifact-registry,self-managed install case>>. For example, a container file using an NGINX base image could be used to run a build similar to the example described in <<air-gapped-elastic-artifact-registry-example>>.
141180

142181
[discrete]
143182
[[air-gapped-k8s-os-elastic-endpoint-artifact-repository]]
144-
=== 2.4. Elastic Endpoint Artifact Repository
183+
==== 2.4. Elastic Endpoint Artifact Repository
145184

146-
tbd
185+
Just like Elastic Artifact Registry. A custom container would need to be created following similar instructions to setting up a web server for the <<air-gapped-elastic-artifact-registry,self-managed install case>>.
147186

148187
[discrete]
149188
[[air-gapped-k8s-os-ironbank-secure-images]]
150-
=== 2.5. Ironbank Secure Images for Elastic
189+
==== 2.5. Ironbank Secure Images for Elastic
151190

152-
tbd
191+
Besides the public link:https://www.docker.elastic.co[Elastic container repository], most {stack} container images are also available in Platform One's link:https://ironbank.dso.mil/repomap?vendorFilters=Elastic&page=1&sort=1[Iron Bank].
153192

154193
[discrete]
155194
[[air-gapped-elastic-package-registry-example]]
156195
=== Appendix A - {package-registry}
157196

158-
tbd
197+
The following script generates a SystemD service file on a RHEL 8 system in order to run EPR with Podman in a production environment.
198+
199+
[source,shell]
200+
----
201+
toast
202+
----
159203

160204
[discrete]
161205
[[air-gapped-elastic-artifact-registry-example]]
@@ -175,31 +219,31 @@ tbd
175219

176220
[discrete]
177221
[[air-gapped-agent-integration-terminology]]
178-
=== D.1. Terminology
222+
==== D.1. Terminology
179223

180224
tbd
181225

182226
[discrete]
183227
[[air-gapped-agent-integration-configure]]
184-
=== D.2. How to configure
228+
==== D.2. How to configure
185229

186230
tbd
187231

188232
[discrete]
189233
[[air-gapped-agent-integration-configure-kibana]]
190-
=== D.2.1. Using {kib} UI
234+
==== D.2.1. Using {kib} UI
191235

192236
tbd
193237

194238
[discrete]
195239
[[air-gapped-agent-integration-configure-yml]]
196-
=== D.2.2. Using `kibana.yml` config file
240+
==== D.2.2. Using `kibana.yml` config file
197241

198242
tbd
199243

200244
[discrete]
201245
[[air-gapped-agent-integration-configure-fleet-api]]
202-
=== D.2.3. Using {kib} {fleet} API
246+
==== D.2.3. Using {kib} {fleet} API
203247

204248
tbd
205249

0 commit comments

Comments
 (0)