Skip to content

docs: restructure external Splunk integration guide - #154

Open
kupratyu-splunk wants to merge 3 commits into
mainfrom
fix/update-external-splunk-integration-doc
Open

docs: restructure external Splunk integration guide#154
kupratyu-splunk wants to merge 3 commits into
mainfrom
fix/update-external-splunk-integration-doc

Conversation

@kupratyu-splunk

Copy link
Copy Markdown
Collaborator

Description

Related Issues

  • Related to #

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • Test improvement
  • CI/CD improvement
  • Chore (dependency updates, etc.)

Changes Made

Testing Performed

  • Unit tests pass (make test)
  • Linting passes (make lint)
  • Integration tests pass (if applicable)
  • E2E tests pass (if applicable)
  • Manual testing performed

Test Environment

  • Kubernetes Version:
  • Cloud Provider:
  • Deployment Method:

Test Steps

Documentation

  • Updated inline code comments
  • Updated README.md (if adding features)
  • Updated API documentation
  • Updated deployment guides
  • Updated CHANGELOG.md
  • No documentation needed

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published
  • I have updated the Helm chart version (if applicable)
  • I have updated CRD schemas (if applicable)

Breaking Changes

Impact:

Migration Path:

Screenshots/Recordings

Additional Notes

Reviewer Notes

Please pay special attention to:


Commit Message Convention: This PR follows Conventional Commits

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dde08a8e9a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +171 to +174
Place a TLS-terminating load balancer, ingress, or reverse proxy in front of the
SAIA service. The certificate must be trusted by customer browsers. Preserve
streaming responses and allow the exact `SPLUNK_WEB_ORIGIN` when CORS
configuration is required.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid adding duplicate CORS headers at the external proxy

When a customer follows this instruction by enabling CORS header injection on the load balancer or reverse proxy, normal SAIA responses can contain duplicate Access-Control-Allow-Origin values and be rejected by browsers. The operator's generated nginx configuration explicitly handles preflights, while FastAPI already supplies CORS headers on non-OPTIONS responses (pkg/ai/features/saia/impl.go:1397-1407); its regression test also requires that the proxy not add those headers to normal responses (pkg/ai/features/saia/impl_test.go:536-543). The runbook should tell the external proxy to preserve the upstream CORS headers without adding another set, rather than instructing it to allow the origin itself.

Useful? React with 👍 / 👎.

Comment on lines +200 to +203
| Value | Requirement |
|---|---|
| `http://<host>:30080` (plain HTTP NodePort) | `https://<host>:<port>` |
| Browser blocks XHR from HTTPS Splunk page | Same scheme — no block |
| Requires keeping Splunk Web on HTTP | Splunk Web can stay on HTTPS |

---
| SAIA service | `${AISERVICE}-saia-service`, normally port `8080` |
| HTTPS URL | Stable `SAIA_URL`, normally on port `443` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the NodePort as the backend for external TLS proxies

When the TLS terminator runs outside Kubernetes—the normal case for an on-premises load balancer or standalone reverse proxy—it cannot route to the cluster-only service name on port 8080 as this table instructs. The NodePort configuration exposes SAIA at a worker-node address on port 30080 (tools/cluster_setup/k0s-cluster-config.yaml:196-200), so following the documented backend value will result in DNS failures or 502/504 responses. Distinguish in-cluster proxies, which can use ${AISERVICE}-saia-service:8080, from external proxies, which must use one or more worker addresses and the configured NodePort.

Useful? React with 👍 / 👎.

Comment on lines +94 to +95
If the management certificate uses a private CA, add that CA to the SAIA pod's
trust store before testing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make private-CA trust survive the documented pod restart

When the Splunk management endpoint uses the private CA explicitly supported here, installing that CA interactively in a running SAIA pod is not sufficient: Step 2 subsequently deletes every SAIA pod, so the modified container filesystem and trust entry are lost before end-to-end testing. The operator-generated pod specs only mount the feature ConfigMap (and optionally the service TLS secret), with no custom trust-store volume exposed (pkg/ai/features/saia/impl.go:869-887 and api/v1/aiservice_types.go:100-127). Document a persistent supported method—such as a SAIA image containing the CA or an operator-managed CA mount—rather than merely saying to add it to the current pod's trust store.

Useful? React with 👍 / 👎.

kupratyu-splunk and others added 2 commits August 9, 2026 22:01
Drop the standalone Problem Statement and Testing sections; fold
verification steps into "What the Customer Should Do" so the doc reads
as: what to do, which files to edit, what values to provide, then
what to do if testing fails.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant