Skip to content

Commit 99e72a1

Browse files
committed
Merge remote-tracking branch 'origin/main' into adr/authorization-abstraction-layer
2 parents e586aeb + ca8f802 commit 99e72a1

36 files changed

+3140
-19706
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ jobs:
88
build:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
11+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #tag=v4.1.1
1212
with:
1313
submodules: true
1414
fetch-depth: 0
15-
- uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3
15+
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 #tag=v4.0.2
1616
with:
17-
node-version: '16'
17+
node-version: '20'
1818
cache: 'npm'
1919
- run: npm ci
2020
- run: make ANTORAFLAGS=--fetch

modules/ROOT/nav2.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
* xref:release-notes.adoc[Release notes]
44
* xref:product-information.adoc[]
55
* xref:policies.adoc[]
6-
* xref:licenses.adoc[Licenses]
6+
* xref:licenses.adoc[Licenses]
7+
* xref:export.adoc[Export Control]

modules/ROOT/pages/export.adoc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
= Export Control
2+
3+
== USA
4+
5+
The USA adopts the https://en.wikipedia.org/wiki/Export_Administration_Regulations[Export Administration Regulations (EAR)] as the primary regulation to control exports.
6+
7+
All of our products are outside of the scope of EAR because they fall under the _publicly available_ exemption and do not contain non-standard cryptography.
8+
9+
NOTE: That means E-Mail notifications to the NSA and BIS are not required and are therefore not published here.
10+
11+
In particular:
12+
13+
* We are exempt under https://www.ecfr.gov/current/title-15/subtitle-B/chapter-VII/subchapter-C/part-734/section-734.3[EAR 734.3(b)] because we publish according to https://www.ecfr.gov/current/title-15/subtitle-B/chapter-VII/subchapter-C/part-734/section-734.7[EAR 734.7]
14+
* We are exempt under https://www.ecfr.gov/current/title-15/subtitle-B/chapter-VII/subchapter-C/part-742/section-742.15[EAR 742.15(b)] as our software includes only https://ecfr.io/Title-15/Section-772.1[standard encryption]
15+
16+
The Stackable Data Platform is open source, and the source code of all the components can be found on https://github.com/stackabletech/[GitHub].
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: authentication.stackable.tech/v1alpha1
2+
kind: AuthenticationClass
3+
metadata:
4+
name: keycloak
5+
spec:
6+
provider:
7+
oidc:
8+
hostname: my.keycloak.server # <1>
9+
port: 8080 # <2>
10+
rootPath: /realms/master # <3>
11+
scopes: # <4>
12+
- email
13+
- openid
14+
- profile
15+
principalClaim: preferred_username # <5>
16+
providerHint: Keycloak # <6>

modules/concepts/nav.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@
2121
*** xref:operations/pod_placement.adoc[]
2222
*** xref:operations/graceful_shutdown.adoc[]
2323
** Observability
24+
*** xref:labels.adoc[]
2425
*** xref:logging.adoc[]

modules/concepts/pages/authentication.adoc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Multiple operators use this CRD as a way to express and configure the authentica
1414
The following authentication providers are supported:
1515

1616
* <<LDAP>>: Authenticate users using an LDAP server.
17+
* <<OIDC>>: Authenticate users using an OpenID connect provider.
1718
* <<TLS>>: Authenticate users with client TLS certificates.
1819
* <<Static>>: Authenticate users against a static list of users and passwords in a simple Kubernetes Secret.
1920
@@ -36,6 +37,25 @@ image::image$authentication-overview.drawio.svg[]
3637

3738
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].
3839

40+
[#OIDC]
41+
=== OpenID Connect
42+
43+
An OIDC provider like https://www.keycloak.org/[Keycloak {external-link-icon}^] could be configured as follows:
44+
45+
[source,yaml]
46+
----
47+
include::example$authenticationclass-keycloak.yaml[]
48+
----
49+
50+
<1> Hostname of the identity provider.
51+
<2> Port of the identity provider. If TLS is used defaults to 443, otherwise to 80.
52+
<3> Root HTTP path of the identity provider. Defaults to `/`.
53+
<4> Scopes to request from your identity provider. It is recommended to request the `openid`, `email`, and `profile` scopes.
54+
<5> If a product extracts some sort of "effective user" that is represented by a string internally, this config determines which claim is used to extract that string.
55+
<6> This is a hint about which identity provider is used by the AuthenticationClass.
56+
57+
NOTE: Get a full overview of all the properties in the {crd-docs}/authentication.stackable.tech/authenticationclass/v1alpha1/#spec-provider-oidc[AuthenticationClass OIDC provider CRD reference].
58+
3959
[#tls]
4060
=== TLS
4161
The `TLS` provider configures a product to authenticate users using TLS certificates.

modules/concepts/pages/index.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ It covers xref:operations/cluster_operations.adoc[starting, stopping and restart
3232

3333
== Observability
3434

35-
Learn abouth xref:logging.adoc[].
35+
Learn about which xref:labels.adoc[labels] are attached to the operators and the stacklets and the resources that get created by the operator.
36+
Also learn about xref:logging.adoc[].

modules/concepts/pages/labels.adoc

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
= Labels
2+
3+
Labels are key/value pairs in the metadata of Kubernetes objects that add identifying information to the object.
4+
They do not have direct semantic implications but can be used to organize and manage resources.
5+
The `stackablectl` tool, the cockpit and the Helm Charts add labels to the resources that are part of a Stacklet, and the operators add labels to the resources they create.
6+
7+
== Resource labels added by the operators
8+
9+
Every resource created by a Stackable operator is labelled with a common set of labels.
10+
Some of these labels are https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/[recommended] to use by the Kubernetes documentation.
11+
The following labels are added to resources created by our operators:
12+
13+
- `app.kubernetes.io/name` - The name of the product, i.e. `druid` or `zookeeper`.
14+
- `app.kubernetes.io/version` - The version of the product and Stackable version, i.e. `3.3.4-stackable23.11.0`
15+
- `app.kubernetes.io/instance` - The name of the Stacklet.
16+
- `app.kubernetes.io/component` - This is the xref:concepts:roles-and-role-groups.adoc[role] that this resource belongs to.
17+
- `app.kubernetes.io/role-group` - The name of the xref:concepts:roles-and-role-groups.adoc[role group] that a resource belongs to.
18+
- `app.kubernetes.io/managed-by` - Which software manages this resource? This will be the operator, i.e. `airflow-operator`.
19+
20+
also this:
21+
22+
- `stackable.tech/vendor` with value `Stackable`
23+
24+
== Labels added by tools
25+
26+
The resources associated with an operator installation are also labeled (or can be).
27+
28+
=== stackablectl
29+
30+
==== Installing operators and releases
31+
32+
When installing operators and releases, `stackablectl` will always label the Deployment, ConfigMap, ClusterRole etc. with
33+
34+
* `stackable.tech/vendor=Stackable`
35+
36+
==== Stacks and demos
37+
38+
When installing a stack or a demo, `stackablectl` adds additional labels to identify the parts of the stack or demo:
39+
40+
* `stackable-tech/stack` with the value being the Stack name.
41+
* `stackable-tech/demo` with the value being the Demo name.
42+
* `stackable.tech/managed-by=stackablectl`
43+
44+
These labels are attached to the demo and stack manifests, which include Secret, ConfigMap or ClusterRole.
45+
46+
NOTE: The Stacklets themselves and external dependencies are not yet labeled with the Stack or Demo that they belong to.
47+
48+
=== Helm
49+
50+
The Helm Charts for the Stackable operators support specifying labels in the `values.yaml` file.
51+
All resources deployed by the Helm Chart (Deployment, ClusterRole, Configmap, etc.) will have the labels attached when the operator is deployed.
52+
The default set of labels includes:
53+
54+
* `stackable.tech/vendor=Stackable`
55+
56+
== Further reading
57+
58+
Have a look at https://docs.stackable.tech/home/nightly/contributor/adr/adr031-resource-labels[] if you want to find out about the design decisions for our labels.

modules/concepts/pages/logging.adoc

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -57,32 +57,45 @@ As part of the logging configuration, individual modules can be configured with
5757

5858
[source,yaml]
5959
----
60-
vectorAggregatorConfigMapName: vector-aggregator-discovery // <1>
61-
...
62-
logging: // <2>
63-
enableVectorAgent: true // <3>
64-
containers: // <4>
65-
main-container:
66-
console: // <5>
67-
level: DEBUG
68-
file:
69-
level: INFO
70-
loggers: // <6>
71-
ROOT:
72-
level: INFO
73-
my.module:
74-
level: DEBUG
75-
some.chatty.module:
76-
level: NONE
77-
sidecar-container:
78-
...
60+
spec:
61+
clusterConfig:
62+
vectorAggregatorConfigMapName: vector-aggregator-discovery // <1>
63+
myRole:
64+
config: // <2>
65+
logging:
66+
enableVectorAgent: true
67+
containers:
68+
main-container:
69+
console:
70+
level: INFO
71+
myRoleGroup:
72+
config: // <2>
73+
logging: // <3>
74+
enableVectorAgent: true // <4>
75+
containers: // <5>
76+
main-container:
77+
console: // <6>
78+
level: DEBUG
79+
file:
80+
level: INFO
81+
loggers: // <7>
82+
ROOT:
83+
level: INFO
84+
my.module:
85+
level: DEBUG
86+
some.chatty.module:
87+
level: NONE
88+
sidecar-container:
89+
console:
90+
level: ERROR
7991
----
8092
<1> The discovery ConfigMap of the Vector aggregator to publish the logs to. This is set at cluster level.
81-
<2> The logging configuration fragment, can be set at role or role group level.
82-
<3> Enable the Vector agent to aggregate logs.
83-
<4> Logging is defined for each container.
84-
<5> Console and file appenders can have different log level thresholds.
85-
<6> Setting log levels for individual modules is also possible.
93+
<2> The role or role group config containing the logging configuration.
94+
<3> The logging configuration fragment, can be set at role or role group level.
95+
<4> Enable the Vector agent to aggregate logs.
96+
<5> Logging is defined for each container.
97+
<6> Console and file appenders can have different log level thresholds.
98+
<7> Setting log levels for individual modules is also possible.
8699

87100
**Log levels per module** - In the `loggers` section the log levels for each module are configured.
88101
Note the `ROOT` module.

modules/concepts/pages/product-image-selection.adoc

Lines changed: 7 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -50,28 +50,23 @@ What this means is, that for example the Stackable Operator for Apache HBase wil
5050
|===
5151

5252

53-
However, since the last digit of the Stackable version is considered to be a patchlevel indicator, operators will be compatible with all images from the same release line.
53+
However, since the last digit of the Stackable version is considered to be a patch level indicator, operators will be compatible with all images from the same release line.
5454
So an operator of version _23.4.x_ will be compatible with all images of version _23.4.y_.
55-
This is intended to allow shorter update cycles for users, when new image versions are released that may contain security fixes - should the user so choose.
56-
55+
This is intended to allow shorter update cycles for users, when new image versions are released that may contain security fixes.
5756

5857
The following paragraphs explain the available settings and how they work.
5958

6059
At the bottom of this page in the <<_common_scenarios, common scenarios>> section some common update scenarios are explained as examples.
6160

6261
== Stackable provided images
6362

64-
If your Kubernetes cluster has internet access, the easiest way is to use the publicly available Images from the https://docker.stackable.tech/[Image registry hosted by Stackable].
63+
If your Kubernetes cluster has internet access, the easiest way is to use the publicly available images from the https://docker.stackable.tech/[Image registry hosted by Stackable].
6564
If the Kubernetes cluster does not have internet access, a xref:_custom_docker_registry[] or xref:_custom_images[] can be used.
6665

6766
Currently, you need to specify the product version. This can be found on the xref:operators:supported_versions.adoc[list of supported product versions] or on the website of the product itself.
6867
This requirement might be relaxed in the future, as every platform release will ship wth a recommended product versions, which will be used by default.
6968

70-
Additionally, you can specify the Stackable version: As we need to make changes to the Images from time to time (e.g. security updates), we also have to version them using the Stackable version. An image gets released for every version of the SDP.
71-
There are two variants you can choose from:
72-
73-
1. Fixed version, e.g. `23.7.0`. This image will never change.
74-
2. Release line, e.g. `23.7`. This will be a floating tag pointing to the latest patch release of the SDP release line. It will contain the latest security patches, but will also change over time.
69+
Additionally, as images should be updated from time to time (e.g. new base image, security updates), a Stackable version can be provided. An image with the Stackable version `23.7.0` is fixed and will never change. Security updates within a release line will result in patch version bumps in the Stackable version to e.g. `23.7.1`.
7570

7671
If you don't specify the Stackable version, the operator will use its own version, e.g. `23.7.0`.
7772
When using a nightly operator or a `pr` version, it will use the nightly `0.0.0-dev` image.
@@ -137,7 +132,7 @@ When deriving images from official Stackable images this will mean updating the
137132
The recommended process here is:
138133

139134
** Tag clusters as "do not reconcile" (see xref:operations/cluster_operations.adoc[])
140-
** Update Stackable plattform
135+
** Update Stackable platform
141136
** Change custom images in cluster specifications
142137
** Remove "do not reconcile flag"
143138

@@ -156,34 +151,8 @@ spec:
156151
productVersion: 3.3.1
157152
----
158153

159-
### Quick updates of images
160-
Sometimes it can be useful to decouple operators upgrades from the image versions to allow using updated images as soons as Stackable releases them.
161-
This can significantly shorten turnaround times when reacting to security vulnerabilities for example.
162-
163-
For this scenario the Stackable version can be set to the release line, without including the patch level indicator.
164-
This will cause the operator to always use the most current image that it is compatible with when starting products.
165-
166-
[NOTE]
167-
====
168-
This behavior can result in _mixed_ clusters running on different image versions of the product.
169-
This should not create any issues, since the contained product binaries are exactly the same, but is worth knowing.
170-
171-
A rolling restart of the product would clean this mixed state up.
172-
====
173-
174-
#### Config
175-
[source,yaml]
176-
----
177-
spec:
178-
image:
179-
productVersion: 3.3.1
180-
stackableVersion: 23.4
181-
----
182-
183-
184-
185-
#### Custom images / pinned images
186-
When a setup requires the utmost stability and it is preferrable for things to break, rather than run with a different image version that for example has not been certified.
154+
### Custom images / pinned images
155+
When a setup requires the utmost stability, and it is preferable for things to break, rather than run with a different image version that for example has not been certified.
187156
Or when a user requires custom libraries / code in the images they run and build their own images derived from official Stackable images, this is the only possible way to do this.
188157

189158
Please see the warnings in <<customimages, custom images section>> above for how to upgrade in this scenario.

0 commit comments

Comments
 (0)