Skip to content

Commit d3f6320

Browse files
committed
fix: use literal Kubernetes DNS instead of runtime templates
Container filesystem is read-only, so runtime template processing fails. Solution: use literal values that work across all environments. - default.conf: proxy to penguin-analytics-api:3000 (K8s DNS, same namespace) - env.js: use /api/analytics (relative path via nginx reverse proxy) - Dockerfile: copy default.conf directly to /etc/nginx/conf.d/ - run script: removed template processing code This works because penguin-analytics is deployed to the same namespace as eagle-admin (6cdc9e-dev, 6cdc9e-test, 6cdc9e-prod).
1 parent 3779841 commit d3f6320

File tree

4 files changed

+6
-33
lines changed

4 files changed

+6
-33
lines changed

Dockerfile.Github

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM image-registry.apps.silver.devops.gov.bc.ca/6cdc9e-tools/eagle-admin-nginx-runtime
22

3-
# Copy default.conf as a template for runtime processing
4-
COPY openshift/templates/nginx-runtime/default.conf /tmp/default.conf.template
3+
# Copy default.conf with analytics reverse proxy configuration
4+
COPY openshift/templates/nginx-runtime/default.conf /etc/nginx/conf.d/default.conf
55

66
COPY dist /tmp/app/dist/admin
77

openshift/templates/nginx-runtime/default.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ server {
1717

1818
# Reverse proxy for Penguin Analytics
1919
# Forwards /api/analytics requests to the penguin-analytics API service
20-
# Uses template placeholders: %PENGUIN_ANALYTICS_HOST%:%PENGUIN_ANALYTICS_PORT%
20+
# Uses Kubernetes DNS: penguin-analytics-api resolves to the service in the same namespace
2121
location /api/analytics {
22-
proxy_pass http://%PENGUIN_ANALYTICS_HOST%:%PENGUIN_ANALYTICS_PORT%/events;
22+
proxy_pass http://penguin-analytics-api:3000/events;
2323
proxy_http_version 1.1;
2424
proxy_set_header Connection "";
2525
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

openshift/templates/nginx-runtime/s2i/bin/run

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,11 @@
11
#!/bin/bash
22
echo run script starting...
33

4-
# Configure Penguin Analytics host and port (for dynamic nginx reverse proxy)
5-
# PENGUIN_ANALYTICS_HOST should be set per environment:
6-
# - Same namespace: penguin-analytics-api (service name only)
7-
# - Cross-namespace: penguin-analytics-api.<namespace>.svc.cluster.local
8-
# If not set, defaults to same-namespace service name
9-
export PENGUIN_ANALYTICS_HOST=${PENGUIN_ANALYTICS_HOST:-penguin-analytics-api}
10-
export PENGUIN_ANALYTICS_PORT=${PENGUIN_ANALYTICS_PORT:-3000}
11-
export PENGUIN_ANALYTICS_URL=${PENGUIN_ANALYTICS_URL:-/api/analytics}
12-
13-
echo "---> Configuring Penguin Analytics: ${PENGUIN_ANALYTICS_HOST}:${PENGUIN_ANALYTICS_PORT}"
14-
154
# Process nginx.conf template (if exists)
165
if [ -f /tmp/nginx.conf.template ]; then
176
sed "s~%RealIpFrom%~${RealIpFrom:-172.51.0.0/16}~g; s~%IpFilterRules%~${IpFilterRules}~g; s~%AdditionalRealIpFromRules%~${AdditionalRealIpFromRules}~g" /tmp/nginx.conf.template > /etc/nginx/nginx.conf
187
fi
198

20-
# Process default.conf template for analytics reverse proxy
21-
if [ -f /tmp/default.conf.template ]; then
22-
echo "---> Processing default.conf template"
23-
sed "s~%PENGUIN_ANALYTICS_HOST%~${PENGUIN_ANALYTICS_HOST}~g; s~%PENGUIN_ANALYTICS_PORT%~${PENGUIN_ANALYTICS_PORT}~g" /tmp/default.conf.template > /tmp/default.conf.processed
24-
cat /tmp/default.conf.processed > /etc/nginx/conf.d/default.conf
25-
fi
26-
27-
# Substitute analytics URL in env.js for the Angular app
28-
if [ -f /tmp/app/dist/admin/env.js ]; then
29-
echo "---> Configuring analytics URL: ${PENGUIN_ANALYTICS_URL}"
30-
sed "s~%PENGUIN_ANALYTICS_URL%~${PENGUIN_ANALYTICS_URL}~g" /tmp/app/dist/admin/env.js > /tmp/env.js.processed
31-
cat /tmp/env.js.processed > /tmp/app/dist/admin/env.js
32-
fi
33-
349
if [ -n "$HTTP_BASIC_USERNAME" ] && [ -n "$HTTP_BASIC_PASSWORD" ]; then
3510
echo "---> Generating .htpasswd file"
3611
`echo "$HTTP_BASIC_USERNAME:$(openssl passwd -crypt $HTTP_BASIC_PASSWORD)" > /tmp/.htpasswd`

src/env.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@
1717
window.__env.KEYCLOAK_ENABLED = true;
1818

1919
// Analytics configuration
20-
// Dynamically set by run script at container startup via %PENGUIN_ANALYTICS_URL%
21-
// Default: uses relative proxy path /api/analytics (nginx reverse proxy)
22-
// Can be overridden via PENGUIN_ANALYTICS_URL env variable during deployment
23-
window.__env.ANALYTICS_API_URL = '%PENGUIN_ANALYTICS_URL%';
20+
// Uses relative path - nginx reverse proxies /api/analytics to penguin-analytics service
21+
window.__env.ANALYTICS_API_URL = '/api/analytics';
2422
window.__env.ANALYTICS_DEBUG = window.__env.ENVIRONMENT === 'local';
2523

2624
// Add any feature-toggles

0 commit comments

Comments
 (0)