Repository navigation
loadbalancer: document ProxySQL with internal TLS - #1123
Merged
Merged
Conversation
Step 4 of the general TLS procedure staged and committed an explicit list of files: haproxy.pem, haproxy-internal.pem and environments/kolla/configuration.yml. git commit with paths commits only those paths, so anything else the operator had added stayed uncommitted. The self-signed procedure ends by running the general procedure, and by then the operator has changed three more files: the custom CA in environments/kolla/certificates/ca/, certificates_ca in environments/configuration.yml, and, up to OSISM 11.0.1, the REQUESTS_CA_BUNDLE override in environments/manager/configuration.yml. None of them was committed. The configuration sync on the manager resets local changes to tracked files (osism.commons configuration role, git with force: true), so an uncommitted change there does not survive the next sync, and one made in a remote checkout never reaches the manager. Stage the whole certificates directory and commit everything staged, and tell the self-signed procedure which two files to add in that step as well. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Roger Luethi <luethi@osism.tech>
ProxySQL is coupled to internal TLS: database_enable_tls_internal defaults to "kolla_enable_tls_internal and enable_proxysql". osism/defaults enables ProxySQL for every OpenStack series after 2025.1 (all/099-kolla.yml), so from OSISM 11 on that expression resolves to yes on every environment that follows the general procedure for TLS. The loadbalancer role then copies proxysql-cert.pem and proxysql-key.pem out of the configuration repository, and fails with "Could not find or access .../certificates/proxysql-cert.pem" when they are missing. Nothing in the documentation mentioned these files. Say in the ProxySQL section that ProxySQL is the default from OSISM 11 on, and add a subsection on internal TLS with two options: supply the certificate, key and CA, or decouple ProxySQL from internal TLS. Unlike haproxy.pem, certificate and key are separate files, because ProxySQL loads proxysql-ca.pem, proxysql-cert.pem and proxysql-key.pem from its data directory; only the key is encrypted. The certificate has to be valid for the internal API FQDN, because the OpenStack services reach ProxySQL through the internal VIP. In kolla-ansible stable/2026.1, ProxySQL uses certificates/proxysql-ca.pem when the file exists (roles/loadbalancer/tasks/config.yml, templates/proxysql/proxysql.json.j2). Otherwise, and always before 2026.1 (OSISM 10), it reads root.crt from certificates/ca/, under that fixed name whatever name the certificates_ca entry uses, and only when kolla_copy_ca_into_containers is enabled, which osism/defaults turns off (all/001-haproxy.yml). Describe both, in the subsection and in a warning in the self-signed certificates section. cfg-cookiecutter generates all three files as comment-only placeholders (926f9ec). A proxysql-ca.pem placeholder left in place is handed to ProxySQL as its CA, so tell the operator to replace the placeholders. Step 2 of the general procedure lists the certificates an operator has to supply; add a note there that points to the new subsection. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Roger Luethi <luethi@osism.tech>
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Max errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 5 | 0 | 0 | 0.04s | ||
| ✅ JSON | jsonlint | 4 | 0 | 0 | 0.07s | ||
| ✅ JSON | prettier | 4 | 0 | 0 | 0.31s | ||
| ✅ JSON | v8r | 4 | 0 | 0 | 8.36s | ||
| ✅ MARKDOWN | markdownlint | 183 | 0 | 0 | 1.74s | ||
| ✅ MARKDOWN | markdown-table-formatter | 183 | 0 | 0 | 0.2s | ||
| ✅ REPOSITORY | betterleaks | yes | no | no | 0.53s | ||
| ✅ REPOSITORY | checkov | yes | no | no | 13.88s | ||
| ✅ REPOSITORY | git_diff | yes | no | no | 0.05s | ||
| ✅ REPOSITORY | secretlint | yes | no | no | 0.91s | ||
| ✅ REPOSITORY | trufflehog | yes | no | no | 2.67s | ||
| ✅ SPELL | codespell | 193 | 0 | 0 | 0.31s | ||
| lychee | 193 | 5 | 0 | 18.11s | |||
| ✅ YAML | prettier | 6 | 0 | 0 | 0.21s | ||
| ✅ YAML | v8r | 6 | 0 | 0 | 4.41s | ||
| ✅ YAML | yamllint | 6 | 0 | 0 | 0.26s |
Detailed Issues
⚠️ SPELL / lychee - 5 errors
📝 Summary
---------------------
🔍 Total.........1253
🔗 Unique.........928
✅ Successful....1139
⏳ Timeouts.........0
🔀 Redirected.......9
👻 Excluded.......109
❓ Unknown..........0
🚫 Errors...........5
⛔ Unsupported......5
Errors in .claude/skills/security-advisory/reference/style.md
[ERROR] file://.claude/skills/guides/operations-guide/openstack/security-updates.md (at 189:3) | File not found. Check if file exists and path is correct
Errors in .claude/skills/security-advisory/SKILL.md
[400] https://cveawg.mitre.org/api/cve/ (at 16:18) | Rejected status code: 400 Bad Request
[404] https://raw.githubusercontent.com/osism/ (at 17:18) | Rejected status code: 404 Not Found
[400] https://registry.osism.tech/service/token (at 18:19) | Rejected status code: 400 Bad Request
Errors in docs/guides/developer-guide/style-guide.md
[ERROR] https://wiki.openstack.org/wiki/GitCommitMessages (at 79:1) | Network unreachable. Check internet connection or VPN settings
Hint: Followed 9 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@10.1.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,JSON_JSONLINT,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,SPELL_CODESPELL,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

Show us your support by starring ⭐ the repository
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The loadbalancer configuration guide does not mention the files ProxySQL needs once internal TLS is on, and its TLS procedure leaves some of the files it has the operator create uncommitted. Two commits:
environments/kolla/certificates/ca/,certificates_cainenvironments/configuration.ymland, up to OSISM 11.0.1, theREQUESTS_CA_BUNDLEoverride inenvironments/manager/configuration.yml. None of them was committed, so the next configuration sync on the manager reset them. Step 4 now stages the whole certificates directory, and the self-signed procedure names the two extra files.database_enable_tls_internaldefaults tokolla_enable_tls_internal and enable_proxysql, and osism/defaults enables ProxySQL for every OpenStack series after 2025.1. From OSISM 11 on, any deployment with internal TLS therefore needs ProxySQL's own certificate, key and CA, orosism apply loadbalancerfails atCopying over proxysql-cert.pem. A new subsection gives the two options: supply the files (certificate and key separately, only the key vault-encrypted), or setdatabase_enable_tls_internal: "no".proxysql-ca.pemis used when it exists; otherwise, and always on OSISM 10, ProxySQL readscertificates/ca/root.crtunder that fixed name. That fallback only works withkolla_copy_ca_into_containers: "yes", which is off by default. The self-signed section gets a matching warning.proxysql-ca.pemplaceholder left in place is handed to ProxySQL as its CA.🤖 Generated with Claude Code