docs(core-concepts): write the authentication and logging pages - #39
Merged
Merged
Conversation
Replaces a one-line placeholder. Taken from operator-go's pkg/apis/authentication/v1alpha1 for the CRD and every provider's fields and defaults, and from trino-operator for the product-side shape and for which providers are actually implemented. Covers AuthenticationClass being cluster-scoped, the five providers, and per-provider detail: the static Secret indirection, LDAP bind credentials (user/password keys) with the ldapFieldNames defaults and the note that Active Directory needs them overridden, OIDC with its required principalClaim and providerHint, and the client credentials (CLIENT_ID/CLIENT_SECRET) that belong to the product rather than the class. Two things the schema does not tell you, both documented: Nothing enforces one provider per class. All five fields are optional and there is no XValidation, so a class setting both oidc and ldap is accepted; products take the first match in a fixed order and ignore the rest. Trino's order is oidc, static, ldap. Product support is a subset of the API. Trino implements oidc, static and ldap; a class whose provider is tls or kerberos yields no authenticator at all, and nothing rejects it at apply time. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replaces a one-line placeholder. Taken from commons/v1alpha1's
logging_types.go and config_types.go, the log path constants in
pkg/constant, and pkg/vector for the aggregator discovery contract.
Covers where containers write (/kubedoop/log/<container>/), the
containers/loggers/console/file structure under config.logging, the level
enum, and the Vector agent.
Explains why level has no CRD default: unset means inherit, so a role
group writing an empty `console: {}` does not silently override a DEBUG
set at the role level. A default would be filled by the API server as
soon as the enclosing object existed and the role's value could never
win. Also documents the level mapping for non-Java products, where TRACE
and DEBUG collapse together.
For Vector, documents the indirection — vectorAggregatorConfigMapName
names a ConfigMap carrying an ADDRESS key, so the aggregator can move
without editing product clusters — and quotes the errors raised when the
agent is enabled with no aggregator configured, or with one that cannot
be resolved. Those failures are loud on purpose: a silently mis-wired log
pipeline looks healthy until you need the logs.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4 tasks
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.
Summary
Second batch of stage 2. Two pages, both language trees, four files — both were one-line placeholders.
Independent of #38: that PR touches
s3.mdand the twooperations/pages, this one touchessecurity/authentication.mdandobservability/logging.md. Both branch offmain, no overlap, either order is fine.As before, everything is taken from the operator source in the sibling repositories rather than written from memory.
core-concepts/security/authentication.mdFrom
operator-go'spkg/apis/authentication/v1alpha1(the CRD, every provider's fields and defaults) and fromtrino-operator(the product-side shape, and which providers are actually implemented).Covers
AuthenticationClassbeing cluster-scoped, the five providers, and per-provider detail: thestaticSecret indirection, LDAP bind credentials (user/passwordkeys) with theldapFieldNamesdefaults and a note that Active Directory needs them overridden, OIDC with its requiredprincipalClaimandproviderHint, and the client credentials (CLIENT_ID/CLIENT_SECRET) that belong to the product rather than the class.Two things the schema does not tell you, both documented:
XValidation, so a class setting bothoidcandldapis accepted. Products take the first match in a fixed order and ignore the rest — Trino's order isoidc,static,ldap.oidc,staticandldap. A class whose provider istlsorkerberosyields no authenticator at all, and nothing rejects it at apply time.Also worth flagging for review:
providerHintis a required enum accepting onlykeycloak, so Keycloak is currently the only OIDC issuer that can be configured.core-concepts/observability/logging.mdFrom
commons/v1alpha1'slogging_types.goandconfig_types.go, the log path constants inpkg/constant, andpkg/vectorfor the aggregator discovery contract.Covers where containers write (
/kubedoop/log/<container>/), thecontainers/loggers/console/filestructure underconfig.logging, the level enum, and the Vector agent.Explains why
levelhas no CRD default: unset means inherit, so a role group writing an emptyconsole: {}does not silently override aDEBUGset at the role level. A default would be filled in by the API server as soon as the enclosing object existed, and the role's value could never win. Also documents the level mapping for non-Java products, whereTRACEandDEBUGcollapse together.For Vector, documents the indirection —
vectorAggregatorConfigMapNamenames a ConfigMap carrying anADDRESSkey, so the aggregator can move without editing every product cluster — and quotes the errors raised when the agent is enabled with no aggregator configured, or with one that cannot be resolved.Testing
npm run verifyexits 0 — 52 files linted with 0 errors, both locales builtproviderHintandenableVectorAgentin the build output)onBrokenLinks: 'throw'would have failed the build otherwiseRemaining stage 2 placeholders
8 left:
service-discovery,kubernetes,kubebuilder,develop-guideline,faq,release-notes,spark-k8s-operator, anddatabase(blocked — see #38 for why).faqandrelease-notescannot be derived from source at all: one needs real user questions, the other needs release history. Those likely need input from maintainers rather than research.🤖 Generated with Claude Code