apisix-helm-chart
apisix-helm-chart copied to clipboard
Unable to install and enable plugins from helm chart
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
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
}
}
}'
Any news on this issue?
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?
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