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 <[email protected]>
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:[email protected]">[email protected]</a> and <a
href="mailto:[email protected]">[email protected]</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:[email protected]">[email protected]</a> and <a
href="mailto:[email protected]">[email protected]</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:[email protected]">[email protected]</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:[email protected]">[email protected]</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:[email protected]">[email protected]</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:[email protected]">[email protected]</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;