diff --git a/antora-playbook.yml b/antora-playbook.yml
index b0e2092a5..95b868138 100644
--- a/antora-playbook.yml
+++ b/antora-playbook.yml
@@ -183,6 +183,8 @@ asciidoc:
base-repo: https://github.com/stackabletech
plantuml-server-url: http://www.plantuml.com/plantuml
kroki-fetch-diagram: true
+ # an external icon. Create a link opening in a new tab like this: http://my-url.com[Text {external-link-icon}^]
+ external-link-icon: ""
extensions:
- asciidoctor-kroki
diff --git a/antora.yml b/antora.yml
index 01490ea5d..75de46165 100644
--- a/antora.yml
+++ b/antora.yml
@@ -6,8 +6,8 @@ nav:
- modules/concepts/nav.adoc
- modules/demos/nav.adoc
- modules/tutorials/nav.adoc
- - modules/reference/nav.adoc
- modules/operators/nav.adoc
+ - modules/reference/nav.adoc
- modules/contributor/nav.adoc
- modules/ROOT/nav2.adoc
# The prerelease setting affects version sorting.
@@ -24,3 +24,6 @@ asciidoc:
# use the attributes below to link to the CRD docs
crd-docs-base-url: "https://crds.stackable.tech"
crd-docs: "{crd-docs-base-url}/{crd-docs-version}"
+ # this attribute is an annoying little hack to make the versioned
+ # link accessible to the UI template.
+ page-crd-docs: "{crd-docs}"
diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml
index 23a3f27c1..178ef98ee 100644
--- a/local-antora-playbook.yml
+++ b/local-antora-playbook.yml
@@ -172,6 +172,8 @@ asciidoc:
base-repo: https://github.com/stackabletech
plantuml-server-url: http://www.plantuml.com/plantuml
kroki-fetch-diagram: true
+ # an external icon. Create a link opening in a new tab like this: http://my-url.com[Text {external-link-icon}^]
+ external-link-icon: ""
extensions:
- asciidoctor-kroki
diff --git a/modules/ROOT/pages/index.adoc b/modules/ROOT/pages/index.adoc
index d137d487d..94aa1410c 100644
--- a/modules/ROOT/pages/index.adoc
+++ b/modules/ROOT/pages/index.adoc
@@ -118,7 +118,7 @@ xref:operators:index.adoc[Operator overview]
Read the CustomResourceDefinition (CRD) reference for all CRDs that are deployed by any Stackable operator.
-https://crds.stackable.tech/[CRD Reference]
+{crd-docs}[CRD Reference {external-link-icon}^]
++++
diff --git a/modules/concepts/pages/authentication.adoc b/modules/concepts/pages/authentication.adoc
index f24685ff7..4aa2345f5 100644
--- a/modules/concepts/pages/authentication.adoc
+++ b/modules/concepts/pages/authentication.adoc
@@ -34,7 +34,7 @@ In a diagram it would look like this:
image::image$authentication-overview.drawio.svg[]
-NOTE: For more details, look at the xref:reference:authenticationclass.adoc[AuthenticationClass reference] as well as the xref:tutorials:authentication_with_openldap.adoc[OpenLDAP tutorial].
+NOTE: Learn more in the xref:tutorials:authentication_with_openldap.adoc[OpenLDAP tutorial] and get a full overview of all the properties in the {crd-docs}/authentication.stackable.tech/authenticationclass/v1alpha1/#spec-provider-ldap[AuthenticationClass LDAP provider CRD reference].
[#tls]
=== TLS
@@ -78,4 +78,4 @@ include::example$authenticationclass-static-secret.yaml[]
== Further Reading
* xref:tutorials:authentication_with_openldap.adoc[] tutorial
-* xref:reference:authenticationclass.adoc[] reference
+* {crd-docs}/authentication.stackable.tech/authenticationclass/v1alpha1/[AuthenticationClass CRD reference]
diff --git a/modules/concepts/pages/s3.adoc b/modules/concepts/pages/s3.adoc
index 07646a780..7ab0c9558 100644
--- a/modules/concepts/pages/s3.adoc
+++ b/modules/concepts/pages/s3.adoc
@@ -205,4 +205,4 @@ credentials:
== What's next
-Find details about the options of the S3 resource in the xref:reference:s3.adoc[S3 resources reference].
+Read the {crd-docs}/s3.stackable.tech/s3bucket/v1alpha1/[S3Bucket CRD reference] and the {crd-docs}/s3.stackable.tech/s3connection/v1alpha1/[S3Connection CRD reference].
\ No newline at end of file
diff --git a/modules/concepts/pages/service-discovery.adoc b/modules/concepts/pages/service-discovery.adoc
index 7200ed6d0..71841ba7f 100644
--- a/modules/concepts/pages/service-discovery.adoc
+++ b/modules/concepts/pages/service-discovery.adoc
@@ -2,7 +2,7 @@
:page-aliases: service_discovery.adoc
// Abstract
-Stackable operators provide a _service discovery ConfigMap_ for each product instance that is deployed. This ConfigMap has the same name as the product instance and contains information about how to connect to the instance. The ConfigMap is used by other Operators to connect products together and can also be used by you, the user, to connect external software to Stackable-operated software.
+Stackable operators provide a _service discovery ConfigMap_ for each product instance that is deployed. **This ConfigMap has the same name as the product instance** and contains information about how to connect to the instance. The ConfigMap is used by other Operators to connect products together and can also be used by you, the user, to connect external software to Stackable-operated software.
== Motivation
@@ -118,7 +118,7 @@ For Stackable managed services the Stackable Operators will take care of this, b
Consult discovery ConfigMap documentation for specific products:
-* xref:druid:discovery.adoc[Apache Druid]
+* xref:druid:reference/discovery.adoc[Apache Druid]
* xref:hdfs:discovery.adoc[Apache Hadoop HDFS]
* xref:hive:discovery.adoc[Apache Hive]
* xref:kafka:discovery.adoc[Apache Kafka]
diff --git a/modules/reference/examples/authenticationclass-ldap-full.yaml b/modules/reference/examples/authenticationclass-ldap-full.yaml
deleted file mode 100644
index 746b18f78..000000000
--- a/modules/reference/examples/authenticationclass-ldap-full.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-apiVersion: authentication.stackable.tech/v1alpha1
-kind: AuthenticationClass
-metadata:
- name: ldap-full
-spec:
- provider:
- ldap:
- hostname: my.ldap.server # <1>
- port: 389 # <2>
- searchBase: ou=users,dc=example,dc=org # <3>
- searchFilter: (memberOf=cn=myTeam,ou=teams,dc=example,dc=org) # <4>
- ldapFieldNames: # <5>
- uid: uid
- group: memberof
- givenName: givenName
- surname: sn
- email: mail
- bindCredentials:
- secretClass: ldap-full-bind # <6>
- scope: # <7>
- pod: true
- node: false
- services:
- - ldap-full
- tls: # <8>
- verification:
- server:
- caCert:
- secretClass: ldap-full-ca-cert
diff --git a/modules/reference/nav.adoc b/modules/reference/nav.adoc
index c31206094..a3897a721 100644
--- a/modules/reference/nav.adoc
+++ b/modules/reference/nav.adoc
@@ -1,3 +1 @@
-* xref:index.adoc[]
-** xref:authenticationclass.adoc[]
-** xref:s3.adoc[]
\ No newline at end of file
+- {crd-docs}[CRD Reference {external-link-icon}^]
\ No newline at end of file
diff --git a/modules/reference/pages/authenticationclass.adoc b/modules/reference/pages/authenticationclass.adoc
deleted file mode 100644
index e9e988285..000000000
--- a/modules/reference/pages/authenticationclass.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-= AuthenticationClass
-
-For a conceptual overview of authentication on the Stackable platform, read the xref:concepts:authentication.adoc[authentication concepts page].
-
-== LDAP Provider
-
-The following example shows all possible attributes:
-
-[source,yaml]
-----
-include::example$authenticationclass-ldap-full.yaml[]
-----
-<1> The hostname of the LDAP server without any protocol or port
-<2> The port of the LDAP server. If TLS is used defaults to `636` otherwise to `389`
-<3> The searchBase where the users should be searched
-<4> Additional filter that filters the allowed users
-<5> The name of the corresponding field names in the LDAP objects
-<6> The name of the xref:secret-operator:secretclass.adoc[] providing the bind credentials (username and password)
-<7> The xref:secret-operator:scope.adoc[] of the xref:secret-operator:secretclass.adoc[]
-<8> xref:concepts:tls_server_verification.adoc[] of the LDAP server
-
-To learn more, you can follow the xref:tutorials:authentication_with_openldap.adoc[] tutorial.
\ No newline at end of file
diff --git a/modules/reference/pages/index.adoc b/modules/reference/pages/index.adoc
deleted file mode 100644
index 91cb6648f..000000000
--- a/modules/reference/pages/index.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Reference
-
-Reference for common objects and configuration fragments across the platform.
\ No newline at end of file
diff --git a/modules/reference/pages/s3.adoc b/modules/reference/pages/s3.adoc
deleted file mode 100644
index ab9cf3840..000000000
--- a/modules/reference/pages/s3.adoc
+++ /dev/null
@@ -1,99 +0,0 @@
-= S3 resources
-
-This page contains the reference information for the S3Bucket and S3Connection resources. For guidance on usage, see xref:concepts:s3.adoc[S3 resources concept].
-
-== S3Bucket
-
-A bucket consists of a bucket name and the connection to the object store where the bucket is located.
-
-* `name`: `String`, the name of the Bucket.
-* `connection`: can either be `inline` or `reference`.
-** `inline`: See the properties below for <>.
-** `reference`: `String`, the name of the referenced S3Connection resource, which must be in the same namespace as the S3Bucket resource.
-
-=== Full Example
-
-Using an inline connection:
-
-[source,yaml]
-----
----
-apiVersion: s3.stackable.tech/v1alpha1
-kind: S3Bucket
-metadata:
- name: my-bucket-resource
-spec:
- bucketName: my-example-bucket
- connection:
- inline:
- host: s3.example.com
-----
-
-Using a connection reference (referencing the example connection from the next section below):
-
-[source,yaml]
-----
----
-apiVersion: s3.stackable.tech/v1alpha1
-kind: S3Bucket
-metadata:
- name: my-bucket-resource
-spec:
- bucketName: my-example-bucket
- connection:
- reference: my-connection-resource
-----
-
-
-== S3Connection
-
-An S3Connection object specifies how to connect to an S3 provider.
-
-* `host`: `String`, the domain name of the host of the object store, such as `s3.west.provider.com`.
-* `port`: `Integer`, a port such as 80 or 4242.
-* `accessStyle`: Optional. Can be either "VirtualHosted" (default) or "Path".
-* `credentials`: contains a `secretClass`.
-** `secretClass`: a reference to a SecretClass resource. For more information on specifying credentials, see xref:concepts:s3.adoc#_credentials[Credentials] in the S3 concept pages.
-
-=== Example
-
-[source,yaml]
-----
----
-apiVersion: s3.stackable.tech/v1alpha1
-kind: S3Connection
-metadata:
- name: my-connection-resource
-spec:
- host: s3.example.com
- port: 4242
- accessStyle: Path
- credentials:
- secretClass: s3-credentials-class
-----
-
-For completeness, the referenced SecretClass and Secret are given below:
-
-[source,yaml]
-----
----
-apiVersion: secrets.stackable.tech/v1alpha1
-kind: SecretClass
-metadata:
- name: s3-credentials-class
-spec:
- backend:
- k8sSearch:
- searchNamespace:
- pod: {}
----
-apiVersion: v1
-kind: Secret
-metadata:
- name: s3-credentials
- labels:
- secrets.stackable.tech/class: s3-credentials-class
-stringData:
- accessKey: YOUR_VALID_ACCESS_KEY_ID_HERE
- secretKey: YOUR_SECRET_ACCESS_KEY_THAT_BELONGS_TO_THE_KEY_ID_HERE
-----
diff --git a/modules/tutorials/pages/authentication_with_openldap.adoc b/modules/tutorials/pages/authentication_with_openldap.adoc
index 5685b5b09..9e679f67f 100644
--- a/modules/tutorials/pages/authentication_with_openldap.adoc
+++ b/modules/tutorials/pages/authentication_with_openldap.adoc
@@ -351,7 +351,7 @@ The LDAP connection details only need to be written down once, in the Authentica
== Further Reading
- xref:concepts:authentication.adoc[Authentication concepts page]
-- xref:reference:authenticationclass.adoc[AuthenticationClass reference]
+* {crd-docs}/authentication.stackable.tech/authenticationclass/v1alpha1/[AuthenticationClass CRD reference]
- xref:superset:getting_started/index.adoc[Getting started with the Stackable Operator for Apache Superset]
- xref:trino:getting_started/index.adoc[Getting started with the Stackable Operator for Trino]
// TODO Operator docs for LDAP
diff --git a/netlify.toml b/netlify.toml
index acd39ef84..f10f90c59 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -3,170 +3,6 @@
publish = "build/site"
[[redirects]]
- from = "/airflow/nightly/*"
- to = "/home/nightly/airflow/:splat"
+ from = "/home/stable/reference/*"
+ to = "https://crds.stackable.tech/"
status = 301
-
-[[redirects]]
- from = "/druid/nightly/*"
- to = "/home/nightly/druid/:splat"
- status = 301
-
-[[redirects]]
- from = "/hbase/nightly/*"
- to = "/home/nightly/hbase/:splat"
- status = 301
-
-[[redirects]]
- from = "/hdfs/nightly/*"
- to = "/home/nightly/hdfs/:splat"
- status = 301
-
-[[redirects]]
- from = "/hive/nightly/*"
- to = "/home/nightly/hive/:splat"
- status = 301
-
-[[redirects]]
- from = "/kafka/nightly/*"
- to = "/home/nightly/kafka/:splat"
- status = 301
-
-[[redirects]]
- from = "/nifi/nightly/*"
- to = "/home/nightly/nifi/:splat"
- status = 301
-
-[[redirects]]
- from = "/spark-k8s/nightly/*"
- to = "/home/nightly/spark-k8s/:splat"
- status = 301
-
-[[redirects]]
- from = "/superset/nightly/*"
- to = "/home/nightly/superset/:splat"
- status = 301
-
-[[redirects]]
- from = "/trino/nightly/*"
- to = "/home/nightly/trino/:splat"
- status = 301
-
-[[redirects]]
- from = "/zookeeper/nightly/*"
- to = "/home/nightly/zookeeper/:splat"
- status = 301
-
-[[redirects]]
- from = "/opa/nightly/*"
- to = "/home/nightly/opa/:splat"
- status = 301
-
-[[redirects]]
- from = "/commons-operator/nightly/*"
- to = "/home/nightly/commons-operator/:splat"
- status = 301
-
-[[redirects]]
- from = "/secret-operator/nightly/*"
- to = "/home/nightly/secret-operator/:splat"
- status = 301
-
-[[redirects]]
- from = "/listener-operator/nightly/*"
- to = "/home/nightly/listener-operator/:splat"
- status = 301
-
-# stable redirects
-# force = true --> We're generating a compat page, but redirect it
-
-[[redirects]]
- from = "/airflow/stable/*"
- to = "/home/stable/airflow/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/druid/stable/*"
- to = "/home/stable/druid/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/hbase/stable/*"
- to = "/home/stable/hbase/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/hdfs/stable/*"
- to = "/home/stable/hdfs/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/hive/stable/*"
- to = "/home/stable/hive/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/kafka/stable/*"
- to = "/home/stable/kafka/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/nifi/stable/*"
- to = "/home/stable/nifi/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/spark-k8s/stable/*"
- to = "/home/stable/spark-k8s/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/superset/stable/*"
- to = "/home/stable/superset/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/trino/stable/*"
- to = "/home/stable/trino/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/zookeeper/stable/*"
- to = "/home/stable/zookeeper/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/opa/stable/*"
- to = "/home/stable/opa/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/commons-operator/stable/*"
- to = "/home/stable/commons-operator/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/secret-operator/stable/*"
- to = "/home/stable/secret-operator/:splat"
- status = 301
- force = true
-
-[[redirects]]
- from = "/listener-operator/stable/*"
- to = "/home/stable/listener-operator/:splat"
- status = 301
- force = true
-
diff --git a/supplemental-ui/partials/navbar.hbs b/supplemental-ui/partials/navbar.hbs
index 9dd45c73a..b85cf2f18 100644
--- a/supplemental-ui/partials/navbar.hbs
+++ b/supplemental-ui/partials/navbar.hbs
@@ -6,6 +6,13 @@
Concepts
Demos
Tutorials
+ {{#if (or (eq page.version "23.1") (eq page.version "23.4") (eq page.version "23.7") (eq page.version "23.11"))}}
+ CRD Reference
+ {{else}}
+
+ CRD Reference
+
+ {{/if}}
Release Notes
@@ -40,11 +47,9 @@
Contribute