Skip to content

Commit

Permalink
docs: adds clean-up and make md format (alibaba#33)
Browse files Browse the repository at this point in the history
Signed-off-by: bitliu <[email protected]>
  • Loading branch information
Xunzhuo authored Nov 7, 2022
1 parent 08e8a57 commit 03f31b8
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 32 deletions.
66 changes: 48 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ Higress 是基于阿里内部两年多的 Envoy Gateway 实践沉淀,以开源
- [**核心优势**](#核心优势)
- [**Quick Start**](#quick-start)
- [**社区**](#社区)

## 使用场景

- **Kubernetes Ingress 网关**:
- **Kubernetes Ingress 网关**:

Higress 可以作为 K8s 集群的 Ingress 入口网关, 并且兼容了大量 K8s Nginx Ingress 的注解,可以从 K8s Nginx Ingress 快速平滑迁移到 Higress。

支持 [Gateway API](https://gateway-api.sigs.k8s.io/) 标准,支持用户从 Ingress API 平滑迁移到 Gateway API。

- **微服务网关**:
- **微服务网关**:

Higress 可以作为微服务网关, 能够对接多种类型的注册中心发现服务配置路由,例如 Nacos, ZooKeeper, Consul 等。

Expand All @@ -43,22 +43,21 @@ Higress 是基于阿里内部两年多的 Envoy Gateway 实践沉淀,以开源
- **安全防护网关**:

Higress 可以作为安全防护网关, 提供 WAF 的能力,并且支持多种认证鉴权策略,例如 key-auth, hmac-auth, jwt-auth, basic-auth, oidc 等。


## 核心优势

- **生产等级**

脱胎于阿里巴巴2年多生产验证的内部产品,支持每秒请求量达数十万级的大规模场景

彻底摆脱 reload 引起的流量抖动,配置变更毫秒级生效且业务无感

- **平滑演进**

支持 Nacos/Zookeeper 等多种注册中心,可以不依赖 K8s Service 进行服务发现,支持非容器架构平滑演进到云原生架构

支持从 Nginx Ingress Controller 平滑迁移,支持平滑过渡到 Gateway API,支持业务架构平滑演进到 ServiceMesh

- **兼收并蓄**

兼容 Nginx Ingress Annotation 80%+ 的使用场景,且提供功能更丰富的 Higress Annotation 注解
Expand All @@ -68,21 +67,20 @@ Higress 是基于阿里内部两年多的 Envoy Gateway 实践沉淀,以开源
- **便于扩展**

提供 Wasm、Lua、进程外三种插件扩展机制,支持多语言编写插件,生效粒度支持全局级、域名级,路由级

插件支持热更新,变更插件逻辑和配置都对流量无损

插件支持热更新,变更插件逻辑和配置都对流量无损

## Quick Start

- [**本地环境**](#本地环境)
- [**生产环境**](#生产环境)


### 本地环境


#### 第一步、 安装 kubectl & kind

**MacOS:**

```bash
curl -Lo ./kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
# for Intel Macs
Expand All @@ -94,6 +92,7 @@ mv ./kind ./kubectl /some-dir-in-your-PATH/
```

**Windows 中使用 PowerShell:**

```bash
curl.exe -Lo kubectl.exe https://storage.googleapis.com/kubernetes-release/release/$(curl.exe -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.17.0/kind-windows-amd64
Expand All @@ -102,14 +101,15 @@ Move-Item .\kubectl.exe c:\some-dir-in-your-PATH\kubectl.exe
```

**Linux:**

```bash
curl -Lo ./kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind ./kubectl
sudo mv ./kind ./kubectl /usr/local/bin/kind
```

#### 第二步、 创建并启用 kind
#### 第二步、 创建并启用 kind

首先创建一个集群配置文件: `cluster.conf`

Expand All @@ -133,12 +133,16 @@ nodes:
hostPort: 443
protocol: TCP
```
Mac & Linux 系统执行:
```bash
kind create cluster --name higress --config=cluster.conf
kubectl config use-context kind-higress
```

Windows 系统执行:

```bash
kind.exe create cluster --name higress --config=cluster.conf
kubectl.exe config use-context kind-higress
Expand Down Expand Up @@ -168,19 +172,33 @@ curl localhost/foo
curl localhost/bar
```

#### 卸载资源

```bash
kubectl delete -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml

helm uninstall istio -n istio-system

helm uninstall higress -n higress-system

kubectl delete ns istio-system

kubectl delete ns higress-system
```

### 生产环境

#### 第一步、 安装 istio

可以选择安装 higress 发行的 istio 版本:
可以选择安装 higress 发行的 istio 版本:

```bash
kubectl create ns istio-system
helm install istio -n istio-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/istio
```

或者选择安装官方 istio 版本 (将失去部分能力,例如通过 Ingress 注解实现限流的功能):

https://istio.io/latest/docs/setup/install

#### 第二步、 安装 higress
Expand All @@ -193,7 +211,7 @@ helm install higress -n higress-system oci://higress-registry.cn-hangzhou.cr.ali
#### 第三步、 创建 Ingress 资源并测试

假设在 default 命名空间下已经部署了一个 test service,服务端口为 80 ,则创建下面这个 K8s Ingress

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
Expand All @@ -214,19 +232,31 @@ spec:
```
测试能访问到该服务:
```bash
curl "$(k get svc -n higress-system higress-gateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"/foo -H 'host: foo.bar.com'
```
```
#### 卸载资源
```bash
helm uninstall istio -n istio-system

helm uninstall higress -n higress-system

kubectl delete ns istio-system

kubectl delete ns higress-system
```

## 社区

### 感谢

如果没有 Envoy 和 Istio 的开源工作,Higress 就不可能实现,在这里向这两个项目献上最诚挚的敬意。
如果没有 Envoy 和 Istio 的开源工作,Higress 就不可能实现,在这里向这两个项目献上最诚挚的敬意。

### 联系我们

- Mailing list: [email protected]

![contact-us](https://img.alicdn.com/imgextra/i3/O1CN01KwJqnM1Rnx6aMR9lD_!!6000000002157-2-tps-1437-1018.png)
57 changes: 43 additions & 14 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ Powered by [Istio](https://github.com/istio/istio) and [Envoy](https://github.co

## Use Cases

- **Kubernetes ingress controller**:
- **Kubernetes ingress controller**:

Higress can function as a feature-rich ingress controller, which is compatible with many annotations of K8s' nginx ingress controller.

[Gateway API](https://gateway-api.sigs.k8s.io/) support is coming soon and will support smooth migration from Ingress API to Gateway API.

- **Microservice gateway**:
- **Microservice gateway**:

Higress can function as a microservice gateway, which can discovery microservices from various service registries, such as Nacos, ZooKeeper, Consul, etc.

Expand All @@ -41,23 +41,22 @@ Powered by [Istio](https://github.com/istio/istio) and [Envoy](https://github.co
- **Security gateway**:

Higress can be used as a security gateway, supporting WAF and various authentication strategies, such as key-auth, hmac-auth, jwt-auth, basic-auth, oidc, etc.


## Higress Features

(TODO)

## Quick Start

- [**Local Environment**](#local-environment)
- [**Production Environment**](#production-environment)


### Local Environment


#### step 1. install kubectl & kind

**On MacOS**
**On MacOS:**

```bash
curl -Lo ./kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
# for Intel Macs
Expand All @@ -69,6 +68,7 @@ mv ./kind ./kubectl /some-dir-in-your-PATH/
```

**On Windows in PowerShell:**

```bash
curl.exe -Lo kubectl.exe https://storage.googleapis.com/kubernetes-release/release/$(curl.exe -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.17.0/kind-windows-amd64
Expand All @@ -77,6 +77,7 @@ Move-Item .\kubectl.exe c:\some-dir-in-your-PATH\kubectl.exe
```

**On Linux:**

```bash
curl -Lo ./kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
Expand Down Expand Up @@ -108,12 +109,16 @@ nodes:
hostPort: 443
protocol: TCP
```
Mac & Linux:
```bash
kind create cluster --name higress --config=cluster.conf
kubectl config use-context kind-higress
```

Windows:

```bash
kind.exe create cluster --name higress --config=cluster.conf
kubectl.exe config use-context kind-higress
Expand All @@ -126,7 +131,7 @@ helm install istio -n istio-system oci://higress-registry.cn-hangzhou.cr.aliyunc
helm install higress -n higress-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/higress-local
```

#### step 4. create the ingress and test it!
#### step 4. create the ingress and test it

```bash
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
Expand All @@ -141,19 +146,33 @@ curl localhost/foo
curl localhost/bar
```

#### Clean-Up

```bash
kubectl delete -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml

helm uninstall istio -n istio-system

helm uninstall higress -n higress-system

kubectl delete ns istio-system

kubectl delete ns higress-system
```

### Production Environment

#### step 1. install istio

select higress istio:
select higress istio:

```bash
kubectl create ns istio-system
helm install istio -n istio-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/istio
```

or select official istio (lose some abilities, such as using annotation to limit request rate):

https://istio.io/latest/docs/setup/install

#### step 2. install higress
Expand All @@ -163,10 +182,10 @@ kubectl create ns higress-system
helm install higress -n higress-system oci://higress-registry.cn-hangzhou.cr.aliyuncs.com/charts/higress
```

#### step 3. create the ingress and test it!
#### step 3. create the ingress and test it

for example there is a service `test` in default namespace.

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
Expand All @@ -185,13 +204,23 @@ spec:
port:
number: 80
```
```bash
curl "$(k get svc -n higress-system higress-gateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"/foo -H 'host: foo.bar.com'
```
```
#### Clean-Up
```bash
helm uninstall istio -n istio-system

helm uninstall higress -n higress-system

kubectl delete ns istio-system

kubectl delete ns higress-system
```

### Thanks

Higress would not be possible without the valuable open-source work of projects in the community. We would like to extend a special thank-you to Envoy and Istio.

0 comments on commit 03f31b8

Please sign in to comment.