APISIX运维优化之配置文件自动化生成方案

在这个容器化技术盛行的时代,大家都习惯采用 Docker 或者 K8S 来运行 APISIXAPISIX 的配置参数非常多,因此很多介绍文章都采用挂载文件或者 K8S Configmap 的方式来配置 APISIX。最开始我们就采用 Configmap 的方式在腾讯云 TKE 上部署 APISIX,当网络区域越开越多时,每个 TKE 集群都需要去定义一套 config.yaml 对应的 Configmap,管理非常繁琐。因此,这里我们利用 Python 的 Jinja2 插件来自动化渲染 APISIX 的配置文件,整体非常方便!

一、Jinja2 模板

熟悉 Jinja2 的同学都很清楚,要通过 Jinja2 生成所需文件,需要先定制一个渲染模板,Jinja2 的原理就是将动态的内容填充到模板中,最终渲染成所需文件。因此,这里参考 APISIX 官方最新 2.10.0 版本config-default.yaml配置文件制作了 Jinja2 的配置模板如下:

apisix:
  node_listen:
    - ip: {
  
  { http_listen_ip | default("0.0.0.0") }}
      port: {
  
  { http_listen_port | default(9080) | int }}
      enable_http2: {
  
  { http_enable_http2 | default("false") }}
 
    {% if multi_http_ports: -%}
    # supports more listen ports
    {% for port in multi_http_ports | regex_split -%}
    {% if port: -%}
    - {
  
  {port}}
    {% endif -%}
    {% endfor -%}
    {% endif %}
 
  enable_admin: {
  
  { enable_admin | default("true") }}
  enable_admin_cors: {
  
  { enable_admin_cors | default("true") }}
  enable_dev_mode: {
  
  { enable_dev_mode | default("false") }}
  enable_reuseport: {
  
  { enable_reuseport | default("true") }}
  enable_ipv6: {
  
  { enable_ipv6 | default("false") }}
  config_center: {
  
  { config_center | default("etcd") }}
  enable_server_tokens: {
  
  { enable_server_tokens | default("true") }}
 
  extra_lua_path: {
  
  { extra_lua_path | default("") }}
  extra_lua_cpath: {
  
  { extra_lua_cpath | default("") }}
 
  proxy_cache:
    cache_ttl: {
  
  { cache_ttl | default("3600s") }}
    zones:
      - name: {
  
  { proxy_cache_zones | default("disk_cache_one") }}
        memory_size: {
  
  { proxy_cache_memory_size | default("50m") }}
        disk_size: {
  
  { proxy_cache_disk_size | default("1G") }}
        disk_path: {
  
  { proxy_cache_disk_path | default("/tmp/disk_cache_one") }}
        cache_levels: {
  
  { proxy_cache_cache_levels | default("1:2") }}
 
  allow_admin:
    {% if allow_admin_subnet: -%}  
    {%- for item in allow_admin_subnet | regex_split -%}
    {% if item: -%}
    - {
  
  {item}}
    {% endif -%}
    {% endfor %}
    {%- endif -%}
 
  admin_key:
    -
      name: {
  
  { admin_key_name | default("admin") }}
      key: {
  
  { admin_key_secret | default("d208uj44fnd2yk6quczd6szkytvoi0x1") }}
      role: admin
 
    -
      name: {
  
  { viewer_key_name | default("viewer") }}
      key: {
  
  { viewer_key_secret | default("4054f7cf07e344346cd3f287985e76a2") }}
      role: viewer
 
  delete_uri_tail_slash: {
  
  { delete_uri_tail_slash | default("false") }}
  global_rule_skip_internal_api: {
  
  { global_rule_skip_internal_api | default("true") }}
 
  router:
    http: {
  
  { router_http | default("radixtree_uri") }}
    ssl: {
  
  { router_ssl | default("radixtree_sni") }}
 
  resolver_timeout: {
  
  { resolver_timeout | default(3) | int }}
  enable_resolv_search_opt: {
  
  { enable_resolv_search_opt | default("true") }}
  ssl:
    enable: {
  
  { ssl_enable | default("true") }}
    enable_http2: {
  
  { ssl_enable_http2 | default("true") }}
    listen:  
      - ip: {
  
  { https_lis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值