forked from Shrinidhikulkarni7/docker-elk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add App Search extension (deviantony#471)
Co-authored-by: Antoine Cotten <[email protected]>
- Loading branch information
Showing
7 changed files
with
178 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -eu | ||
set -o pipefail | ||
|
||
|
||
source "$(dirname ${BASH_SOURCE[0]})/lib/testing.sh" | ||
|
||
|
||
declare MODE="" | ||
|
||
log 'Waiting for readiness of Elasticsearch' | ||
poll_ready elasticsearch 'http:https://localhost:9200/' 'elastic:testpasswd' | ||
|
||
log 'Waiting for readiness of App Search' | ||
poll_ready app-search 'http:https://localhost:3002/login' ':' quiet | ||
|
||
log 'Retrieving private key from Elasticsearch' | ||
response="$(curl 'http:https://localhost:9200/.app-search-actastic-loco_moco_api_tokens/_search?q=name:private-key' -s -u elastic:testpasswd)" | ||
hits="$(jq -rn --argjson data "${response}" '$data.hits.hits')" | ||
echo "$hits" | ||
count="$(jq -rn --argjson data "${response}" '$data.hits.total.value')" | ||
if [[ $count -ne 1 ]]; then | ||
echo "Private key not found. Expected 1 result, got ${count}" | ||
exit 1 | ||
fi | ||
key="$(jq -rn --argjson data "${hits}" '$data[0]._source.authentication_token')" | ||
|
||
log 'Creating App Search engine' | ||
response="$(curl 'http:https://localhost:3002/api/as/v1/engines' -s -d '{"name": "dockerelk"}' -H "Authorization: Bearer ${key}")" | ||
echo "$response" | ||
name="$(jq -rn --argjson data "${response}" '$data.name')" | ||
if [[ $name != 'dockerelk' ]]; then | ||
echo 'Failed to create engine' | ||
exit 1 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
ARG ELK_VERSION | ||
|
||
# https://www.docker.elastic.co/ | ||
FROM docker.elastic.co/app-search/app-search:${ELK_VERSION} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
# App Search extension | ||
|
||
Elastic App Search provides access to a set of robust APIs and people friendly dashboard controls to deliver amazing | ||
search experiences, all backed by the Elastic Stack. | ||
|
||
## Requirements | ||
|
||
* 2 GB of free RAM, on top of the resources required by the other stack components and extensions | ||
|
||
App Search exposes the TCP port `3002` for its Web UI and API. | ||
|
||
## Usage | ||
|
||
To include App Search in the stack, run Docker Compose from the root of the repository with an additional command | ||
line argument referencing the `app-search-compose.yml` file: | ||
|
||
```console | ||
$ docker-compose -f docker-compose.yml -f extensions/app-search/app-search-compose.yml up | ||
``` | ||
|
||
Allow a few minutes for the stack to start, then open your web browser at the address http:https://localhost:3002 to see the | ||
App Search home page. | ||
|
||
App Search is configured on first boot with the following default credentials: | ||
|
||
* user: *app_search* | ||
* password: *changeme* | ||
|
||
## Security | ||
|
||
The App Search password is defined inside the Compose file via the `APP_SEARCH_DEFAULT_PASSWORD` environment variable. | ||
We highly recommend choosing a more secure password than the default one for security reasons. | ||
|
||
To do so, change the value `APP_SEARCH_DEFAULT_PASSWORD` environment variable inside the Compose file **before the first | ||
boot**: | ||
|
||
```yaml | ||
app-search: | ||
|
||
environment: | ||
APP_SEARCH_DEFAULT_PASSWORD: {{some strong password}} | ||
``` | ||
|
||
> :warning: The default App Search password can only be set during the initial boot. Once the password is persisted in | ||
> Elasticsearch, it can only be changed via the Elasticsearch API. | ||
For more information, please refer to [Security and User Management][appsearch-security]. | ||
|
||
## Configuring App Search | ||
|
||
The App Search configuration is stored in [`config/app-search.yml`][config-appsearch]. You can modify this file using | ||
the [Default App Search configuration][appsearch-config] as a reference. | ||
|
||
You can also specify the options you want to override by setting environment variables inside the Compose file: | ||
|
||
```yaml | ||
app-search: | ||
|
||
environment: | ||
app_search.auth.source: standard | ||
worker.threads: '6' | ||
``` | ||
|
||
Any change to the App Search configuration requires a restart of the App Search container: | ||
|
||
```console | ||
$ docker-compose -f docker-compose.yml -f extensions/app-search/app-search-compose.yml restart app-search | ||
``` | ||
|
||
Please refer to the following documentation page for more details about how to configure App Search inside a Docker | ||
container: [Run App Search as a Docker container][appsearch-docker]. | ||
|
||
## See also | ||
|
||
[App Search Self-Managed documentation][appsearch-selfmanaged] | ||
|
||
|
||
[config-appsearch]: ./config/app-search.yml | ||
|
||
[appsearch-security]: https://swiftype.com/documentation/app-search/self-managed/security | ||
[appsearch-config]: https://swiftype.com/documentation/app-search/self-managed/configuration | ||
[appsearch-docker]: https://swiftype.com/documentation/app-search/self-managed/installation#docker | ||
[appsearch-selfmanaged]: https://swiftype.com/documentation/app-search/self-managed/overview |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
version: '3.2' | ||
|
||
services: | ||
app-search: | ||
build: | ||
context: extensions/app-search/ | ||
args: | ||
ELK_VERSION: $ELK_VERSION | ||
volumes: | ||
- type: bind | ||
source: ./extensions/app-search/config/app-search.yml | ||
target: /usr/share/app-search/config/app-search.yml | ||
read_only: true | ||
environment: | ||
JAVA_OPTS: -Xmx2g -Xms2g | ||
APP_SEARCH_DEFAULT_PASSWORD: changeme | ||
ports: | ||
- '3002:3002' | ||
networks: | ||
- elk | ||
depends_on: | ||
- elasticsearch |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
## App Search core configuration | ||
## https://swiftype.com/documentation/app-search/self-managed/configuration | ||
# | ||
|
||
# IP address App Search listens on | ||
app_search.listen_host: 0.0.0.0 | ||
|
||
# URL at which users reach App Search | ||
app_search.external_url: http:https://localhost:3002 | ||
|
||
# Elasticsearch URL and credentials | ||
elasticsearch.host: http:https://elasticsearch:9200 | ||
elasticsearch.username: elastic | ||
elasticsearch.password: changeme | ||
|
||
# Allow App Search to modify Elasticsearch settings. Used to enable auto-creation of Elasticsearch indexes. | ||
allow_es_settings_modification: true |