Skip to content

Commit

Permalink
chore: add docs and update README
Browse files Browse the repository at this point in the history
  • Loading branch information
medcl committed Dec 2, 2024
1 parent febff72 commit b8ed774
Show file tree
Hide file tree
Showing 214 changed files with 11,593 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: Bug report
about: Create a bug report to help fix a problem with the INFINI Gateway

---

### Description

A description of what the bug is.

### Steps to reproduce

1. Start INFINI Gateway
2. Second step
3. Third step

### Expected behavior

A description of what you expected to happen.

### Actual behavior

A description of what happens instead.

### Environment

* Build: [e.g. gateway 1.0.0_SNAPSHOT 2021-09-05 15:41:02 1a8f196 - type "-v" in the Command Palette]
* Operating system and version: [e.g. macOS 10.14, Windows 10, Ubuntu 18.04]
* [Linux] Desktop Environment and/or Window Manager: [e.g. Gnome, LXDE, i3]
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Looking for help or discussion
url: https://discord.gg/4tKTMkkvVX
about: Please use Discord as the place to connect with other members of our community, for help and sharing.
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/enhancement_or_feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Enhancement or feature request
about: Suggest an enhancement or feature for INFINI Gateway

---

### Problem description

A description of a problem, workflow or integration that your suggestion would solve.
If the problem is OS-specific, include that information here.

### Preferred solution

A description of what changes should be made to INFINI Gateway to solve the problem.

### Alternatives

A description of any alternative solutions or enhancements considered.

### Additional Information (optional)

If applicable, add screenshots to help demonstrate the problem or proposed solution.
Code examples or related links are useful, too.
104 changes: 104 additions & 0 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Build and Deploy Docs

on:
push:
branches:
- main
- 'v*'
tags:
- 'v*'

jobs:
build-deploy-docs:
runs-on: ubuntu-latest

steps:
- name: Checkout Product Repo
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set Variables Based on Ref
id: vars
run: |
CURRENT_REF=${GITHUB_REF##*/}
if [[ "${GITHUB_REF_TYPE}" == "branch" ]]; then
if [[ "$CURRENT_REF" == "main" ]]; then
echo "VERSION=main" >> $GITHUB_ENV
echo "BRANCH=main" >> $GITHUB_ENV
else
echo "VERSION=$CURRENT_REF" >> $GITHUB_ENV
echo "BRANCH=$CURRENT_REF" >> $GITHUB_ENV
fi
elif [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
echo "VERSION=$CURRENT_REF" >> $GITHUB_ENV
echo "BRANCH=main" >> $GITHUB_ENV # Set BRANCH to 'main' for tags
fi
# Gather branches and tags, sort, remove duplicates
VERSIONS=$(git for-each-ref refs/remotes/origin refs/tags --format="%(refname:short)" | \
grep -E "^v[0-9.]+$" | sort -Vr | uniq | tr '\n' ',' | sed 's/,$//')
echo "VERSIONS=main,$VERSIONS" >> $GITHUB_ENV
- name: Install Hugo
run: |
wget https://github.com/gohugoio/hugo/releases/download/v0.79.1/hugo_extended_0.79.1_Linux-64bit.tar.gz
tar -xzvf hugo_extended_0.79.1_Linux-64bit.tar.gz
sudo mv hugo /usr/local/bin/
- name: Checkout Docs Repo
uses: actions/checkout@v2
with:
repository: infinilabs/docs
path: docs-output
token: ${{ secrets.DOCS_DEPLOYMENT_TOKEN }}

- name: Build Documentation
run: |
(cd docs && OUTPUT=$(pwd)/../docs-output make docs-build docs-place-redirect)
- name: Commit and Push Changes to Docs Repo
working-directory: docs-output
run: |
git config user.name "GitHub Actions"
git config user.email "[email protected]"
if [[ -n $(git status --porcelain) ]]; then
git add .
git commit -m "Rebuild docs for version $VERSION"
git push origin main
else
echo "No changes to commit."
fi
- name: Rebuild Docs for Latest Version (main), if not already on main
run: |
# Only rebuild the main branch docs if the current ref is not "main"
if [[ "$CURRENT_REF" != "main" ]]; then
echo "Switching to main branch and rebuilding docs for 'latest'"
# Checkout the main branch of the product repo to rebuild docs for "latest"
git checkout main
# Ensure the latest changes are pulled
git pull origin main
# Build Docs for Main Branch (latest)
(cd docs && OUTPUT=$(pwd)/../docs-output VERSION="main" BRANCH="main" make docs-build docs-place-redirect)
# Commit and Push Latest Docs to Main
cd docs-output
git config user.name "GitHub Actions"
git config user.email "[email protected]"
if [[ -n $(git status --porcelain) ]]; then
git add .
git commit -m "Rebuild docs for main branch with latest version"
git push origin main
else
echo "No changes to commit for main."
fi
else
echo "Current ref is 'main', skipping rebuild for 'latest'."
fi
working-directory: ./ # Working in the product repo
41 changes: 41 additions & 0 deletions README.md
100755 → 100644
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# INFINI Gateway

## Introduction

![](./docs/static/img/banner.jpg)

**INFINI Gateway** is a high performance gateway for Elasticsearch/OpenSearch/Easysearch. It offers a broad range of features and is easy to use. INFINI Gateway works in the same way as a common reverse proxy.
It is usually deployed in front of Elasticsearch/OpenSearch/Easysearch clusters. All requests are sent to the gateway instead of Elasticsearch/OpenSearch/Easysearch, and then the gateway forwards the requests to the back-end Elasticsearch/OpenSearch/Easysearch clusters.
The gateway is deployed between the client and Elasticsearch/OpenSearch/Easysearch. Therefore, the gateway can be configured to perform index-level traffic control and throttling, cache acceleration for common queries, query request audit, and dynamic modification of query results.

## Features

> The application-layer INFINI Gateway is especially designed for Elasticsearch/OpenSearch/Easysearch and offers powerful features.
- High availability: The gateway supports non-stop indexing and is capable of automatically processing faults occurring on Elasticsearch/OpenSearch/Easysearch, without affecting normal data ingestion.
- Write acceleration: The gateway can automatically merge independent index requests into a bulk request, thereby reducing back-end pressure and improving indexing efficiency.
- Query acceleration: Query cache can be configured on INFINI Gateway and Kibana dashboards can accelerate the query seamlessly and intelligently to fully enhance search experience.
- Seamless retry: The gateway automatically processes faults occurring on Elasticsearch/OpenSearch/Easysearch, and migrates and retries query requests.
- Traffic cloning: The gateway can replicate traffic to multiple different Elasticsearch/OpenSearch/Easysearch clusters and supports traffic migration through canary deployment.
- One-click rebuilding: The optimized high-speed index rebuilding and automatic processing of incremental data enable the gateway to seamlessly switch between old and new indexes.
- Secure transmission: The gateway supports the Transport Layer Security (TLS) and Hypertext Transfer Protocol Secure (HTTPS) protocols. It can automatically generate certification files and supports specified trust certification files.
- Precision routing: The gateway supports the load balancing mode using multiple algorithms, in which load routing strategies can be separately configured for indexing and query, providing great flexibility.
- Traffic control and throttling: Multiple traffic control and throttling rules can be configured to implement index-level traffic control and ensure the stability of back-end clusters.
- Concurrency control: The gateway can control cluster- and node-level concurrent TCP connections to ensure the stability of back-end clusters and nodes.
- No single point of failure (SPOF): The built-in virtual IP-based high availability solution supports dual-node hot standby and automatic failover to prevent SPOFs.
- Request observability: The gateway is equipped with the logging and indicator monitoring features to fully analyze Elasticsearch/OpenSearch/Easysearch requests.


To learn more about Gateway, please visit: https://docs.infinilabs.com/gateway/

## Community

Fell free to join the Discord server to discuss anything around this project:

[https://discord.gg/4tKTMkkvVX](https://discord.gg/4tKTMkkvVX)

## License

INFINI Gateway is a truly open-source project, licensed under the [GNU Affero General Public License v3.0](https://opensource.org/licenses/AGPL-3.0).
We also offer a commercially supported, enterprise-ready version of the software.
For more details, please refer to our [license information](./LICENSE).
1 change: 1 addition & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/public/
50 changes: 50 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
SHELL=/bin/bash

# Basic info
PRODUCT?= $(shell basename "$(shell cd .. && pwd)")
BRANCH?= main
VERSION?= $(shell [[ "$(BRANCH)" == "main" ]] && echo "main" || echo "$(BRANCH)")
CURRENT_VERSION?= $(VERSION)
VERSIONS?= "main"
OUTPUT?= "/tmp/docs"
THEME_FOLDER?= "themes/book"
THEME_REPO?= "https://github.com/infinilabs/docs-theme.git"
THEME_BRANCH?= "main"

.PHONY: docs-build

default: docs-build

docs-init:
@if [ ! -d $(THEME_FOLDER) ]; then echo "theme does not exist";(git clone -b $(THEME_BRANCH) $(THEME_REPO) $(THEME_FOLDER) ) fi

docs-env:
@echo "Debugging Variables:"
@echo "PRODUCT: $(PRODUCT)"
@echo "BRANCH: $(BRANCH)"
@echo "VERSION: $(VERSION)"
@echo "CURRENT_VERSION: $(CURRENT_VERSION)"
@echo "VERSIONS: $(VERSIONS)"
@echo "OUTPUT: $(OUTPUT)"

docs-config: docs-init
cp config.yaml config.bak
# Detect OS and apply the appropriate sed command
@if [ "$$(uname)" = "Darwin" ]; then \
echo "Running on macOS"; \
sed -i '' "s/BRANCH/$(VERSION)/g" config.yaml; \
else \
echo "Running on Linux"; \
sed -i 's/BRANCH/$(VERSION)/g' config.yaml; \
fi

docs-build: docs-config
hugo --minify --theme book --destination="$(OUTPUT)/$(PRODUCT)/$(VERSION)" \
--baseURL="/$(PRODUCT)/$(VERSION)"
@$(MAKE) docs-restore-generated-file

docs-place-redirect:
echo "<!DOCTYPE html> <html> <head> <meta http-equiv=refresh content=0;url=main /> </head> <body> <p><a href=main />REDIRECT TO THE LATEST_VERSION</a>.</p> </body> </html>" > $(OUTPUT)/$(PRODUCT)/index.html

docs-restore-generated-file:
mv config.bak config.yaml
6 changes: 6 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# INFINI Gateway Documentation

## Hugo v0.79.x extended version
- https://github.com/gohugoio/hugo/releases/download/v0.79.1/hugo_extended_0.79.1_Linux-64bit.tar.gz
- https://github.com/gohugoio/hugo/releases/download/v0.79.1/hugo_extended_0.79.1_Windows-64bit.zip
- https://github.com/gohugoio/hugo/releases/download/v0.79.1/hugo_extended_0.79.1_macOS-64bit.tar.gz
93 changes: 93 additions & 0 deletions docs/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# VERSIONS=latest,v1.0 hugo --minify --baseURL="/product/v1.0/" -d public/product/v1.0

title: INFINI Gateway
theme: book

# Book configuration
disablePathToLower: true
enableGitInfo: false

# Needed for mermaid/katex shortcodes
markup:
goldmark:
renderer:
unsafe: true
tableOfContents:
startLevel: 1

# Multi-lingual mode config
# There are different options to translate files
# See https://gohugo.io/content-management/multilingual/#translation-by-filename
# And https://gohugo.io/content-management/multilingual/#translation-by-content-directory
defaultContentLanguage: en
languages:
en:
languageName: English
contentDir: content.en
weight: 3


menu:
before: []
after:
- name: "Github"
url: "https://github.com/infinilabs/gateway"
weight: 10

params:
# (Optional, default light) Sets color theme: light, dark or auto.
# Theme 'auto' switches between dark and light modes based on browser/os preferences
BookTheme: "auto"

# (Optional, default true) Controls table of contents visibility on right side of pages.
# Start and end levels can be controlled with markup.tableOfContents setting.
# You can also specify this parameter per page in front matter.
BookToC: true

# (Optional, default none) Set the path to a logo for the book. If the logo is
# /static/logo.png then the path would be logo.png
BookLogo: img/logo

# (Optional, default none) Set leaf bundle to render as side menu
# When not specified file structure and weights will be used
# BookMenuBundle: /menu

# (Optional, default docs) Specify root page to render child pages as menu.
# Page is resoled by .GetPage function: https://gohugo.io/functions/getpage/
# For backward compatibility you can set '*' to render all sections to menu. Acts same as '/'
BookSection: docs

# Set source repository location.
# Used for 'Last Modified' and 'Edit this page' links.
BookRepo: https://github.com/infinilabs/gateway

# Enable "Edit this page" links for 'doc' page type.
# Disabled by default. Uncomment to enable. Requires 'BookRepo' param.
# Edit path must point to root directory of repo.
BookEditPath: edit/BRANCH/docs

# Configure the date format used on the pages
# - In git information
# - In blog posts
BookDateFormat: "January 2, 2006"

# (Optional, default true) Enables search function with flexsearch,
# Index is built on fly, therefore it might slowdown your website.
# Configuration for indexing can be adjusted in i18n folder per language.
BookSearch: false

# (Optional, default true) Enables comments template on pages
# By default partals/docs/comments.html includes Disqus template
# See https://gohugo.io/content-management/comments/#configure-disqus
# Can be overwritten by same param in page frontmatter
BookComments: false

# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables portable links and link checks in markdown pages.
# Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode
# Theme will print warning if page referenced in markdown does not exists.
BookPortableLinks: true

# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables service worker that caches visited pages and resources for offline use.
BookServiceWorker: false
Loading

0 comments on commit b8ed774

Please sign in to comment.