Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b922d80
Verify all Stackable images instead of just 23.7 operator images
dervoeti Sep 1, 2023
e07dc0c
Upcoming changes regarding Superset
dervoeti Sep 4, 2023
e20baa5
Upcoming changes regarding Airflow
dervoeti Sep 25, 2023
1ecb697
updated ldap tutorial docs
adwk67 Nov 10, 2023
275fa7f
Merge branch 'main' into release/23.11
adwk67 Nov 14, 2023
8beff9c
wip: 23.11 release notes
adwk67 Nov 14, 2023
36c4f2d
documented breaking changes
adwk67 Nov 14, 2023
0342c77
draft (i.e. untested) upgrade notes
adwk67 Nov 14, 2023
42174dd
added product signage and JVM-settings to highlights
adwk67 Nov 14, 2023
bdd5d24
re-worked highlight list and product features
adwk67 Nov 15, 2023
434f5f7
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 15, 2023
9648c49
review feedback
adwk67 Nov 15, 2023
9f256a5
Merge branch 'release/23.11' of github.com:stackabletech/documentatio…
adwk67 Nov 15, 2023
e6fdf81
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 15, 2023
2851d21
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 15, 2023
d383799
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 15, 2023
5de6e85
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 15, 2023
92029ed
added TODO
adwk67 Nov 15, 2023
03c7b52
minor changes
adwk67 Nov 15, 2023
28177bf
breaking changes example: airflow
adwk67 Nov 15, 2023
ca9c7a5
airflow BC notes
adwk67 Nov 15, 2023
a8990ec
BC example: hdfs
adwk67 Nov 15, 2023
cb0316f
BC example: kafka
adwk67 Nov 15, 2023
815de90
added admonition and collapsable code sections
adwk67 Nov 16, 2023
789f9af
corrected BC notes
adwk67 Nov 16, 2023
9ffd7bf
minor typo
adwk67 Nov 16, 2023
77e720a
Merge branch 'main' into release/23.11
adwk67 Nov 16, 2023
a49dc2e
BC example: nifi
adwk67 Nov 16, 2023
a7d869d
BC example: spark
adwk67 Nov 16, 2023
c436dd7
BC example: superset
adwk67 Nov 16, 2023
4e9a038
BC example: trino
adwk67 Nov 16, 2023
23c4b6c
clarification note re. port names and stateful sets
adwk67 Nov 16, 2023
8910aec
listener-operator note
adwk67 Nov 17, 2023
1bfe8e2
corrected xref
adwk67 Nov 17, 2023
e54e801
corrected xref II
adwk67 Nov 17, 2023
d8cfb00
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 17, 2023
46d4fa2
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 17, 2023
cda4f1b
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 17, 2023
f02a333
trimmed down examples
adwk67 Nov 17, 2023
83f80ff
nifi BC: added authentication class example
adwk67 Nov 17, 2023
0c10168
product version headers
adwk67 Nov 17, 2023
b6c1cbb
moved product feature section
adwk67 Nov 17, 2023
6a6218c
provisional OS version support
adwk67 Nov 17, 2023
7e23940
remove SBOM from higlights
adwk67 Nov 20, 2023
9b8c947
Merge branch 'main' into release/23.11
adwk67 Nov 27, 2023
5ce1336
removed unnecessary stackableVersion fields
adwk67 Nov 27, 2023
b4d887c
fix merge concflicts
adwk67 Nov 28, 2023
c75c92d
added link to signing tutorial
adwk67 Nov 30, 2023
a5cb95b
OS/k8s versions
adwk67 Nov 30, 2023
f0d911e
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 30, 2023
184e6b7
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 30, 2023
28d9001
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 30, 2023
c6e5974
Update modules/ROOT/pages/release-notes.adoc
adwk67 Nov 30, 2023
8490d00
review comments
adwk67 Nov 30, 2023
1f7e0d3
review comment
adwk67 Nov 30, 2023
2382429
reverted import change
adwk67 Nov 30, 2023
266012c
updated k8s versions
adwk67 Nov 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
312 changes: 312 additions & 0 deletions modules/ROOT/pages/release-notes.adoc

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
# tag::snippet[]
spec:
authenticationConfig: # <1>
authenticationClass: openldap # <2>
userRegistrationRole: Admin # <3>
clusterConfig:
authentication: # <1>
- authenticationClass: openldap # <2>
userRegistrationRole: Admin # <3>
# end::snippet[]
7 changes: 3 additions & 4 deletions modules/tutorials/examples/ldap-auth/trino-auth-snippet.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
---
# tag::snippet[]
spec:
authentication:
method:
ldap: # <1>
authenticationClass: openldap # <2>
clusterConfig:
authentication:
- authenticationClass: openldap # <1>
# end::snippet[]
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,32 @@ data:
trino.rego: |
package trino

import future.keywords.in

default allow = false

allow {
is_alice
}
extended[i] {
some i
input.action.filterResources[i]
is_alice
}

is_alice() {
input.context.identity.user == "alice"
}

allow {
is_bob
}
extended[i] {
some i
input.action.filterResources[i]
is_bob
}

is_bob() {
input.context.identity.user == "bob"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ spec:
- Pod
verifyImages:
- imageReferences:
- docker.stackable.tech/*-operator:23.7.*
- docker.stackable.tech/*
attestors:
- entries:
- keyless:
issuer: "https://token.actions.githubusercontent.com"
subject: "https://github.com/stackabletech/*-operator/.github/workflows/build.yml@refs/tags/23.7.*"
subject: "https://github.com/stackabletech/*/.github/workflows/build.yml@refs/*"
rekor:
url: https://rekor.sigstore.dev
url: https://rekor.sigstore.dev
57 changes: 27 additions & 30 deletions modules/tutorials/pages/authentication_with_openldap.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ metadata:
...
spec:
version: ...
statsdExporterVersion: ...
credentialsSecret: superset-credentials
clusterConfig:
credentialsSecret: superset-credentials
nodes:
roleGroups:
default:
Expand All @@ -170,7 +170,7 @@ Modify your `superset.yaml` to include this new `authenticationConfig` property
[source,yaml]
include::example$ldap-auth/superset-auth-snippet.yaml[tag=snippet]

<1> The new `authenticationConfig` section which configures how Superset is authenticating users
<1> The new `authentication` section which configures how Superset is authenticating users
<2> The `authenticationClass` property is referencing the AuthenticationClass `openldap` you created earlier
<3> The default Superset role that users should be assigned to when they log in. Any user will be an Admin

Expand All @@ -186,12 +186,11 @@ metadata:
name: superset
...
spec:
version: ...
statsdExporterVersion: ...
credentialsSecret: superset-credentials
authenticationConfig:
authenticationClass: openldap
userRegistrationRole: Admin
clusterConfig:
credentialsSecret: superset-credentials
authentication:
- authenticationClass: openldap
userRegistrationRole: Admin
nodes:
roleGroups:
default:
Expand All @@ -213,7 +212,7 @@ Connect to superset as before, and try logging in again with username _admin_ an

Trino is configured very similarly to Superset.

Fetch the existing TrinoCluster defintion from the Kubernetes API server and save it into a `trino.yaml` file:
Fetch the existing TrinoCluster definition from the Kubernetes API server and save it into a `trino.yaml` file:

[source,bash]
include::example$ldap-auth/60-modify-trino.sh[tag=get-yaml]
Expand All @@ -230,16 +229,17 @@ metadata:
name: trino
...
spec:
version: 396-stackable0.1.0
authentication:
method:
multiUser:
clusterConfig:
authentication:
- authenticationClass: trino-users
authorization:
opa:
configMapName: opa
package: trino
catalogLabelSelector:
matchLabels:
trino: trino
...
opa:
configMapName: opa
package: trino
catalogLabelSelector:
...
workers:
...
coordinators:
Expand All @@ -258,8 +258,7 @@ Replace the `multiUser` authentication method in your `trino.yaml` with an `ldap
[source,yaml]
include::example$ldap-auth/trino-auth-snippet.yaml[tag=snippet]

<1> The new `ldap` authentication method replaces the previous `multiUser` authentication method
<2> The `authenticationClass` property is referencing the AuthenticationClass `openldap` you created earlier
<1> The `authenticationClass` property is referencing the AuthenticationClass `openldap` you created earlier

.Your `trino.yaml` should now look similar to this
[%collapsible]
Expand All @@ -273,15 +272,13 @@ metadata:
name: trino
...
spec:
version: 396-stackable0.1.0
authentication:
method:
ldap:
authenticationClass: openldap
opa:
configMapName: opa
package: trino
catalogLabelSelector:
clusterConfig:
authentication:
- authenticationClass: openldap
authorization:
opa:
configMapName: opa
package: trino
...
workers:
...
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
= Enabling verification of image signatures

Image signing is a security measure that helps ensure the authenticity and integrity of container images. Starting with SDP 23.7, all our operator images are signed https://docs.sigstore.dev/cosign/openid_signing/["keyless"] (signing of product images and Helm charts will follow). By verifying these signatures, cluster administrators can ensure that the operator images pulled from Stackable's container registry are authentic and have not been tampered with.
Image signing is a security measure that helps ensure the authenticity and integrity of container images. Starting with SDP 23.7, all our images are signed https://docs.sigstore.dev/cosign/openid_signing/["keyless"]. By verifying these signatures, cluster administrators can ensure that the images pulled from Stackable's container registry are authentic and have not been tampered with.
Since Kubernetes does not have native support for verifying image signatures yet, we will use a tool called https://kyverno.io/[Kyverno] in this tutorial.

IMPORTANT: Releases prior to SDP 23.7 do not have signed images. If you are using an older release and enforce image signature verification, Pods with Stackable images will be prevented from starting.

== Installing Kyverno
Kyverno can be easily installed via Helm:

Expand All @@ -17,7 +19,7 @@ Other installation methods and options to run Kyverno in a highly-available fash

== Creating a policy to verify image signatures

Now that Kyverno is installed, we can create a policy that verifies that all operator images that are part of the SDP 23.7 releases are signed by Stackable's CI pipeline (Github Actions):
Now that Kyverno is installed, we can create a policy that verifies that all images provided by Stackable are signed by Stackable's CI pipeline (Github Actions):

[source,yaml]
include::example$verify-signatures/kyverno-policy.yaml[]
Expand All @@ -28,6 +30,6 @@ Apply this policy to the cluster by saving it as `kyverno-policy.yaml` and runni
kubectl apply -f kyverno-policy.yaml
----

The policy will be applied to all namespaces in the cluster. It checks all newly created Pods that run any image matching the expression `docker.stackable.tech/+++*+++-operator:23.7.+++*+++` (all Stackable operators version 23.7.+++*+++) and ensures that these images have been signed by a Stackable Github Action from the release 23.7 (`https://github.com/stackabletech/+++*+++-operator/.github/workflows/build.yml@refs/tags/23.7.+++*+++`). If the signature of an operator image is invalid or missing, the policy will deny the pod creation.
The policy will be applied to all namespaces in the cluster. It checks all newly created Pods that run any image matching the expression `docker.stackable.tech/+++*+++` (all images provided by Stackable) and ensures that these images have been signed by a Stackable Github Action (`https://github.com/stackabletech/+++*+++/.github/workflows/build.yml@refs/+++*+++`). If the signature of an image is invalid or missing, the policy will deny the pod creation.
For a more detailed explanation of the policy options, please refer to the https://kyverno.io/docs/writing-policies/verify-images/sigstore/#keyless-signing-and-verification[Kyverno documentation].
If the `subject` field in the policy is changed to something like `https://github.com/test/+++*+++`, the policy will deny the creation of operator pods because the signature is no longer valid.
If the `subject` field in the policy is changed to something like `https://github.com/test/+++*+++`, the policy will deny the creation of pods with Stackable images because the signature is no longer valid.