You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by gi...@apache.org on 2021/01/21 08:59:24 UTC
[apisix-website] branch asf-site updated: deploy:
7f1f28a66ac6d8d4a17e69f94d7f79ff6dd6b5b6
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/apisix-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 77795c7 deploy: 7f1f28a66ac6d8d4a17e69f94d7f79ff6dd6b5b6
77795c7 is described below
commit 77795c7203485b01794865e08e3cbdf47c6cc789
Author: juzhiyuan <ju...@users.noreply.github.com>
AuthorDate: Thu Jan 21 08:59:10 2021 +0000
deploy: 7f1f28a66ac6d8d4a17e69f94d7f79ff6dd6b5b6
---
2fa.html | 2 +-
2fa/index.html | 2 +-
apisix/control-api.html | 92 ++++++++++-
apisix/control-api/index.html | 92 ++++++++++-
apisix/health-check.html | 3 +
apisix/health-check/index.html | 3 +
apisix/zh-cn/README.html | 1 +
apisix/zh-cn/README/index.html | 1 +
apisix/zh-cn/health-check.html | 3 +
apisix/zh-cn/health-check/index.html | 3 +
blog/2020/08/22/new-website.html | 2 +-
blog/2020/08/22/new-website/index.html | 2 +-
.../16/another-way-to-implement-envoy-filter.html | 2 +-
.../index.html | 2 +-
.../18/a-first-look-at-kubernetes-service-api.html | 2 +-
.../index.html | 2 +-
.../01/21/run-ingress-apisix-on-amazon-eks.html | 181 +++++++++++++++++++++
.../21/run-ingress-apisix-on-amazon-eks/index.html | 181 +++++++++++++++++++++
blog/atom.xml | 13 +-
blog/feed.xml | 9 +-
blog/index.html | 104 +++++++++++-
committer-guide.html | 2 +-
committer-guide/index.html | 2 +-
contributor-guide.html | 2 +-
contributor-guide/index.html | 2 +-
downloads.html | 2 +-
downloads/index.html | 2 +-
release-guide.html | 2 +-
release-guide/index.html | 2 +-
security.html | 2 +-
security/index.html | 2 +-
sitemap.xml | 2 +-
subscribe-guide.html | 2 +-
subscribe-guide/index.html | 2 +-
team.html | 2 +-
team/index.html | 2 +-
36 files changed, 703 insertions(+), 29 deletions(-)
diff --git a/2fa.html b/2fa.html
index ba02e5b..2c3f217 100644
--- a/2fa.html
+++ b/2fa.html
@@ -70,7 +70,7 @@
<h2><a class="anchor" aria-hidden="true" id="how-to-submit-codes"></a><a href="#how-to-submit-codes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
<p>After enabling 2FA, you need to generate a private access Token to perform operations such as git submit and so on. At this time, you will use username + private access Token in replace of username + password to submit codes.</p>
<p>For detailed operations, please refer to Create a Private Token.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor aut [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor au [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/2fa/index.html b/2fa/index.html
index ba02e5b..2c3f217 100644
--- a/2fa/index.html
+++ b/2fa/index.html
@@ -70,7 +70,7 @@
<h2><a class="anchor" aria-hidden="true" id="how-to-submit-codes"></a><a href="#how-to-submit-codes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
<p>After enabling 2FA, you need to generate a private access Token to perform operations such as git submit and so on. At this time, you will use username + private access Token in replace of username + password to submit codes.</p>
<p>For detailed operations, please refer to Create a Private Token.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor aut [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor au [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/apisix/control-api.html b/apisix/control-api.html
index 150261f..3bbda56 100644
--- a/apisix/control-api.html
+++ b/apisix/control-api.html
@@ -71,7 +71,97 @@ If a plugin adds such a control API, please refer to each plugin's documentation
<p>For <code>plugins</code> part, only enabled plugins will be returned. Some plugins may lack
of fields like <code>consumer_schema</code> or <code>type</code>, it is dependended by the plugin's
definition.</p>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#control-api-added-via-plugin">Control API Added via plugin</a></li><li><a href="#plugin-independent-control-api">Plugin independent Control API</a><ul class="toc-headings"><li><a href="#get-v1schema">GET /v1/schema</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5> [...]
+<h3><a class="anchor" aria-hidden="true" id="get-v1healthcheck"></a><a href="#get-v1healthcheck" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
+<p>Introduced since <code>v2.3</code>.</p>
+<p>Return current <a href="/apisix/health-check">health check</a> status in the format below:</p>
+<pre><code class="hljs css language-json">[
+ {
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/upstreams/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.2"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"upstreams"</span>
+ },
+ {
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/routes/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"routes"</span>
+ }
+]
+</code></pre>
+<p>Each entry contains fields below:</p>
+<ul>
+<li>src_type: where the health checker comes from. The value is one of <code>["routes", "services", "upstreams"]</code>.</li>
+<li>src_id: the id of object which creates the health checker. For example, if Upstream
+object with id 1 creates a health checker, the <code>src_type</code> is <code>upstreams</code> and the <code>src_id</code> is <code>1</code>.</li>
+<li>name: the name of the health checker.</li>
+<li>nodes: the target nodes of the health checker.</li>
+<li>healthy_nodes: the healthy node known by the health checker.</li>
+</ul>
+<p>User can also use <code>/v1/healthcheck/$src_type/$src_id</code> can get the status of a health checker.</p>
+<p>For example, <code>GET /v1/healthcheck/upstreams/1</code> returns:</p>
+<pre><code class="hljs css language-json">{
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/upstreams/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.2"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"upstreams"</span>
+}
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#control-api-added-via-plugin">Control API Added via plugin</a></li><li><a href="#plugin-independent-control-api">Plugin independent Control API</a><ul class="toc-headings"><li><a href="#get-v1schema">GET /v1/schema</a></li><li><a href="#get-v1healthcheck">GET /v1/healthcheck</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><secti [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/apisix/control-api/index.html b/apisix/control-api/index.html
index 150261f..3bbda56 100644
--- a/apisix/control-api/index.html
+++ b/apisix/control-api/index.html
@@ -71,7 +71,97 @@ If a plugin adds such a control API, please refer to each plugin's documentation
<p>For <code>plugins</code> part, only enabled plugins will be returned. Some plugins may lack
of fields like <code>consumer_schema</code> or <code>type</code>, it is dependended by the plugin's
definition.</p>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#control-api-added-via-plugin">Control API Added via plugin</a></li><li><a href="#plugin-independent-control-api">Plugin independent Control API</a><ul class="toc-headings"><li><a href="#get-v1schema">GET /v1/schema</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5> [...]
+<h3><a class="anchor" aria-hidden="true" id="get-v1healthcheck"></a><a href="#get-v1healthcheck" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
+<p>Introduced since <code>v2.3</code>.</p>
+<p>Return current <a href="/apisix/health-check">health check</a> status in the format below:</p>
+<pre><code class="hljs css language-json">[
+ {
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/upstreams/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.2"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"upstreams"</span>
+ },
+ {
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/routes/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"routes"</span>
+ }
+]
+</code></pre>
+<p>Each entry contains fields below:</p>
+<ul>
+<li>src_type: where the health checker comes from. The value is one of <code>["routes", "services", "upstreams"]</code>.</li>
+<li>src_id: the id of object which creates the health checker. For example, if Upstream
+object with id 1 creates a health checker, the <code>src_type</code> is <code>upstreams</code> and the <code>src_id</code> is <code>1</code>.</li>
+<li>name: the name of the health checker.</li>
+<li>nodes: the target nodes of the health checker.</li>
+<li>healthy_nodes: the healthy node known by the health checker.</li>
+</ul>
+<p>User can also use <code>/v1/healthcheck/$src_type/$src_id</code> can get the status of a health checker.</p>
+<p>For example, <code>GET /v1/healthcheck/upstreams/1</code> returns:</p>
+<pre><code class="hljs css language-json">{
+ <span class="hljs-attr">"healthy_nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"name"</span>: <span class="hljs-string">"upstream#/upstreams/1"</span>,
+ <span class="hljs-attr">"nodes"</span>: [
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.1"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1980</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ },
+ {
+ <span class="hljs-attr">"host"</span>: <span class="hljs-string">"127.0.0.2"</span>,
+ <span class="hljs-attr">"port"</span>: <span class="hljs-number">1988</span>,
+ <span class="hljs-attr">"weight"</span>: <span class="hljs-number">1</span>
+ }
+ ],
+ <span class="hljs-attr">"src_id"</span>: <span class="hljs-string">"1"</span>,
+ <span class="hljs-attr">"src_type"</span>: <span class="hljs-string">"upstreams"</span>
+}
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#control-api-added-via-plugin">Control API Added via plugin</a></li><li><a href="#plugin-independent-control-api">Plugin independent Control API</a><ul class="toc-headings"><li><a href="#get-v1schema">GET /v1/schema</a></li><li><a href="#get-v1healthcheck">GET /v1/healthcheck</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><secti [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/apisix/health-check.html b/apisix/health-check.html
index 875ae52..4c80e28 100644
--- a/apisix/health-check.html
+++ b/apisix/health-check.html
@@ -25,6 +25,8 @@
<h1><a class="anchor" aria-hidden="true" id="health-checks-for-upstream"></a><a href="#health-checks-for-upstream" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
<p>Health Check of APISIX is based on <a href="https://github.com/Kong/lua-resty-healthcheck">lua-resty-healthcheck</a>,
you can use it for upstream.</p>
+<p>Note that we only start the health check when the upstream is hit by a request.
+There won't be any health check if an upstream is configured but isn't in used.</p>
<p>The following is an example of health check:</p>
<pre><code class="hljs css language-shell">curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
@@ -109,6 +111,7 @@ contains: <code>active</code> or <code>passive</code>.</p>
<li><code>passive.unhealthy.http_failures</code>: Number of HTTP failures in proxied traffic (as defined by <code>passive.unhealthy.http_statuses</code>) to consider a target unhealthy, as observed by passive health checks.</li>
</ul></li>
</ul>
+<p>The health check status can be fetched via <code>GET /v1/healthcheck</code> in <a href="/apisix/control-api">control API</a>.</p>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.org/licenses/">License</a><a href="https://www.apache.org/events/">Events</a><a href="https://www.apache.org/security/">Security</a><a href="https://www.apache.org/foundation/sponsorship.html"> [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
diff --git a/apisix/health-check/index.html b/apisix/health-check/index.html
index 875ae52..4c80e28 100644
--- a/apisix/health-check/index.html
+++ b/apisix/health-check/index.html
@@ -25,6 +25,8 @@
<h1><a class="anchor" aria-hidden="true" id="health-checks-for-upstream"></a><a href="#health-checks-for-upstream" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
<p>Health Check of APISIX is based on <a href="https://github.com/Kong/lua-resty-healthcheck">lua-resty-healthcheck</a>,
you can use it for upstream.</p>
+<p>Note that we only start the health check when the upstream is hit by a request.
+There won't be any health check if an upstream is configured but isn't in used.</p>
<p>The following is an example of health check:</p>
<pre><code class="hljs css language-shell">curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
@@ -109,6 +111,7 @@ contains: <code>active</code> or <code>passive</code>.</p>
<li><code>passive.unhealthy.http_failures</code>: Number of HTTP failures in proxied traffic (as defined by <code>passive.unhealthy.http_statuses</code>) to consider a target unhealthy, as observed by passive health checks.</li>
</ul></li>
</ul>
+<p>The health check status can be fetched via <code>GET /v1/healthcheck</code> in <a href="/apisix/control-api">control API</a>.</p>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.org/licenses/">License</a><a href="https://www.apache.org/events/">Events</a><a href="https://www.apache.org/security/">Security</a><a href="https://www.apache.org/foundation/sponsorship.html"> [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
diff --git a/apisix/zh-cn/README.html b/apisix/zh-cn/README.html
index 60ee40d..055581f 100644
--- a/apisix/zh-cn/README.html
+++ b/apisix/zh-cn/README.html
@@ -31,6 +31,7 @@
<li><a href="/apisix/zh-cn/architecture-design">架构设计</a></li>
<li><a href="/apisix/zh-cn/how-to-build">如何构建 Apache APISIX</a></li>
<li><a href="/apisix/zh-cn/admin-api">管理 API</a></li>
+<li><a href="/apisix/control-api">控制 API</a></li>
<li><a href="/apisix/zh-cn/health-check">健康检查</a>: 支持对上游节点的主动和被动健康检查,在负载均衡时自动过滤掉不健康的节点。</li>
<li><a href="/apisix/router-radixtree">路由 radixtree</a></li>
<li><a href="/apisix/zh-cn/stand-alone">独立运行模型</a>: 支持从本地 yaml 格式的配置文件启动,更适合 Kubernetes(k8s) 体系。</li>
diff --git a/apisix/zh-cn/README/index.html b/apisix/zh-cn/README/index.html
index 60ee40d..055581f 100644
--- a/apisix/zh-cn/README/index.html
+++ b/apisix/zh-cn/README/index.html
@@ -31,6 +31,7 @@
<li><a href="/apisix/zh-cn/architecture-design">架构设计</a></li>
<li><a href="/apisix/zh-cn/how-to-build">如何构建 Apache APISIX</a></li>
<li><a href="/apisix/zh-cn/admin-api">管理 API</a></li>
+<li><a href="/apisix/control-api">控制 API</a></li>
<li><a href="/apisix/zh-cn/health-check">健康检查</a>: 支持对上游节点的主动和被动健康检查,在负载均衡时自动过滤掉不健康的节点。</li>
<li><a href="/apisix/router-radixtree">路由 radixtree</a></li>
<li><a href="/apisix/zh-cn/stand-alone">独立运行模型</a>: 支持从本地 yaml 格式的配置文件启动,更适合 Kubernetes(k8s) 体系。</li>
diff --git a/apisix/zh-cn/health-check.html b/apisix/zh-cn/health-check.html
index 3288995..b09de06 100644
--- a/apisix/zh-cn/health-check.html
+++ b/apisix/zh-cn/health-check.html
@@ -25,6 +25,8 @@
<h1><a class="anchor" aria-hidden="true" id="englishapisixhealth-check"></a><a href="#englishapisixhealth-check" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
<h2><a class="anchor" aria-hidden="true" id="upstream的健康检查"></a><a href="#upstream的健康检查" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
<p>APISIX的健康检查使用<a href="https://github.com/Kong/lua-resty-healthcheck">lua-resty-healthcheck</a>实现,你可以在upstream中使用它。</p>
+<p>注意只有在 upstream 被请求时才会开始健康检查。
+如果一个 upstream 被配置但没有被请求,那么就不会有健康检查。</p>
<p>下面是一个检查检查的例子:</p>
<pre><code class="hljs css language-shell">curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
@@ -108,6 +110,7 @@
<li><code>passive.unhealthy.http_failures</code>: 如果被动健康检查的HTTP请求失败(由 <code>passive.unhealthy.http_statuses</code> 定义)的次数超过 <code>http_failures</code>次,则将upstream节点设置为 <code>unhealthy</code> 状态。</li>
</ul></li>
</ul>
+<p>健康检查信息可以通过 <a href="./control_api.md">控制接口</a> 中的 <code>GET /v1/healthcheck</code> 接口得到。</p>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#upstream的健康检查">Upstream的健康检查</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.org/licenses/">License</a><a href="https://www.apache.org/events/">Events</a><a href="https://www.apache.org/sec [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
diff --git a/apisix/zh-cn/health-check/index.html b/apisix/zh-cn/health-check/index.html
index 3288995..b09de06 100644
--- a/apisix/zh-cn/health-check/index.html
+++ b/apisix/zh-cn/health-check/index.html
@@ -25,6 +25,8 @@
<h1><a class="anchor" aria-hidden="true" id="englishapisixhealth-check"></a><a href="#englishapisixhealth-check" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
<h2><a class="anchor" aria-hidden="true" id="upstream的健康检查"></a><a href="#upstream的健康检查" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
<p>APISIX的健康检查使用<a href="https://github.com/Kong/lua-resty-healthcheck">lua-resty-healthcheck</a>实现,你可以在upstream中使用它。</p>
+<p>注意只有在 upstream 被请求时才会开始健康检查。
+如果一个 upstream 被配置但没有被请求,那么就不会有健康检查。</p>
<p>下面是一个检查检查的例子:</p>
<pre><code class="hljs css language-shell">curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
@@ -108,6 +110,7 @@
<li><code>passive.unhealthy.http_failures</code>: 如果被动健康检查的HTTP请求失败(由 <code>passive.unhealthy.http_statuses</code> 定义)的次数超过 <code>http_failures</code>次,则将upstream节点设置为 <code>unhealthy</code> 状态。</li>
</ul></li>
</ul>
+<p>健康检查信息可以通过 <a href="./control_api.md">控制接口</a> 中的 <code>GET /v1/healthcheck</code> 接口得到。</p>
</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#upstream的健康检查">Upstream的健康检查</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.org/licenses/">License</a><a href="https://www.apache.org/events/">Events</a><a href="https://www.apache.org/sec [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
diff --git a/blog/2020/08/22/new-website.html b/blog/2020/08/22/new-website.html
index 2497f65..b487078 100644
--- a/blog/2020/08/22/new-website.html
+++ b/blog/2020/08/22/new-website.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/08/22/new-website/index.html b/blog/2020/08/22/new-website/index.html
index 2497f65..b487078 100644
--- a/blog/2020/08/22/new-website/index.html
+++ b/blog/2020/08/22/new-website/index.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/12/16/another-way-to-implement-envoy-filter.html b/blog/2020/12/16/another-way-to-implement-envoy-filter.html
index c613961..904a96c 100644
--- a/blog/2020/12/16/another-way-to-implement-envoy-filter.html
+++ b/blog/2020/12/16/another-way-to-implement-envoy-filter.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
index c613961..904a96c 100644
--- a/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
+++ b/blog/2020/12/16/another-way-to-implement-envoy-filter/index.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/12/18/a-first-look-at-kubernetes-service-api.html b/blog/2020/12/18/a-first-look-at-kubernetes-service-api.html
index 07f65af..41fe27e 100644
--- a/blog/2020/12/18/a-first-look-at-kubernetes-service-api.html
+++ b/blog/2020/12/18/a-first-look-at-kubernetes-service-api.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html b/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
index 07f65af..41fe27e 100644
--- a/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
+++ b/blog/2020/12/18/a-first-look-at-kubernetes-service-api/index.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html
new file mode 100644
index 0000000..6125bb1
--- /dev/null
+++ b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Run Ingress APISIX on Amazon EKS · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="> [@Chao Zhang](https://github.com/tokers), Apache APISIX Comitter from [Shenzhen Zhiliu Technology Co.](https://www.apiseven.com/)"/><meta name="docsearch:language" content="en"/> [...]
+ document.addEventListener('DOMContentLoaded', function() {
+ addBackToTop(
+ {"zIndex":100}
+ )
+ });
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ var coll = document.getElementsByClassName('collapsible');
+ var checkActiveCategory = true;
+ for (var i = 0; i < coll.length; i++) {
+ var links = coll[i].nextElementSibling.getElementsByTagName('*');
+ if (checkActiveCategory){
+ for (var j = 0; j < links.length; j++) {
+ if (links[j].classList.contains('navListItemActive')){
+ coll[i].nextElementSibling.classList.toggle('hide');
+ coll[i].childNodes[1].classList.toggle('rotate');
+ checkActiveCategory = false;
+ break;
+ }
+ }
+ }
+
+ coll[i].addEventListener('click', function() {
+ var arrow = this.childNodes[1];
+ arrow.classList.toggle('rotate');
+ var content = this.nextElementSibling;
+ content.classList.toggle('hide');
+ });
+ }
+
+ document.addEventListener('DOMContentLoaded', function() {
+ createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+ createToggler('#tocToggler', 'body', 'tocActive');
+
+ var headings = document.querySelector('.toc-headings');
+ headings && headings.addEventListener('click', function(event) {
+ var el = event.target;
+ while(el !== headings){
+ if (el.tagName === 'A') {
+ document.body.classList.remove('tocActive');
+ break;
+ } else{
+ el = el.parentNode;
+ }
+ }
+ }, false);
+
+ function createToggler(togglerSelector, targetSelector, className) {
+ var toggler = document.querySelector(togglerSelector);
+ var target = document.querySelector(targetSelector);
+
+ if (!toggler) {
+ return;
+ }
+
+ toggler.onclick = function(event) {
+ event.preventDefault();
+
+ target.classList.toggle(className);
+ };
+ }
+ });
+ </script></nav></div><div class="container mainContainer postContainer blogContainer"><div class="wrapper"><div class="lonePost"><div class="post"><header class="postHeader"><h1 class="postHeaderTitle"><a href="/blog/2021/01/21/run-ingress-apisix-on-amazon-eks">Run Ingress APISIX on Amazon EKS</a></h1><p class="post-meta">January 21, 2021</p><div class="authorBlock"><p class="post-authorName"><a href="https://github.com/tokers" target="_blank" rel="noreferrer noopener">Chao Zhang [...]
+<p><a href="https://github.com/tokers">@Chao Zhang</a>, Apache APISIX Comitter from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p>
+<p>Source:</p>
+<ul>
+<li><a href="https://github.com/apache/apisix">https://github.com/apache/apisix</a></li>
+<li><a href="https://github.com/apache/apisix-helm-chart">https://github.com/apache/apisix-helm-chart</a></li>
+<li><a href="https://github.com/apache/apisix-ingress-controller">https://github.com/apache/apisix-ingress-controller</a></li>
+</ul>
+</blockquote>
+<p>This post is based on <a href="https://github.com/apache/apisix-ingress-controller/blob/master/docs/deployments/aws.md">Install Ingress APISIX on Amazon EKS</a>.</p>
+<ul>
+<li></li>
+</ul>
+<p>Amazon Elastic Kubernetes Service (<a href="https://amazonaws-china.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc">Amazon EKS</a>) gives you the flexibility to start, run, and scale Kubernetes applications in the AWS cloud or on-premises. This article explains how to run Ingress APISIX on it.</p>
+<p>Ingress APISIX brings good features (traffic splitting, multiple protocols, authentication and etc) of Apache APISIX to Kubernetes, with a well-designed Controller componment to drive it, which helps users to achieve complex demands for the north-south traffic.</p>
+<h2><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Before you go ahead, make sure you have an available EKS cluster on Amazon AWS. If you don't have one, please create it according to the guide.</p>
+<p>You shall have kubectl tool in your own environment, set the context to your EKS cluster by running:</p>
+<pre><code class="hljs css language-shell">aws eks update-kubeconfig --name <your eks cluster name> --region <your region>
+</code></pre>
+<p>After the Kubernetes cluster is ready, creating the namespace ingress-apisix, all subsequent resources will be created at this namespace.</p>
+<p>kubectl create namespace ingress-apisix</p>
+<p>We use <a href="https://helm.sh/">Helm</a> to deploy all components in Ingress APISIX (<a href="https://github.com/apache/apisix">Apache APISIX</a> and <a href="https://github.com/apache/apisix-ingress-controller">apisix-ingress-controller</a>), so please also install Helm according to its installation guide. The helm charts for Apache APISIX and apisix-ingress-controller are in apache/apisix-helm-chart and apache/apisix-ingress-controller, clone them to get the charts.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apache-apisix"></a><a href="#install-apache-apisix" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Apache APISIX as the proxy plane of apisix-ingress-controller, should be deployed in advance.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-helm-chart
+helm repo add bitnami https://charts.bitnami.com/bitnami
+helm dependency update ./chart/apisix
+helm install apisix ./chart/apisix \
+ --set gateway.type=LoadBalancer \
+ --set allow.ipList="{0.0.0.0/0}" \
+ --namespace ingress-apisix
+kubectl get service --namespace ingress-apisix
+</code></pre>
+<p>The above commands created two Kubernetes Service resources, one is <code>apisix-gateway</code>, which processes the real traffic; another is <code>apisix-admin</code>, which acts as the control plane to process all the configuration changes. Here we created the <code>apisix-gateway</code> as a <code>LoadBalancer</code> type Service, which resorts the <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html">AWS Network Balancer</a> to expose it to th [...]
+<pre><code class="hljs css language-shell">kubectl get service apisix-gateway \
+--namespace ingress-apisix \
+-o jsonpath='{.status.loadBalancer.ingress[].hostname}'
+</code></pre>
+<p>Another thing should be concerned that the <code>allow.ipList</code> field should be customized according to the <a href="https://amazonaws-china.com/premiumsupport/knowledge-center/eks-multiple-cidr-ranges/">EKS CIDR Ranges</a> in your EKS cluster, so that the apisix-ingress-controller can be authorized by Apache APISIX (for the resources pushing).</p>
+<p>See value.yaml](<a href="https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml">https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml</a>) to learn all the configuration items if you have other requirements.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apisix-ingress-controller"></a><a href="#install-apisix-ingress-controller" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
+<p>After Apache APISIX is deployed successfully, now it's time to install the controller component.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-ingress-controller
+<span class="hljs-meta">#</span><span class="bash"> install base resources, e.g. ServiceAccount.</span>
+helm install ingress-apisix-base -n ingress-apisix ./charts/base
+<span class="hljs-meta">#</span><span class="bash"> install apisix-ingress-controller</span>
+helm install ingress-apisix ./charts/ingress-apisix \
+ --set ingressController.image.tag=dev \
+ --set ingressController.config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
+ --set ingressController.config.apisix.adminKey={YOUR ADMIN KEY} \
+ --namespace ingress-apisix
+</code></pre>
+<p>The ingress-apisix-base chart installed some basic dependencies for apisix-ingress-controller, such as ServiceAccount, its exclusive CRDs and etc.</p>
+<p>The ingress-apisix chart guides us how to install the controller itself, you can change the image tag to the desired release version, also the value of <code>ingressController.config.apisix.adminKey</code> in abovementioned commands should be filled according to your pratical usage (and be sure the admin key is same as the on in Apache APISIX deployment). See <a href="https://github.com/apache/apisix-ingress-controller/blob/master/charts/ingress-apisix/values.yaml">value.yaml</a> to l [...]
+<p>Now try to open your EKS console, choosing your cluster and clicking the Workloads tag, you shall see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready.</p>
+<h2><a class="anchor" aria-hidden="true" id="test"></a><a href="#test" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p>Now we have deployed all components in Ingress APISIX, it's important to check whether it runs well. We will deploy a httpbin service and ask Apache APISIX to route all requests with Host <code>"local.httpbin.org"</code> to it.</p>
+<p>The first step we should do is created the httpbin workload and expose it.</p>
+<pre><code class="hljs css language-shell">kubectl run httpbin --image kennethreitz/httpbin --port 80
+kubectl expose pod httpbin --port 80
+</code></pre>
+<p>In order to let Apache APISIX routes requests correctly, we need create an ApisixRoute resource to drive it.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">#</span><span class="bash"> ar-httpbin.yaml</span>
+apiVersion: apisix.apache.org/v1
+kind: ApisixRoute
+metadata:
+ name: httpserver-route
+spec:
+ rules:
+ - host: local.httpbin.org
+ http:
+ paths:
+ - backend:
+ serviceName: httpbin
+ servicePort: 80
+ path: /*
+</code></pre>
+<p>The above ApisixRoute resource asks Apache APISIX to route requests which Host header is <code>"local.httpbin.org"</code> to the httpbin backend (the one we just created).</p>
+<p>Now try to apply it, note the service and the ApisixRoute resource should be put in the same namespace., crossing namespaces is not allowed in apisix-ingress-controller.</p>
+<pre><code class="hljs css language-shell">kubectl apply -f ar-httpbin.yaml
+</code></pre>
+<p>Test it by a simple curl call from a place where the Apache APISIX service is reachable.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> curl http://{apisix-gateway-ip}:{apisix-gateway-port}/headers -s -H <span class="hljs-string">'Host: local.httpbin.org'</span></span>
+
+{
+ "headers": {
+ "Accept": "*/*",
+ "Host": "httpbin.org",
+ "User-Agent": "curl/7.64.1",
+ "X-Amzn-Trace-Id": "Root=1-5ffc3273-2928e0844e19c9810d1bbd8a"
+ }
+}
+</code></pre>
+<p>If the Serivce type is <code>ClusterIP,</code> you have to login to a pod in the EKS cluster, then accessing Apache APISIX with its <code>ClusterIP</code> or Service FQDN. If it was exposed (no matter <code>NodePort</code> or <code>LoadBalancer</code>), just accessing its outside reachable endpoint.</p>
+<h2><a class="anchor" aria-hidden="true" id="see-also"></a><a href="#see-also" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 [...]
+<ul>
+<li><a href="https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api">https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api</a></li>
+<li><a href="https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter">https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter</a></li>
+</ul>
+</span></div></div><div class="blogSocialSection"></div></div><div class="blog-recent"><a class="button" href="/blog/">Recent Posts</a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#prerequisites">Prerequisites</a></li><li><a href="#install-apache-apisix">Install Apache APISIX</a></li><li><a href="#install-apisix-ingress-controller">Install apisix-ingress-controller</a></li><li><a href="#test">Test</a></li><li><a href="#see-also">See Also</a></li></ul></n [...]
+ document.addEventListener('keyup', function(e) {
+ if (e.target !== document.body) {
+ return;
+ }
+ // keyCode for '/' (slash)
+ if (e.keyCode === 191) {
+ const search = document.getElementById('search_input_react');
+ search && search.focus();
+ }
+ });
+ </script><script>
+ var search = docsearch({
+ appId: 'ZHVP417Y1Y',
+ apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+ indexName: 'apache-apisix-website',
+ inputSelector: '#search_input_react'
+ });
+ </script></body></html>
\ No newline at end of file
diff --git a/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
new file mode 100644
index 0000000..6125bb1
--- /dev/null
+++ b/blog/2021/01/21/run-ingress-apisix-on-amazon-eks/index.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Run Ingress APISIX on Amazon EKS · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="> [@Chao Zhang](https://github.com/tokers), Apache APISIX Comitter from [Shenzhen Zhiliu Technology Co.](https://www.apiseven.com/)"/><meta name="docsearch:language" content="en"/> [...]
+ document.addEventListener('DOMContentLoaded', function() {
+ addBackToTop(
+ {"zIndex":100}
+ )
+ });
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+ var coll = document.getElementsByClassName('collapsible');
+ var checkActiveCategory = true;
+ for (var i = 0; i < coll.length; i++) {
+ var links = coll[i].nextElementSibling.getElementsByTagName('*');
+ if (checkActiveCategory){
+ for (var j = 0; j < links.length; j++) {
+ if (links[j].classList.contains('navListItemActive')){
+ coll[i].nextElementSibling.classList.toggle('hide');
+ coll[i].childNodes[1].classList.toggle('rotate');
+ checkActiveCategory = false;
+ break;
+ }
+ }
+ }
+
+ coll[i].addEventListener('click', function() {
+ var arrow = this.childNodes[1];
+ arrow.classList.toggle('rotate');
+ var content = this.nextElementSibling;
+ content.classList.toggle('hide');
+ });
+ }
+
+ document.addEventListener('DOMContentLoaded', function() {
+ createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+ createToggler('#tocToggler', 'body', 'tocActive');
+
+ var headings = document.querySelector('.toc-headings');
+ headings && headings.addEventListener('click', function(event) {
+ var el = event.target;
+ while(el !== headings){
+ if (el.tagName === 'A') {
+ document.body.classList.remove('tocActive');
+ break;
+ } else{
+ el = el.parentNode;
+ }
+ }
+ }, false);
+
+ function createToggler(togglerSelector, targetSelector, className) {
+ var toggler = document.querySelector(togglerSelector);
+ var target = document.querySelector(targetSelector);
+
+ if (!toggler) {
+ return;
+ }
+
+ toggler.onclick = function(event) {
+ event.preventDefault();
+
+ target.classList.toggle(className);
+ };
+ }
+ });
+ </script></nav></div><div class="container mainContainer postContainer blogContainer"><div class="wrapper"><div class="lonePost"><div class="post"><header class="postHeader"><h1 class="postHeaderTitle"><a href="/blog/2021/01/21/run-ingress-apisix-on-amazon-eks">Run Ingress APISIX on Amazon EKS</a></h1><p class="post-meta">January 21, 2021</p><div class="authorBlock"><p class="post-authorName"><a href="https://github.com/tokers" target="_blank" rel="noreferrer noopener">Chao Zhang [...]
+<p><a href="https://github.com/tokers">@Chao Zhang</a>, Apache APISIX Comitter from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p>
+<p>Source:</p>
+<ul>
+<li><a href="https://github.com/apache/apisix">https://github.com/apache/apisix</a></li>
+<li><a href="https://github.com/apache/apisix-helm-chart">https://github.com/apache/apisix-helm-chart</a></li>
+<li><a href="https://github.com/apache/apisix-ingress-controller">https://github.com/apache/apisix-ingress-controller</a></li>
+</ul>
+</blockquote>
+<p>This post is based on <a href="https://github.com/apache/apisix-ingress-controller/blob/master/docs/deployments/aws.md">Install Ingress APISIX on Amazon EKS</a>.</p>
+<ul>
+<li></li>
+</ul>
+<p>Amazon Elastic Kubernetes Service (<a href="https://amazonaws-china.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc">Amazon EKS</a>) gives you the flexibility to start, run, and scale Kubernetes applications in the AWS cloud or on-premises. This article explains how to run Ingress APISIX on it.</p>
+<p>Ingress APISIX brings good features (traffic splitting, multiple protocols, authentication and etc) of Apache APISIX to Kubernetes, with a well-designed Controller componment to drive it, which helps users to achieve complex demands for the north-south traffic.</p>
+<h2><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Before you go ahead, make sure you have an available EKS cluster on Amazon AWS. If you don't have one, please create it according to the guide.</p>
+<p>You shall have kubectl tool in your own environment, set the context to your EKS cluster by running:</p>
+<pre><code class="hljs css language-shell">aws eks update-kubeconfig --name <your eks cluster name> --region <your region>
+</code></pre>
+<p>After the Kubernetes cluster is ready, creating the namespace ingress-apisix, all subsequent resources will be created at this namespace.</p>
+<p>kubectl create namespace ingress-apisix</p>
+<p>We use <a href="https://helm.sh/">Helm</a> to deploy all components in Ingress APISIX (<a href="https://github.com/apache/apisix">Apache APISIX</a> and <a href="https://github.com/apache/apisix-ingress-controller">apisix-ingress-controller</a>), so please also install Helm according to its installation guide. The helm charts for Apache APISIX and apisix-ingress-controller are in apache/apisix-helm-chart and apache/apisix-ingress-controller, clone them to get the charts.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apache-apisix"></a><a href="#install-apache-apisix" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Apache APISIX as the proxy plane of apisix-ingress-controller, should be deployed in advance.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-helm-chart
+helm repo add bitnami https://charts.bitnami.com/bitnami
+helm dependency update ./chart/apisix
+helm install apisix ./chart/apisix \
+ --set gateway.type=LoadBalancer \
+ --set allow.ipList="{0.0.0.0/0}" \
+ --namespace ingress-apisix
+kubectl get service --namespace ingress-apisix
+</code></pre>
+<p>The above commands created two Kubernetes Service resources, one is <code>apisix-gateway</code>, which processes the real traffic; another is <code>apisix-admin</code>, which acts as the control plane to process all the configuration changes. Here we created the <code>apisix-gateway</code> as a <code>LoadBalancer</code> type Service, which resorts the <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html">AWS Network Balancer</a> to expose it to th [...]
+<pre><code class="hljs css language-shell">kubectl get service apisix-gateway \
+--namespace ingress-apisix \
+-o jsonpath='{.status.loadBalancer.ingress[].hostname}'
+</code></pre>
+<p>Another thing should be concerned that the <code>allow.ipList</code> field should be customized according to the <a href="https://amazonaws-china.com/premiumsupport/knowledge-center/eks-multiple-cidr-ranges/">EKS CIDR Ranges</a> in your EKS cluster, so that the apisix-ingress-controller can be authorized by Apache APISIX (for the resources pushing).</p>
+<p>See value.yaml](<a href="https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml">https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml</a>) to learn all the configuration items if you have other requirements.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apisix-ingress-controller"></a><a href="#install-apisix-ingress-controller" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
+<p>After Apache APISIX is deployed successfully, now it's time to install the controller component.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-ingress-controller
+<span class="hljs-meta">#</span><span class="bash"> install base resources, e.g. ServiceAccount.</span>
+helm install ingress-apisix-base -n ingress-apisix ./charts/base
+<span class="hljs-meta">#</span><span class="bash"> install apisix-ingress-controller</span>
+helm install ingress-apisix ./charts/ingress-apisix \
+ --set ingressController.image.tag=dev \
+ --set ingressController.config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
+ --set ingressController.config.apisix.adminKey={YOUR ADMIN KEY} \
+ --namespace ingress-apisix
+</code></pre>
+<p>The ingress-apisix-base chart installed some basic dependencies for apisix-ingress-controller, such as ServiceAccount, its exclusive CRDs and etc.</p>
+<p>The ingress-apisix chart guides us how to install the controller itself, you can change the image tag to the desired release version, also the value of <code>ingressController.config.apisix.adminKey</code> in abovementioned commands should be filled according to your pratical usage (and be sure the admin key is same as the on in Apache APISIX deployment). See <a href="https://github.com/apache/apisix-ingress-controller/blob/master/charts/ingress-apisix/values.yaml">value.yaml</a> to l [...]
+<p>Now try to open your EKS console, choosing your cluster and clicking the Workloads tag, you shall see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready.</p>
+<h2><a class="anchor" aria-hidden="true" id="test"></a><a href="#test" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p>Now we have deployed all components in Ingress APISIX, it's important to check whether it runs well. We will deploy a httpbin service and ask Apache APISIX to route all requests with Host <code>"local.httpbin.org"</code> to it.</p>
+<p>The first step we should do is created the httpbin workload and expose it.</p>
+<pre><code class="hljs css language-shell">kubectl run httpbin --image kennethreitz/httpbin --port 80
+kubectl expose pod httpbin --port 80
+</code></pre>
+<p>In order to let Apache APISIX routes requests correctly, we need create an ApisixRoute resource to drive it.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">#</span><span class="bash"> ar-httpbin.yaml</span>
+apiVersion: apisix.apache.org/v1
+kind: ApisixRoute
+metadata:
+ name: httpserver-route
+spec:
+ rules:
+ - host: local.httpbin.org
+ http:
+ paths:
+ - backend:
+ serviceName: httpbin
+ servicePort: 80
+ path: /*
+</code></pre>
+<p>The above ApisixRoute resource asks Apache APISIX to route requests which Host header is <code>"local.httpbin.org"</code> to the httpbin backend (the one we just created).</p>
+<p>Now try to apply it, note the service and the ApisixRoute resource should be put in the same namespace., crossing namespaces is not allowed in apisix-ingress-controller.</p>
+<pre><code class="hljs css language-shell">kubectl apply -f ar-httpbin.yaml
+</code></pre>
+<p>Test it by a simple curl call from a place where the Apache APISIX service is reachable.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> curl http://{apisix-gateway-ip}:{apisix-gateway-port}/headers -s -H <span class="hljs-string">'Host: local.httpbin.org'</span></span>
+
+{
+ "headers": {
+ "Accept": "*/*",
+ "Host": "httpbin.org",
+ "User-Agent": "curl/7.64.1",
+ "X-Amzn-Trace-Id": "Root=1-5ffc3273-2928e0844e19c9810d1bbd8a"
+ }
+}
+</code></pre>
+<p>If the Serivce type is <code>ClusterIP,</code> you have to login to a pod in the EKS cluster, then accessing Apache APISIX with its <code>ClusterIP</code> or Service FQDN. If it was exposed (no matter <code>NodePort</code> or <code>LoadBalancer</code>), just accessing its outside reachable endpoint.</p>
+<h2><a class="anchor" aria-hidden="true" id="see-also"></a><a href="#see-also" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 [...]
+<ul>
+<li><a href="https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api">https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api</a></li>
+<li><a href="https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter">https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter</a></li>
+</ul>
+</span></div></div><div class="blogSocialSection"></div></div><div class="blog-recent"><a class="button" href="/blog/">Recent Posts</a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#prerequisites">Prerequisites</a></li><li><a href="#install-apache-apisix">Install Apache APISIX</a></li><li><a href="#install-apisix-ingress-controller">Install apisix-ingress-controller</a></li><li><a href="#test">Test</a></li><li><a href="#see-also">See Also</a></li></ul></n [...]
+ document.addEventListener('keyup', function(e) {
+ if (e.target !== document.body) {
+ return;
+ }
+ // keyCode for '/' (slash)
+ if (e.keyCode === 191) {
+ const search = document.getElementById('search_input_react');
+ search && search.focus();
+ }
+ });
+ </script><script>
+ var search = docsearch({
+ appId: 'ZHVP417Y1Y',
+ apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+ indexName: 'apache-apisix-website',
+ inputSelector: '#search_input_react'
+ });
+ </script></body></html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
index e6192f7..70d0401 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -2,13 +2,24 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://apisix.apache.org//blog</id>
<title>Apache APISIX™ Blog</title>
- <updated>2020-12-18T06:00:00.000Z</updated>
+ <updated>2021-01-21T06:00:00.000Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<link rel="alternate" href="https://apisix.apache.org//blog"/>
<subtitle>The best place to stay up-to-date with the latest Apache APISIX™ news and events.</subtitle>
<logo>https://apisix.apache.org//img/logo.png</logo>
<rights>Copyright © 2019-2021 The Apache Software Foundation. Apache APISIX, APISIX™, Apache, the Apache feather logo, and the Apache APISIX project logo are either registered trademarks or trademarks of the Apache Software Foundation.</rights>
<entry>
+ <title type="html"><![CDATA[Run Ingress APISIX on Amazon EKS]]></title>
+ <id>https://apisix.apache.org//blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html</id>
+ <link href="https://apisix.apache.org//blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html"/>
+ <updated>2021-01-21T06:00:00.000Z</updated>
+ <summary type="html"><![CDATA[<blockquote> <p><a href="https://github.com/tokers">@Chao Zhang</a>, Apache APISIX Comitter from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p> <p>Source:</p> <ul> <li><a href="https://github.com/apache/apisix">https://github.com/apache/apisix</a></li> <li><a href="https://github.com/apache/apisix-helm-chart">https://github.com/apache/apisix-helm-chart</a></li> <li><a href="https://github.com/apache/apisix-ingress-controll [...]
+ <author>
+ <name>Chao Zhang</name>
+ <uri>https://github.com/tokers</uri>
+ </author>
+ </entry>
+ <entry>
<title type="html"><![CDATA[初探 Kubernetes Service APIs]]></title>
<id>https://apisix.apache.org//blog/2020/12/18/a-first-look-at-kubernetes-service-api.html</id>
<link href="https://apisix.apache.org//blog/2020/12/18/a-first-look-at-kubernetes-service-api.html"/>
diff --git a/blog/feed.xml b/blog/feed.xml
index f4b8788..917cde5 100644
--- a/blog/feed.xml
+++ b/blog/feed.xml
@@ -4,7 +4,7 @@
<title>Apache APISIX™ Blog</title>
<link>https://apisix.apache.org//blog</link>
<description>The best place to stay up-to-date with the latest Apache APISIX™ news and events.</description>
- <lastBuildDate>Fri, 18 Dec 2020 06:00:00 GMT</lastBuildDate>
+ <lastBuildDate>Thu, 21 Jan 2021 06:00:00 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<image>
@@ -14,6 +14,13 @@
</image>
<copyright>Copyright © 2019-2021 The Apache Software Foundation. Apache APISIX, APISIX™, Apache, the Apache feather logo, and the Apache APISIX project logo are either registered trademarks or trademarks of the Apache Software Foundation.</copyright>
<item>
+ <title><![CDATA[Run Ingress APISIX on Amazon EKS]]></title>
+ <link>https://apisix.apache.org//blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html</link>
+ <guid>https://apisix.apache.org//blog/2021/01/21/run-ingress-apisix-on-amazon-eks.html</guid>
+ <pubDate>Thu, 21 Jan 2021 06:00:00 GMT</pubDate>
+ <description><![CDATA[<blockquote> <p><a href="https://github.com/tokers">@Chao Zhang</a>, Apache APISIX Comitter from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p> <p>Source:</p> <ul> <li><a href="https://github.com/apache/apisix">https://github.com/apache/apisix</a></li> <li><a href="https://github.com/apache/apisix-helm-chart">https://github.com/apache/apisix-helm-chart</a></li> <li><a href="https://github.com/apache/apisix-ingress-controller"> [...]
+ </item>
+ <item>
<title><![CDATA[初探 Kubernetes Service APIs]]></title>
<link>https://apisix.apache.org//blog/2020/12/18/a-first-look-at-kubernetes-service-api.html</link>
<guid>https://apisix.apache.org//blog/2020/12/18/a-first-look-at-kubernetes-service-api.html</guid>
diff --git a/blog/index.html b/blog/index.html
index 3f99079..70cdfec 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -4,7 +4,7 @@
{"zIndex":100}
)
});
- </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class= [...]
+ </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class= [...]
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
@@ -60,7 +60,107 @@
};
}
});
- </script></nav></div><div class="container mainContainer postContainer blogContainer"><div class="wrapper"><div class="posts"><div class="post"><header class="postHeader"><h1 class="postHeaderTitle"><a href="/blog/2020/12/18/a-first-look-at-kubernetes-service-api">初探 Kubernetes Service APIs</a></h1><p class="post-meta">December 18, 2020</p><div class="authorBlock"><p class="post-authorName"><a href="https://github.com/gxthrj" target="_blank" rel="noreferrer noopener">Wei Jin</a>< [...]
+ </script></nav></div><div class="container mainContainer postContainer blogContainer"><div class="wrapper"><div class="posts"><div class="post"><header class="postHeader"><h1 class="postHeaderTitle"><a href="/blog/2021/01/21/run-ingress-apisix-on-amazon-eks">Run Ingress APISIX on Amazon EKS</a></h1><p class="post-meta">January 21, 2021</p><div class="authorBlock"><p class="post-authorName"><a href="https://github.com/tokers" target="_blank" rel="noreferrer noopener">Chao Zhang</a [...]
+<p><a href="https://github.com/tokers">@Chao Zhang</a>, Apache APISIX Comitter from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p>
+<p>Source:</p>
+<ul>
+<li><a href="https://github.com/apache/apisix">https://github.com/apache/apisix</a></li>
+<li><a href="https://github.com/apache/apisix-helm-chart">https://github.com/apache/apisix-helm-chart</a></li>
+<li><a href="https://github.com/apache/apisix-ingress-controller">https://github.com/apache/apisix-ingress-controller</a></li>
+</ul>
+</blockquote>
+<p>This post is based on <a href="https://github.com/apache/apisix-ingress-controller/blob/master/docs/deployments/aws.md">Install Ingress APISIX on Amazon EKS</a>.</p>
+<ul>
+<li></li>
+</ul>
+<p>Amazon Elastic Kubernetes Service (<a href="https://amazonaws-china.com/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc">Amazon EKS</a>) gives you the flexibility to start, run, and scale Kubernetes applications in the AWS cloud or on-premises. This article explains how to run Ingress APISIX on it.</p>
+<p>Ingress APISIX brings good features (traffic splitting, multiple protocols, authentication and etc) of Apache APISIX to Kubernetes, with a well-designed Controller componment to drive it, which helps users to achieve complex demands for the north-south traffic.</p>
+<h2><a class="anchor" aria-hidden="true" id="prerequisites"></a><a href="#prerequisites" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Before you go ahead, make sure you have an available EKS cluster on Amazon AWS. If you don't have one, please create it according to the guide.</p>
+<p>You shall have kubectl tool in your own environment, set the context to your EKS cluster by running:</p>
+<pre><code class="hljs css language-shell">aws eks update-kubeconfig --name <your eks cluster name> --region <your region>
+</code></pre>
+<p>After the Kubernetes cluster is ready, creating the namespace ingress-apisix, all subsequent resources will be created at this namespace.</p>
+<p>kubectl create namespace ingress-apisix</p>
+<p>We use <a href="https://helm.sh/">Helm</a> to deploy all components in Ingress APISIX (<a href="https://github.com/apache/apisix">Apache APISIX</a> and <a href="https://github.com/apache/apisix-ingress-controller">apisix-ingress-controller</a>), so please also install Helm according to its installation guide. The helm charts for Apache APISIX and apisix-ingress-controller are in apache/apisix-helm-chart and apache/apisix-ingress-controller, clone them to get the charts.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apache-apisix"></a><a href="#install-apache-apisix" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Apache APISIX as the proxy plane of apisix-ingress-controller, should be deployed in advance.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-helm-chart
+helm repo add bitnami https://charts.bitnami.com/bitnami
+helm dependency update ./chart/apisix
+helm install apisix ./chart/apisix \
+ --set gateway.type=LoadBalancer \
+ --set allow.ipList="{0.0.0.0/0}" \
+ --namespace ingress-apisix
+kubectl get service --namespace ingress-apisix
+</code></pre>
+<p>The above commands created two Kubernetes Service resources, one is <code>apisix-gateway</code>, which processes the real traffic; another is <code>apisix-admin</code>, which acts as the control plane to process all the configuration changes. Here we created the <code>apisix-gateway</code> as a <code>LoadBalancer</code> type Service, which resorts the <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html">AWS Network Balancer</a> to expose it to th [...]
+<pre><code class="hljs css language-shell">kubectl get service apisix-gateway \
+--namespace ingress-apisix \
+-o jsonpath='{.status.loadBalancer.ingress[].hostname}'
+</code></pre>
+<p>Another thing should be concerned that the <code>allow.ipList</code> field should be customized according to the <a href="https://amazonaws-china.com/premiumsupport/knowledge-center/eks-multiple-cidr-ranges/">EKS CIDR Ranges</a> in your EKS cluster, so that the apisix-ingress-controller can be authorized by Apache APISIX (for the resources pushing).</p>
+<p>See value.yaml](<a href="https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml">https://github.com/apache/apisix-helm-chart/blob/master/chart/apisix/values.yaml</a>) to learn all the configuration items if you have other requirements.</p>
+<h2><a class="anchor" aria-hidden="true" id="install-apisix-ingress-controller"></a><a href="#install-apisix-ingress-controller" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
+<p>After Apache APISIX is deployed successfully, now it's time to install the controller component.</p>
+<pre><code class="hljs css language-shell">cd /path/to/apisix-ingress-controller
+<span class="hljs-meta">#</span><span class="bash"> install base resources, e.g. ServiceAccount.</span>
+helm install ingress-apisix-base -n ingress-apisix ./charts/base
+<span class="hljs-meta">#</span><span class="bash"> install apisix-ingress-controller</span>
+helm install ingress-apisix ./charts/ingress-apisix \
+ --set ingressController.image.tag=dev \
+ --set ingressController.config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
+ --set ingressController.config.apisix.adminKey={YOUR ADMIN KEY} \
+ --namespace ingress-apisix
+</code></pre>
+<p>The ingress-apisix-base chart installed some basic dependencies for apisix-ingress-controller, such as ServiceAccount, its exclusive CRDs and etc.</p>
+<p>The ingress-apisix chart guides us how to install the controller itself, you can change the image tag to the desired release version, also the value of <code>ingressController.config.apisix.adminKey</code> in abovementioned commands should be filled according to your pratical usage (and be sure the admin key is same as the on in Apache APISIX deployment). See <a href="https://github.com/apache/apisix-ingress-controller/blob/master/charts/ingress-apisix/values.yaml">value.yaml</a> to l [...]
+<p>Now try to open your EKS console, choosing your cluster and clicking the Workloads tag, you shall see all pods of Apache APISIX, etcd and apisix-ingress-controller are ready.</p>
+<h2><a class="anchor" aria-hidden="true" id="test"></a><a href="#test" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p>Now we have deployed all components in Ingress APISIX, it's important to check whether it runs well. We will deploy a httpbin service and ask Apache APISIX to route all requests with Host <code>"local.httpbin.org"</code> to it.</p>
+<p>The first step we should do is created the httpbin workload and expose it.</p>
+<pre><code class="hljs css language-shell">kubectl run httpbin --image kennethreitz/httpbin --port 80
+kubectl expose pod httpbin --port 80
+</code></pre>
+<p>In order to let Apache APISIX routes requests correctly, we need create an ApisixRoute resource to drive it.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">#</span><span class="bash"> ar-httpbin.yaml</span>
+apiVersion: apisix.apache.org/v1
+kind: ApisixRoute
+metadata:
+ name: httpserver-route
+spec:
+ rules:
+ - host: local.httpbin.org
+ http:
+ paths:
+ - backend:
+ serviceName: httpbin
+ servicePort: 80
+ path: /*
+</code></pre>
+<p>The above ApisixRoute resource asks Apache APISIX to route requests which Host header is <code>"local.httpbin.org"</code> to the httpbin backend (the one we just created).</p>
+<p>Now try to apply it, note the service and the ApisixRoute resource should be put in the same namespace., crossing namespaces is not allowed in apisix-ingress-controller.</p>
+<pre><code class="hljs css language-shell">kubectl apply -f ar-httpbin.yaml
+</code></pre>
+<p>Test it by a simple curl call from a place where the Apache APISIX service is reachable.</p>
+<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> curl http://{apisix-gateway-ip}:{apisix-gateway-port}/headers -s -H <span class="hljs-string">'Host: local.httpbin.org'</span></span>
+
+{
+ "headers": {
+ "Accept": "*/*",
+ "Host": "httpbin.org",
+ "User-Agent": "curl/7.64.1",
+ "X-Amzn-Trace-Id": "Root=1-5ffc3273-2928e0844e19c9810d1bbd8a"
+ }
+}
+</code></pre>
+<p>If the Serivce type is <code>ClusterIP,</code> you have to login to a pod in the EKS cluster, then accessing Apache APISIX with its <code>ClusterIP</code> or Service FQDN. If it was exposed (no matter <code>NodePort</code> or <code>LoadBalancer</code>), just accessing its outside reachable endpoint.</p>
+<h2><a class="anchor" aria-hidden="true" id="see-also"></a><a href="#see-also" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 [...]
+<ul>
+<li><a href="https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api">https://www.apiseven.com/zh/blog/a-first-look-at-kubernetes-service-api</a></li>
+<li><a href="https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter">https://www.apiseven.com/zh/blog/another-way-to-implement-envoy-filter</a></li>
+</ul>
+</span></div></article></div><div class="post"><header class="postHeader"><h1 class="postHeaderTitle"><a href="/blog/2020/12/18/a-first-look-at-kubernetes-service-api">初探 Kubernetes Service APIs</a></h1><p class="post-meta">December 18, 2020</p><div class="authorBlock"><p class="post-authorName"><a href="https://github.com/gxthrj" target="_blank" rel="noreferrer noopener">Wei Jin</a></p><div class="authorPhoto"><a href="https://github.com/gxthrj" target="_blank" rel="noreferrer noopener" [...]
<p><a href="https://github.com/gxthrj">@gxthrj</a>, Apache APISIX PMC & Apache apisix-ingress-controller Founder from <a href="https://www.apiseven.com/">Shenzhen Zhiliu Technology Co.</a></p>
<p>Source:</p>
<ul>
diff --git a/committer-guide.html b/committer-guide.html
index 51d9005..5f606a8 100644
--- a/committer-guide.html
+++ b/committer-guide.html
@@ -100,7 +100,7 @@
<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-pmc"></a><a href="#how-to-become-a-apisix-pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
<p>In APISIX community, if a committer who have earned even more merit, can be invited to be a part of the Project Management Committee (PMC).</p>
<p>One thing that is sometimes hard to understand when you are new to the open development process used at the ASF, is that we value the community more than the code. A strong and healthy community will be respectful and be a fun and rewarding place. More importantly, a diverse and healthy community can continue to support the code over the longer term, even as individual companies come and go from the field.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li><a [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li>< [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/committer-guide/index.html b/committer-guide/index.html
index 51d9005..5f606a8 100644
--- a/committer-guide/index.html
+++ b/committer-guide/index.html
@@ -100,7 +100,7 @@
<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-pmc"></a><a href="#how-to-become-a-apisix-pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
<p>In APISIX community, if a committer who have earned even more merit, can be invited to be a part of the Project Management Committee (PMC).</p>
<p>One thing that is sometimes hard to understand when you are new to the open development process used at the ASF, is that we value the community more than the code. A strong and healthy community will be respectful and be a fun and rewarding place. More importantly, a diverse and healthy community can continue to support the code over the longer term, even as individual companies come and go from the field.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li><a [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li>< [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/contributor-guide.html b/contributor-guide.html
index 3ba4163..7815ad7 100644
--- a/contributor-guide.html
+++ b/contributor-guide.html
@@ -116,7 +116,7 @@ $ git push origin --delete issueNo
<pre><code class="hljs css language-sh">$ git config --global user.name <span class="hljs-string">"username"</span>
$ git config --global user.email <span class="hljs-string">"mail address"</span>
</code></pre>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscribe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></li [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscribe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></l [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/contributor-guide/index.html b/contributor-guide/index.html
index 3ba4163..7815ad7 100644
--- a/contributor-guide/index.html
+++ b/contributor-guide/index.html
@@ -116,7 +116,7 @@ $ git push origin --delete issueNo
<pre><code class="hljs css language-sh">$ git config --global user.name <span class="hljs-string">"username"</span>
$ git config --global user.email <span class="hljs-string">"mail address"</span>
</code></pre>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscribe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></li [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscribe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></l [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/downloads.html b/downloads.html
index 22d0a91..c488a33 100644
--- a/downloads.html
+++ b/downloads.html
@@ -62,7 +62,7 @@ or
pgp apache-apisix-********.asc
</code></pre>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#apisix-ingress-controller">APISIX™ Ingress Controller</a></li><li><a href="#all-releases">All Releases</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul>< [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#apisix-ingress-controller">APISIX™ Ingress Controller</a></li><li><a href="#all-releases">All Releases</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul> [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/downloads/index.html b/downloads/index.html
index 22d0a91..c488a33 100644
--- a/downloads/index.html
+++ b/downloads/index.html
@@ -62,7 +62,7 @@ or
pgp apache-apisix-********.asc
</code></pre>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#apisix-ingress-controller">APISIX™ Ingress Controller</a></li><li><a href="#all-releases">All Releases</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul>< [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#apisix-ingress-controller">APISIX™ Ingress Controller</a></li><li><a href="#all-releases">All Releases</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul> [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/release-guide.html b/release-guide.html
index 4944bf7..5152290 100644
--- a/release-guide.html
+++ b/release-guide.html
@@ -256,7 +256,7 @@ Committed revision 37435.
<p>The <a href="https://github.com/apache/apisix-website">Download</a> page contains links for Apache APISIX, Apache APISIX Dashboard, and other sources, and we need to update its contents <a href="https://github.com/apache/apisix-website/blob/master/docs/download.md">here</a>.</p>
<h3><a class="anchor" aria-hidden="true" id="send-announce"></a><a href="#send-announce" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
<p>Click <a href="https://lists.apache.org/thread.html/r6e90ffb7964314605c082ac3ae204303ad94f0f71087542c33fcd7bf%40%3Cdev.apisix.apache.org%3E">here</a> to view the reference email send announce email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> and <a href="mailto:announce@apache.org">announce@apache.org</a></p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#release-flow">Release Flow</a><ul class="toc-headings"><li><a href="#planning-phase">Planning Phase</a></li><li><a href="#development-phase">Development Phase</a></li><li><a href="#r [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#release-flow">Release Flow</a><ul class="toc-headings"><li><a href="#planning-phase">Planning Phase</a></li><li><a href="#development-phase">Development Phase</a></li><li><a href="# [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/release-guide/index.html b/release-guide/index.html
index 4944bf7..5152290 100644
--- a/release-guide/index.html
+++ b/release-guide/index.html
@@ -256,7 +256,7 @@ Committed revision 37435.
<p>The <a href="https://github.com/apache/apisix-website">Download</a> page contains links for Apache APISIX, Apache APISIX Dashboard, and other sources, and we need to update its contents <a href="https://github.com/apache/apisix-website/blob/master/docs/download.md">here</a>.</p>
<h3><a class="anchor" aria-hidden="true" id="send-announce"></a><a href="#send-announce" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
<p>Click <a href="https://lists.apache.org/thread.html/r6e90ffb7964314605c082ac3ae204303ad94f0f71087542c33fcd7bf%40%3Cdev.apisix.apache.org%3E">here</a> to view the reference email send announce email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> and <a href="mailto:announce@apache.org">announce@apache.org</a></p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#release-flow">Release Flow</a><ul class="toc-headings"><li><a href="#planning-phase">Planning Phase</a></li><li><a href="#development-phase">Development Phase</a></li><li><a href="#r [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#release-flow">Release Flow</a><ul class="toc-headings"><li><a href="#planning-phase">Planning Phase</a></li><li><a href="#development-phase">Development Phase</a></li><li><a href="# [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/security.html b/security.html
index c63a61f..f8ad45f 100644
--- a/security.html
+++ b/security.html
@@ -63,7 +63,7 @@
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Security</h1></header><article><div><span><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality.</p>
<p>If you have apprehensions regarding APISIX’s security or you discover vulnerability or potential threat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at <a href="mailto:security@apache.org">security@apache.org</a>. Please specify the project name as APISIX and its product name APISIX or APISIX-Dashboard in the email and provide a description of the relevant problem or potential threat. You are also urged to recommend the way to reproduce and replicat [...]
<p>Please pay attention to report the security issue on the security email before disclosing it on the public domain.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscribe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.ap [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscribe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.a [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/security/index.html b/security/index.html
index c63a61f..f8ad45f 100644
--- a/security/index.html
+++ b/security/index.html
@@ -63,7 +63,7 @@
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Security</h1></header><article><div><span><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality.</p>
<p>If you have apprehensions regarding APISIX’s security or you discover vulnerability or potential threat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at <a href="mailto:security@apache.org">security@apache.org</a>. Please specify the project name as APISIX and its product name APISIX or APISIX-Dashboard in the email and provide a description of the relevant problem or potential threat. You are also urged to recommend the way to reproduce and replicat [...]
<p>Please pay attention to report the security issue on the security email before disclosing it on the public domain.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscribe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.ap [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscribe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.a [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/sitemap.xml b/sitemap.xml
index 1c33cb1..ec74412 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/help</loc><changefreq>weekly</changefreq><priority>0.5</priority><x [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/help</loc><changefreq>weekly</changefreq><priority>0.5</priority><x [...]
\ No newline at end of file
diff --git a/subscribe-guide.html b/subscribe-guide.html
index 5e261e1..c34162b 100644
--- a/subscribe-guide.html
+++ b/subscribe-guide.html
@@ -67,7 +67,7 @@
<li><p>Receive the Welcome e-mail. After finishing the two steps above, an e-mail with the subject of WELCOME to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> will be sent to your e-mail address. Until now, you have succeeded in subscribing Apache APISIX mailing-list.</p></li>
<li><p>Until now, you can interact with community by your subscribed email or track email conversations by Archived email list.</p></li>
</ol>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" c [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/subscribe-guide/index.html b/subscribe-guide/index.html
index 5e261e1..c34162b 100644
--- a/subscribe-guide/index.html
+++ b/subscribe-guide/index.html
@@ -67,7 +67,7 @@
<li><p>Receive the Welcome e-mail. After finishing the two steps above, an e-mail with the subject of WELCOME to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> will be sent to your e-mail address. Until now, you have succeeded in subscribing Apache APISIX mailing-list.</p></li>
<li><p>Until now, you can interact with community by your subscribed email or track email conversations by Archived email list.</p></li>
</ol>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" c [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/team.html b/team.html
index a530941..71588c6 100644
--- a/team.html
+++ b/team.html
@@ -76,7 +76,7 @@
<h2><a class="anchor" aria-hidden="true" id="becoming-a-committer"></a><a href="#becoming-a-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, PMC and Committers will make decisions to invite the contributor join Committers and PMC.</p>
<p>You can read <a href="/contributor-guide">Contributor Guide</a> to participate the community, and can get more information on <a href="/committer-guide">Committer Guide</a>.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</a [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</ [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
diff --git a/team/index.html b/team/index.html
index a530941..71588c6 100644
--- a/team/index.html
+++ b/team/index.html
@@ -76,7 +76,7 @@
<h2><a class="anchor" aria-hidden="true" id="becoming-a-committer"></a><a href="#becoming-a-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, PMC and Committers will make decisions to invite the contributor join Committers and PMC.</p>
<p>You can read <a href="/contributor-guide">Contributor Guide</a> to participate the community, and can get more information on <a href="/committer-guide">Committer Guide</a>.</p>
-</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/20/2021 by Peter Zhu</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</a [...]
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 1/21/2021 by Alex Zhang</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</ [...]
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;