diff --git a/website/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way.md b/website/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way.md index c27ea16ecc50f..c7dff9a2eaa71 100644 --- a/website/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way.md +++ b/website/articles/Apache-APISIX-From-OpenSource-Commercialization-by-Apache-Way.md @@ -25,4 +25,4 @@ Apache Way 是被无数开源项目证实的社区成功之道,那么对于开 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Apache-APISIX-From-OpenSource-Commercialization.md b/website/articles/Apache-APISIX-From-OpenSource-Commercialization.md index 95d9f23a34e3b..681ace5b24776 100644 --- a/website/articles/Apache-APISIX-From-OpenSource-Commercialization.md +++ b/website/articles/Apache-APISIX-From-OpenSource-Commercialization.md @@ -24,4 +24,4 @@ Apache APISIX 从开源项目到商业化之路。 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Apache-APISIX-Incubator-Journey.md b/website/articles/Apache-APISIX-Incubator-Journey.md index f2457fa644ba6..ea9391c3d24c8 100644 --- a/website/articles/Apache-APISIX-Incubator-Journey.md +++ b/website/articles/Apache-APISIX-Incubator-Journey.md @@ -23,4 +23,4 @@ Apache APISIX 的孵化过程。 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Apache-APISIX-Kubernetes-Ingress.md b/website/articles/Apache-APISIX-Kubernetes-Ingress.md index e054a457c2b76..1ec70ca8b3cba 100644 --- a/website/articles/Apache-APISIX-Kubernetes-Ingress.md +++ b/website/articles/Apache-APISIX-Kubernetes-Ingress.md @@ -26,4 +26,4 @@ description: 介绍基于 Apache APISIX 的 Kubernetes Ingress 的优势以及 A 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Apache-APISIX-in-China-Mobile-Cloud.md b/website/articles/Apache-APISIX-in-China-Mobile-Cloud.md index 75bc13852e59f..4936438cacb11 100644 --- a/website/articles/Apache-APISIX-in-China-Mobile-Cloud.md +++ b/website/articles/Apache-APISIX-in-China-Mobile-Cloud.md @@ -25,4 +25,4 @@ description: 该演讲主题主要是讲述 Apache APISIX 在中国移动公有 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar.md b/website/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar.md index 833e71ac68fb5..784d7566b2776 100644 --- a/website/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar.md +++ b/website/articles/How-To-Extend-Apache-APISIX-into-a-Service-Mesh-Sidecar.md @@ -24,4 +24,4 @@ description: 在这个主题中将介绍 apisix-mesh-agent 项目,它有一些 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed.md b/website/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed.md index 81e3ccd217eed..a4f7cc5ed5e9e 100644 --- a/website/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed.md +++ b/website/articles/Relying-On-The-Community-To-Get-Apache-APISIX-Up-Speed.md @@ -26,4 +26,4 @@ description: 在过去的一年里,APISIX 已经成为全世界最活跃的 AP 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Rendering-Community-Events-Using-ECharts.md b/website/articles/Rendering-Community-Events-Using-ECharts.md index 45de727ee020f..8e4926adc767b 100644 --- a/website/articles/Rendering-Community-Events-Using-ECharts.md +++ b/website/articles/Rendering-Community-Events-Using-ECharts.md @@ -25,4 +25,4 @@ description: 通过以下方式分析了开源资源库的情况:1.贡献者 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Speed-Limiting-With-Apache-APISIX.md b/website/articles/Speed-Limiting-With-Apache-APISIX.md index 72e5ddf0287c3..970dfc389165e 100644 --- a/website/articles/Speed-Limiting-With-Apache-APISIX.md +++ b/website/articles/Speed-Limiting-With-Apache-APISIX.md @@ -27,4 +27,4 @@ description: 本次分享将带来如何使用 Apache APISIX 来实现动态、 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh.md b/website/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh.md index f5f479668a805..8dd03a2c24d3c 100644 --- a/website/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh.md +++ b/website/articles/Test-Apache-APISIX-Resilience-With-Chaos-Mesh.md @@ -28,4 +28,4 @@ Apache APISIX 是领先的 API 网关 OSS 之一。为了确保一切按计划 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/The-Appeal-of-OpenSource.md b/website/articles/The-Appeal-of-OpenSource.md index 5202d6537d84f..128ba3d0ecc46 100644 --- a/website/articles/The-Appeal-of-OpenSource.md +++ b/website/articles/The-Appeal-of-OpenSource.md @@ -26,4 +26,4 @@ Apache 软件基金会顶级项目 Apache APISIX 以及子项目,在过去 30 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/The-Evolution-of-Apache-APISIX.md b/website/articles/The-Evolution-of-Apache-APISIX.md index 1d6095692ece1..5ea003a7aa60f 100644 --- a/website/articles/The-Evolution-of-Apache-APISIX.md +++ b/website/articles/The-Evolution-of-Apache-APISIX.md @@ -25,4 +25,4 @@ Apache APISIX 是最受欢迎的 API 网关之一:https://github.com/apache/ap 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization.md b/website/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization.md index 89ff551b480cf..1f312a6be4e55 100644 --- a/website/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization.md +++ b/website/articles/Using-Apache-APISIX-To-Do-Authentication-and-Authorization.md @@ -24,4 +24,4 @@ description: 认证和授权是 API 网关中非常必要的功能。这样一 关注 Apache APISIX 公众号,回复“ApacheCon”下载 PPT。 -Apache APISIX WeChat +Apache APISIX WeChat diff --git a/website/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md b/website/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md index de89c6aef43ef..2f032ba947424 100644 --- a/website/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md +++ b/website/blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md @@ -43,4 +43,4 @@ Pengcheng Wang is a senior security consultant in PwC South China data security The first CVE for Apache APISIX: Apache APISIX Admin API Default Token Vulnerability (CVE-2020-13945), see [Security Vulnerability Details](https://nvd.nist.gov/vuln/detail/CVE-2020-13945) for detail. -![2021-01-11-1](/img/blog_img/2021-01-11-1.png) +![2021-01-11-1](https://static.apiseven.com/202108/1639461621848-2d567a42-7cab-44ab-8afc-a9c80c8a3ab8.png) diff --git a/website/blog/2021/05/25/Apache APISIX 2.6.0-Release.md b/website/blog/2021/05/25/Apache APISIX 2.6.0-Release.md index 70782dedbf741..2d774d484b470 100644 --- a/website/blog/2021/05/25/Apache APISIX 2.6.0-Release.md +++ b/website/blog/2021/05/25/Apache APISIX 2.6.0-Release.md @@ -26,7 +26,7 @@ For example, developers are not familiar with Lua and want to write plugins in a Starting from version 2.6, APISIX supports running plugins written in languages other than Lua with the help of plugin runner. The architecture diagram is as follows. -![2021-05-25-1](/img/blog_img/2021-05-25-1.png) +![2021-05-25-1](https://static.apiseven.com/202108/1639462480260-86431748-7dcd-4643-816b-92104ec5a666.png) APISIX will run the plugin runner as a sidecar. diff --git a/website/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md b/website/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md index 849ecd76efd93..5ebb262fa3591 100644 --- a/website/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md +++ b/website/blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md @@ -43,7 +43,7 @@ The next two user feedback scenarios are used as examples to introduce the proce #### Scenario 1 -![2021-06-16-1](/img/blog_img/2021-06-16-1.png) +![2021-06-16-1](https://static.apiseven.com/202108/1639462804552-8d51872f-3419-4e64-b365-4ef7cbb2a388.png) Describe this scenario in a diagram. Against the five steps above, you first need to find quantifiable metrics that measure the proper functioning of Apache APISIX. The primary method of testing is to use Grafana to monitor Apache APISIX performance metrics. Once measurable metrics are found, the data can be extracted separately from Prometheus in the CI for comparison. Another point is that the logs need to be analyzed. Another point is the need to analyze logs, which for Apache APISIX is to look at Nginx error.log to determine whether errors are reported and whether they are expected. @@ -51,7 +51,7 @@ In the control group, before Chaos was introduced, we tested that set/get route #### Scenario 2 -![2021-06-16-2](/img/blog_img/2021-06-16-2.png) +![2021-06-16-2](https://static.apiseven.com/202108/1639462935848-b87400d3-e59b-4e6d-84f9-25c2771d48d3.png) Introducing pod-kill chaos after performing the same control group experiment reproduces the expected error. In the case of randomly deleting a few etcd nodes in the cluster, etcd connectivity exhibited sporadic behavior, and the logs printed a large number of connection denied errors. More interestingly, the setup route returned normally when deleting the first or third node in the etcd endpoint list, and only when deleting the second node in the etcd endpoint list did the setup route report the error "connection refused". diff --git a/website/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md b/website/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md index 894e5f68aa845..c31b847da8990 100644 --- a/website/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md +++ b/website/blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md @@ -43,7 +43,7 @@ CVE details: https://nvd.nist.gov/vuln/detail/CVE-2021-33190 This vulnerability was discovered by Vern at Ping An Technology Galaxy Security Lab and reported to the Apache Software Foundation. Thanks to Vern and Ping An Technology Galaxy Security Lab for their contributions to the Apache APISIX community. -![2021-06-17-1](/img/blog_img/2021-06-17-1.jpeg) +![2021-06-17-1](https://static.apiseven.com/202108/1639463130837-f27bf7bf-28b9-4742-a40f-ee43ebf5a7a8.jpeg) ## Expanded Reading diff --git a/website/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md b/website/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md index 4a319ccc78423..eb112567f8ed5 100644 --- a/website/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md +++ b/website/blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md @@ -25,7 +25,7 @@ Supports controlling external traffic access to services deployed in Kubernetes The overall architecture is as follows. -![Apache APISIX Ingress Controller Architecture Diagram](/img/blog_img/2021-06-18-1.png) +![Apache APISIX Ingress Controller Architecture Diagram](https://static.apiseven.com/202108/1639464578081-06d7c64a-b597-444f-a59f-0217676e1ffc.png) ## v1.0 latest features diff --git a/website/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md b/website/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md index 90d6fab3b8433..2285f031565b9 100644 --- a/website/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md +++ b/website/blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md @@ -28,7 +28,7 @@ Now, Apache APISIX supports multi-language development plugins. More importantly ### Multiple Programming Languages Architecture Diagram -![Multiple Programming Languages Architecture Diagram](/img/blog_img/2021-06-21-1.png) +![Multiple Programming Languages Architecture Diagram](https://static.apiseven.com/202108/1639464774923-50cebc94-6344-4ea6-88a6-2b424c5f8567.png) The left side of the diagram shows the workflow of Apache APISIX. The right side of the diagram is the plugin runner, which is a generic term for projects with multiple programming languages support. The apisix-java-plugin-runner is a plugin runner that supports the Java language. @@ -69,7 +69,7 @@ Before starting the `Mainclass(org.apache.apisix.plugin.runner.PluginRunnerAppli If you are using IDEA for development, the configured environment variables are shown below. -![configured environment](/img/blog_img/2021-06-21-2.png) +![configured environment](https://static.apiseven.com/202108/1639464890287-ee6bbc3a-3f8b-4de7-9ce4-7670fb0c3f64.png) apisix-java-plugin-runner is equivalent to the server side and will actively create the `/tmp/runner.sock` file at startup and communicate with Apache APISIX on this file for Unix Domain Socket. diff --git a/website/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md b/website/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md index 83af0211d075c..44f053340841f 100644 --- a/website/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md +++ b/website/blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md @@ -26,29 +26,29 @@ Visit Rancher’s Tools — Catalogs page. Click “Edit Catalog”, enter https://github.com/apache/apisix-helm-chart in “Catalog URL” to add the Helm repository for Apache APISIX in Rancher. -![2021-06-23-1](/img/blog_img/2021-06-23-1.png) +![2021-06-23-1](https://static.apiseven.com/202108/1639464984786-20a73a62-1e9d-463b-aac3-26ac18ab5228.png) Click “Save” to save the changes. Select the Apps page, select Launch to see the Apache APISIX repository information. Here we can directly select “apisix” to deploy Apache APISIX. -![2021-06-23-2](/img/blog_img/2021-06-23-2.png) +![2021-06-23-2](https://static.apiseven.com/202108/1639465059361-aa11ab87-11f7-45b6-964f-d285d41e8a39.png) -![2021-06-23-3](/img/blog_img/2021-06-23-3.png) +![2021-06-23-3](https://static.apiseven.com/202108/1639465129809-bf86383f-bab5-459d-bb02-e7d45e3b4c51.png) Since we want to **deploy APISIX Ingress controller at the same time**, fill in the `ingress-controller.enabled=true` in the Answers at the bottom. Then click 'Save" to complete the deployment. -![2021-06-23-4](/img/blog_img/2021-06-23-4.png) +![2021-06-23-4](https://static.apiseven.com/202108/1639465197713-4ba6e7a2-8824-42e6-bf27-1d49f4e60ce5.png) Wait a few moments for the deployment to complete. -![2021-06-23-5](/img/blog_img/2021-06-23-5.png) +![2021-06-23-5](https://static.apiseven.com/202108/1639465259396-fc1104e9-289d-41b6-ae23-d6e05da066b1.png) ## Step 2: Deploy an Example Project We use `kennethreitz/httpbin` as a sample project for demonstration purpose. The deployment is also done directly in Rancher. -![2021-06-23-6](/img/blog_img/2021-06-23-6.png) +![2021-06-23-6](https://static.apiseven.com/202108/1639465331864-d8160567-d30c-427a-b0e5-425df6657879.png) ## Step 3: Use Apache APISIX as an API Gateway to Proxy Services @@ -137,13 +137,13 @@ As you can see, **Apache APISIX is able to proxy services within a Kubernetes cl We can add Ingress directly to Rancher and the Apache APISIX Ingress controller will automatically synchronize the routing rules to Apache APISIX to complete the proxy for the service. -![2021-06-23-7](/img/blog_img/2021-06-23-7.png) +![2021-06-23-7](https://static.apiseven.com/202108/1639465402058-3f41e8de-033b-4888-a835-30969251e402.png) Note in the bottom right corner, we have added the annotation configuration `kubernetes.io/ingress.class: apisix` to support multiple ingress-controller scenarios in the cluster. After saving, you can see the following screen. -![2021-06-23-8](/img/blog_img/2021-06-23-8.png) +![2021-06-23-8](https://static.apiseven.com/202108/1639465466581-db8c19d7-9c8f-402c-9270-34e327908caa.png) Test if the proxy is successful under the terminal: diff --git a/website/blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md b/website/blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md index 27c6a5cfe9198..9f0d1c068e6ff 100644 --- a/website/blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md +++ b/website/blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md @@ -39,7 +39,7 @@ One idea was to use incremental synchronization to simulate full synchronization Another idea is to modify etcd. If you can remove the restrictions in etcdctl, why not treat gRPC-gateway the same way? The same change can be made to gRPC-gateway. We’ve adopted the second option, and have given etcd a PR: [PR #13077](https://github.com/etcd-io/etcd/pull/13077). -![2021-06-30-1](/img/blog_img/2021-06-30-1.png) +![2021-06-30-1](https://static.apiseven.com/202108/1639465584634-26435c89-3e1c-4fb9-b094-057fce0f769d.png) The latest release of v3.5.0 includes this change that we contributed. If you encounter “grpc: received message larger than max”, you may want to try this version. This change has also been back-ported to the 3.4 branch by the etcd developers, and the next release of the 3.4 branch will carry this change as well. @@ -94,7 +94,7 @@ Note the “TLS Web Server Authentication” here, if we change it to “TLS Web There is also an issue about this problem on etcd’s repository: Issue [#9785](https://github.com/etcd-io/etcd/issues/9785 ). -![2021-06-30-2](/img/blog_img/2021-06-30-2.png) +![2021-06-30-2](https://static.apiseven.com/202108/1639465662863-30bc4fa9-8b7c-47d9-a73e-810bd690a588.png) ## Summary diff --git a/website/blog/2021/07/25/apachecon-asia.md b/website/blog/2021/07/25/apachecon-asia.md index 084a4bf27d70b..62ccc25712221 100644 --- a/website/blog/2021/07/25/apachecon-asia.md +++ b/website/blog/2021/07/25/apachecon-asia.md @@ -38,7 +38,7 @@ This talk is about the application and practice of Apache APISIX in China Mobile ### Sharing Guests -![Yanshan Chen](/img/blog_img/2021-07-25-2.png) +![Yanshan Chen](https://static.apiseven.com/202108/1639465900639-ce850138-e0f5-4264-a902-be8ca94b93c0.png) Yanshan Chen - After graduation, he has been working on distributed storage software development and architecture design, and has been deeply involved in the construction process of mobile cloud, focusing on the selection of major technology solutions and landing development and construction work related to object storage. At the same time, he has rich practical experience in the field of distributed object storage, and is currently thinking about implementing object storage traffic governance based on APISIX seven-tier gateway to achieve further architectural upgrade. @@ -54,7 +54,7 @@ This session will show how to use Apache APISIX to achieve dynamic, fine-grained ### Guest Speakers -![Junxu Chen](/img/blog_img/2021-07-25-3.png) +![Junxu Chen](https://static.apiseven.com/202108/1639465952917-9089d8e8-4509-4d14-91d9-84b587cb5e7d.png) Junxu Chen - Internet veteran, worked in Sina, Xunlei, 360 and other well-known Internet companies, Apache APISIX Committer. @@ -70,7 +70,7 @@ Therefore, here we use Chaos Mesh, a Kubernetes-based chaos engineering platform ### Sharing Guests -![Shuyang Wu](/img/blog_img/2021-07-25-4.png) +![Shuyang Wu](https://static.apiseven.com/202108/1639466011014-75736153-f109-4318-a693-38e3bb59cbdd.png) Shuyang Wu - Committer for Apache APISIX and Chaos Mesh, he leads the integration of Chaos Mesh with Apache APISIX CI. @@ -84,7 +84,7 @@ Authentication and authorization are very necessary features in API gateways. Th ### Sharing Guests -![Xinxin Zhu](/img/blog_img/2021-07-25-5.png) +![Xinxin Zhu](https://static.apiseven.com/202108/1639466066729-9b4d07e2-47f3-4725-99d5-5266864e1c73.png) Xinxin Zhu - Apache APISIX Committer, with years of CDN experience and familiar with gateways. @@ -98,7 +98,7 @@ In the past year, Apahce APISIX has become the most active API gateway project i ### Guest Speakers -![Yuansheng Wang](/img/blog_img/2021-07-25-6.png) +![Yuansheng Wang](https://static.apiseven.com/202108/1639466127487-bc14552c-5326-43f6-8753-c0df363c3922.png) Yuansheng Wang - Founder and PMC member of open source enthusiast Apache APISIX. @@ -112,7 +112,7 @@ In this topic I will introduce the apisix-mesh-agent project, which has some cap ### Sharing Guests -![Chao Zhang](/img/blog_img/2021-07-25-7.png) +![Chao Zhang](https://static.apiseven.com/202108/1639466178896-23fb5c6e-ccb1-46e0-ac02-55fef1b3bedf.png) Chao Zhang - Apache APISIX PMC, OpenResty contributor, open source enthusiast, now working on Service Mesh, Kubernetes and API Gateway. @@ -130,7 +130,7 @@ Apache APISIX is one of the most popular API gateways: https://github.com/apache ### Sharing Guests -![Zexuan Luo](/img/blog_img/2021-07-25-8.png) +![Zexuan Luo](https://static.apiseven.com/202108/1639466430768-b416eea2-e8e3-4a50-91b9-2d6b05aead10.png) Zexuan Luo - Apache APISIX PMC, OpenResty developer. @@ -144,7 +144,7 @@ Introducing the benefits of Apache APISIX-based Kubernetes Ingress and the featu ### Sharing Guests -![Jin Wei](/img/blog_img/2021-07-25-9.png) +![Jin Wei](https://static.apiseven.com/202108/1639466497596-7e4b91a9-2367-457a-ad33-0c5db7b87c24.png) Wei Jin - Apache APISIX PMC, Apache apisix-ingress-controller Founder, Apache Skywalking Committer. diff --git a/website/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md b/website/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md index b1276db71fe0a..38d10fa6d1bb5 100644 --- a/website/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md +++ b/website/blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md @@ -22,7 +22,7 @@ Apache APISIX is a dynamic, real-time, high-performance API gateway. Apache APIS As shown in the architecture diagram below, Apache APISIX is divided into two parts: the data plane (left side) and the control plane (right side): the control plane sends down the configuration to ETCD, and the data plane handles internal and external traffic with the help of rich plug-ins. -![Apache APISIX architecture](/img/blog_img/2021-07-27-1.png) +![Apache APISIX architecture](https://static.apiseven.com/202108/1639466553989-ecae1a31-8121-4390-a830-f386b9b12322.png) Apache APISIX exposes a set of interfaces that allow us to bind plugins to the API. If we want to add speed-limiting capabilities to the API, we can simply bind the `limit-req` plugin to the API. @@ -82,7 +82,7 @@ The Web interface lists the currently available plugins and drawing boards, and So how does Apache APISIX combine with low-code capabilities? This requires the data side Apache APISIX and the control side Apache APISIX Dashboard to work together. The overall process is as follows. -![Apache APISIX plugin orchestration flow](/img/blog_img/2021-07-27-2.png) +![Apache APISIX plugin orchestration flow](https://static.apiseven.com/202108/1639466624894-039f4e63-fd21-403a-94c5-6efc8425eb0f.png) ### Apache APISIX @@ -102,7 +102,7 @@ Dashboard contains two sub-components, Web and ManagerAPI: Web provides a visual In order to generate legal and efficient script functions, ManagerAPI chose the DAG directed acyclic graph data structure for the underlying design and developed the `dag-to-lua` [project](https://github.com/api7/dag-to-lua): it takes the root node as the start node and decides the next flow plugin based on the judgment It uses the root node as the start node and decides the next flow plugin based on the judgment condition, which will effectively avoid logical dead loops. The following is a diagram of the DAG data structure. -![Apache APISIX plugin orchestration DAG data structure](/img/blog_img/2021-07-27-3.png) +![Apache APISIX plugin orchestration DAG data structure](https://static.apiseven.com/202108/1639466682723-dcfd5c1b-9ae7-42b4-b3c2-c00aaf7a5996.png) Corresponding to the script parameters received by ManagerAPI, the example is as follows. @@ -150,21 +150,21 @@ After the client converts the final orchestrated data into the above format, Man On the Web side, after selection, comparison and project validation, we chose Ant Group's open source X6 graph editing engine as the underlying framework for the Web part of the plugin orchestration. In addition to perfect and clear documentation, a series of out-of-the-box interactive components and node customizability are the reasons we chose it. -![X6 introduction](/img/blog_img/2021-07-27-4.png) +![X6 introduction](https://static.apiseven.com/202108/1639466742487-269ebd5a-4f6c-47c3-a941-1275a4b3d178.png) In the process of orchestration implementation, we abstract the concept of generic components and plug-in components: generic components are start nodes, end nodes and conditional judgment nodes, while plug-in components are every available Apache APISIX plug-in, and the process of plug-in orchestration is completed by dragging and dropping these components into the drawing board. As shown in the figure. -![Apache APISIX dashboard plugin orchestration demo1](/img/blog_img/2021-07-27-5.png) +![Apache APISIX dashboard plugin orchestration demo1](https://static.apiseven.com/202108/1639466805116-0e1c9a83-e5d0-40c1-8a76-8cb1402a491c.png) During the drag and drop process, we need to restrict a series of boundary conditions, here are a few examples. When the plugin is not configured, the system will show the error message "There are unconfigured components", which allows you to visually see which plugin does not have configuration data. -![Apache APISIX dashboard plugin orchestration demo2](/img/blog_img/2021-07-27-6.png) +![Apache APISIX dashboard plugin orchestration demo2](https://static.apiseven.com/202108/1639466853301-a67de136-633d-4b5d-9062-ac17bf625063.png) When an API is edited, if the API is already bound with plugin data, when using the plugin orchestration mode, a warning message will appear after detection, and the system can only proceed if the user explicitly confirms that he/she wants to use the orchestration mode. This can effectively prevent the API data from being manipulated by mistake. -![Apache APISIX dashboard plugin orchestration demo3](/img/blog_img/2021-07-27-7.png) +![Apache APISIX dashboard plugin orchestration demo3](https://static.apiseven.com/202108/1639466907551-07ec82f9-8988-4a66-a5f2-d3944d4f239c.png) In addition, there are cases such as the start element can only have one output and the conditional judgment element can only have one input. Imagine: if the system allows users to operate without restrictions, unreasonable plugin combinations will be meaningless and generate unpredictable errors, so the continuous enrichment of boundary conditions is also an important consideration when designing the plugin arrangement. diff --git a/website/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md b/website/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md index 4c76bc045b578..091027cf4036b 100644 --- a/website/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md +++ b/website/blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md @@ -24,7 +24,7 @@ tags: [Interview] 当前,我主要关注于对象存储在交互编排、流量治理等方面的能力,促进我们第四代对象存储产品进一步实现架构升级。同时,我们也希望能够基于 Ingress Controller 的能力,来实现统一流量访问入口,并包括灰度发布、流量管控等功能。这些是我们当前正在做的一些工作。 -![China-Mobile-ChenYanshan](/img/blog_img/2021-08-09-chenyanshan.png) +![China-Mobile-ChenYanshan](https://static.apiseven.com/202108/1639466964888-a7ee803d-16d2-4042-b538-326e90e36712.png) **Q:您说的这些内容多少都与 Apache APISIX 有关联,您在今年 ApacheCon 亚洲大会上也有一场分享,想问下您会带来哪些精彩分享?** diff --git a/website/blog/2021/08/11/interview-TuZhengsong.md b/website/blog/2021/08/11/interview-TuZhengsong.md index 2e6c056f0cc35..f8691121668f6 100644 --- a/website/blog/2021/08/11/interview-TuZhengsong.md +++ b/website/blog/2021/08/11/interview-TuZhengsong.md @@ -23,7 +23,7 @@ tags: [Interview] In 282 days, Zhengsong Tu (GitHub ID: tzssangglass) has grown from an open source community nerd to an Apache APISIX committer. -![Apache APISIX committer tzssangglass github](/img/blog_img/2021-08-11-1.webp) +![Apache APISIX committer tzssangglass github](https://static.apiseven.com/202108/1639549454040-de5d7598-83b7-483f-a5da-55fedeb5fa90.png) Zhengsong Tu was elected as Apache APISIX committer on July 22, 2021 for his deep involvement in Apache APISIX development and many contributions in the community. @@ -80,7 +80,7 @@ After choosing this issue, Zhengsong started discussing details with his communi Zhengsong was very excited and immediately followed the guide to bring up the PR. Then he accepted the comments from Code Review and further modified the code. Finally, on October 18, the PR was successfully merged into the repository. -![Apache APISIX committer tzssangglass pr](/img/blog_img/2021-08-11-2.webp) +![Apache APISIX committer tzssangglass pr](https://static.apiseven.com/202108/1639549390155-6b6cb167-8c9a-43fb-8859-f58cd6b1aae7.png) "I was very excited and felt like I was finally substantially involved in the open source community. I could submit code to the Apache Foundation's top projects! As a technical worker, it was a technical confidence." diff --git a/website/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability.md b/website/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability.md index 5a22e835bf899..fe290e3cf3046 100644 --- a/website/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability.md +++ b/website/blog/2021/08/12/Chaos-Mesh-Helps-Apache-APISIX-Improve-System-Stability.md @@ -19,7 +19,7 @@ tags: [Practical Case] [Apache APISIX](https://github.com/apache/apisix) is a cloud-native, high-performance, scaling microservices API gateway. It is one of the Apache Software Foundation's top-level projects and serves hundreds of companies around the world, processing their mission-critical traffic, including finance, the Internet, manufacturing, retail, and operators. Our customers include NASA, the European Union’s digital factory, China Mobile, and Tencent. -![Apache APISIX architecture](/img/blog_img/2021-07-27-1.png) +![Apache APISIX architecture](https://static.apiseven.com/202108/1639466553989-ecae1a31-8121-4390-a830-f386b9b12322.png) As our community grows, Apache APISIX’s features more frequently interact with external components, making our system more complex and increasing the possibility of errors. To identify potential system failures and build confidence in the production environment, we introduced the concept of Chaos Engineering. @@ -63,7 +63,7 @@ We deployed a Chaos Engineering experiment using the following steps: 3. We used network chaos to add a five second network latency and then retested. This time, `set route` failed, `get route` succeeded, etcd could be connected to, and RPS had no significant change compared to the previous experiment. The experiment met our expectations. -![High network latency occurs between etcd and Apache APISIX](/img/blog_img/2021-06-16-1.png) +![High network latency occurs between etcd and Apache APISIX](https://static.apiseven.com/202108/1639462804552-8d51872f-3419-4e64-b365-4ef7cbb2a388.png) ### Scenario #2 @@ -75,7 +75,7 @@ Our troubleshooting revealed that the etcd Lua API used by Apache APISIX selecte After we fixed this problem, we added a health check to the etcd Lua API to ensure that a large number of requests would not be sent to the disconnected etcd node. To avoid flooding the log with errors, we added a fallback mechanism when the etcd cluster was completely disconnected. -![An error is reported from one etcd node’s interaction with the Apache APISIX admin API](/img/blog_img/2021-06-16-2.png) +![An error is reported from one etcd node’s interaction with the Apache APISIX admin API](https://static.apiseven.com/202108/1639462935848-b87400d3-e59b-4e6d-84f9-25c2771d48d3.png) ## Our future plans diff --git a/website/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md b/website/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md index 587c52f9387b7..020ce0511b741 100644 --- a/website/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md +++ b/website/blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md @@ -30,7 +30,7 @@ Star number: This is the most direct indicator, it represents the project has at Issue and PR counts: Also GitHub provides the Insights feature, shown in the following image. -![Apache APISIX GitHub Insights](/img/blog_img/2021-08-14-1.webp) +![Apache APISIX GitHub Insights](https://static.apiseven.com/202108/1639549315114-8bcc2d6d-a67b-48a2-be1e-0831c2441921.png) You can select the number of new and closed issues and PRs for this open source project, can also filter by period. @@ -40,7 +40,7 @@ GitHub insights provides a great developer perspective, but it’s not perfect: The following graph shows the commit frequency statistics of Apache APISIX from it’s first day, which shows that Apache APISIX has maintained a very stable and continuous activities, but this metric is also a bit thin: you can’t see the data of which developers submitted these commits -![Apache APISIX commits](/img/blog_img/2021-08-14-2.webp) +![Apache APISIX commits](https://static.apiseven.com/202108/1639549239894-1406e1d6-ae84-4364-89cd-1b63f6f4cd4b.png) after reading so many indicators, still you can’t get your answer, don’t you think that choosing an open source project is so complicated? Wait! @@ -49,11 +49,11 @@ As maintainers and developers of open source projects, we also need such golden ## Contributor growth -![Apache APISIX contributor growth](/img/blog_img/2021-08-14-3.webp) +![Apache APISIX contributor growth](https://static.apiseven.com/202108/1639549136527-e477c670-42d3-4764-9432-209c34dd222b.png) ## Monthly Active Contributors -![Apache APISIX Monthly Active Contributors](/img/blog_img/2021-08-14-4.webp) +![Apache APISIX Monthly Active Contributors](https://static.apiseven.com/202108/1639548976021-ed0946ae-eeb2-4dfc-8e15-c3db13f527e0.png) As you can clearly see from the two tables above, Apache APISIX has seen a steady growth in contributors since its first day, with about 25 contributors participating each month. @@ -65,7 +65,7 @@ The contributor growth line plot is based on the date of the first commit by eac By showing line plot for multiple repo in the same chart at the same time, we can also visually compare the development of different communities. -![Apache APISIX compare the development of different communities](/img/blog_img/2021-08-14-5.webp) +![Apache APISIX compare the development of different communities](https://static.apiseven.com/202108/1639548845735-43efcae0-3221-4739-b10f-0d9aaafad3fd.png) In the graph above, we can see that the number of contributors to Apache APISIX is growing at a very fast rate, and in just two years, the number of contributors has almost caught up with or even surpassed other open source API gateway projects. @@ -73,13 +73,13 @@ The monthly contributor line plot is derived from the number of contributors com Compared to the contributor growth line plot, the monthly contributors are a better measure of how the community has grown in a short period of time. -![Apache APISIX monthly contributors compare](/img/blog_img/2021-08-14-6.webp) +![Apache APISIX monthly contributors compare](https://static.apiseven.com/202108/1639548683512-d7c7a72b-7ac3-4535-bd1a-f056d05d196b.png) For example, in the graph above, we can see that Apache APISIX has the highest and most consistent number of monthly contributors of any open source API gateway project. This explains why Apache APISIX has been able to catch up with its friends in terms of total contributors in such a short period of time since it’s first day of open source. -![Apache APISIX monthly contributors](/img/blog_img/2021-08-14-7.webp) +![Apache APISIX monthly contributors](https://static.apiseven.com/202108/1639548241386-6ba96e66-5ab7-468e-9072-6144fb902909.png) The above graph is comparison of monthly contributors between different MQ community, which is also widely discussed on Twitter. With this chart, we can see that Apache Pulsar is catching up to Apache Kafka in terms of contributors of the month. diff --git a/website/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md b/website/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md index 30af81b7467c7..b32d7c13a98c7 100644 --- a/website/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md +++ b/website/blog/2021/08/16/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md @@ -41,7 +41,7 @@ You can see the flow of traditional authentication in the figure below. First, the user initiates a request, then the gateway receives the request and forwards it to the corresponding application services, and finally, the application services interact with the identity provider to complete the authorization. -![traditional authentication work flow](/img/blog_img/2021-08-16-1.png) +![traditional authentication work flow](https://static.apiseven.com/202108/1639467045776-715e1805-540b-4cef-87c5-6166e2af43a8.png) ### Centralized Identity Authentication Mode @@ -49,7 +49,7 @@ Unlike traditional authentication, the centralized identity mode removes user au First, the user initiates a request, then the gateway itself takes charge of the user authentication process, interacting with the identity provider and sending them an authorization request. The identity provider returns user identity information (user info). After the gateway identifies the user, it forwards the user identity information (user info) to the services in a request header. -![Centralized Identity Authentication work flow](/img/blog_img/2021-08-16-2.png) +![Centralized Identity Authentication work flow](https://static.apiseven.com/202108/1639467122244-d4292436-c5ce-48f6-b1d5-67645f24fbc9.png) Compared with the traditional authentication mode, centralized identity mode has the following advantages: @@ -62,7 +62,7 @@ OpenID Connect (OIDC) is a centralized identity authentication mode. The benefit ### OpenID Authentication Process -![OpenID Authentication Process](/img/blog_img/2021-08-16-3.png) +![OpenID Authentication Process](https://static.apiseven.com/202108/1639467187923-71854ddb-65fd-4a90-8bd0-242b47a8624b.png) 1. APISIX initiates an authentication request to the Identity Provider. 2. The user logs in and authenticates on the Identity Provider. @@ -83,20 +83,20 @@ Have an Okta account ready for use. ### Step 1: Configuring Okta 1. Log in to your Okta account and click "Create App Integration" to create an Okta application. - ![Create App Integration](/img/blog_img/2021-08-16-4.png) + ![Create App Integration](https://static.apiseven.com/202108/1639467243454-ac16645a-4a8a-426f-93a2-e840cae3c502.png) 2. Select "OIDC-OpenID Connect" for the Sign-in method, and select "Web Application" for the Application type. - ![Create a new App Integration](/img/blog_img/2021-08-16-5.png) + ![Create a new App Integration](https://static.apiseven.com/202108/1639467299429-0ea741a7-95fd-43b5-a0c4-25a7026e62d2.png) 3. Set the redirect URL for login and logout. The "Sign-in redirect URIs" are links a user can go to after a successful login, and the "Sign-out redirect URIs" are links a user goes to after a successful logout. In this example, we set both sign-in and sign-out redirect URIs to `http://127.0.0.1:9080/`. - ![Set the redirect URL for login and logout](/img/blog_img/2021-08-16-6.png) + ![Set the redirect URL for login and logout](https://static.apiseven.com/202108/1639467390099-e9594a05-7e78-4f20-a902-7c4ca2c302fb.png) 4. After finishing the settings, click "Save" to save the changes. - ![save the changes](/img/blog_img/2021-08-16-7.png) + ![save the changes](https://static.apiseven.com/202108/1639467449049-628d7796-0d8e-4ed9-8334-5ba7f0fb32f4.png) 5. Visit the General page of the application to obtain the following configuration, which is required to configure Apache APISIX OpenID Connect. - Client ID: OAuth client ID, the application ID, which corresponds to client_id and {YOUR_CLIENT_ID} below. - Client secret: OAuth client secret, the application key, which corresponds to client_secret and {YOUR_CLIENT_SECRET} below. - Okta domain: The domain name used by the application, corresponding to {YOUR_ISSUER} below. -![obtain configuration](/img/blog_img/2021-08-16-8.png) +![obtain configuration](https://static.apiseven.com/202108/1639467501106-d95bf8ad-db47-4918-ac70-424b12488e5b.png) ### Step 2: Install Apache APISIX @@ -222,7 +222,7 @@ curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136 ### Step 4: Access Apache APISIX 1. Visit "http://127.0.0.1:9080/get" and the page is redirected to the Okta login page because the OpenID Connect plugin is enabled. - ![visit Okta login page](/img/blog_img/2021-08-16-9.png) + ![visit Okta login page](https://static.apiseven.com/202108/1639467566395-2a049b96-3b1f-4e74-93f0-d6ea2f52a72e.png) 2. Enter the username and password for the user's Okta account and click "Sign In" to log in to your Okta account. 3. After successful login, you can access the get page in "httpbin.org". The "httpbin.org/get" page will return the requested data with X-Access-Token,X-Id-Token, and X-Userinfo as follows. @@ -234,15 +234,15 @@ curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136 **X-Access-Token**: Apache APISIX puts the access token obtained from the user provider into the X-Access-Token request header, optionally via the access_token_in_authorization_header in the plugin configuration Authorization request header. -![X-Access-Token](/img/blog_img/2021-08-16-10.png) +![X-Access-Token](https://static.apiseven.com/202108/1639467626264-980605e2-0b21-4512-9e2c-af71950fcf99.png) **X-Id-Token**: Apache APISIX will get the Id token from the user provider through the base64 encoding into the X-Id-Token request header, you can choose whether to enable this function through the set_id_token_header in the plugin configuration, the default is enabled. -![X-Id-Token](/img/blog_img/2021-08-16-11.png) +![X-Id-Token](https://static.apiseven.com/202108/1639467682902-ada726b8-b46b-460d-8313-ef47b38d13ab.png) **X-Userinfo**: Apache APISIX will get the user information from the user provider and put it into X-Userinfo after encoding it with Base64, you can choose whether to enable this feature through set_userinfo_header in the plugin configuration, it is set to be on by default. -![X-Userinfo](/img/blog_img/2021-08-16-12.png) +![X-Userinfo](https://static.apiseven.com/202108/1639467730566-fc8a8a76-a3aa-4b8e-bb13-505b50839877.png) As you can see, Apache APISIX will carry the X-Access-Token, X-Id-Token, and X-Userinfo request headers to the upstream. The upstream can parse these headers to get the user IDid information and user metadata. diff --git a/website/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md b/website/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md index ee81dd39d8fee..2721e6e082998 100644 --- a/website/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md +++ b/website/blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md @@ -40,7 +40,7 @@ The authz-casbin plugin can decouple the two functions of route matching and req The authz-casbin plugin uses three parameters for authorization: subject, object and action. subject is the user name, which refers to the user in the request; object is the URL link that will be accessed, i.e. the resource that will be accessed; action is the action that is requested for authorization, such as read or write. (write). If we want to create a model to access three resources: /, /res1, /res2, we want a model like this -![authz-casbin example](/img/blog_img/2021-08-18-1.png) +![authz-casbin example](https://static.apiseven.com/202108/1639467795044-8676c5cb-00e0-48e1-b7b1-929e37c87b75.png) In this model, all users, such as Jack, have access to the main page (/). And users like Alice and Bob with admin rights have access to all pages and resources (/res1, /res2, /). Thus, we need to restrict users without administrator privileges to access specific resources using the GET request method. The required model is as follows. diff --git a/website/blog/2021/08/19/go-makes-Apache-APISIX-better.md b/website/blog/2021/08/19/go-makes-Apache-APISIX-better.md index c9558bb314990..d9faf88b69942 100644 --- a/website/blog/2021/08/19/go-makes-Apache-APISIX-better.md +++ b/website/blog/2021/08/19/go-makes-Apache-APISIX-better.md @@ -143,7 +143,7 @@ The application will listen to `/tmp/runner.sock` when it runs. The first step is to install Apache APISIX, which needs to be on the same instance as Go Runner. -![Apache APISIX work flow](/img/blog_img/2021-08-19-1.png) +![Apache APISIX work flow](https://static.apiseven.com/202108/1639467846997-8be8195d-98ac-457d-8b7f-a7b78e55fef1.png) The above diagram shows the workflow of Apache APISIX on the left, and the plugin runner on the right is responsible for running external plugins written in different languages. apisix-go-plugin-runner is such a runner that supports the Go language. diff --git a/website/blog/2021/08/21/shanghai-meetup.md b/website/blog/2021/08/21/shanghai-meetup.md index e98b801f5cda3..ec93047c99823 100644 --- a/website/blog/2021/08/21/shanghai-meetup.md +++ b/website/blog/2021/08/21/shanghai-meetup.md @@ -30,7 +30,7 @@ Tips: We will control the size of the event as the epidemic is not relaxed, so r ## Event Schedule -![Apache APISIX Meetup](/img/blog_img/2021-08-21-1.jpg) +![Apache APISIX Meetup](https://static.apiseven.com/202108/1639467909853-fd9caa2e-8b45-459c-8bb7-8acb4a20692e.jpg) ## Introduction to the topic @@ -78,7 +78,7 @@ Apache APISIX has been growing as a community since the first day of open source Join the Meetup, interact with the instructors, and get a chance to win the latest Apache APISIX gifts: mouse pads, coffee mugs, Apache APISIX badges, and umbrellas. -![Apache APISIX Gift](/img/blog_img/2021-08-21-4.jpg) +![Apache APISIX Gift](https://static.apiseven.com/202108/1639468073361-021ba09a-69bb-47ac-a852-e879c3109a9a.jpg) ## How to participate @@ -90,10 +90,10 @@ Scan the event poster QR code above to sign up! If you can't make it to the Meetup, follow the Apache APISIX video to watch the live stream. -![Apache APISIX Live](/img/blog_img/2021-08-21-2.png) +![Apache APISIX Live](https://static.apiseven.com/202108/1639467967121-2fff2f38-7949-4ea5-be55-7a3bf47b2bd5.png) ## Join the group to communicate Follow the Apache APISIX public page and reply with the keyword "Shanghai" in the background to join the Apache APISIX Shanghai group. -![Apache APISIX wechat](/img/blog_img/2021-08-21-3.png) +![Apache APISIX wechat](https://static.apiseven.com/202108/1639468019348-d2d555ab-e860-41a4-9efa-f383eb0c0069.png) diff --git a/website/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX.md b/website/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX.md index 1d515cac1d76e..c6dd05a2031b1 100644 --- a/website/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX.md +++ b/website/blog/2021/08/25/Auth-with-Casbin-in-Apache-APISIX.md @@ -44,7 +44,7 @@ The authz-casbin plugin uses three parameters for authorization: `subject`, `obj For example, if you want to create a model to access three resources: main page`/`, resource1 `/res1`, and resource2 `/res2`, you will need a model that looks like the figure below: -![Authentication model](/img/blog_img/2021-08-25-1.png) +![Authentication model](https://static.apiseven.com/202108/1639468127588-7723f8c2-541c-4561-a401-2caf3110883a.png) In this model, all users, including Jack, have access to the main page `/`. Users with administrator privileges, such as Alice and Bob, can access all pages and resources (main page `/`, resource1 `/res1`, and resource 2 `/res2`). Thus, you need to restrict users without administrator privileges to access specific resources using the GET request method. The required model is shown in the code block below: diff --git a/website/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md b/website/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md index aa962f210b499..0261e656eb3ae 100644 --- a/website/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md +++ b/website/blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md @@ -29,13 +29,13 @@ Authentication refers to the verification of a user's identity through certain m In traditional authentication mode, each application service needs to support authentication separately, such as accessing the login interface when the user is not logged in, and the interface returns a 301 jump page. The application needs to develop the logic for maintaining the Session and the authentication interaction with the identity provider. The flow of the traditional authentication model is shown in the figure below: first, the user initiates a request, then the gateway receives the request and forwards it to the corresponding application service, and finally the application service interfaces with the identity provider to complete the authentication. -![Flowchart of traditional authentication mode](/img/blog_img/2021-08-16-1.png) +![Flowchart of traditional authentication mode](https://static.apiseven.com/202108/1639467045776-715e1805-540b-4cef-87c5-6166e2af43a8.png) ### Centralized authentication mode Unlike the traditional authentication model, the centralized authentication model takes user authentication out of the application service. Take Apache APISIX as an example, the centralized authentication process is shown in the following diagram: first, the user initiates a request, and then the front gateway is responsible for the user authentication process, interfacing with the identity provider and sending the identity provider an authorization) request to the identity provider. The identity provider returns user info. After the gateway identifies the user, it forwards the user identity information to the back-end application in the form of a request header. -![Flow chart of centralized authentication mode](/img/blog_img/2021-08-16-2.png) +![Flow chart of centralized authentication mode](https://static.apiseven.com/202108/1639467122244-d4292436-c5ce-48f6-b1d5-67645f24fbc9.png) Compared with the traditional authentication mode, the centralized authentication mode has the following advantages. @@ -58,7 +58,7 @@ The OpenID authentication process has the following 7 steps, as shown in the fig 6. APISIX sends the Access Token to the Identity Provider's User Endpoint to obtain the user's identity. 7. After authentication, the User Endpoint sends the User info to APISIX to complete the authentication. -![OpenID Authentication Flowchart](/img/blog_img/2021-08-16-3.png) +![OpenID Authentication Flowchart](https://static.apiseven.com/202108/1639467187923-71854ddb-65fd-4a90-8bd0-242b47a8624b.png) ## How to configure Okta authentication using the OpenID Connect plugin for Apache APISIX @@ -71,20 +71,20 @@ An Okta account already exists. ### Step 1: Configure Okta 1. Login to your Okta account and create an Okta application, select the OIDC login mode and the Web Application application type. - ![Create an Okta application](/img/blog_img/2021-08-16-4.png) - ![Select OIDC login mode and Web Application application type](/img/blog_img/2021-08-16-5.png) 2. + ![Create an Okta application](https://static.apiseven.com/202108/1639467243454-ac16645a-4a8a-426f-93a2-e840cae3c502.png) + ![Select OIDC login mode and Web Application application type](https://static.apiseven.com/202108/1639467299429-0ea741a7-95fd-43b5-a0c4-25a7026e62d2.png) 2. 2. Set the login and logout jump URLs. The "Sign-in redirect URIs" are the links that are allowed to be redirected after successful login, and the "Sign-out redirect URIs" are the links that are redirected after logging out. In this example, we set both the sign-in redirect and sign-out redirect URLs to `http://127.0.0.1:9080/`. - ![Set the login and logout URL](/img/blog_img/2021-08-16-6.png) + ![Set the login and logout URL](https://static.apiseven.com/202108/1639467390099-e9594a05-7e78-4f20-a902-7c4ca2c302fb.png) 3. Click "Save" to save the changes after finishing the settings. - ![Save Changes](/img/blog_img/2021-08-16-7.png) + ![Save Changes](https://static.apiseven.com/202108/1639467449049-628d7796-0d8e-4ed9-8334-5ba7f0fb32f4.png) Visit the General page of the application to get the following configuration, which is required to configure Apache APISIX OpenID Connect. - Client ID: OAuth client ID, which is the ID of the application, corresponding to `client_id` and `{YOUR_CLIENT_ID}` below. - Client secret: OAuth client secret, i.e. application key, corresponds to `client_secret` and `{YOUR_CLIENT_SECRET}` below. - Okta domain: The domain name used by the application, corresponds to `{YOUR_ISSUER}` in discovery below. -![Get configuration info](/img/blog_img/2021-08-16-8.png) +![Get configuration info](https://static.apiseven.com/202108/1639467501106-d95bf8ad-db47-4918-ac70-424b12488e5b.png) ### Installing Apache APISIX @@ -213,7 +213,7 @@ curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136f 1. Visit http://127.0.0.1:9080/get and the page is redirected to the Okta login page because the OpenID Connect plugin is turned on. -![visit Okta login page](/img/blog_img/2021-08-16-9.png) +![visit Okta login page](https://static.apiseven.com/202108/1639467566395-2a049b96-3b1f-4e74-93f0-d6ea2f52a72e.png) 2. Enter the password you registered with Okta and click "Sign in" to log in to your Okta account. 3. @@ -229,15 +229,15 @@ In which: **X-Access-Token**: Apache APISIX puts the access token obtained from the user provider into the X-Access-Token request header, which can be optionally put into the Authorization request header via access_token_in_authorization_header in the plugin configuration. -![X-Access-Token](/img/blog_img/2021-08-16-10.png) +![X-Access-Token](https://static.apiseven.com/202108/1639467626264-980605e2-0b21-4512-9e2c-af71950fcf99.png) **X-Id-Token**: Apache APISIX will put the ID token obtained from the user provider into the X-Id-Token request header after base64 encoding, you can choose whether to enable this feature by using the set_id_token_header in the plugin configuration. -![X-Id-Token](/img/blog_img/2021-08-16-11.png) +![X-Id-Token](https://static.apiseven.com/202108/1639467682902-ada726b8-b46b-460d-8313-ef47b38d13ab.png) **X-Userinfo**: Apache APISIX will get the user information from the user provider and put it into X-Userinfo after base64 encoding, you can choose whether to turn it on or not by using set_userinfo_header in the plugin configuration, the default is on. -![X-Userinfo](/img/blog_img/2021-08-16-12.png) +![X-Userinfo](https://static.apiseven.com/202108/1639467730566-fc8a8a76-a3aa-4b8e-bb13-505b50839877.png) As you can see, Apache APISIX will carry the X-Access-Token, X-Id-Token, and X-Userinfo request headers to the upstream. The upstream can parse these headers to get the user ID information and user metadata. diff --git a/website/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md b/website/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md index 2817a0c859dbe..721648da87531 100644 --- a/website/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md +++ b/website/blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md @@ -37,7 +37,7 @@ and `Python`. The most important thing is to let more `Python developers` who are interested in `Apache APISIX` and `API gateways` to learn more about the use of `Apache APISIX` and `API gateways` through this project. The following is a diagram of the architecture of `Apache APISIX` multi-language support. -![Apache APISIX work flow](/img/blog_img/2021-09-06-1.png) +![Apache APISIX work flow](https://static.apiseven.com/202108/1639468460315-bb51d913-be72-4329-a47b-7e987dff21ba.png) The above diagram shows the workflow of `Apache APISIX` on the left, and the `Plugin Runner` on the right is the plug-in runner for each language, the `apisix-python-plugin-runner` introduced in this article is the one that supports `Python`. language. diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md index 25b8517550529..aa8cbaeb675cf 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/01/11/interview-Apache-APISIX-contributor-Wang-Pengcheng-Senior-Security-Advisor-of-PwC-South-China-Data-Security-and-Privacy-Protection-Team.md @@ -43,4 +43,4 @@ tags: [Interview] Apache APISIX 的第一个 CVE:Apache APISIX Admin API 默认 Token 漏洞(CVE-2020-13945)。[安全漏洞详情](https://nvd.nist.gov/vuln/detail/CVE-2020-13945) -![2021-01-11-1](/img/blog_img/2021-01-11-1.png) +![2021-01-11-1](https://static.apiseven.com/202108/1639461621848-2d567a42-7cab-44ab-8afc-a9c80c8a3ab8.png) diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/05/25/Apache APISIX 2.6.0-Release.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/05/25/Apache APISIX 2.6.0-Release.md index 66e1a6237a9e6..05773ab40e004 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/05/25/Apache APISIX 2.6.0-Release.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/05/25/Apache APISIX 2.6.0-Release.md @@ -26,7 +26,7 @@ APISIX 现在支持通过 Lua 语言编写插件,在代理请求的过程中 从 2.6 版本开始,借助 plugin runner,APISIX 支持运行非 Lua 语言编写的插件。架构图如下: -![2021-05-25-1](/img/blog_img/2021-05-25-1.png) +![2021-05-25-1](https://static.apiseven.com/202108/1639462480260-86431748-7dcd-4643-816b-92104ec5a666.png) APISIX 会以 sidecar 的形式运行 plugin runner。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md index 4822ccf7386dd..e7a046f3ee9f3 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/16/Chaos-Mesh-helps-Apache-APISIX-improve-stability.md @@ -44,7 +44,7 @@ Apache APISIX 是 Apache 基金会下的顶级项目,目前在生产环境中 #### 场景一 -![2021-06-16-1](/img/blog_img/2021-06-16-1.png) +![2021-06-16-1](https://static.apiseven.com/202108/1639462804552-8d51872f-3419-4e64-b365-4ef7cbb2a388.png) 用一幅图来描述这个场景。对照上面的五个步骤,首先需要找到衡量 Apache APISIX 正常运行的可量化指标。在测试时最主要的方法是利用 Grafana 对 Apache APISIX 运行指标进行监测,找到可衡量的指标后,在 CI 中就可以从 Prometheus 中单独提取数据进行比较判断,这里使用了路由转发的 Request per Second(RPS)和 etcd 的可连接性 作为评价指标。另一点就是需要对日志进行分析,对于 Apache APISIX 就是查看 Nginx 的 error.log 判断是否有报错以及报错是否符合预期。 @@ -52,7 +52,7 @@ Apache APISIX 是 Apache 基金会下的顶级项目,目前在生产环境中 #### 场景二 -![2021-06-16-2](/img/blog_img/2021-06-16-2.png) +![2021-06-16-2](https://static.apiseven.com/202108/1639462935848-b87400d3-e59b-4e6d-84f9-25c2771d48d3.png) 进行同样的对照组实验之后引入 pod-kill chaos,复现了预期的错误。在随机删除集群中少数 etcd 节点的情况下,etcd 可连接性表现出时有时无,日志则打印出了大量连接拒绝的报错。更加有趣的是,在删除 etcd 端点列表的第一个或第三个节点时,设置路由正常返回,而只有在删除 etcd 端点列表中的第二个节点时,设置路由会报错 “connection refused”。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md index 3c0088a9f640e..5360bffb8adb6 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/17/Apache-APISIX-Dashboard-Access-Control-Bypass-Vulnerability-Announcement.md @@ -42,7 +42,7 @@ CVE 详细信息:https://nvd.nist.gov/vuln/detail/CVE-2021-33190 该漏洞是由平安科技银河安全实验室的 Vern 发现,并向 Apache 软件基金会上报该漏洞。感谢 Vern 和平安科技银河安全实验室对 Apache APISIX 社区的贡献。 -![2021-06-17-1](/img/blog_img/2021-06-17-1.jpeg) +![2021-06-17-1](https://static.apiseven.com/202108/1639463130837-f27bf7bf-28b9-4742-a40f-ee43ebf5a7a8.jpeg) ## 拓展阅读 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md index d8f674b5b6d5e..0c4b25b2815ab 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/18/first-GA-version-v1.0-of-Apache-APISIX-Ingress-Controller-released.md @@ -25,7 +25,7 @@ Apache APISIX Ingress Controller 是一个使用 Apache APISIX 作为数据面 整体架构如下: -![Apache APISIX Ingress Controller 架构图](/img/blog_img/2021-06-18-1.png) +![Apache APISIX Ingress Controller 架构图](https://static.apiseven.com/202108/1639464578081-06d7c64a-b597-444f-a59f-0217676e1ffc.png) ## v1.0 最新特性 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md index 6f803f87691cd..945341218b56b 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/21/use-Java-to-write-Apache-APISIX-plugins.md @@ -29,7 +29,7 @@ Apache APISIX 支持多语言编写插件了!不会 Lua 也没关系,现在 ### 1.2 Apache APISIX 多语言支持架构图 -![2021-06-21-1](/img/blog_img/2021-06-21-1.png) +![2021-06-21-1](https://static.apiseven.com/202108/1639464774923-50cebc94-6344-4ea6-88a6-2b424c5f8567.png) 上图左边是 Apache APISIX 的工作流程,右边的 plugin runner 是指插件运行器,泛指多语言支持的项目。本文档下面提到的 apisix-java-plugin-runner 项目就是支持 Java 语言的 plugin runner。 @@ -71,7 +71,7 @@ ext-plugin: 如果你是使用 IDEA 进行开发,那么配置好的环境变量示意如下: -![2021-06-21-2](/img/blog_img/2021-06-21-2.png) +![2021-06-21-2](https://static.apiseven.com/202108/1639464890287-ee6bbc3a-3f8b-4de7-9ce4-7670fb0c3f64.png) apisix-java-plugin-runner 相当于 server 端,在启动时会主动创建 `/tmp/runner.sock` 文件,并在这个文件上与 Apache APISIX 进行 Unix Domain Socket 通信。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md index eec2422f0cf1c..7f3b9611ea665 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/23/deploy-great-open-source-gateway-and-ingress-controller-fast.md @@ -30,27 +30,27 @@ Apache APISIX 是一款开源的高性能、动态云原生网关,由深圳支 在 Rancher 的 *Tools - Catalogs* 页面可以进行商店(catalogs)的配置,我们在这里[添加 Apache APISIX 的 Helm 仓库](https://github.com/apache/apisix-helm-chart)。 -![2021-06-23-1](/img/blog_img/2021-06-23-1.png) +![2021-06-23-1](https://static.apiseven.com/202108/1639464984786-20a73a62-1e9d-463b-aac3-26ac18ab5228.png) 保存完成后,即可选择 *Apps* 页面进行 Apache APISIX 的部署了。选择 *Launch* 便可看到 Apache APISIX 的仓库信息了。这里我们直接选择 apisix 即可。 -![2021-06-23-2](/img/blog_img/2021-06-23-2.png) +![2021-06-23-2](https://static.apiseven.com/202108/1639465059361-aa11ab87-11f7-45b6-964f-d285d41e8a39.png) -![2021-06-23-3](/img/blog_img/2021-06-23-3.png) +![2021-06-23-3](https://static.apiseven.com/202108/1639465129809-bf86383f-bab5-459d-bb02-e7d45e3b4c51.png) 接下来着只需要在此页面中进行简单的配置即可。 **因为我们想要同时部署 APISIX Ingress controller,所以在底部的 Answers 中填入 `ingress-controller.enabled=true` 这个配置项** 。保存即可完成部署。 -![2021-06-23-4](/img/blog_img/2021-06-23-4.png) +![2021-06-23-4](https://static.apiseven.com/202108/1639465197713-4ba6e7a2-8824-42e6-bf27-1d49f4e60ce5.png) 稍等片刻即可完成部署。 -![2021-06-23-5](/img/blog_img/2021-06-23-5.png) +![2021-06-23-5](https://static.apiseven.com/202108/1639465259396-fc1104e9-289d-41b6-ae23-d6e05da066b1.png) ## 部署示例项目 我们使用 `kennethreitz/httpbin` 作为示例项目进行演示。这里也直接在 Rancher 中完成部署。 -![2021-06-23-6](/img/blog_img/2021-06-23-6.png) +![2021-06-23-6](https://static.apiseven.com/202108/1639465331864-d8160567-d30c-427a-b0e5-425df6657879.png) ## 使用 Apache APISIX 作为网关代理 @@ -139,13 +139,13 @@ root@apisix:~$ curl http://172.18.0.2:32763/get -H "HOST: httpbin.org" 我们可以直接在 Rancher 中添加 Ingress ,Apache APISIX Ingress controller 会自动将路由规则同步至 Apache APISIX 中,完成服务的代理。 -![2021-06-23-7](/img/blog_img/2021-06-23-7.png) +![2021-06-23-7](https://static.apiseven.com/202108/1639465402058-3f41e8de-033b-4888-a835-30969251e402.png) 注意右下角, 我们添加了 `kubernetes.io/ingress.class: apisix` 的 annotation 配置,用于支持集群内多 ingress-controller 的场景。 保存后,可看到如下界面: -![2021-06-23-8](/img/blog_img/2021-06-23-8.png) +![2021-06-23-8](https://static.apiseven.com/202108/1639465466581-db8c19d7-9c8f-402c-9270-34e327908caa.png) 在终端下测试是否代理成功: diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md index 8ffa80e78cfd0..b3b2b442a59ac 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/06/30/etcd3-support-HTTP-access-perfectly.md @@ -41,7 +41,7 @@ Apache APISIX 开始用 etcd 的时候,用的是 etcd v2 的 API。从 Apache 我们采用了第二种方案,给 etcd 提了个 PR:https://github.com/etcd-io/etcd/pull/13077 -![2021-06-30-1](/img/blog_img/2021-06-30-1.png) +![2021-06-30-1](https://static.apiseven.com/202108/1639465584634-26435c89-3e1c-4fb9-b094-057fce0f769d.png) 最新发布的 v3.5.0 版本就包含了我们贡献的这个改动。如果你遇到 “grpc: received message larger than max”,不妨试一下这个版本。这一改动也被 etcd 开发者 backport 到 3.4 分支上了。3.4 分支的下一个发布,也会带上这个改动。 @@ -95,7 +95,7 @@ TLS Web Server Authentication etcd 上也有关于这个问题的 issue:https://github.com/etcd-io/etcd/issues/9785 -![2021-06-30-2](/img/blog_img/2021-06-30-2.png) +![2021-06-30-2](https://static.apiseven.com/202108/1639465662863-30bc4fa9-8b7c-47d9-a73e-810bd690a588.png) ### 结语 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/25/apachecon-asia.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/25/apachecon-asia.md index e671176860651..386f8ea021db5 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/25/apachecon-asia.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/25/apachecon-asia.md @@ -38,7 +38,7 @@ Apache APISIX 是 Apache 顶级项目,也是全球最活跃的开源网关项 ### 分享嘉宾 -![陈焱山](/img/blog_img/2021-07-25-2.png) +![陈焱山](https://static.apiseven.com/202108/1639465900639-ce850138-e0f5-4264-a902-be8ca94b93c0.png) 陈焱山 — 毕业后一直从事分布式存储软件开发及架构方案设计工作,深度参与了移动云建设过程,重点完成了对象存储相关的主要技术方案选型及落地开发建设工作。同时,在分布式对象存储领域拥有丰富的实战经验,目前正在思考基于 APISIX 七层网关实现对象存储流量治理工作,实现架构进一步升级。 @@ -56,7 +56,7 @@ Apache APISIX 是 Apache 顶级项目,也是全球最活跃的开源网关项 ### 分享嘉宾 -![陈军旭](/img/blog_img/2021-07-25-3.png) +![陈军旭](https://static.apiseven.com/202108/1639465952917-9089d8e8-4509-4d14-91d9-84b587cb5e7d.png) 陈军旭 — 互联网老兵,曾任职于新浪、迅雷、360 等知名互联网公司,Apache APISIX Committer。 @@ -74,7 +74,7 @@ Apache APISIX 是领先的 API 网关 OSS 之一。为了确保一切按计划 ### 分享嘉宾 -![吴舒旸](/img/blog_img/2021-07-25-4.png) +![吴舒旸](https://static.apiseven.com/202108/1639466011014-75736153-f109-4318-a693-38e3bb59cbdd.png) 吴舒旸 — Apache APISIX 和 Chaos Mesh 的 Committer,他领导了 Chaos Mesh 与 Apache APISIX CI 的整合工作。 @@ -90,7 +90,7 @@ Apache APISIX 是领先的 API 网关 OSS 之一。为了确保一切按计划 ### 分享嘉宾 -![朱欣欣](/img/blog_img/2021-07-25-5.png) +![朱欣欣](https://static.apiseven.com/202108/1639466066729-9b4d07e2-47f3-4725-99d5-5266864e1c73.png) 朱欣欣 — Apache APISIX Committer,有多年 CDN 工作经验,熟悉网关。 @@ -106,7 +106,7 @@ Apache APISIX 是领先的 API 网关 OSS 之一。为了确保一切按计划 ### 分享嘉宾 -![王院生](/img/blog_img/2021-07-25-6.png) +![王院生](https://static.apiseven.com/202108/1639466127487-bc14552c-5326-43f6-8753-c0df363c3922.png) 王院生 — 开源爱好者 Apache APISIX 创始人和 PMC 成员。 @@ -122,7 +122,7 @@ Apache APISIX 是领先的 API 网关 OSS 之一。为了确保一切按计划 ### 分享嘉宾 -![张超](/img/blog_img/2021-07-25-7.png) +![张超](https://static.apiseven.com/202108/1639466178896-23fb5c6e-ccb1-46e0-ac02-55fef1b3bedf.png) 张超 — Apache APISIX PMC,OpenResty 贡献者,开源爱好者,现在正在研究 Service Mesh、Kubernetes 和 API Gateway。 @@ -142,7 +142,7 @@ Apache APISIX 是最受欢迎的 API 网关之一:https://github.com/apache/ap ### 分享嘉宾 -![罗泽轩](/img/blog_img/2021-07-25-8.png) +![罗泽轩](https://static.apiseven.com/202108/1639466430768-b416eea2-e8e3-4a50-91b9-2d6b05aead10.png) 罗泽轩 — Apache APISIX PMC,OpenResty 开发者。 @@ -158,7 +158,7 @@ Apache APISIX 是最受欢迎的 API 网关之一:https://github.com/apache/ap ### 分享嘉宾 -![金卫](/img/blog_img/2021-07-25-9.png) +![金卫](https://static.apiseven.com/202108/1639466497596-7e4b91a9-2367-457a-ad33-0c5db7b87c24.png) 金卫 — Apache APISIX PMC,Apache apisix-ingress-controller Founder,Apache Skywalking Committer。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md index 1d1e69a729d2a..40900d4d6aaa9 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/07/27/use-of-plugin-orchestration-in-Apache-APISIX.md @@ -24,7 +24,7 @@ Apache APISIX 是一个生产可用的七层全流量处理平台,可作为 AP 如下方架构图所示,Apache APISIX 分为数据面(左侧)与控制面(右侧)两部分:通过控制面下发配置到 ETCD,数据面借助丰富的插件处理内外流量。 -![Apache APISIX architecture](/img/blog_img/2021-07-27-1.png) +![Apache APISIX architecture](https://static.apiseven.com/202108/1639466553989-ecae1a31-8121-4390-a830-f386b9b12322.png) Apache APISIX 暴露了一组接口,方便我们为 API 绑定插件。如果我们希望为 API 增加限速能力,只需为 API 绑定 `limit-req` 插件: @@ -80,7 +80,7 @@ curl -X PUT http://127.0.0.1:9080/apisix/admin/routes/1 -d ' 那么 Apache APISIX 是如何与低代码能力结合的呢?这需要数据面 Apache APISIX 与控制面 Apache APISIX Dashboard 共同配合完成。整体流程如下: -![Apache APISIX plugin orchestration flow](/img/blog_img/2021-07-27-2.png) +![Apache APISIX plugin orchestration flow](https://static.apiseven.com/202108/1639466624894-039f4e63-fd21-403a-94c5-6efc8425eb0f.png) ### Apache APISIX @@ -100,7 +100,7 @@ curl -X PUT http://127.0.0.1:9080/apisix/admin/routes/1 -d ' 为了生成合法、有效的 script 函数,ManagerAPI 选择了 DAG 有向无环图的数据结构进行底层设计,并自主研发了 `dag-to-lua` [项目](https://github.com/api7/dag-to-lua):它将根节点作为开始节点,根据判断条件决定下一个流转插件,这将有效避免逻辑死循环。如下为 DAG 数据结构的示意图: -![Apache APISIX plugin orchestration DAG data structure](/img/blog_img/2021-07-27-3.png) +![Apache APISIX plugin orchestration DAG data structure](https://static.apiseven.com/202108/1639466682723-dcfd5c1b-9ae7-42b4-b3c2-c00aaf7a5996.png) 对应到 ManagerAPI 接收的 `script` 参数上,示例如下: @@ -148,21 +148,21 @@ curl -X PUT http://127.0.0.1:9080/apisix/admin/routes/1 -d ' 在 Web 侧,经过挑选、对比与项目验证,我们选择了蚂蚁金服开源的 X6 图编辑引擎作为插件编排 Web 部分的底层框架,除了完善、清晰的文档外,一系列开箱即用的交互组件以及节点可定制化能力也是我们选择它的原因。 -![X6 introduction](/img/blog_img/2021-07-27-4.png) +![X6 introduction](https://static.apiseven.com/202108/1639466742487-269ebd5a-4f6c-47c3-a941-1275a4b3d178.png) 在编排实现过程中,我们抽象出了通用元件与插件元件的概念:通用元件是指开始节点、结束节点与条件判断节点,插件元件则是每一个可用的 Apache APISIX 插件,通过将这些元件拖拽到画板中来完成插件编排的流程。如图所示: -![Apache APISIX dashboard plugin orchestration demo1](/img/blog_img/2021-07-27-5.png) +![Apache APISIX dashboard plugin orchestration demo1](https://static.apiseven.com/202108/1639466805116-0e1c9a83-e5d0-40c1-8a76-8cb1402a491c.png) 在拖拽过程中,我们需要限制一系列的边界条件,这里有几个例子: 当插件未配置时,系统将出现「存在未配置的元件」的错误提示,可以直观地看到哪个插件没有配置数据: -![Apache APISIX dashboard plugin orchestration demo2](/img/blog_img/2021-07-27-6.png) +![Apache APISIX dashboard plugin orchestration demo2](https://static.apiseven.com/202108/1639466853301-a67de136-633d-4b5d-9062-ac17bf625063.png) 当编辑某条 API 时,若该 API 已经绑定了插件数据,当使用插件编排模式时,系统在检测后将出现警告信息,只有用户明确确认希望使用编排模式时,系统才能继续进行。这可以有效避免 API 数据被误操作的情况。 -![Apache APISIX dashboard plugin orchestration demo3](/img/blog_img/2021-07-27-7.png) +![Apache APISIX dashboard plugin orchestration demo3](https://static.apiseven.com/202108/1639466907551-07ec82f9-8988-4a66-a5f2-d3944d4f239c.png) 此外,还存在诸如开始元件只能有一个输出、条件判断元件只能有一个输入等情况。试想:如果系统不加限制地让用户操作,不合理的插件组合既无意义,又会产生无法预料的错误,因此不断丰富边界条件,也是在设计插件编排时需要着重考虑的问题。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md index 4c76bc045b578..091027cf4036b 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/09/Apache-APISIX-in-China-Mobile-Cloud.md @@ -24,7 +24,7 @@ tags: [Interview] 当前,我主要关注于对象存储在交互编排、流量治理等方面的能力,促进我们第四代对象存储产品进一步实现架构升级。同时,我们也希望能够基于 Ingress Controller 的能力,来实现统一流量访问入口,并包括灰度发布、流量管控等功能。这些是我们当前正在做的一些工作。 -![China-Mobile-ChenYanshan](/img/blog_img/2021-08-09-chenyanshan.png) +![China-Mobile-ChenYanshan](https://static.apiseven.com/202108/1639466964888-a7ee803d-16d2-4042-b538-326e90e36712.png) **Q:您说的这些内容多少都与 Apache APISIX 有关联,您在今年 ApacheCon 亚洲大会上也有一场分享,想问下您会带来哪些精彩分享?** diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/11/interview-TuZhengsong.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/11/interview-TuZhengsong.md index 8b9885c06dd40..f089d927f5b48 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/11/interview-TuZhengsong.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/11/interview-TuZhengsong.md @@ -23,7 +23,7 @@ tags: [Interview] 历时 282 天,屠正松(GitHub ID:tzssangglass)从开源社区的小白成长为了 Apache APISIX 的 committer。 -![Apache APISIX committer tzssangglass github](/img/blog_img/2021-08-11-1.webp) +![Apache APISIX committer tzssangglass github](https://static.apiseven.com/202108/1639549454040-de5d7598-83b7-483f-a5da-55fedeb5fa90.png) 屠正松因深度参与 Apache APISIX 的开发,在社区中贡献很多,2021 年 7 月 22 日被推选为 Apache APISIX committer。 @@ -80,7 +80,7 @@ tags: [Interview] 当时正松内心非常的兴奋,马上按照那个新手指南的引导把 PR 提上去了。然后接受 Code Review 的意见,进一步修改代码。终于,在 10 月 18 号,PR 顺利地 merge 进了仓库。 -![Apache APISIX committer tzssangglass pr](/img/blog_img/2021-08-11-2.webp) +![Apache APISIX committer tzssangglass pr](https://static.apiseven.com/202108/1639549390155-6b6cb167-8c9a-43fb-8859-f58cd6b1aae7.png) “当时我非常的激动,感觉自己终于实质性地参与到开源社区里面去了。我可以给 Apache 基金会的顶级项目提交代码了!作为一个技术工作者,这是一种技术上的自信。” diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md index df8eab5e2c6fb..3bb99c0125f66 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/14/contributors-the-golden-metric-of-openSource-projects.md @@ -28,7 +28,7 @@ tags: [Community] - Issue 和 PR 数:GitHub 提供了 Insights 功能,如下图所示: -![Apache APISIX GitHub Insights](/img/blog_img/2021-08-14-1.webp) +![Apache APISIX GitHub Insights](https://static.apiseven.com/202108/1639549315114-8bcc2d6d-a67b-48a2-be1e-0831c2441921.png) 可以选择最近一周、最近一个月的时间内,这个开源项目的 Issue 和 PR 的新建和关闭数。上图是 Apache APISIX 最近一个月的数据。 @@ -36,7 +36,7 @@ GitHub insights 提供了一个非常棒的开发者视角,但还不够完美 - Commit 频率和数据:下图是 Apache APISIX 从项目创建到现在的 Commit 频率统计,可以看出 Apache APISIX 保持了非常稳定和持续的开发,但这个指标也略显单薄:看不到提交这些 Commit 的开发者的数据; -![Apache APISIX commits](/img/blog_img/2021-08-14-2.webp) +![Apache APISIX commits](https://static.apiseven.com/202108/1639549239894-1406e1d6-ae84-4364-89cd-1b63f6f4cd4b.png) 看到这里,你是不是觉得选择一个开源项目好复杂,看了这么多指标都得不出答案。有没有一个“金指标”,一个通过 marketing 砸不出来的指标?一个能够体现“开发者为核心”的指标? @@ -44,11 +44,11 @@ GitHub insights 提供了一个非常棒的开发者视角,但还不够完美 ## 贡献者增长 -![Apache APISIX contributor growth](/img/blog_img/2021-08-14-3.webp) +![Apache APISIX contributor growth](https://static.apiseven.com/202108/1639549136527-e477c670-42d3-4764-9432-209c34dd222b.png) ## 月度活跃贡献者 -![Apache APISIX Monthly Active Contributors](/img/blog_img/2021-08-14-4.webp) +![Apache APISIX Monthly Active Contributors](https://static.apiseven.com/202108/1639548976021-ed0946ae-eeb2-4dfc-8e15-c3db13f527e0.png) 通过上面两个表格,你可以清晰的看到 Apache APISIX 从创办至今,贡献者都保持着稳定的增长,每个月都有 25 个左右的代码贡献者参与其中。 @@ -60,7 +60,7 @@ GitHub insights 提供了一个非常棒的开发者视角,但还不够完美 通过同时展示同一领域中的多个仓库,我们也可以直观比较不同社区的发展情况。 -![Apache APISIX compare the development of different communities](/img/blog_img/2021-08-14-5.webp) +![Apache APISIX compare the development of different communities](https://static.apiseven.com/202108/1639548845735-43efcae0-3221-4739-b10f-0d9aaafad3fd.png) 在上图中,我们可以看到 Apache APISIX 的贡献者人数以非常快的速度增长,仅仅用了两年时间,贡献者人数就基本赶上甚至超越了其他开源网关项目。 @@ -68,13 +68,13 @@ GitHub insights 提供了一个非常棒的开发者视角,但还不够完美 相比贡献者增长曲线,月度贡献者可以更好衡量短时间内的社区发展情况。 -![Apache APISIX monthly contributors compare](/img/blog_img/2021-08-14-6.webp) +![Apache APISIX monthly contributors compare](https://static.apiseven.com/202108/1639548683512-d7c7a72b-7ac3-4535-bd1a-f056d05d196b.png) 例如在上图中,我们可以看到如今 Apache APISIX 是多个开源网关项目中的月度贡献者人数最多、最稳定的。 这也解释了为何 Apache APISIX 可以在开源后如此短的时间内在总贡献者人数上赶上友商们。 -![Apache APISIX monthly contributors](/img/blog_img/2021-08-14-7.webp) +![Apache APISIX monthly contributors](https://static.apiseven.com/202108/1639548241386-6ba96e66-5ab7-468e-9072-6144fb902909.png) 上面这张比较开源消息中间件社区的月度贡献者的图,曾在推特引发热议。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md index 093590af959cf..f188c25795ac4 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/18/Auth-with-Casbin-in-Apache-APISIX.md @@ -40,7 +40,7 @@ authz-casbin 插件可以把路由匹配和请求授权这两个功能很好地 authz-casbin 插件使用三个参数来进行授权:subject、object 和 action。subject 是用户名,代指请求中的用户;object 是将要被访问的 URL 链接也就是将被访问的资源;action 是请求授权的行为,比如读操作(read)或者是写操作(write)。 假如,我们想要创建一个模型来访问三个资源:/,/res1,/res2,我们想要一个类似于这样的模型: -![authz-casbin example](/img/blog_img/2021-08-18-1.png) +![authz-casbin example](https://static.apiseven.com/202108/1639467795044-8676c5cb-00e0-48e1-b7b1-929e37c87b75.png) 在这个模型中,所有的用户,例如 Jack,可以访问主页面(/)。而像 Alice 和 Bob 具有管理员权限的用户则可以访问所有的页面和资源(/res1,/res2,/)。这样,我们就需要来限制没有管理员权限的用户只能使用 GET 请求方法访问特定的资源。所需要的模型如下: diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/19/go-makes-Apache-APISIX-better.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/19/go-makes-Apache-APISIX-better.md index 1dd7ad27b8937..2046fee7733bc 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/19/go-makes-Apache-APISIX-better.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/19/go-makes-Apache-APISIX-better.md @@ -143,7 +143,7 @@ APISIX_LISTEN_ADDRESS=unix:/tmp/runner.sock APISIX_CONF_EXPIRE_TIME=3600 ./go-ru 首先要安装 Apache APISIX,需要和 Go Runner 位于同一实例上。 -![Apache APISIX work flow](/img/blog_img/2021-08-19-1.png) +![Apache APISIX work flow](https://static.apiseven.com/202108/1639467846997-8be8195d-98ac-457d-8b7f-a7b78e55fef1.png) 上图左边是 Apache APISIX 的工作流程,右边的 plugin runner 负责运行不同语言编写的外部插件。apisix-go-plugin-runner 就是这样支持 Go 语言的 runner。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/21/shanghai-meetup.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/21/shanghai-meetup.md index f7e853739105d..1b551f5668e6a 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/21/shanghai-meetup.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/21/shanghai-meetup.md @@ -30,7 +30,7 @@ tips:疫情防控不放松,我们将会控制现场活动规模,名额有 ## 活动安排 -![Apache APISIX Meetup](/img/blog_img/2021-08-21-1.jpg) +![Apache APISIX Meetup](https://static.apiseven.com/202108/1639467909853-fd9caa2e-8b45-459c-8bb7-8acb4a20692e.jpg) ## 议题介绍 @@ -78,7 +78,7 @@ Apache APISIX 从开源第一天就以社区方式成长,短短两年时间产 参加 Meetup,与讲师互动,有机会获得 Apache APISIX 最新周边:超大鼠标垫、精致马克杯、Apache APISIX 徽章、定制雨伞。 -![Apache APISIX Gift](/img/blog_img/2021-08-21-4.jpg) +![Apache APISIX Gift](https://static.apiseven.com/202108/1639468073361-021ba09a-69bb-47ac-a852-e879c3109a9a.jpg) ## 参与方式 @@ -90,10 +90,10 @@ Apache APISIX 从开源第一天就以社区方式成长,短短两年时间产 如果不能到现场参加 Meetup,关注 Apache APISIX 视频号观看直播。 -![Apache APISIX Live](/img/blog_img/2021-08-21-2.png) +![Apache APISIX Live](https://static.apiseven.com/202108/1639467967121-2fff2f38-7949-4ea5-be55-7a3bf47b2bd5.png) ## 入群交流 欢迎关注 Apache APISIX 公众号,在后台回复关键字“上海”,加入 Apache APISIX 上海交流群。 -![Apache APISIX wechat](/img/blog_img/2021-08-21-3.png) +![Apache APISIX wechat](https://static.apiseven.com/202108/1639468019348-d2d555ab-e860-41a4-9efa-f383eb0c0069.png) diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md index 61f1b20381ca8..273e1f927eefd 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/08/25/Using-the-Apache-APISIX-OpenID-Connect-Plugin-for-Centralized-Authentication.md @@ -29,13 +29,13 @@ tags: [Practical Case] 在传统认证模式下,各个应用服务需要单独支持身份认证,例如当用户未登录时访问登录接口,接口返回 301 跳转页面。应用需要开发维护 Session 以及和身份提供商的认证交互等逻辑。传统认证模式的流程如下图所示:首先由用户发起请求(request),然后由网关接收请求并将其转发至对应的应用服务,最后由应用服务与身份提供方对接,完成身份认证(authorization)。 -![传统认证模式流程图](/img/blog_img/2021-08-16-1.png) +![传统认证模式流程图](https://static.apiseven.com/202108/1639467045776-715e1805-540b-4cef-87c5-6166e2af43a8.png) ### 集中认证模式 与传统认证模式不同,集中身份认证模式把用户认证从应用服务中抽离了出来,以 Apache APISIX 为例,集中认证的流程如下图所示:首先由用户发起请求(request),然后由前置的网关负责用户认证流程,与身份提供方对接,向身份提供方发送身份认证(authorization)请求。身份提供方返回用户身份信息(user info)。网关完成用户身份识别后,将用户身份信息通过请求头的形式转发至后端应用。 -![集中认证模式流程图](/img/blog_img/2021-08-16-2.png) +![集中认证模式流程图](https://static.apiseven.com/202108/1639467122244-d4292436-c5ce-48f6-b1d5-67645f24fbc9.png) 相比较传统认证模式,集中认证模式下有如下优点: @@ -58,7 +58,7 @@ OpenID 认证过程有以下 7 个步骤,如下图所示。 6. APISIX 将 Access Token 发送到 Identity Provider 的 User Endpoint,以进行获取用户身份。 7. 通过认证后,User Endpoint 将 User info 发送到 APISIX,完成身份验证。 -![OpenID 认证流程图](/img/blog_img/2021-08-16-3.png) +![OpenID 认证流程图](https://static.apiseven.com/202108/1639467187923-71854ddb-65fd-4a90-8bd0-242b47a8624b.png) ## 如何使用 Apache APISIX 的 OpenID Connect 插件配置 Okta 认证 @@ -71,20 +71,20 @@ OpenID 认证过程有以下 7 个步骤,如下图所示。 ### 步骤一:配置 Okta 1. 登录你的 Okta 账号,并创建一个 Okta 应用,选择 OIDC 登录模式以及 Web Application 应用类型。 - ![创建一个 Okta 应用](/img/blog_img/2021-08-16-4.png) - ![选择 OIDC 登录模式以及 Web Application 应用类型](/img/blog_img/2021-08-16-5.png) + ![创建一个 Okta 应用](https://static.apiseven.com/202108/1639467243454-ac16645a-4a8a-426f-93a2-e840cae3c502.png) + ![选择 OIDC 登录模式以及 Web Application 应用类型](https://static.apiseven.com/202108/1639467299429-0ea741a7-95fd-43b5-a0c4-25a7026e62d2.png) 2. 设置登录和登出的跳转 URL。 其中 “Sign-in redirect URIs” 为登录成功允许跳转的链接地址,“Sign-out redirect URIs” 表示登出之后跳转的链接地址。在这个示例中,我们将登录成功跳转和登出之后跳转的链接地址都设置为 `http://127.0.0.1:9080/`。 - ![设置登录和登出的跳转 URL](/img/blog_img/2021-08-16-6.png) + ![设置登录和登出的跳转 URL](https://static.apiseven.com/202108/1639467390099-e9594a05-7e78-4f20-a902-7c4ca2c302fb.png) 3. 完成设置以后,单击“Save”保存修改。 - ![保存修改](/img/blog_img/2021-08-16-7.png) + ![保存修改](https://static.apiseven.com/202108/1639467449049-628d7796-0d8e-4ed9-8334-5ba7f0fb32f4.png) 4. 访问应用的 General 页面,获取以下配置,配置 Apache APISIX OpenID Connect 时需要提供这些信息: - Client ID:OAuth client ID,即应用的 ID,与下文的 `client_id` 和 `{YOUR_CLIENT_ID}` 对应。 - Client secret:OAuth client secret,即应用密钥,与下文的 `client_secret` 和 `{YOUR_CLIENT_SECRET}` 对应。 - Okta domain:应用使用的域名,与下文的 discovery 中的 `{YOUR_ISSUER}` 对应。 -![获取配置信息](/img/blog_img/2021-08-16-8.png) +![获取配置信息](https://static.apiseven.com/202108/1639467501106-d95bf8ad-db47-4918-ac70-424b12488e5b.png) ### 安装 Apache APISIX @@ -213,7 +213,7 @@ curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136 1. 访问 http://127.0.0.1:9080/get ,因为开启了 OpenID Connect 插件,所以页面被重定向到 Okta 登录页面。 -![visit Okta login page](/img/blog_img/2021-08-16-9.png) +![visit Okta login page](https://static.apiseven.com/202108/1639467566395-2a049b96-3b1f-4e74-93f0-d6ea2f52a72e.png) 2. 输入用户在 Okta 注册的账号密码,单击“Sign in”,登录 Okta 账户。 @@ -229,15 +229,15 @@ curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136 **X-Access-Token**:Apache APISIX 将从用户提供商获取到的 access token 放入 X-Access-Token 请求头,可以通过插件配置中的 access_token_in_authorization_header 来选择是否放入 Authorization 请求头中。 -![X-Access-Token](/img/blog_img/2021-08-16-10.png) +![X-Access-Token](https://static.apiseven.com/202108/1639467626264-980605e2-0b21-4512-9e2c-af71950fcf99.png) **X-Id-Token**:Apache APISIX 将从用户提供商获取到的 ID token 通过 base64 编码之后放入 X-Id-Token 请求头,可以通过插件配置中的 set_id_token_header 来选择是否开启该功能,默认为为开启状态。 -![X-Id-Token](/img/blog_img/2021-08-16-11.png) +![X-Id-Token](https://static.apiseven.com/202108/1639467682902-ada726b8-b46b-460d-8313-ef47b38d13ab.png) **X-Userinfo**: Apache APISIX 将从用户提供商获取到的用户信息,通过 base64 编码之后放入 X-Userinfo,你可以通过插件配置中的 set_userinfo_header 来选择是否开启该功能,默认为开启状态。 -![X-Userinfo](/img/blog_img/2021-08-16-12.png) +![X-Userinfo](https://static.apiseven.com/202108/1639467730566-fc8a8a76-a3aa-4b8e-bb13-505b50839877.png) 由此可以看到,Apache APISIX 将会携带 X-Access-Token,X-Id-Token,X-Userinfo 三个请求头传递至上游。上游可以通过解析这几个头部,从而获取到用户 ID 信息和用户的元数据。 diff --git a/website/i18n/zh/docusaurus-plugin-content-blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md b/website/i18n/zh/docusaurus-plugin-content-blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md index a40154eb4f6c6..0f370bc9c54d5 100644 --- a/website/i18n/zh/docusaurus-plugin-content-blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md +++ b/website/i18n/zh/docusaurus-plugin-content-blog/2021/09/06/python-helps-you-quickly-with-Apache-APISIX-development.md @@ -39,7 +39,7 @@ tags: [Practical Case] 之间的一道桥梁,通过 `Python Runner` 可以把 `Python` 直接应用到 `APISIX` 的插件开发中,最重要的还是希望让更多对 `Apache APISIX` 和 `API 网关` 感兴趣的 `Python开发者` 通过这个项目更多的了解使用 `Apache APISIX`,以下为 `Apache APISIX` 多语言支持的架构图。 -![Apache APISIX work flow](/img/blog_img/2021-09-06-1.png) +![Apache APISIX work flow](https://static.apiseven.com/202108/1639468460315-bb51d913-be72-4329-a47b-7e987dff21ba.png) 上图左边是 `Apache APISIX` 的工作流程,右边的 `Plugin Runner` 是各语言的插件运行器,本文介绍的 `apisix-python-plugin-runner` 就是支持 `Python` 语言的 `Plugin Runner`。 diff --git a/website/static/img/blog_img/2021-01-11-1.png b/website/static/img/blog_img/2021-01-11-1.png deleted file mode 100644 index dd765847fc749..0000000000000 Binary files a/website/static/img/blog_img/2021-01-11-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-05-25-1.png b/website/static/img/blog_img/2021-05-25-1.png deleted file mode 100644 index 6dbb446ee8aef..0000000000000 Binary files a/website/static/img/blog_img/2021-05-25-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-05-31-1.png b/website/static/img/blog_img/2021-05-31-1.png deleted file mode 100644 index f590c05c4cbbd..0000000000000 Binary files a/website/static/img/blog_img/2021-05-31-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-06-1.webp b/website/static/img/blog_img/2021-06-06-1.webp deleted file mode 100644 index 1770506e38849..0000000000000 Binary files a/website/static/img/blog_img/2021-06-06-1.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-16-1.png b/website/static/img/blog_img/2021-06-16-1.png deleted file mode 100644 index 3f1fe931624a2..0000000000000 Binary files a/website/static/img/blog_img/2021-06-16-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-16-2.png b/website/static/img/blog_img/2021-06-16-2.png deleted file mode 100644 index 0f2924795488c..0000000000000 Binary files a/website/static/img/blog_img/2021-06-16-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-17-1.jpeg b/website/static/img/blog_img/2021-06-17-1.jpeg deleted file mode 100644 index eb63808676ab4..0000000000000 Binary files a/website/static/img/blog_img/2021-06-17-1.jpeg and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-18-1.png b/website/static/img/blog_img/2021-06-18-1.png deleted file mode 100644 index d726eae5b9bc5..0000000000000 Binary files a/website/static/img/blog_img/2021-06-18-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-21-1.png b/website/static/img/blog_img/2021-06-21-1.png deleted file mode 100644 index 6ac409bc7b44c..0000000000000 Binary files a/website/static/img/blog_img/2021-06-21-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-21-2.png b/website/static/img/blog_img/2021-06-21-2.png deleted file mode 100644 index 0f0183c5347df..0000000000000 Binary files a/website/static/img/blog_img/2021-06-21-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-1.png b/website/static/img/blog_img/2021-06-23-1.png deleted file mode 100644 index 232b27016cd76..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-2.png b/website/static/img/blog_img/2021-06-23-2.png deleted file mode 100644 index 1cf0984c07312..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-3.png b/website/static/img/blog_img/2021-06-23-3.png deleted file mode 100644 index fd5eb84d0daf0..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-4.png b/website/static/img/blog_img/2021-06-23-4.png deleted file mode 100644 index f3cbbeb30b76e..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-4.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-5.png b/website/static/img/blog_img/2021-06-23-5.png deleted file mode 100644 index ae5c16da8aae6..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-5.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-6.png b/website/static/img/blog_img/2021-06-23-6.png deleted file mode 100644 index e11936452da3f..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-6.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-7.png b/website/static/img/blog_img/2021-06-23-7.png deleted file mode 100644 index f3c4f68937770..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-7.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-23-8.png b/website/static/img/blog_img/2021-06-23-8.png deleted file mode 100644 index 758ea85e22c1d..0000000000000 Binary files a/website/static/img/blog_img/2021-06-23-8.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-30-1.png b/website/static/img/blog_img/2021-06-30-1.png deleted file mode 100644 index c0a18f43aed36..0000000000000 Binary files a/website/static/img/blog_img/2021-06-30-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-06-30-2.png b/website/static/img/blog_img/2021-06-30-2.png deleted file mode 100644 index a8b05e66e5e3a..0000000000000 Binary files a/website/static/img/blog_img/2021-06-30-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-16-1.png b/website/static/img/blog_img/2021-07-16-1.png deleted file mode 100644 index f590c05c4cbbd..0000000000000 Binary files a/website/static/img/blog_img/2021-07-16-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-1.png b/website/static/img/blog_img/2021-07-25-1.png deleted file mode 100644 index 1e46982076069..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-2.png b/website/static/img/blog_img/2021-07-25-2.png deleted file mode 100644 index 2ede6461adb21..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-3.png b/website/static/img/blog_img/2021-07-25-3.png deleted file mode 100644 index eb675fd4389b5..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-4.png b/website/static/img/blog_img/2021-07-25-4.png deleted file mode 100644 index f191448d80474..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-4.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-5.png b/website/static/img/blog_img/2021-07-25-5.png deleted file mode 100644 index 0bd9e99914d2f..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-5.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-6.png b/website/static/img/blog_img/2021-07-25-6.png deleted file mode 100644 index 40129b46e9328..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-6.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-7.png b/website/static/img/blog_img/2021-07-25-7.png deleted file mode 100644 index 8c53783b42d9d..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-7.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-8.png b/website/static/img/blog_img/2021-07-25-8.png deleted file mode 100644 index 593a553b98267..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-8.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-25-9.png b/website/static/img/blog_img/2021-07-25-9.png deleted file mode 100644 index 413e5d34542d0..0000000000000 Binary files a/website/static/img/blog_img/2021-07-25-9.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-1.png b/website/static/img/blog_img/2021-07-27-1.png deleted file mode 100644 index d7672dd9bbab1..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-2.png b/website/static/img/blog_img/2021-07-27-2.png deleted file mode 100644 index a98a66cba5e5a..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-3.png b/website/static/img/blog_img/2021-07-27-3.png deleted file mode 100644 index 8bb7a7747fd41..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-4.png b/website/static/img/blog_img/2021-07-27-4.png deleted file mode 100644 index 7080d9f12a817..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-4.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-5.png b/website/static/img/blog_img/2021-07-27-5.png deleted file mode 100644 index 5b49c49d0bc65..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-5.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-6.png b/website/static/img/blog_img/2021-07-27-6.png deleted file mode 100644 index 35c8922afb3ea..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-6.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-07-27-7.png b/website/static/img/blog_img/2021-07-27-7.png deleted file mode 100644 index 07bd8979c2d90..0000000000000 Binary files a/website/static/img/blog_img/2021-07-27-7.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-09-chenyanshan.png b/website/static/img/blog_img/2021-08-09-chenyanshan.png deleted file mode 100644 index 9bbd3ad5f8008..0000000000000 Binary files a/website/static/img/blog_img/2021-08-09-chenyanshan.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-11-1.webp b/website/static/img/blog_img/2021-08-11-1.webp deleted file mode 100644 index 8c743c7ba4eb9..0000000000000 Binary files a/website/static/img/blog_img/2021-08-11-1.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-11-2.webp b/website/static/img/blog_img/2021-08-11-2.webp deleted file mode 100644 index 6a1e75096d1d7..0000000000000 Binary files a/website/static/img/blog_img/2021-08-11-2.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-1.webp b/website/static/img/blog_img/2021-08-14-1.webp deleted file mode 100644 index ee6710b6f29ef..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-1.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-2.webp b/website/static/img/blog_img/2021-08-14-2.webp deleted file mode 100644 index a7531c91ccc68..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-2.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-3.webp b/website/static/img/blog_img/2021-08-14-3.webp deleted file mode 100644 index 482087d6edeb2..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-3.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-4.webp b/website/static/img/blog_img/2021-08-14-4.webp deleted file mode 100644 index 5eb925a0a1c32..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-4.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-5.webp b/website/static/img/blog_img/2021-08-14-5.webp deleted file mode 100644 index fd5a11787dd9c..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-5.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-6.webp b/website/static/img/blog_img/2021-08-14-6.webp deleted file mode 100644 index bc18169ab256a..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-6.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-14-7.webp b/website/static/img/blog_img/2021-08-14-7.webp deleted file mode 100644 index 56b355ff7daef..0000000000000 Binary files a/website/static/img/blog_img/2021-08-14-7.webp and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-1.png b/website/static/img/blog_img/2021-08-16-1.png deleted file mode 100644 index 820244256ec3e..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-10.png b/website/static/img/blog_img/2021-08-16-10.png deleted file mode 100644 index c529c54e03621..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-10.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-11.png b/website/static/img/blog_img/2021-08-16-11.png deleted file mode 100644 index e714f95ceda44..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-11.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-12.png b/website/static/img/blog_img/2021-08-16-12.png deleted file mode 100644 index f905421e56507..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-12.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-2.png b/website/static/img/blog_img/2021-08-16-2.png deleted file mode 100644 index ceba1b2fd0377..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-3.png b/website/static/img/blog_img/2021-08-16-3.png deleted file mode 100644 index 7d306d56fa16c..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-4.png b/website/static/img/blog_img/2021-08-16-4.png deleted file mode 100644 index 2a736af0a8cfb..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-4.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-5.png b/website/static/img/blog_img/2021-08-16-5.png deleted file mode 100644 index 13ce6c62ee50d..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-5.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-6.png b/website/static/img/blog_img/2021-08-16-6.png deleted file mode 100644 index 66944eab83fb8..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-6.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-7.png b/website/static/img/blog_img/2021-08-16-7.png deleted file mode 100644 index 74bd5533f16f7..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-7.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-8.png b/website/static/img/blog_img/2021-08-16-8.png deleted file mode 100644 index 621dc5da41884..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-8.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-16-9.png b/website/static/img/blog_img/2021-08-16-9.png deleted file mode 100644 index 38ff6ed42f61f..0000000000000 Binary files a/website/static/img/blog_img/2021-08-16-9.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-18-1.png b/website/static/img/blog_img/2021-08-18-1.png deleted file mode 100644 index c1ef3cc722cab..0000000000000 Binary files a/website/static/img/blog_img/2021-08-18-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-19-1.png b/website/static/img/blog_img/2021-08-19-1.png deleted file mode 100644 index 4532a9d13333f..0000000000000 Binary files a/website/static/img/blog_img/2021-08-19-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-21-1.jpg b/website/static/img/blog_img/2021-08-21-1.jpg deleted file mode 100644 index c3fda6e283002..0000000000000 Binary files a/website/static/img/blog_img/2021-08-21-1.jpg and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-21-2.png b/website/static/img/blog_img/2021-08-21-2.png deleted file mode 100644 index 2e961ed14d3e7..0000000000000 Binary files a/website/static/img/blog_img/2021-08-21-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-21-3.png b/website/static/img/blog_img/2021-08-21-3.png deleted file mode 100644 index 3c4286b03374a..0000000000000 Binary files a/website/static/img/blog_img/2021-08-21-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-21-4.jpg b/website/static/img/blog_img/2021-08-21-4.jpg deleted file mode 100644 index 02414bc830f3e..0000000000000 Binary files a/website/static/img/blog_img/2021-08-21-4.jpg and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-25-1.png b/website/static/img/blog_img/2021-08-25-1.png deleted file mode 100644 index c08e08475ff11..0000000000000 Binary files a/website/static/img/blog_img/2021-08-25-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-1.png b/website/static/img/blog_img/2021-08-27-1.png deleted file mode 100644 index 6aec075ce0503..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-1.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-2.png b/website/static/img/blog_img/2021-08-27-2.png deleted file mode 100644 index 759924feddc65..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-2.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-3.png b/website/static/img/blog_img/2021-08-27-3.png deleted file mode 100644 index 9073ecc516544..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-3.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-4.png b/website/static/img/blog_img/2021-08-27-4.png deleted file mode 100644 index 6416b336d5a8d..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-4.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-5.png b/website/static/img/blog_img/2021-08-27-5.png deleted file mode 100644 index 4d5f5ecf7bc81..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-5.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-6.png b/website/static/img/blog_img/2021-08-27-6.png deleted file mode 100644 index c969d31f93ded..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-6.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-08-27-7.png b/website/static/img/blog_img/2021-08-27-7.png deleted file mode 100644 index f5a76bc352f8f..0000000000000 Binary files a/website/static/img/blog_img/2021-08-27-7.png and /dev/null differ diff --git a/website/static/img/blog_img/2021-09-06-1.png b/website/static/img/blog_img/2021-09-06-1.png deleted file mode 100644 index 702a09def99ed..0000000000000 Binary files a/website/static/img/blog_img/2021-09-06-1.png and /dev/null differ diff --git a/website/static/img/blog_img/APISIX-wechat.png b/website/static/img/blog_img/APISIX-wechat.png deleted file mode 100644 index 3c4286b03374a..0000000000000 Binary files a/website/static/img/blog_img/APISIX-wechat.png and /dev/null differ