apisix~helm方式(shi)的部署(shu)到(dao)k8s
使用 helm 部署 apisix
相關閱讀:
- >
對接到APISIX上(shang)的(de)項目(mu),它們的(de)域名(ming)通常需(xu)要是APISIX Gateway 的(de)域名(ming)。APISIX 是一(yi)個開源的(de)動態可編程的(de) API 網關,用于處(chu)理(li)和管理(li) API 請(qing)(qing)(qing)求(qiu)(qiu)流量,通常會通過配置(zhi)路由(you)規則將請(qing)(qing)(qing)求(qiu)(qiu)轉(zhuan)發(fa)到后(hou)端(duan)服(fu)務。因此,為了(le)使請(qing)(qing)(qing)求(qiu)(qiu)能夠正確地經過APISIX進行(xing)處(chu)理(li),前端(duan)項目(mu)或(huo)客戶端(duan)應(ying)該使用APISIX Gateway 的(de)域名(ming)來訪問API服(fu)務。這樣可以確保請(qing)(qing)(qing)求(qiu)(qiu)能夠被(bei)正確地路由(you)到后(hou)端(duan)服(fu)務,并獲得正確的(de)響(xiang)應(ying)。
apisix 介紹
Apache APISIX 是一個動態、實時、高性能的云原生 API 網關,提供了負載均衡、動態路由、灰度發布、服務熔斷、身份認證、可觀測性等豐富的流量管理功能。
官方地址:

什么是apisix
Apache APISIX 是一個高性能、輕量級(ji)的(de)開源 API 網(wang)關,基于 Nginx 和(he) OpenResty 構建。APISIX 提供了(le)豐富的(de)功能和(he)靈(ling)活的(de)配置,適(shi)用于構建現代(dai)的(de)微(wei)服務架(jia)構和(he)云原生應用。
以下是(shi) Apache APISIX 的(de)一些主要特點和功(gong)能:
-
動態路由:APISIX 支持(chi)基于請求路(lu)徑、方法、頭部(bu)等條件(jian)進行(xing)動態路(lu)由(you),可以根據需(xu)求靈活(huo)配置路(lu)由(you)規則。
-
負載均衡:內置(zhi)多(duo)種(zhong)負載均衡算法,支持權重、IP 黑白名(ming)單等策略,實現流量分發和控制。
-
熔斷與限流:提供熔斷(duan)器和(he)限流功能,保護后端服務免受突(tu)發流量沖擊,確(que)保系統穩定性。
-
插件系統:APISIX 提供豐富的插件系統,包(bao)括認(ren)證、日志、監控、緩(huan)存、轉發(fa)、重試等插件,方便擴(kuo)展和定制功(gong)能。
-
動態 SSL/TLS:支持(chi)動(dong)態證書管理,實(shi)現自動(dong)化的 SSL/TLS 配置和(he)更新(xin),保障(zhang)通(tong)信安全(quan)。
-
靈活配置:采用基于 Lua 的 DSL(Domain Specific Language)進行配(pei)置,具有靈活性和可擴(kuo)展性,方便(bian)定制(zhi)化需求。
-
可觀測性:提(ti)供豐(feng)富的監(jian)控指(zhi)標和日(ri)志輸出,支(zhi)持 Prometheus、Grafana 等監(jian)控工具,幫助(zhu)實時監(jian)控和調(diao)優系統(tong)。
-
云原生支持:APISIX 可以無縫集成到 Kubernetes 等容器(qi)編排平臺中,支持自動伸縮、動態配置等特(te)性(xing)。
總的(de)來(lai)說,Apache APISIX 是一個(ge)功能強大、易于擴展的(de) API 網關,適用于構建(jian)高性(xing)能、可靠的(de)微服務架構,并提(ti)供豐富的(de)功能和(he)靈活的(de)配置選項來(lai)滿足不同場(chang)景下的(de)需求。
apisix架構
APISIX 主要(yao)分為兩個部分:
APISIX 核心:包括 Lua 插件、多語言插件運行時(Plugin Runner)、Wasm 插件運行時等;
功能豐富的各種內置插件:包括可觀測性、安全、流量控制等。
APISIX 在其核心中(zhong),提(ti)供了(le)路由匹配、負載均衡(heng)、服務發現、API 管(guan)理(li)等(deng)重(zhong)要功能,以(yi)(yi)及(ji)配置管(guan)理(li)等(deng)基礎性(xing)模塊。除此之外,APISIX 插(cha)件運(yun)行(xing)(xing)時也包(bao)含其中(zhong),提(ti)供原生 Lua 插(cha)件的運(yun)行(xing)(xing)框(kuang)(kuang)架(jia)和多語(yu)(yu)言插(cha)件的運(yun)行(xing)(xing)框(kuang)(kuang)架(jia),以(yi)(yi)及(ji)實(shi)驗性(xing)的 Wasm 插(cha)件運(yun)行(xing)(xing)時等(deng)。APISIX 多語(yu)(yu)言插(cha)件運(yun)行(xing)(xing)時提(ti)供多種開發語(yu)(yu)言的支(zhi)持,比如 Golang、Java、Python、JS 等(deng)。
APISIX 目(mu)前也內置了各(ge)類插件,覆蓋了 API 網關(guan)的各(ge)種(zhong)領(ling)域,如認證鑒權、安全、可(ke)觀測(ce)性(xing)、流量管理(li)、多(duo)協議接(jie)入等。當(dang)前 APISIX 內置的插件使(shi)用原生 Lua 實現,關(guan)于各(ge)個插件的介紹與使(shi)用方式,可(ke)以查看(kan)相(xiang)關(guan)插件文檔。

插件加載流程

插件內部結構

helm方式部署apisix
下載官方的包
helm repo add apisix //charts.apiseven.com
helm pull apisix/apisix
# 可能版本有更新
tar zxvf apisix-2.7.0.tgz
配置dashboard后臺帳號
- values.yaml文件中dashboard節點
dashboard:
enabled: true
config:
authentication:
users:
- username: admin
password: admin123
配置apisix時區
- values.yaml文件中,修改
timezone的值,如設置時區為東八timezone: "Asia/Shanghai"
nginx擴展配置
- values.yaml文件中的apisix.nginx.configurationSnippet.httpStart節點
apisix:
nginx:
configurationSnippet:
httpStart: |
client_body_buffer_size 20m; # 設置用于讀取客戶端請求體(Request Body)的緩沖區為20M
large_client_header_buffers 4 512k; # 設置用于讀取大型客戶端請求頭(Request Headers)的緩沖區的數量和大小
client_header_buffer_size 512k; # 設置用于讀取常規客戶端請求頭的緩沖區大小
日志跟蹤opentelemetry配置
- values.yaml文件中的apisix.opentelemetry節點,配置otel-collector收集器地址
apisix:
opentelemetry:
enabled: true
resource:
service:
name: apisix-test # 應用名稱
collector:
address: otel-collector.apisix:4318 # OpenTelemetry Collector OTLP HTTP Receiver地址
request_timeout: 3
batch_span_processor: # 配置批量處理
drop_on_queue_full: false
max_queue_size: 6
batch_timeout: 2
inactive_timeout: 1
max_export_batch_size: 2
服務發現k8s和nacos配置
- values.yaml文件中的apisix.discovery節點,k8s支持多集群模式,可為每個集群起個別名
discovery:
enabled: true
registry:
nacos:
host:
- "//mse-nacos.com:8848"
prefix: "/nacos/v1"
fetch_interval: 1
weight: 1
timeout:
connect: 80000 #可按著上游的超時時間進行配置
send: 10000
read: 10000
kubernetes:
- id: svt
service:
schema: https
host: 10.10.104.19
port: "6443" #這里有一個比較坑的地方,port 必須是字符串,否則會導致 APISIX 啟動報錯
client:
token: k8s-token
- id: pre
service:
schema: https
host: 10.10.85.93
port: "6443"
client:
token: k8s-token
etcd存儲配置
- values.override.yaml
- 功能:添加自定義的存儲類為etcd
service:
http:
nodePort: 30080
apisix-dashboard:
service:
type: NodePort
port: 80
nodePort: 30081
dashboard:
enabled: true
config:
authentication:
users:
- username: admin
password: admin
ingress-controller:
enabled: true
config:
log_level: debug
apisix:
adminAPIVersion: "v3"
serviceNamespace: apisix #這個是apisix所在的命令空間
etcd:
enable: true
persistence:
storageClass: nfs-provisioner #這個提前建立
nfs-provisioner實現自動創建pv請查看我的k8s~動態生成pvc和pv這篇文章
安裝apisix
# 安裝時,將使用自定義文件values.override.yaml
helm -n apisix install apisix -f ./apisix/values.override.yaml ./apisix
進入dashboard管理平臺
