From a00aa618d69e3fabc62f204e046c67824698cec2 Mon Sep 17 00:00:00 2001 From: Wen Zhou Date: Mon, 27 Jan 2025 09:00:32 +0100 Subject: [PATCH] fix: add matchlabel on NWP for customized appliation (#1566) - update README and troubleshooting Signed-off-by: Wen Zhou --- README.md | 21 ++++++ controllers/dscinitialization/utils.go | 11 ++++ docs/troubleshooting.md | 15 ++++- docs/troubleshooting.md2 | 91 ++++++++++++++++++++++++++ 4 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 docs/troubleshooting.md2 diff --git a/README.md b/README.md index fcb3c24c64a..73be7feeb0e 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ and configure these applications. - [Usage](#usage) - [Prerequisites](#prerequisites) - [Installation](#installation) + - [Configuration](#configuration) - [Developer Guide](#developer-guide) - [Pre-requisites](#pre-requisites) - [Download manifests](#download-manifests) @@ -74,6 +75,26 @@ Additionally installing `Authorino operator` & `Service Mesh operator` enhances 3. Create [DataScienceCluster](#example-datasciencecluster) CR to enable components + +### Configuration + +- in ODH 2.23.1, we introduced a new feature which allows user to use their own application namespace than default one "opendatahub". + +1. for new cluster, as this cluster has not been used for ODH or RHOAI. + Here we use namespace A for example as targeted application namespace, please follow below steps before install ODH operator: + + - create namespace A + - add label `opendatahub.io/application-namespace: true` onto namespace A. Only one namespace in the cluster can have this label. + - install ODH operator either from UI or by GitOps/CLI + - once Operator is up and running, manually create DSCI CR by set `.spec.applicationsNamespace:A` + - wait till DSCI status update to "Ready" + - continue to create DSC CR + +2. for upgrade case, as ODH is running in the cluster. + + Be aware: to switch to a different application namespace can cause more issues and require manual cleanup, therefore we suggest this to be done for new cluster. + + ## Developer Guide #### Pre-requisites diff --git a/controllers/dscinitialization/utils.go b/controllers/dscinitialization/utils.go index 2e02819d581..5c00a5f4215 100644 --- a/controllers/dscinitialization/utils.go +++ b/controllers/dscinitialization/utils.go @@ -233,6 +233,17 @@ func (r *DSCInitializationReconciler) reconcileDefaultNetworkPolicy( }, }, }, + { // OR logic to minic customized application namespace + From: []networkingv1.NetworkPolicyPeer{ + { + NamespaceSelector: &metav1.LabelSelector{ // AND logic + MatchLabels: map[string]string{ + labels.CustomizedAppNamespace: labels.True, + }, + }, + }, + }, + }, { // OR logic From: []networkingv1.NetworkPolicyPeer{ { // need this to access external-> dashboard diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index c40b475c3de..b432583ace5 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -75,4 +75,17 @@ OPERATOR_NAMESPACE=my-dev-odh-operator-system IMAGE_BUILD_FLAGS=--build-arg USE_LOCAL=true E2E_TEST_FLAGS="--skip-deletion=true" -timeout 15m DEFAULT_MANIFESTS_PATH=./opt/manifests -``` \ No newline at end of file +``` + +### When I try to use my own application namespace, I get different errors: + +1. Operator pod is keeping crash +Ensure in your cluster, only one application has label `opendatahub.io/application-namespace=true`. This is similar to case (3). + +2. error "DSCI must used the same namespace which has opendatahub.io/application-namespace=true label" +In the cluster, one namespace has label `opendatahub.io/application-namespace=true`, but it is not being set in the DSCI's `.spec.applicationsNamespace`, solutions (any of below ones should work): +- delete existin DSCI, and re-create it with namespace which already has label `opendatahub.io/application-namespace=true` +- remove label `opendatahub.io/application-namespace=true` from the other namespace to the one specified in the DSCI, and wait for a couple of minutes to allow DSCI continue. + +3. error "only support max. one namespace with label: opendatahub.io/application-namespace=true" +Refer to (1). diff --git a/docs/troubleshooting.md2 b/docs/troubleshooting.md2 new file mode 100644 index 00000000000..0be95a141df --- /dev/null +++ b/docs/troubleshooting.md2 @@ -0,0 +1,91 @@ +# What + +This document serves as the knowledge base for troubleshooting the Open Data Hub Operator. +More information can be found at https://github.com/opendatahub-io/opendatahub-operator/wiki + +## Troubleshooting + +### Upgrade from Operator v2.0/v2.1 to v2.2+ + +This also applies to any local build deployment from the "main" branch. + +To upgrade, follow these steps: + +- Disable the component(s) in your DSC instance. +- Delete both the DSC instance and DSCI instance. +- Click "uninstall" Open Data Hub operator. +- If exposed on v1alpha1, delete the DSC CRD and DSCI CRD. + +All of the above steps can be performed either through the console UI or via the `oc`/`kubectl` CLI. +After completing these steps, please refer to the installation guide to proceed with a clean installation of the v2.2+ operator. + + +### Why component's managementState is set to {} not Removed? + +Only if managementState is explicitliy set to "Managed" on component level, below configs in DSC CR to component "X" take the same effects: + +```console +spec: +components: + X: + managementState: Removed + +``` + +```console +spec: +components: + X: {} +``` + +### Setting up a Fedora-based development environment + +This is a loose list of tools to install on your linux box in order to compile, test and deploy the operator. + +```bash +ssh-keygen -t ed25519 -C "" +# upload public key to github + +sudo dnf makecache --refresh +sudo dnf install -y git-all +sudo dnf install -y golang +sudo dnf install -y podman +sudo dnf install -y cri-o kubernetes-kubeadm kubernetes-node kubernetes-client cri-tools +sudo dnf install -y operator-sdk +sudo dnf install -y wget +wget https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/linux/oc.tar.gz +cd bin/; tar -xzvf ../oc.tar.gz ; cd .. ; rm oc.tar.gz +sudo dnf install -y zsh + +# update PATH +echo 'export PATH=${PATH}:~/bin' >> ~/.zshrc +echo 'export GOPROXY=https://proxy.golang.org' >> ~/.zshrc +``` + +### Using a local.mk file to override Makefile variables for your development environment + +To support the ability for a developer to customize the Makefile execution to support their development environment, you can create a `local.mk` file in the root of this repo to specify custom values that match your environment. + +``` +$ cat local.mk +VERSION=9.9.9 +IMAGE_TAG_BASE=quay.io/my-dev-env/opendatahub-operator +IMG_TAG=my-dev-tag +OPERATOR_NAMESPACE=my-dev-odh-operator-system +IMAGE_BUILD_FLAGS=--build-arg USE_LOCAL=true +E2E_TEST_FLAGS="--skip-deletion=true" -timeout 15m +DEFAULT_MANIFESTS_PATH=./opt/manifests +``` + +### When I try to use my own application namespace, I get different errors: + +1. Operator pod is keeping crash +Ensure in your cluster, only one application has label `opendatahub.io/application-namespace=true`. This is similar to case (3). + +2. error "DSCI must used the same namespace which has opendatahub.io/application-namespace=true label" +In the cluster, one namespace has label `opendatahub.io/application-namespace=true`, but it is not being set in the DSCI's `.spec.applicationnamespace`, solutions (any of below ones should work): +- delete existin DSCI, and re-create it with namespace which already has label `opendatahub.io/application-namespace=true` +- remove label `opendatahub.io/application-namespace=true` from the other namespace to the one specified in the DSCI, and wait for a couple of minutes to allow DSCI continue. + +3. error "only support max. one namespace with label: opendatahub.io/application-namespace=true" +Refer to (1).