Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 18 additions & 0 deletions crates/stackable-operator/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,24 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

### Added

- BREAKING: Add two required CLI arguments and env vars to set image registry and repository ([#1199]):
- `IMAGE_REGISTRY` (`--image-registry`): Sets the image registry which should be used by the
operator to construct image names for provisioned containers, eg. `oci.example.org`.
- `IMAGE_REPOSITORY` (`--image-repository`): Sets the image repository which should be used by the
operator to construct image names for provisioned containers, eg. `my/repository/to/operator`.

### Changed

- BREAKING: The product image selection mechanism via `ProductImage::resolve` now takes three
parameters instead of two. The new parameters are: `image_registry`, `image_repository`, and
`operator_version`.
- BREAKING: The product image selection CRD interface splits up the `repo` key into `registry` and
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Asking the obvious question: How hard would it be to use CRD versioning for this?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This depends on what the exact final CRD interface will look like. I will come back to this once the design is finalized.

`repository` for more clarity and consistency ([#1199]).

[#1199]: https://github.com/stackabletech/operator-rs/pull/1199

## [0.110.1] - 2026-04-16

### Added
Expand Down
27 changes: 21 additions & 6 deletions crates/stackable-operator/crds/DummyCluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1781,8 +1781,9 @@ spec:
properties:
custom:
description: |-
Overwrite the docker image.
Specify the full docker image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0`
Overwrite the container image.

Specify the full container image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0`
type: string
productVersion:
description: Version of the product, e.g. `1.4.1`.
Expand All @@ -1808,15 +1809,29 @@ spec:
type: object
nullable: true
type: array
repo:
description: Name of the docker repo, e.g. `oci.stackable.tech/sdp`
registry:
description: |-
The container image registry, e.g. `oci.stackable.tech`.

If not specified, the operator will use the image registry provided via the operator
environment options.
nullable: true
type: string
repository:
description: |-
The repository on the container image registry where the container image is located, e.g.
`sdp/airflow`.

If not specified, the operator will use the image registry provided via the operator
environment options.
nullable: true
type: string
stackableVersion:
description: |-
Stackable version of the product, e.g. `23.4`, `23.4.1` or `0.0.0-dev`.
If not specified, the operator will use its own version, e.g. `23.4.1`.
When using a nightly operator or a pr version, it will use the nightly `0.0.0-dev` image.

If not specified, the operator will use its own version, e.g. `23.4.1`. When using a nightly
operator or a PR version, it will use the nightly `0.0.0-dev` image.
nullable: true
type: string
type: object
Expand Down
21 changes: 21 additions & 0 deletions crates/stackable-operator/src/cli/environment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,25 @@ pub struct OperatorEnvironmentOptions {
/// something like `<product>-operator`.
#[arg(long, env)]
pub operator_service_name: String,

/// The image registry which should be used when resolving images provisioned by the operator.
///
/// Example values include: `127.0.0.1` or `oci.example.org`.
///
/// Note that when running the operator on Kubernetes we recommend to provide this value via
/// the deployment mechanism, like Helm.
#[arg(long, env, value_parser = url::Host::parse)]
pub image_registry: url::Host,

/// The image repository used in conjunction with the `image_registry` to form the final image
/// name.
///
/// Example values include: `airflow-operator` or `path/to/hbase-operator`.
///
/// Note that when running the operator on Kubernetes we recommend to provide this value via
/// the deployment mechanism, like Helm. Additionally, care must be taken when this value is
/// used as part of the product image selection, as it (most likely) includes the `-operator`
/// suffix.
#[arg(long, env)]
pub image_repository: String,
}
Loading
Loading