bzp2010 opened a new issue, #2651:
URL: https://github.com/apache/apisix-ingress-controller/issues/2651

   ### Current Behavior
   
   ```yaml
   apiVersion: apisix.apache.org/v1alpha1
   kind: GatewayProxy
   metadata:
     name: ingress-apisix-config
     namespace: ingress-apisix
   spec:
     provider:
       controlPlane:
         auth:
           adminKey:
             ##### value => base64(edd1c9f034335f136f87ad84b625c8f1\n)
             valueFrom:
               secretKeyRef:
                 name: apisix-admin-credentials
                 key: admin
           type: AdminKey
         service:
           name: ingress-apisix-admin
           port: 9180
       type: ControlPlane
   ```
   
   The Ingress Controller assumes the value is always correct, for example, 
ensuring compliance with HTTP spec regarding Header values. ref: 
https://www.rfc-editor.org/rfc/rfc9110.html#name-field-values
   
   If this value is user-specified, it may occasionally contain invalid 
characters. For example, an ASCII control character such as `\n` might be 
encoded in base64, and Kubernetes secrets impose no restrictions on this.
   However, should an invalid character appear within the key, synchronisation 
will fail.
   
   ### Expected Behavior
   
   Determine whether this should be checked and intercepted prior to sending to 
the ADC /sync API, and whether we might implement webhook validation for 
secrets.
   
   ### Error Logs
   
   ```
   2025-11-13T15:38:44.216Z     INFO    client  client/client.go:176    syncing 
all resources
   2025-11-13T15:38:44.220Z     ERROR   executor        client/executor.go:273  
failed to run http sync for server      {"server": "http://10.244.3.17:9180/";, 
"error": "ServerAddr: http://10.244.3.17:9180/, Err: HTTP 500: 
{\"message\":\"TypeError [ERR_INVALID_CHAR]: Invalid character in header 
content [\\\"X-API-KEY\\\"]\"}"}
   2025-11-13T15:38:44.220Z     ERROR   client  client/client.go:264    failed 
to execute adc command   {"config": 
{"name":"GatewayProxy/apisix/apisix-config","serverAddrs":["http://10.244.3.17:9180/"],"tlsVerify":false},
 "error": "ADC execution error for GatewayProxy/apisix/apisix-config: 
[ServerAddr: http://10.244.3.17:9180/, Err: HTTP 500: {\"message\":\"TypeError 
[ERR_INVALID_CHAR]: Invalid character in header content 
[\\\"X-API-KEY\\\"]\"}]"}
   2025-11-13T15:38:44.220Z     ERROR   client  client/client.go:208    failed 
to sync resources        {"name": "GatewayProxy/apisix/apisix-config", "error": 
"ADC execution errors: [ADC execution error for 
GatewayProxy/apisix/apisix-config: [ServerAddr: http://10.244.3.17:9180/, Err: 
HTTP 500: {\"message\":\"TypeError [ERR_INVALID_CHAR]: Invalid character in 
header content [\\\"X-API-KEY\\\"]\"}]]"}
   ```
   
   ### Steps to Reproduce
   
   Copy from: https://the-asf.slack.com/archives/CUC5MN17A/p1762895096601199
   
   Hey guys, I hope this find everybody well.
   I'm trying to deploy APISIX Standalone API-Driven mode into my kind cluster, 
with differente credentials (admin and viewer keys) but for some reason, my 
apisix pod doesnt get ready... probes is failing with: "Readiness probe failed: 
HTTP probe failed with statuscode: 503"
   Im creating a local helm package to achieve this using the official as 
dependency...
   Thats my Chart.yaml file:
   ```
   apiVersion: v2
   name: apisix
   description: A Helm chart for deploy Apisix in standalone mode
   type: application
   version: 1.0.0
   appVersion: "1.0.0"
   dependencies:
     - name: apisix
       version: 2.12.2
       repository: https://apache.github.io/apisix-helm-chart
   ```
   
   And this is the values:
   
   ```
   adminPasswordSecretValue: OWhUZFludU1QV2NPQzhDN2RXS3BHMUJ1Y0h5TksxR1oK
   viewerPasswordSecretValue: VFU5cGJVRXpVMXBHUmtFM2FqZEdlVkJNU0hGTGNsVncK
   
   apisix:
     service:
       type: LoadBalancer
     etcd:
       enabled: false
     apisix:
       deployment:
         role: traditional
         role_traditional:
           config_provider: yaml
       admin:
         enable_admin_ui: false
         credentials:
           secretName: apisix-admin-credentials
     ingress-controller:
       enabled: true
       config:
         provider:
           type: apisix-standalone
       apisix:
         adminService:
           namespace: apisix
       gatewayProxy:
         createDefault: true
         provider:
           controlPlane:
             auth:
               adminKey:
                 valueFrom:
                   secretKeyRef:
                     name: apisix-admin-credentials
                     key: admin
   ```
   
   And thats the secret template:
   ```
   apiVersion: v1
   kind: Secret
   metadata:
     name: apisix-admin-credentials
     namespace: {{ .Release.Namespace }}
   type: Opaque
   data:
     admin: {{ .Values.adminPasswordSecretValue | quote }}
     viewer: {{ .Values.viewerPasswordSecretValue | quote }}
   ```
   
   Anybody knows what am I doing wrong? If I remove the secret from apisix 
configuration (letting him use the defaults ones) it apparently works...
   
   ### Environment
   
   - APISIX Ingress controller version (run `apisix-ingress-controller version 
--long`): 2.0.0-rc5
   - Kubernetes cluster version (run `kubectl version`): N/A
   - OS version if running APISIX Ingress controller in a bare-metal 
environment (run `uname -a`): N/A
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to