-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #558 from bakdata/v9
KPOps V9
- Loading branch information
Showing
90 changed files
with
3,252 additions
and
548 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,8 +27,8 @@ runs: | |
- name: Install Python and set up Poetry | ||
uses: bakdata/ci-templates/actions/[email protected] | ||
with: | ||
python-version: "3.11" | ||
poetry-version: "1.5.1" | ||
python-version: "3.10" | ||
|
||
- name: Install docs dependencies | ||
shell: bash | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,7 +21,7 @@ jobs: | |
os: | ||
- ubuntu-22.04 | ||
- windows-2022 | ||
python-version: ["3.10", "3.11", "3.12"] | ||
python-version: ["3.11", "3.12"] | ||
runs-on: ${{ matrix.os }} | ||
|
||
steps: | ||
|
@@ -32,8 +32,8 @@ jobs: | |
- name: Install Python and set up Poetry | ||
uses: bakdata/ci-templates/actions/[email protected] | ||
with: | ||
poetry-version: "1.7.1" | ||
python-version: ${{ matrix.python-version }} | ||
poetry-version: "1.7.1" | ||
|
||
- name: Check Poetry lock file consistency | ||
run: poetry lock --check | ||
|
@@ -43,7 +43,7 @@ jobs: | |
|
||
- name: Lint (ruff) | ||
run: | | ||
if [[ "$RUNNER_OS" == "Linux" && "${{ matrix.python-version }}" == "3.10" ]] | ||
if [[ "$RUNNER_OS" == "Linux" && "${{ matrix.python-version }}" == "3.11" ]] | ||
then | ||
poetry run ruff check . --config pyproject.toml --output-format=github --no-fix | ||
else | ||
|
@@ -55,7 +55,7 @@ jobs: | |
|
||
- name: Typing (pyright) | ||
run: | | ||
if [[ "$RUNNER_OS" == "Linux" && "${{ matrix.python-version }}" == "3.10" ]] | ||
if [[ "$RUNNER_OS" == "Linux" && "${{ matrix.python-version }}" == "3.11" ]] | ||
then | ||
echo "::add-matcher::.github/pyright-matcher.json" | ||
poetry run pre-commit run pyright --all-files | ||
|
@@ -93,6 +93,7 @@ jobs: | |
needs: [test] | ||
uses: bakdata/ci-templates/.github/workflows/[email protected] | ||
with: | ||
python-version: "3.11" | ||
poetry-version: "1.7.1" | ||
secrets: | ||
pypi-token: ${{ secrets.TEST_PYPI_TOKEN }} | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,7 @@ jobs: | |
uses: bakdata/ci-templates/.github/workflows/[email protected] | ||
with: | ||
publish-to-test: false | ||
python-version: "3.11" | ||
poetry-version: "1.7.1" | ||
secrets: | ||
pypi-token: "${{ secrets.PYPI_TOKEN }}" |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,5 @@ | ||
kafka_brokers: "http://k8kafka-cp-kafka-headless.kpops.svc.cluster.local:9092" | ||
pipeline_base_dir: tests/pipeline | ||
strimzi_topic: | ||
label: | ||
strimzi.io/cluster: my-cluster |
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
# Operation Modes in KPOps | ||
|
||
KPOps supports three operation modes—`managed`, `manifest`, and `argo`. These modes determine how resources are managed and allow users to tailor their deployment strategy. | ||
|
||
- **Managed Mode** (default): KPOps uses Helm, and communicates with services like Kafka Rest Proxy, and Kafka Connect under the hood to manage the installation/(graceful) deletion of applications, creation/deletion of Kafka topics, creation/deletion of Connectors defined in your `pipeline.yaml`. | ||
- **Manifest Mode**: Focuses on generating Kubernetes manifests. | ||
- **Argo Mode**: Extends the functionality to include ArgoCD-specific hooks for certain operations, facilitating GitOps workflows with automated cleanup and reset tasks. | ||
|
||
--- | ||
|
||
## Configuring Operation Modes | ||
|
||
You can configure the operation mode using one of the following methods: | ||
|
||
1. **Command-Line Option**: Pass the `--operation-mode <OPERATION>` flag when running a CLI command. Refer to the [CLI commands documentation](https://bakdata.github.io/kpops/9.0/user/references/cli-commands/#kpops-deploy) for more details. | ||
|
||
2. **Environment Variable**: Set the operation mode by defining the `KPOPS_OPERATION_MODE` environment variable. | ||
|
||
--- | ||
|
||
## Generated Resources by Mode and Operation | ||
|
||
### `deploy` | ||
|
||
#### **Manifest Mode** | ||
|
||
- **streams-bootstrap Applications**: | ||
- Depending on your pipeline configuration, Kubernetes `Job`, `Deployment`, `ConfigMap`, and `Service` resources. | ||
- Please refer to [streams-bootstrap Helm Charts](https://github.com/bakdata/streams-bootstrap/tree/master/charts). | ||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
|
||
#### **Argo Mode** | ||
|
||
- **streams-bootstrap Applications**: | ||
- Depending on your pipeline configuration, Kubernetes `Job`, `Deployment`, `ConfigMap`, and `Service` resources. | ||
- Additional Argo `sync-wave` annotation to ensure Kafka topics are created first (default `sync-wave=0`) before deploying apps (lower priority `sync-wave>0`). All components of each sync wave are deployed in parallel by Argo. | ||
- Please refer to [streams-bootstrap Helm Charts](https://github.com/bakdata/streams-bootstrap/tree/master/charts). | ||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
- **Cleanup Jobs**: | ||
- Kubernetes `Job` resources configured **with** ArgoCD `PostDelete` hooks, ensuring cleanup tasks are executed after ArgoCD application deletion. | ||
|
||
--- | ||
|
||
### `reset` | ||
|
||
#### **Manifest Mode** | ||
|
||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
- **Reset Jobs**: | ||
- Kubernetes `Job` resources for resetting Kafka Streams application states. | ||
|
||
#### **Argo Mode** | ||
|
||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
- **Reset Jobs**: | ||
- Kubernetes `Job` resources **without** ArgoCD `PostDelete` hooks, providing a simpler reset process. | ||
|
||
--- | ||
|
||
### `clean` | ||
|
||
#### **Manifest Mode** | ||
|
||
- **Clean Jobs**: | ||
- Kubernetes `Job` resources for cleaning up temporary resources or artifacts using application container images. | ||
|
||
#### **Argo Mode** | ||
|
||
- **Not Applicable**: | ||
- The `clean` command is not supported in Argo mode. The clean is instead achieved through cleanup job hooks during the `deploy` command. | ||
|
||
--- | ||
|
||
### `destroy` | ||
|
||
#### **Manifest Mode** | ||
|
||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
|
||
#### **Argo Mode** | ||
|
||
- **Topics**: | ||
- Strimzi `KafkaTopic` CRDs. | ||
|
||
--- | ||
|
||
## Use Cases for Each Mode | ||
|
||
### Manifest Mode | ||
|
||
- **Flexibility**: Use the generated manifests in manual workflows or integrate with any Kubernetes deployment tool. | ||
- **Version Control**: Commit generated manifests to a Git repository for tracking changes and rollback. | ||
|
||
### Argo Mode | ||
|
||
- **GitOps Integration**: Simplifies workflows when using ArgoCD for automated deployments and lifecycle management. | ||
- **PostDelete Hooks**: Automatically cleans up resources after deletion of ArgoCD applications. | ||
|
||
--- | ||
|
||
## Summary of Resource Generation by Operation and Mode | ||
|
||
| Resource Type | `deploy` | `reset` | `clean` | `destroy` | | ||
| ------------- | -------------------------------- | ------------------- | ------------------- | ------------------- | | ||
| Producer Apps | Manifest: Generated | N/A | N/A | N/A | | ||
| | Argo: Generated | | | | | ||
| Streams Apps | Manifest: Generated | N/A | N/A | N/A | | ||
| | Argo: Generated | | | | | ||
| Topics | Manifest: Generated | Manifest: Generated | N/A | Manifest: Generated | | ||
| | Argo: Generated | Argo: Generated | | Argo: Generated | | ||
| Cleanup Jobs | Manifest: N/A | N/A | Manifest: Generated | N/A | | ||
| | Argo: With `PostDelete` hooks | N/A | N/A | N/A | | ||
| Reset Jobs | Manifest: N/A | Manifest: Generated | N/A | N/A | | ||
| | Argo: Without `PostDelete` hooks | | | | |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Migrate from V8 to V9 | ||
|
||
## [Introduce KPOps operation and manifest resources for deployment](https://github.com/bakdata/kpops/pull/541) | ||
|
||
The `kpops manifest` command and `kpops.manifest()` API have been **removed**. | ||
|
||
Resource manifesting is now integrated into the _operation_ commands (`deploy`, `destroy`, `reset`, `clean`) through the new **operation mode** feature. | ||
|
||
To manifest resources, you can: | ||
|
||
- Pass `--operation-mode manifest` when executing `kpops` commands. | ||
- Set the operation mode by defining the `KPOPS_OPERATION_MODE` environment variable. | ||
|
||
## [Manifest toSection with Strimzi KafkaTopic](https://github.com/bakdata/kpops/pull/545) | ||
|
||
KPOps now supports generating valid Kubernetes KafkaTopic resources compatible with [Strimzi](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/topic/kafka-topic.yaml). When using manifest or argo as the operation_mode, you must specify the Strimzi cluster label to ensure the topics are recognized by the deployed Strimzi Topic Operator. | ||
|
||
```diff | ||
operation_mode: manifest | ||
|
||
+ strimzi_topic: | ||
+ label: | ||
+ strimzi.io/cluster: my-cluster | ||
|
||
# rest of your config | ||
``` | ||
|
||
<!-- dprint-ignore-start --> | ||
|
||
!!! info Standalone topic operator deployment | ||
Refer to the [Strimzi documentation on deploying a standalone topic operator](https://strimzi.io/docs/operators/latest/deploying#deploying-the-topic-operator-standalone-str) for more details. | ||
|
||
<!-- dprint-ignore-end --> | ||
|
||
## [Drop support for Python 3.10](https://github.com/bakdata/kpops/pull/561) | ||
|
||
KPOps V9 no longer supports Python 3.10. Ensure your environment is running Python 3.11 to 3.12. | ||
|
||
#### Action Required: | ||
|
||
Upgrade your Python version to a supported version (3.11 or 3.12). | ||
Update your virtual environments and CI pipelines to reflect this change. |
This file contains 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
This file contains 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
Oops, something went wrong.