apisix-helm-chart icon indicating copy to clipboard operation
apisix-helm-chart copied to clipboard

Unable to install and enable plugins from helm chart

Open yagelkt opened this issue 2 years ago • 2 comments

I installed apisix successfully helm chart with ArgoCd application.

I then tried to add the "limit-count" plugin, but when I open the dashboard I don't see this plugin.

I can add this plugin manually.

This is the Apisix application yaml I used:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: loadbalancer-apisix
  namespace: argocd
  annotations:
    argocd.argoproj.io/sync-wave: "1"
  finalizers:
  - resources-finalizer.argocd.argoproj.io
spec:
  destination:
    namespace: api-gw
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: apisix
    repoURL: https://charts.apiseven.com
    targetRevision: v2.1.0
    helm:
      releaseName: apisix
      values: |
        service:
          type: LoadBalancer
          annotations:
            service.beta.kubernetes.io/aws-load-balancer-internal: "true"
            service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
            service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tls 
            service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: Environment=dev
        ingress-controller:
          enabled: "true"
          config:
            apisix:
              serviceNamespace: "api-gw"
              adminAPIVersion: v3

        plugins: ["limit-count"]
        
        pluginAttrs: {
          "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr",
            "policy": "redis",
            "redis_host": "apisix-redis-master.default.svc.cluster.local",
            "redis_port": 6379,
            "redis_password": "my_pass",
            "redis_database": 1,
            "redis_timeout": 1001
          }
        }
            
        dashboard:
          enabled: "true"
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true

Any idea why it didn't work? (I don't think it has anything to do with argocd - it just a normal helm installation).


I also tried to edit the configmap to enable the plugin, but it didn't work also:

apiVersion: v1
kind: ConfigMap
metadata:
  name: apisix-configmap
  namespace: api-gw
data:
  config.yaml: |
    plugins:
      limit-count:
        enable: true
        config:
          count: 100

yagelkt avatar Oct 15 '23 14:10 yagelkt

I have the same problem. I have to use the admin API to enable complete prometheus metrics logs (bandwith and HTTP).

Via helm (no work):

  plugins:
    - prometheus
  prometheus:
    enabled: true
    metrics:
      http_status:
        extra_labels:
          - upstream_addr: $upstream_addr
          - status: $upstream_status  # The label name does not need to be the same as the variable name.
      http_latency:
        extra_labels:
          - upstream_addr: $upstream_addr
      bandwidth:
        extra_labels:
          - upstream_addr: $upstream_addr
    default_buckets:
     - 10
     - 50
     - 100
     - 200
     - 500
pluginAttrs:
  prometheus:
    enable_export_server: false

Via API (work):

curl http://127.0.0.1:9180/apisix/admin/global_rules  -H 'X-API-KEY: <YOUR_TOKEN>' -i -X PUT -d '
{ 
    "id": "rule-for-metrics",
    "plugins": {
      "prometheus": {
        "disable": false
      }
    }
}'

dod-ia avatar Oct 26 '23 12:10 dod-ia

Any news on this issue?

adussarps avatar Apr 11 '24 12:04 adussarps

I've tested this with the latest version of the chart.

So it's not possible to enable plugins with the helm chart? It requires manual intervention?

pablokbs avatar Nov 04 '24 18:11 pablokbs

I had the same issue, I think we all misunderstood the config. It just enables the plugin (in my case prometheus - which is enabled by default, so don't need to enable), but does not create a global rule. To create a global rule I use ApisixGlobalRule resource, and it works:

apiVersion: apisix.apache.org/v2
kind: ApisixGlobalRule
metadata:
  name: prometheus
spec:
  plugins:
  - name: prometheus
    enable: true 
    config:
      prefer_name: true

papdaniel avatar Apr 17 '25 12:04 papdaniel