From 3db156315dd5846d6066b0b72ee6b405debe21b5 Mon Sep 17 00:00:00 2001 From: Abhishek Balaji Radhakrishnan Date: Fri, 13 Mar 2026 15:43:33 -0700 Subject: [PATCH 1/2] Remove druid-operator tree from the repo Essentially reverts https://github.com/apache/druid/pull/18435 since the repo has now been moved to https://github.com/apache/druid-operator as part of the ASF donation. --- druid-operator/.dockerignore | 20 - druid-operator/.gitignore | 80 - druid-operator/ADOPTERS.md | 32 - druid-operator/Dockerfile | 51 - druid-operator/Makefile | 277 - druid-operator/PROJECT | 46 - druid-operator/README.md | 72 - druid-operator/apis/druid/v1alpha1/doc.go | 22 - .../apis/druid/v1alpha1/druid_types.go | 612 - .../druid/v1alpha1/druidingestion_types.go | 105 - .../apis/druid/v1alpha1/groupversion_info.go | 39 - .../druid/v1alpha1/zz_generated.deepcopy.go | 790 - druid-operator/chart/.helmignore | 39 - druid-operator/chart/Chart.yaml | 40 - .../druid.apache.org_druidingestions.yaml | 165 - .../chart/crds/druid.apache.org_druids.yaml | 12064 ---------------- druid-operator/chart/templates/NOTES.txt | 17 - druid-operator/chart/templates/_helpers.tpl | 69 - .../chart/templates/deployment.yaml | 121 - .../chart/templates/rbac_leader_election.yaml | 77 - .../chart/templates/rbac_manager.yaml | 427 - .../chart/templates/rbac_metrics.yaml | 32 - .../chart/templates/rbac_proxy.yaml | 58 - druid-operator/chart/templates/service.yaml | 35 - .../chart/templates/service_account.yaml | 30 - druid-operator/chart/values.yaml | 116 - .../druid.apache.org_druidingestions.yaml | 165 - .../crd/bases/druid.apache.org_druids.yaml | 12064 ---------------- druid-operator/config/crd/kustomization.yaml | 39 - .../config/crd/kustomizeconfig.yaml | 34 - .../cainjection_in_druid_druidingestions.yaml | 22 - .../crd/patches/cainjection_in_druids.yaml | 22 - .../webhook_in_druid_druidingestions.yaml | 31 - .../config/crd/patches/webhook_in_druids.yaml | 31 - .../config/default/kustomization.yaml | 87 - .../default/manager_auth_proxy_patch.yaml | 70 - .../config/default/manager_config_patch.yaml | 25 - .../config/druid.apache.org_druids.yaml | 11575 --------------- .../config/manager/kustomization.yaml | 23 - druid-operator/config/manager/manager.yaml | 117 - .../config/prometheus/kustomization.yaml | 17 - druid-operator/config/prometheus/monitor.yaml | 41 - .../rbac/auth_proxy_client_clusterrole.yaml | 31 - .../config/rbac/auth_proxy_role.yaml | 39 - .../config/rbac/auth_proxy_role_binding.yaml | 34 - .../config/rbac/auth_proxy_service.yaml | 36 - .../druid_druidingestion_editor_role.yaml | 46 - .../druid_druidingestion_viewer_role.yaml | 42 - .../config/rbac/druid_editor_role.yaml | 46 - .../config/rbac/druid_viewer_role.yaml | 42 - druid-operator/config/rbac/kustomization.yaml | 33 - .../config/rbac/leader_election_role.yaml | 59 - .../rbac/leader_election_role_binding.yaml | 34 - druid-operator/config/rbac/role.yaml | 167 - druid-operator/config/rbac/role_binding.yaml | 34 - .../config/rbac/service_account.yaml | 27 - .../config/samples/druid_v1alpha1_druid.yaml | 27 - .../druid_v1alpha1_druidingestion.yaml | 90 - .../druid/additional_containers.go | 89 - .../druid/additional_containers_test.go | 84 - .../controllers/druid/configuration.go | 143 - .../druid/deep_storage_dep_mgmt.go | 54 - .../controllers/druid/druid_controller.go | 141 - .../druid/druid_controller_test.go | 351 - .../controllers/druid/dynamic_config.go | 177 - .../druid/ext/deep_storage_default_ext.go | 28 - .../druid/ext/metadata_store_default_ext.go | 28 - .../druid/ext/zookeeper_default_ext.go | 28 - .../controllers/druid/finalizers.go | 149 - .../controllers/druid/finalizers_test.go | 160 - druid-operator/controllers/druid/handler.go | 1429 -- .../controllers/druid/handler_test.go | 372 - druid-operator/controllers/druid/interface.go | 308 - .../druid/metadata_store_dep_mgmt.go | 54 - druid-operator/controllers/druid/ordering.go | 54 - .../controllers/druid/ordering_test.go | 72 - .../controllers/druid/predicates.go | 65 - druid-operator/controllers/druid/status.go | 104 - .../controllers/druid/suite_test.go | 136 - .../druid/testdata/additional-containers.yaml | 90 - .../druid/testdata/broker-config-map.yaml | 66 - .../druid/testdata/broker-deployment.yaml | 111 - .../testdata/broker-headless-service.yaml | 42 - .../broker-load-balancer-service.yaml | 39 - .../broker-pod-disruption-budget.yaml | 35 - .../testdata/broker-statefulset-noprobe.yaml | 103 - .../testdata/broker-statefulset-sidecar.yaml | 143 - .../druid/testdata/broker-statefulset.yaml | 120 - .../druid/testdata/common-config-map.yaml | 82 - .../testdata/druid-smoke-test-cluster.yaml | 268 - .../druid/testdata/druid-test-cr-noprobe.yaml | 362 - .../druid/testdata/druid-test-cr-sidecar.yaml | 393 - .../druid/testdata/druid-test-cr.yaml | 378 - .../druid/testdata/finalizers.yaml | 85 - .../controllers/druid/testdata/ordering.yaml | 134 - .../druid/testdata/volume-expansion.yaml | 99 - druid-operator/controllers/druid/types.go | 32 - druid-operator/controllers/druid/util.go | 148 - druid-operator/controllers/druid/util_test.go | 87 - .../controllers/druid/volume_expansion.go | 203 - .../druid/volume_expansion_test.go | 84 - .../controllers/druid/zookeeper_dep_mgmt.go | 54 - .../druid/zookeeper_dep_mgmt_test.go | 48 - .../ingestion/ingestion_controller.go | 100 - .../controllers/ingestion/reconciler.go | 711 - .../controllers/ingestion/reconciler_test.go | 633 - druid-operator/docs/README.md | 60 - .../docs/api_specifications/druid.md | 2942 ---- druid-operator/docs/dev_doc.md | 80 - druid-operator/docs/druid_cr.md | 136 - druid-operator/docs/examples.md | 285 - druid-operator/docs/features.md | 459 - druid-operator/docs/getting_started.md | 101 - druid-operator/docs/images/druid-operator.png | Bin 6337735 -> 0 bytes .../docs/kubebuilder_v3_migration.md | 166 - druid-operator/e2e/Dockerfile-testpod | 23 - druid-operator/e2e/configs/druid-cr.yaml | 319 - .../e2e/configs/druid-ingestion-cr.yaml | 88 - druid-operator/e2e/configs/druid-mmless.yaml | 377 - .../e2e/configs/extra-common-config.yaml | 299 - .../e2e/configs/kafka-ingestion-native.yaml | 83 - .../e2e/configs/kafka-ingestion.yaml | 104 - .../e2e/configs/minio-operator-override.yaml | 22 - .../e2e/configs/minio-tenant-override.yaml | 24 - druid-operator/e2e/druid-ingestion-test.sh | 56 - druid-operator/e2e/e2e.sh | 119 - druid-operator/e2e/kind.sh | 68 - druid-operator/e2e/monitor-task.sh | 42 - .../e2e/test-extra-common-config.sh | 53 - druid-operator/e2e/wikipedia-test.sh | 61 - druid-operator/examples/aws/eks.yaml | 444 - druid-operator/examples/ingestion.yaml | 90 - .../examples/kafka-ingestion-native.yaml | 83 - druid-operator/examples/kafka-ingestion.yaml | 104 - druid-operator/examples/tiny-cluster-hpa.yaml | 227 - .../examples/tiny-cluster-mmless.yaml | 385 - druid-operator/examples/tiny-cluster-zk.yaml | 86 - druid-operator/examples/tiny-cluster.yaml | 382 - druid-operator/go.mod | 95 - druid-operator/go.sum | 290 - druid-operator/hack/api-docs/config.json | 29 - .../hack/api-docs/template/members.tpl | 64 - druid-operator/hack/api-docs/template/pkg.tpl | 64 - .../hack/api-docs/template/type.tpl | 78 - druid-operator/hack/boilerplate.go.txt | 20 - druid-operator/main.go | 142 - druid-operator/pkg/druidapi/druidapi.go | 180 - druid-operator/pkg/druidapi/druidapi_test.go | 185 - druid-operator/pkg/http/http.go | 92 - druid-operator/pkg/util/util.go | 98 - druid-operator/pkg/util/util_test.go | 184 - .../tutorials/druid-on-kind/README.md | 79 - .../tutorials/druid-on-kind/druid-mmless.yaml | 377 - pom.xml | 1 - 154 files changed, 59008 deletions(-) delete mode 100644 druid-operator/.dockerignore delete mode 100644 druid-operator/.gitignore delete mode 100644 druid-operator/ADOPTERS.md delete mode 100644 druid-operator/Dockerfile delete mode 100644 druid-operator/Makefile delete mode 100644 druid-operator/PROJECT delete mode 100644 druid-operator/README.md delete mode 100644 druid-operator/apis/druid/v1alpha1/doc.go delete mode 100644 druid-operator/apis/druid/v1alpha1/druid_types.go delete mode 100644 druid-operator/apis/druid/v1alpha1/druidingestion_types.go delete mode 100644 druid-operator/apis/druid/v1alpha1/groupversion_info.go delete mode 100644 druid-operator/apis/druid/v1alpha1/zz_generated.deepcopy.go delete mode 100644 druid-operator/chart/.helmignore delete mode 100644 druid-operator/chart/Chart.yaml delete mode 100644 druid-operator/chart/crds/druid.apache.org_druidingestions.yaml delete mode 100644 druid-operator/chart/crds/druid.apache.org_druids.yaml delete mode 100644 druid-operator/chart/templates/NOTES.txt delete mode 100644 druid-operator/chart/templates/_helpers.tpl delete mode 100644 druid-operator/chart/templates/deployment.yaml delete mode 100644 druid-operator/chart/templates/rbac_leader_election.yaml delete mode 100644 druid-operator/chart/templates/rbac_manager.yaml delete mode 100644 druid-operator/chart/templates/rbac_metrics.yaml delete mode 100644 druid-operator/chart/templates/rbac_proxy.yaml delete mode 100644 druid-operator/chart/templates/service.yaml delete mode 100644 druid-operator/chart/templates/service_account.yaml delete mode 100644 druid-operator/chart/values.yaml delete mode 100644 druid-operator/config/crd/bases/druid.apache.org_druidingestions.yaml delete mode 100644 druid-operator/config/crd/bases/druid.apache.org_druids.yaml delete mode 100644 druid-operator/config/crd/kustomization.yaml delete mode 100644 druid-operator/config/crd/kustomizeconfig.yaml delete mode 100644 druid-operator/config/crd/patches/cainjection_in_druid_druidingestions.yaml delete mode 100644 druid-operator/config/crd/patches/cainjection_in_druids.yaml delete mode 100644 druid-operator/config/crd/patches/webhook_in_druid_druidingestions.yaml delete mode 100644 druid-operator/config/crd/patches/webhook_in_druids.yaml delete mode 100644 druid-operator/config/default/kustomization.yaml delete mode 100644 druid-operator/config/default/manager_auth_proxy_patch.yaml delete mode 100644 druid-operator/config/default/manager_config_patch.yaml delete mode 100644 druid-operator/config/druid.apache.org_druids.yaml delete mode 100644 druid-operator/config/manager/kustomization.yaml delete mode 100644 druid-operator/config/manager/manager.yaml delete mode 100644 druid-operator/config/prometheus/kustomization.yaml delete mode 100644 druid-operator/config/prometheus/monitor.yaml delete mode 100644 druid-operator/config/rbac/auth_proxy_client_clusterrole.yaml delete mode 100644 druid-operator/config/rbac/auth_proxy_role.yaml delete mode 100644 druid-operator/config/rbac/auth_proxy_role_binding.yaml delete mode 100644 druid-operator/config/rbac/auth_proxy_service.yaml delete mode 100644 druid-operator/config/rbac/druid_druidingestion_editor_role.yaml delete mode 100644 druid-operator/config/rbac/druid_druidingestion_viewer_role.yaml delete mode 100644 druid-operator/config/rbac/druid_editor_role.yaml delete mode 100644 druid-operator/config/rbac/druid_viewer_role.yaml delete mode 100644 druid-operator/config/rbac/kustomization.yaml delete mode 100644 druid-operator/config/rbac/leader_election_role.yaml delete mode 100644 druid-operator/config/rbac/leader_election_role_binding.yaml delete mode 100644 druid-operator/config/rbac/role.yaml delete mode 100644 druid-operator/config/rbac/role_binding.yaml delete mode 100644 druid-operator/config/rbac/service_account.yaml delete mode 100644 druid-operator/config/samples/druid_v1alpha1_druid.yaml delete mode 100644 druid-operator/config/samples/druid_v1alpha1_druidingestion.yaml delete mode 100644 druid-operator/controllers/druid/additional_containers.go delete mode 100644 druid-operator/controllers/druid/additional_containers_test.go delete mode 100644 druid-operator/controllers/druid/configuration.go delete mode 100644 druid-operator/controllers/druid/deep_storage_dep_mgmt.go delete mode 100644 druid-operator/controllers/druid/druid_controller.go delete mode 100644 druid-operator/controllers/druid/druid_controller_test.go delete mode 100644 druid-operator/controllers/druid/dynamic_config.go delete mode 100644 druid-operator/controllers/druid/ext/deep_storage_default_ext.go delete mode 100644 druid-operator/controllers/druid/ext/metadata_store_default_ext.go delete mode 100644 druid-operator/controllers/druid/ext/zookeeper_default_ext.go delete mode 100644 druid-operator/controllers/druid/finalizers.go delete mode 100644 druid-operator/controllers/druid/finalizers_test.go delete mode 100644 druid-operator/controllers/druid/handler.go delete mode 100644 druid-operator/controllers/druid/handler_test.go delete mode 100644 druid-operator/controllers/druid/interface.go delete mode 100644 druid-operator/controllers/druid/metadata_store_dep_mgmt.go delete mode 100644 druid-operator/controllers/druid/ordering.go delete mode 100644 druid-operator/controllers/druid/ordering_test.go delete mode 100644 druid-operator/controllers/druid/predicates.go delete mode 100644 druid-operator/controllers/druid/status.go delete mode 100644 druid-operator/controllers/druid/suite_test.go delete mode 100644 druid-operator/controllers/druid/testdata/additional-containers.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-config-map.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-deployment.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-headless-service.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-load-balancer-service.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-pod-disruption-budget.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-statefulset-noprobe.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-statefulset-sidecar.yaml delete mode 100644 druid-operator/controllers/druid/testdata/broker-statefulset.yaml delete mode 100644 druid-operator/controllers/druid/testdata/common-config-map.yaml delete mode 100644 druid-operator/controllers/druid/testdata/druid-smoke-test-cluster.yaml delete mode 100644 druid-operator/controllers/druid/testdata/druid-test-cr-noprobe.yaml delete mode 100644 druid-operator/controllers/druid/testdata/druid-test-cr-sidecar.yaml delete mode 100644 druid-operator/controllers/druid/testdata/druid-test-cr.yaml delete mode 100644 druid-operator/controllers/druid/testdata/finalizers.yaml delete mode 100644 druid-operator/controllers/druid/testdata/ordering.yaml delete mode 100644 druid-operator/controllers/druid/testdata/volume-expansion.yaml delete mode 100644 druid-operator/controllers/druid/types.go delete mode 100644 druid-operator/controllers/druid/util.go delete mode 100644 druid-operator/controllers/druid/util_test.go delete mode 100644 druid-operator/controllers/druid/volume_expansion.go delete mode 100644 druid-operator/controllers/druid/volume_expansion_test.go delete mode 100644 druid-operator/controllers/druid/zookeeper_dep_mgmt.go delete mode 100644 druid-operator/controllers/druid/zookeeper_dep_mgmt_test.go delete mode 100644 druid-operator/controllers/ingestion/ingestion_controller.go delete mode 100644 druid-operator/controllers/ingestion/reconciler.go delete mode 100644 druid-operator/controllers/ingestion/reconciler_test.go delete mode 100644 druid-operator/docs/README.md delete mode 100644 druid-operator/docs/api_specifications/druid.md delete mode 100644 druid-operator/docs/dev_doc.md delete mode 100644 druid-operator/docs/druid_cr.md delete mode 100644 druid-operator/docs/examples.md delete mode 100644 druid-operator/docs/features.md delete mode 100644 druid-operator/docs/getting_started.md delete mode 100644 druid-operator/docs/images/druid-operator.png delete mode 100644 druid-operator/docs/kubebuilder_v3_migration.md delete mode 100644 druid-operator/e2e/Dockerfile-testpod delete mode 100644 druid-operator/e2e/configs/druid-cr.yaml delete mode 100644 druid-operator/e2e/configs/druid-ingestion-cr.yaml delete mode 100644 druid-operator/e2e/configs/druid-mmless.yaml delete mode 100644 druid-operator/e2e/configs/extra-common-config.yaml delete mode 100644 druid-operator/e2e/configs/kafka-ingestion-native.yaml delete mode 100644 druid-operator/e2e/configs/kafka-ingestion.yaml delete mode 100644 druid-operator/e2e/configs/minio-operator-override.yaml delete mode 100644 druid-operator/e2e/configs/minio-tenant-override.yaml delete mode 100644 druid-operator/e2e/druid-ingestion-test.sh delete mode 100755 druid-operator/e2e/e2e.sh delete mode 100755 druid-operator/e2e/kind.sh delete mode 100644 druid-operator/e2e/monitor-task.sh delete mode 100644 druid-operator/e2e/test-extra-common-config.sh delete mode 100644 druid-operator/e2e/wikipedia-test.sh delete mode 100644 druid-operator/examples/aws/eks.yaml delete mode 100644 druid-operator/examples/ingestion.yaml delete mode 100644 druid-operator/examples/kafka-ingestion-native.yaml delete mode 100644 druid-operator/examples/kafka-ingestion.yaml delete mode 100644 druid-operator/examples/tiny-cluster-hpa.yaml delete mode 100644 druid-operator/examples/tiny-cluster-mmless.yaml delete mode 100644 druid-operator/examples/tiny-cluster-zk.yaml delete mode 100644 druid-operator/examples/tiny-cluster.yaml delete mode 100644 druid-operator/go.mod delete mode 100644 druid-operator/go.sum delete mode 100644 druid-operator/hack/api-docs/config.json delete mode 100644 druid-operator/hack/api-docs/template/members.tpl delete mode 100644 druid-operator/hack/api-docs/template/pkg.tpl delete mode 100644 druid-operator/hack/api-docs/template/type.tpl delete mode 100644 druid-operator/hack/boilerplate.go.txt delete mode 100644 druid-operator/main.go delete mode 100644 druid-operator/pkg/druidapi/druidapi.go delete mode 100644 druid-operator/pkg/druidapi/druidapi_test.go delete mode 100644 druid-operator/pkg/http/http.go delete mode 100644 druid-operator/pkg/util/util.go delete mode 100644 druid-operator/pkg/util/util_test.go delete mode 100644 druid-operator/tutorials/druid-on-kind/README.md delete mode 100644 druid-operator/tutorials/druid-on-kind/druid-mmless.yaml diff --git a/druid-operator/.dockerignore b/druid-operator/.dockerignore deleted file mode 100644 index df1f0d33cbf2..000000000000 --- a/druid-operator/.dockerignore +++ /dev/null @@ -1,20 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file -# Ignore build and test binaries. -bin/ -testbin/ diff --git a/druid-operator/.gitignore b/druid-operator/.gitignore deleted file mode 100644 index fac433609e9f..000000000000 --- a/druid-operator/.gitignore +++ /dev/null @@ -1,80 +0,0 @@ -# Temporary Build Files -build/_output -build/_test -bin -# Created by https://www.gitignore.io/api/go,vim,emacs,visualstudiocode -### Emacs ### -# -*- mode: gitignore; -*- -*~ -\#*\# -/.emacs.desktop -/.emacs.desktop.lock -*.elc -auto-save-list -tramp -.\#* -# Org-mode -.org-id-locations -*_archive -# flymake-mode -*_flymake.* -# eshell files -/eshell/history -/eshell/lastdir -# elpa packages -/elpa/ -# reftex files -*.rel -# AUCTeX auto folder -/auto/ -# cask packages -.cask/ -dist/ -# Flycheck -flycheck_*.el -# server auth directory -/server/ -# projectiles files -.projectile -projectile-bookmarks.eld -# directory configuration -.dir-locals.el -# saveplace -places -# url cache -url/cache/ -# cedet -ede-projects.el -# smex -smex-items -# company-statistics -company-statistics-cache.el -# anaconda-mode -anaconda-mode/ -### Go ### -# Binaries for programs and plugins -*.exe -*.exe~ -*.dll -*.so -*.dylib -# Test binary, build with 'go test -c' -*.test -# Output of the go coverage tool, specifically when used with LiteIDE -*.out -### Vim ### -# swap -.sw[a-p] -.*.sw[a-p] -# session -Session.vim -# temporary -.netrwhist -# auto-generated tag files -tags -### VisualStudioCode ### -.vscode/* -.history -.idea* -.idea/* -# End of https://www.gitignore.io/api/go,vim,emacs,visualstudiocode diff --git a/druid-operator/ADOPTERS.md b/druid-operator/ADOPTERS.md deleted file mode 100644 index b53fa3e5d986..000000000000 --- a/druid-operator/ADOPTERS.md +++ /dev/null @@ -1,32 +0,0 @@ - - -# Druid Operator Adopters - -This is a list of production adopters of Druid Operator: - -| Company | Industry | -| :--- |:----------------------------------| -|[Dailymotion](https://dailymotion.com/)| Video streaming, Adtech | -|[AppsFlyer](https://www.appsflyer.com/)| Mobile Marketing Software, Adtech | - -Open Source Solutions based on Druid Operator: -| Company | Industry | -| :--- |:----------------------------------| -|[AWS](https://github.com/aws-solutions/scalable-analytics-using-apache-druid-on-aws)| diff --git a/druid-operator/Dockerfile b/druid-operator/Dockerfile deleted file mode 100644 index 7e76b7fbade8..000000000000 --- a/druid-operator/Dockerfile +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -#------------------------------------------------------------------------- -# Build the manager binary -FROM golang:1.21 as builder -ARG TARGETOS -ARG TARGETARCH - -WORKDIR /workspace -# Copy the Go Modules manifests -COPY go.mod go.mod -COPY go.sum go.sum -# cache deps before building and copying source so that we don't need to re-download as much -# and so that source changes don't invalidate our downloaded layer -RUN go mod download - -# Copy the go source -COPY main.go main.go -COPY apis/ apis/ -COPY controllers/ controllers/ -COPY pkg/ pkg/ - -# Build -# the GOARCH has not a default value to allow the binary be built according to the host where the command -# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO -# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore, -# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform. -RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go - -# Use distroless as minimal base image to package the manager binary -# Refer to https://github.com/GoogleContainerTools/distroless for more details -FROM gcr.io/distroless/static:nonroot -WORKDIR / -COPY --from=builder /workspace/manager . -USER 65532:65532 - -ENTRYPOINT ["/manager"] diff --git a/druid-operator/Makefile b/druid-operator/Makefile deleted file mode 100644 index 5fccbe50260c..000000000000 --- a/druid-operator/Makefile +++ /dev/null @@ -1,277 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -# IMG TAG -IMG_TAG ?= "latest" -TEST_IMG_TAG ?= "test" -# Image URL to use all building/pushing image targets -IMG ?= "datainfrahq/druid-operator" -# Local Image URL to be pushed to kind registery -IMG_KIND ?= "localhost:5001/druid-operator" -# NAMESPACE for druid operator e2e -NAMESPACE_DRUID_OPERATOR ?= "druid-operator-system" -# NAMESPACE for zk operator e2e -NAMESPACE_ZK_OPERATOR ?= "zk-operator" -# NAMESPACE for zk operator e2e -NAMESPACE_MINIO_OPERATOR ?= "minio-operator" -# MinIO version to install. Specific version is set to avoid breaking changes -# using latest version. This version is tested with the operator. -MINIO_VERSION ?= "6.0.4" -# NAMESPACE for druid app e2e -NAMESPACE_DRUID ?= "druid" - -# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. -ENVTEST_K8S_VERSION = 1.26.0 - -# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) -ifeq (,$(shell go env GOBIN)) -GOBIN=$(shell go env GOPATH)/bin -else -GOBIN=$(shell go env GOBIN) -endif - -# Setting SHELL to bash allows bash commands to be executed by recipes. -# Options are set to exit when a recipe line exits non-zero or a piped command fails. -SHELL = /usr/bin/env bash -o pipefail -.SHELLFLAGS = -ec - -.PHONY: all -all: build - -##@ General - -# The help target prints out all targets with their descriptions organized -# beneath their categories. The categories are represented by '##@' and the -# target descriptions by '##'. The awk commands is responsible for reading the -# entire set of makefiles included in this invocation, looking for lines of the -# file as xyz: ## something, and then pretty-format the target and help. Then, -# if there's a line with ##@ something, that gets pretty-printed as a category. -# More info on the usage of ANSI control characters for terminal formatting: -# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters -# More info on the awk command: -# http://linuxcommand.org/lc3_adv_awk.php - -.PHONY: help -help: ## Display this help. - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) - -##@ Development - -.PHONY: kind -kind: ## Bootstrap Kind Locally - sh e2e/kind.sh - -.PHONY: manifests -manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. - $(CONTROLLER_GEN) crd:generateEmbeddedObjectMeta=true rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases - $(CONTROLLER_GEN) crd:generateEmbeddedObjectMeta=true paths="./..." output:crd:artifacts:config=chart/crds/ - -.PHONY: generate -generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. - $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..." - -.PHONY: fmt -fmt: ## Run go fmt against code. - go fmt ./... - -.PHONY: vet -vet: ## Run go vet against code. - go vet ./... - -##@ Test -.PHONY: test -test: manifests generate fmt vet envtest ## Run tests. - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./... -coverprofile cover.out - -.PHONY: e2e -e2e: ## Runs e2e tests - e2e/e2e.sh - -.PHONY: docker-build-local-test -docker-build-local-test: ## Build docker image with the manager for test on kind. - docker build -t ${IMG_KIND}:${TEST_IMG_TAG} -f e2e/Dockerfile-testpod . - -.PHONY: docker-push-local-test -docker-push-local-test: ## Push docker image with the manager to kind registry. - docker push ${IMG_KIND}:${TEST_IMG_TAG} - -.PHONY: deploy-testjob -deploy-testjob: ## Run a wikipedia test pod - kubectl create job wiki-test --image=${IMG_KIND}:${TEST_IMG_TAG} -- sh /wikipedia-test.sh - JOB_ID="wiki-test" bash e2e/monitor-task.sh - -.PHONY: deploy-testingestionjob -deploy-testingestionjob: ## wait for the druidIngestion to complete and then verify dataset - kubectl create job ingestion-test --image=${IMG_KIND}:${TEST_IMG_TAG} -- sh /druid-ingestion-test.sh ${TASK_ID} - JOB_ID="ingestion-test" bash e2e/monitor-task.sh - -.PHONY: helm-install-druid-operator -helm-install-druid-operator: ## Helm install to deploy the druid operator - helm upgrade --install \ - --namespace ${NAMESPACE_DRUID_OPERATOR} \ - --create-namespace \ - ${NAMESPACE_DRUID_OPERATOR} chart/ \ - --set image.repository=${IMG_KIND} \ - --set image.tag=${IMG_TAG} - -.PHONY: helm-minio-install -helm-minio-install: ## Helm deploy minio operator and minio - helm repo add minio https://operator.min.io/ - helm repo update minio - helm upgrade --install \ - --namespace ${NAMESPACE_MINIO_OPERATOR} \ - --create-namespace \ - ${NAMESPACE_MINIO_OPERATOR} minio/operator \ - --version ${MINIO_VERSION} \ - -f e2e/configs/minio-operator-override.yaml - helm upgrade --install \ - --namespace ${NAMESPACE_DRUID} \ - --version ${MINIO_VERSION} \ - --create-namespace \ - ${NAMESPACE_DRUID}-minio minio/tenant \ - -f e2e/configs/minio-tenant-override.yaml - -##@ Build - -.PHONY: build -build: manifests generate fmt vet ## Build manager binary. - go build -o bin/manager main.go - -.PHONY: run -run: manifests generate fmt vet ## Run a controller from your host. - go run ./main.go - -# If you wish built the manager image targeting other platforms you can use the --platform flag. -# (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it. -# More info: https://docs.docker.com/develop/develop-images/build_enhancements/ -.PHONY: docker-build -docker-build: test ## Build docker image with the manager. - docker build -t ${IMG}:${IMG_TAG} . - -.PHONY: docker-push -docker-push: ## Push docker image with the manager. - docker push ${IMG}:${IMG_TAG} - -.PHONY: docker-build-local -docker-build-local: ## Build docker image with the manager for kind registry. - docker build -t ${IMG_KIND}:${IMG_TAG} . - -.PHONY: docker-push-local -docker-push-local: ## Push docker image with the manager to kind registry. - docker push ${IMG_KIND}:${IMG_TAG} - -# PLATFORMS defines the target platforms for the manager image be build to provide support to multiple -# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to: -# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/ -# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/ -# - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=> then the export will fail) -# To properly provided solutions that supports more than one platform you should use this option. -PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le -.PHONY: docker-buildx -docker-buildx: test ## Build and push docker image for the manager for cross-platform support - # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile - sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross - - docker buildx create --name project-v3-builder - docker buildx use project-v3-builder - - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG}:${IMG_TAG} -f Dockerfile.cross . - - docker buildx rm project-v3-builder - rm Dockerfile.cross - -##@ Deployment - -ifndef ignore-not-found - ignore-not-found = false -endif - -.PHONY: install -install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. - $(KUSTOMIZE) build config/crd | kubectl apply --server-side -f - - -.PHONY: uninstall -uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f - - -.PHONY: deploy -deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config. - cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}:${IMG_TAG} - $(KUSTOMIZE) build config/default | kubectl apply --server-side -f - - -.PHONY: undeploy -undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. - $(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f - - -##@ Helm -.PHONY: helm-generate -helm-generate: ## Generate the Helm chart directory - $(KUSTOMIZE) build config/crd > chart/crds/druid.apache.org_druids.yaml - -.PHONY: helm-lint -helm-lint: ## Lint Helm chart. - helm lint ./chart - -.PHONY: helm-template -helm-template: ## Run Helm template. - helm -n druid-operator-system template --create-namespace ${NAMESPACE_DRUID_OPERATOR} ./chart --debug - -##@ Documentation - -.PHONY: api-docs -api-docs: gen-crd-api-reference-docs ## Generate API reference documentation - $(GEN_CRD_API_REFERENCE_DOCS) -api-dir=./apis/druid/v1alpha1 -config=./hack/api-docs/config.json -template-dir=./hack/api-docs/template -out-file=./docs/api_specifications/druid.md - -##@ Build Dependencies - -## Location to install dependencies to -LOCALBIN ?= $(shell pwd)/bin -$(LOCALBIN): - mkdir -p $(LOCALBIN) - -## Tool Binaries -KUSTOMIZE ?= $(LOCALBIN)/kustomize -CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen -GEN_CRD_API_REFERENCE_DOCS = $(LOCALBIN)/gen-crd-api-reference-docs -ENVTEST ?= $(LOCALBIN)/setup-envtest - -## Tool Versions -KUSTOMIZE_VERSION ?= v3.8.7 -CONTROLLER_TOOLS_VERSION ?= v0.14.0 -GEN_CRD_API_REF_VERSION ?= v0.3.0 - -KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" -.PHONY: kustomize -kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading. -$(KUSTOMIZE): $(LOCALBIN) - @if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then \ - echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing."; \ - rm -rf $(LOCALBIN)/kustomize; \ - fi - test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } - -.PHONY: controller-gen -controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten. -$(CONTROLLER_GEN): $(LOCALBIN) - test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \ - GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) - -.PHONY: envtest -envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. -$(ENVTEST): $(LOCALBIN) - test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest - -.PHONY: gen-crd-api-reference-docs -gen-crd-api-reference-docs: $(GEN_CRD_API_REFERENCE_DOCS) -$(GEN_CRD_API_REFERENCE_DOCS): $(LOCALBIN) - GOBIN=$(LOCALBIN) go install github.com/ahmetb/gen-crd-api-reference-docs@$(GEN_CRD_API_REF_VERSION) diff --git a/druid-operator/PROJECT b/druid-operator/PROJECT deleted file mode 100644 index 5e1e782ca565..000000000000 --- a/druid-operator/PROJECT +++ /dev/null @@ -1,46 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -# Code generated by tool. DO NOT EDIT. -# This file is used to track the info used to scaffold your project -# and allow the plugins properly work. -# More info: https://book.kubebuilder.io/reference/project-config.html -domain: apache.org -layout: -- go.kubebuilder.io/v3 -multigroup: true -projectName: druid-operator -repo: github.com/datainfrahq/druid-operator -resources: -- api: - crdVersion: v1 - namespaced: true - controller: true - domain: apache.org - group: druid - kind: Druid - path: github.com/datainfrahq/druid-operator/apis/druid/v1alpha1 - version: v1alpha1 -- api: - crdVersion: v1 - namespaced: true - controller: true - domain: apache.org - group: druid - kind: DruidIngestion - path: github.com/datainfrahq/druid-operator/apis/druid/v1alpha1 - version: v1alpha1 -version: "3" diff --git a/druid-operator/README.md b/druid-operator/README.md deleted file mode 100644 index 0b6253022b5d..000000000000 --- a/druid-operator/README.md +++ /dev/null @@ -1,72 +0,0 @@ - - -

-
- Kubernetes Operator For Apache Druid -

- -
- -
- -- Druid Operator provisions and manages [Apache Druid](https://druid.apache.org/) cluster on kubernetes. -- Druid Operator is designed to provision and manage [Apache Druid](https://druid.apache.org/) in distributed mode only. -- It is built in Golang using [kubebuilder](https://github.com/kubernetes-sigs/kubebuilder). -- Refer to [Documentation](./docs/README.md) for getting started. - -### Newsletter - Monthly updates on running druid on kubernetes. -- [Apache Druid on Kubernetes](https://druidonk8s.substack.com/) - -### Talks and Blogs on Druid Operator - -- [Druid Summit 2023](https://druidsummit.org/agenda?agendaPath=session/1256850) -- [Dok Community](https://www.youtube.com/live/X4A3lWJRGHk?feature=share) -- [Druid Summit](https://youtu.be/UqPrttXRBDg) -- [Druid Operator Blog](https://www.cloudnatively.com/apache-druid-on-kubernetes/) -- [Druid On K8s Without ZK](https://youtu.be/TRYOvkz5Wuw) -- [Building Apache Druid on Kubernetes: How Dailymotion Serves Partner Data](https://youtu.be/FYFq-tGJOQk) - -### Supported CR's - -- The operator supports CR's of type ```Druid``` and ```DruidIngestion```. -- ```Druid``` and ```DruidIngestion``` CR belongs to api Group ```druid.apache.org``` and version ```v1alpha1``` - -### Druid Operator Architecture - -![Druid Operator](docs/images/druid-operator.png?raw=true "Druid Operator") - -### Notifications - -- The project moved to Kubebuilder v3 which requires a [manual change](docs/kubebuilder_v3_migration.md) in the operator. -- Users are encourage to use operator version 0.0.9+. -- The operator has moved from HPA apiVersion autoscaling/v2beta1 to autoscaling/v2 API users will need to update there HPA Specs according v2 api in order to work with the latest druid-operator release. -- druid-operator has moved Ingress apiVersion networking/v1beta1 to networking/v1. Users will need to update there Ingress Spec in the druid CR according networking/v1 syntax. In case users are using schema validated CRD, the CRD will also be needed to be updated. -- The v1.0.0 release for druid-operator is compatible with k8s version 1.25. HPA API is kept to version v2beta2. -- Release v1.2.2 had a bug for namespace scoped operator deployments, this is fixed in 1.2.3. - -### Kubernetes version compatibility - -| druid-operator | 0.0.9 | v1.0.0 | v1.1.0 | v1.2.2 | v1.2.3 | v1.2.4 | v1.2.5 | v1.3.0 | -| :------------- | :-------------: | :-----: | :---: | :---: | :---: | :---: | :---: | :---: | -| kubernetes <= 1.20 | :x:| :x: | :x: | :x: | :x: | :x: | :x: | :x: | -| kubernetes == 1.21 | :white_check_mark:| :x: | :x: | :x: | :x: | :x: | :x: | :x: | -| kubernetes >= 1.22 and <= 1.25 | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| kubernetes > 1.25 and <= 1.33.1 | :x: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | - diff --git a/druid-operator/apis/druid/v1alpha1/doc.go b/druid-operator/apis/druid/v1alpha1/doc.go deleted file mode 100644 index 2d7b7b006623..000000000000 --- a/druid-operator/apis/druid/v1alpha1/doc.go +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// +kubebuilder:object:generate=true -// +groupName=druid.apache.org -package v1alpha1 diff --git a/druid-operator/apis/druid/v1alpha1/druid_types.go b/druid-operator/apis/druid/v1alpha1/druid_types.go deleted file mode 100644 index bb62d6941f9e..000000000000 --- a/druid-operator/apis/druid/v1alpha1/druid_types.go +++ /dev/null @@ -1,612 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package v1alpha1 - -import ( - "encoding/json" - - druidapi "github.com/datainfrahq/druid-operator/pkg/druidapi" - appsv1 "k8s.io/api/apps/v1" - autoscalev2 "k8s.io/api/autoscaling/v2" - v1 "k8s.io/api/core/v1" - networkingv1 "k8s.io/api/networking/v1" - policyv1 "k8s.io/api/policy/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" -) - -// druid-operator deploys a druid cluster from given spec below, based on the spec it would create following -// k8s resources -// - one ConfigMap containing common.runtime.properties -// - for each item in the "nodes" field in spec -// - one StatefulSet that manages one or more Druid pods with same config -// - one ConfigMap containing runtime.properties, jvm.config, log4j.xml contents to be used by above Pods -// - zero or more Headless/ClusterIP/LoadBalancer etc Service resources backed by above Pods -// - optional PodDisruptionBudget resource for the StatefulSet -// - -// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! -// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. - -// AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. -// (will be part of Kubernetes native in the future: -// https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary). -type AdditionalContainer struct { - // RunAsInit indicate whether this should be an init container. - // +optional - RunAsInit bool `json:"runAsInit"` - - // Image Image of the additional container. - // +required - Image string `json:"image"` - - // ContainerName name of the additional container. - // +required - ContainerName string `json:"containerName"` - - // Command command for the additional container. - // +required - Command []string `json:"command"` - - // ImagePullPolicy If not present, will be taken from top level spec. - // +optional - ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` - - // Args Arguments to call the command. - // +optional - Args []string `json:"args,omitempty"` - - // ContainerSecurityContext If not present, will be taken from top level pod. - // +optional - ContainerSecurityContext *v1.SecurityContext `json:"securityContext,omitempty"` - - // Resources Kubernetes Native `resources` specification. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - - // VolumeMounts Kubernetes Native `VolumeMount` specification. - // +optional - VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` - - // Env Environment variables for the additional container. - // +optional - Env []v1.EnvVar `json:"env,omitempty"` - - // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). - // +optional - EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` -} - -// DruidSpec defines the desired state of the Druid cluster. -type DruidSpec struct { - - // Ignored is now deprecated API. In order to avoid reconciliation of objects use the - // `druid.apache.org/ignored: "true"` annotation. - // +optional - // +kubebuilder:default:=false - Ignored bool `json:"ignored,omitempty"` - - // CommonRuntimeProperties Content fo the `common.runtime.properties` configuration file. - // +required - CommonRuntimeProperties string `json:"common.runtime.properties"` - - // ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the - // common configuration path. - // +optional - ExtraCommonConfig []*v1.ObjectReference `json:"extraCommonConfig"` - - // ForceDeleteStsPodOnError Delete the StatefulSet's pods if the StatefulSet is set to ordered ready. - // issue: https://github.com/kubernetes/kubernetes/issues/67250 - // doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback - // +optional - // +kubebuilder:default:=true - ForceDeleteStsPodOnError bool `json:"forceDeleteStsPodOnError,omitempty"` - - // ScalePvcSts When enabled, operator will allow volume expansion of StatefulSet's PVCs. - // +optional - // +kubebuilder:default:=false - ScalePvcSts bool `json:"scalePvcSts,omitempty"` - - // CommonConfigMountPath In-container directory to mount the Druid common configuration - // +optional - // +kubebuilder:default:="/opt/druid/conf/druid/cluster/_common" - CommonConfigMountPath string `json:"commonConfigMountPath"` - - // DisablePVCDeletionFinalizer Whether PVCs shall be deleted on the deletion of the Druid cluster. - // +optional - // +kubebuilder:default:=false - DisablePVCDeletionFinalizer bool `json:"disablePVCDeletionFinalizer,omitempty"` - - // DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned up by the operator. - // +optional - // +kubebuilder:default:=true - DeleteOrphanPvc bool `json:"deleteOrphanPvc"` - - // StartScript Path to Druid's start script to be run on start. - // +optional - // +kubebuilder:default:="/druid.sh" - StartScript string `json:"startScript"` - - // Image Required here or at the NodeSpec level. - // +optional - Image string `json:"image,omitempty"` - - // ServiceAccount - // +optional - ServiceAccount string `json:"serviceAccount,omitempty"` - - // ImagePullSecrets - // +optional - ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` - - // ImagePullPolicy - // +optional - // +kubebuilder:default:="IfNotPresent" - ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` - - // Env Environment variables for druid containers. - // +optional - Env []v1.EnvVar `json:"env,omitempty"` - - // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). - // +optional - EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` - - // JvmOptions Contents of the shared `jvm.options` configuration file for druid JVM processes. - // +optional - JvmOptions string `json:"jvm.options,omitempty"` - - // Log4jConfig contents `log4j.config` configuration file. - // +optional - Log4jConfig string `json:"log4j.config,omitempty"` - - // PodSecurityContext - // +optional - PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"` - - // ContainerSecurityContext - // +optional - ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"` - - // VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` specification. - // +optional - VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"` - - // VolumeMounts Kubernetes Native `VolumeMount` specification. - // +optional - VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` - - // Volumes Kubernetes Native `Volumes` specification. - // +optional - Volumes []v1.Volume `json:"volumes,omitempty"` - - // PodAnnotations Custom annotations to be populated in `Druid` pods. - // +optional - PodAnnotations map[string]string `json:"podAnnotations,omitempty"` - - // WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. - // if the same key is specified at both the DruidNodeSpec level and DruidSpec level, the DruidNodeSpec WorkloadAnnotations will take precedence. - // +optional - WorkloadAnnotations map[string]string `json:"workloadAnnotations,omitempty"` - - // PodManagementPolicy - // +optional - // +kubebuilder:default:="Parallel" - PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"` - - // PodLabels Custom labels to be populated in `Druid` pods. - // +optional - PodLabels map[string]string `json:"podLabels,omitempty"` - - // PriorityClassName Kubernetes native `priorityClassName` specification. - // +optional - PriorityClassName string `json:"priorityClassName,omitempty"` - - // UpdateStrategy - // +optional - UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"` - - // LivenessProbe - // Port is set to `druid.port` if not specified with httpGet handler. - // +optional - LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"` - - // ReadinessProbe - // Port is set to `druid.port` if not specified with httpGet handler. - // +optional - ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"` - - // StartUpProbe - // +optional - StartUpProbe *v1.Probe `json:"startUpProbe,omitempty"` - - // Services Kubernetes services to be created for each workload. - // +optional - Services []v1.Service `json:"services,omitempty"` - - // NodeSelector Kubernetes native `nodeSelector` specification. - // +optional - NodeSelector map[string]string `json:"nodeSelector,omitempty"` - - // Tolerations Kubernetes native `tolerations` specification. - // +optional - Tolerations []v1.Toleration `json:"tolerations,omitempty"` - - // Affinity Kubernetes native `affinity` specification. - // +optional - Affinity *v1.Affinity `json:"affinity,omitempty"` - - // Nodes a list of `Druid` Node types and their configurations. - // `DruidSpec` is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific - // `NodeSpec` level. - // +required - Nodes map[string]DruidNodeSpec `json:"nodes"` - - // AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. - // +optional - AdditionalContainer []AdditionalContainer `json:"additionalContainer,omitempty"` - - // RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: - // https://druid.apache.org/docs/latest/operations/rolling-updates.html - // If set to true then operator checks the rollout status of previous version workloads before updating the next. - // This will be done only for update actions. - // +optional - // +kubebuilder:default:=true - RollingDeploy bool `json:"rollingDeploy"` - - // DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components - // but it won't override existing probes - // +optional - // +kubebuilder:default:=true - DefaultProbes bool `json:"defaultProbes"` - - // Zookeeper IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. - // +optional - Zookeeper *ZookeeperSpec `json:"zookeeper,omitempty"` - - // MetadataStore IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. - // +optional - MetadataStore *MetadataStoreSpec `json:"metadataStore,omitempty"` - - // DeepStorage IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. - // +optional - DeepStorage *DeepStorageSpec `json:"deepStorage,omitempty"` - - // DimensionsMapPath Custom Dimension Map Path for statsd emitter. - // stastd documentation is described in the following documentation: - // https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html - // +optional - DimensionsMapPath string `json:"metricDimensions.json,omitempty"` - - // HdfsSite Contents of `hdfs-site.xml`. - // +optional - HdfsSite string `json:"hdfs-site.xml,omitempty"` - - // CoreSite Contents of `core-site.xml`. - // +optional - CoreSite string `json:"core-site.xml,omitempty"` - - // Dynamic Configurations for Druid. Applied through the dynamic configuration API. - // +optional - DynamicConfig runtime.RawExtension `json:"dynamicConfig,omitempty"` - - // +optional - Auth druidapi.Auth `json:"auth,omitempty"` - - // See v1.DNSPolicy for more details. - // +optional - DNSPolicy v1.DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` - - // See v1.PodDNSConfig for more details. - // +optional - DNSConfig *v1.PodDNSConfig `json:"dnsConfig,omitempty" protobuf:"bytes,26,opt,name=dnsConfig"` -} - -// DruidNodeSpec Specification of `Druid` Node type and its configurations. -// The key in following map can be arbitrary string that helps you identify resources for a specific nodeSpec. -// It is used in the Kubernetes resources' names, so it must be compliant with restrictions -// placed on Kubernetes resource names: -// https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ -type DruidNodeSpec struct { - // NodeDruid `Druid` node type. - // +required - // +kubebuilder:validation:Enum:=historical;overlord;middleManager;indexer;broker;coordinator;router - NodeType string `json:"nodeType"` - - // DruidPort Used by the `Druid` process. - // +required - DruidPort int32 `json:"druid.port"` - - // Kind Can be StatefulSet or Deployment. - // Note: volumeClaimTemplates are ignored when kind=Deployment - // +optional - // +kubebuilder:default:="StatefulSet" - Kind string `json:"kind,omitempty"` - - // Replicas replica of the workload - // +optional - // +kubebuilder:validation:Minimum=0 - Replicas int32 `json:"replicas"` - - // PodLabels Custom labels to be populated in the workload's pods. - // +optional - PodLabels map[string]string `json:"podLabels,omitempty"` - - // PodDisruptionBudgetSpec Kubernetes native `podDisruptionBudget` specification. - // +optional - PodDisruptionBudgetSpec *policyv1.PodDisruptionBudgetSpec `json:"podDisruptionBudgetSpec,omitempty"` - - // PriorityClassName Kubernetes native `priorityClassName` specification. - // +optional - PriorityClassName string `json:"priorityClassName,omitempty"` - - // RuntimeProperties Additional runtime configuration for the specific workload. - // +required - RuntimeProperties string `json:"runtime.properties"` - - // JvmOptions overrides `JvmOptions` at top level. - // +optional - JvmOptions string `json:"jvm.options,omitempty"` - - // ExtraJvmOptions Appends extra jvm options to the `JvmOptions` field. - // +optional - ExtraJvmOptions string `json:"extra.jvm.options,omitempty"` - - // Log4jConfig Overrides `Log4jConfig` at top level. - // +optional - Log4jConfig string `json:"log4j.config,omitempty"` - - // NodeConfigMountPath in-container directory to mount with runtime.properties, jvm.config, log4j2.xml files. - // +required - NodeConfigMountPath string `json:"nodeConfigMountPath"` - - // Services Overrides services at top level. - // +optional - Services []v1.Service `json:"services,omitempty"` - - // Tolerations Kubernetes native `tolerations` specification. - // +optional - Tolerations []v1.Toleration `json:"tolerations,omitempty"` - - // Affinity Kubernetes native `affinity` specification. - // +optional - Affinity *v1.Affinity `json:"affinity,omitempty"` - - // NodeSelector Kubernetes native `nodeSelector` specification. - // +optional - NodeSelector map[string]string `json:"nodeSelector,omitempty"` - - // TerminationGracePeriodSeconds - // +optional - TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` - - // Ports Extra ports to be added to pod spec. - // +optional - Ports []v1.ContainerPort `json:"ports,omitempty"` - - // Image Overrides image from top level, Required if no image specified at top level. - // +optional - Image string `json:"image,omitempty"` - - // ImagePullSecrets Overrides `imagePullSecrets` from top level. - // +optional - ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` - - // ImagePullPolicy Overrides `imagePullPolicy` from top level. - // +optional - ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` - - // Env Environment variables for druid containers. - // +optional - Env []v1.EnvVar `json:"env,omitempty"` - - // EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets...). - // +optional - EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty"` - - // Resources Kubernetes Native `resources` specification. - // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` - - // PodSecurityContext Overrides `securityContext` at top level. - // +optional - PodSecurityContext *v1.PodSecurityContext `json:"securityContext,omitempty"` - - // ContainerSecurityContext - // +optional - ContainerSecurityContext *v1.SecurityContext `json:"containerSecurityContext,omitempty"` - - // PodAnnotations Custom annotation to be populated in the workload's pods. - // +optional - PodAnnotations map[string]string `json:"podAnnotations,omitempty"` - - // PodManagementPolicy - // +optional - // +kubebuilder:default:="Parallel" - PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty"` - - // MaxSurge For Deployment object only. - // Set to 25% by default. - // +optional - MaxSurge *int32 `json:"maxSurge,omitempty"` - - // MaxUnavailable For deployment object only. - // Set to 25% by default - // +optional - MaxUnavailable *int32 `json:"maxUnavailable,omitempty"` - - // UpdateStrategy - // +optional - UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty"` - - // LivenessProbe - // Port is set to `druid.port` if not specified with httpGet handler. - // +optional - LivenessProbe *v1.Probe `json:"livenessProbe,omitempty"` - - // ReadinessProbe - // Port is set to `druid.port` if not specified with httpGet handler. - // +optional - ReadinessProbe *v1.Probe `json:"readinessProbe,omitempty"` - - // StartUpProbe - // +optional - StartUpProbe *v1.Probe `json:"startUpProbe,omitempty"` - - // IngressAnnotations `Ingress` annotations to be populated in ingress spec. - // +optional - IngressAnnotations map[string]string `json:"ingressAnnotations,omitempty"` - - // WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. - // +optional - WorkloadAnnotations map[string]string `json:"workloadAnnotations,omitempty"` - - // Ingress Kubernetes Native `Ingress` specification. - // +optional - Ingress *networkingv1.IngressSpec `json:"ingress,omitempty"` - - // VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` specification. - // +optional - PersistentVolumeClaim []v1.PersistentVolumeClaim `json:"persistentVolumeClaim,omitempty"` - - // Lifecycle - // +optional - Lifecycle *v1.Lifecycle `json:"lifecycle,omitempty"` - - // HPAutoScaler Kubernetes Native `HorizontalPodAutoscaler` specification. - // +optional - HPAutoScaler *autoscalev2.HorizontalPodAutoscalerSpec `json:"hpAutoscaler,omitempty"` - - // TopologySpreadConstraints Kubernetes Native `topologySpreadConstraints` specification. - // +optional - TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` - - // VolumeClaimTemplates Kubernetes Native `volumeClaimTemplates` specification. - // +optional - VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"` - - // VolumeMounts Kubernetes Native `volumeMounts` specification. - // +optional - VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty"` - - // Volumes Kubernetes Native `volumes` specification. - // +optional - Volumes []v1.Volume `json:"volumes,omitempty"` - - // Operator deploys the sidecar container based on these properties. - // +optional - AdditionalContainer []AdditionalContainer `json:"additionalContainer,omitempty"` - - // ServiceAccountName Kubernetes native `serviceAccountName` specification. - // +optional - ServiceAccountName string `json:"serviceAccountName,omitempty"` - - // Dynamic Configurations for Druid. Applied through the dynamic configuration API. - // +optional - DynamicConfig runtime.RawExtension `json:"dynamicConfig,omitempty"` - - // See v1.DNSPolicy for more details. - // +optional - DNSPolicy v1.DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` - - // See v1.PodDNSConfig for more details. - // +optional - DNSConfig *v1.PodDNSConfig `json:"dnsConfig,omitempty" protobuf:"bytes,26,opt,name=dnsConfig"` -} - -// ZookeeperSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. -type ZookeeperSpec struct { - Type string `json:"type"` - Spec json.RawMessage `json:"spec"` -} - -// MetadataStoreSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. -type MetadataStoreSpec struct { - Type string `json:"type"` - Spec json.RawMessage `json:"spec"` -} - -// DeepStorageSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator. -type DeepStorageSpec struct { - Type string `json:"type"` - Spec json.RawMessage `json:"spec"` -} - -// These are valid conditions of a druid Node. -const ( - // DruidClusterReady indicates the underlying druid objects is fully deployed. - // Underlying pods are able to handle requests. - DruidClusterReady DruidNodeConditionType = "DruidClusterReady" - - // DruidNodeRollingUpdate means that Druid Node is rolling update. - DruidNodeRollingUpdate DruidNodeConditionType = "DruidNodeRollingUpdate" - - // DruidNodeErrorState indicates the DruidNode is in an error state. - DruidNodeErrorState DruidNodeConditionType = "DruidNodeErrorState" -) - -type DruidNodeConditionType string - -type DruidNodeTypeStatus struct { - DruidNode string `json:"druidNode,omitempty"` - DruidNodeConditionStatus v1.ConditionStatus `json:"druidNodeConditionStatus,omitempty"` - DruidNodeConditionType DruidNodeConditionType `json:"druidNodeConditionType,omitempty"` - Reason string `json:"reason,omitempty"` -} - -// DruidClusterStatus Defines the observed state of Druid. -type DruidClusterStatus struct { - // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster - // Important: Run "make" to regenerate code after modifying this file - DruidNodeStatus DruidNodeTypeStatus `json:"druidNodeStatus,omitempty"` - StatefulSets []string `json:"statefulSets,omitempty"` - Deployments []string `json:"deployments,omitempty"` - Services []string `json:"services,omitempty"` - ConfigMaps []string `json:"configMaps,omitempty"` - PodDisruptionBudgets []string `json:"podDisruptionBudgets,omitempty"` - Ingress []string `json:"ingress,omitempty"` - HPAutoScalers []string `json:"hpAutoscalers,omitempty"` - Pods []string `json:"pods,omitempty"` - PersistentVolumeClaims []string `json:"persistentVolumeClaims,omitempty"` -} - -// Druid is the Schema for the druids API. -// +kubebuilder:object:root=true -// +kubebuilder:subresource:status -type Druid struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec DruidSpec `json:"spec"` - Status DruidClusterStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true - -// DruidList contains a list of Druid -type DruidList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Druid `json:"items"` -} - -func init() { - SchemeBuilder.Register(&Druid{}, &DruidList{}) -} diff --git a/druid-operator/apis/druid/v1alpha1/druidingestion_types.go b/druid-operator/apis/druid/v1alpha1/druidingestion_types.go deleted file mode 100644 index 82b92aacfc64..000000000000 --- a/druid-operator/apis/druid/v1alpha1/druidingestion_types.go +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package v1alpha1 - -import ( - druidapi "github.com/datainfrahq/druid-operator/pkg/druidapi" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" -) - -type DruidIngestionMethod string - -const ( - Kafka DruidIngestionMethod = "kafka" - Kinesis DruidIngestionMethod = "kinesis" - NativeBatchIndexParallel DruidIngestionMethod = "native-batch" - QueryControllerSQL DruidIngestionMethod = "sql" - HadoopIndexHadoop DruidIngestionMethod = "index-hadoop" -) - -type DruidIngestionSpec struct { - // +optional - Suspend bool `json:"suspend"` - // +required - DruidClusterName string `json:"druidCluster"` - // +required - Ingestion IngestionSpec `json:"ingestion"` - // +optional - Auth druidapi.Auth `json:"auth"` -} - -type IngestionSpec struct { - // +required - Type DruidIngestionMethod `json:"type"` - // +optional - // Spec should be passed in as a JSON string. - // Note: This field is planned for deprecation in favor of nativeSpec. - Spec string `json:"spec,omitempty"` - // +optional - // nativeSpec allows the ingestion specification to be defined in a native Kubernetes format. - // This is particularly useful for environment-specific configurations and will eventually - // replace the JSON-based Spec field. - // Note: Spec will be ignored if nativeSpec is provided. - NativeSpec runtime.RawExtension `json:"nativeSpec,omitempty"` - // +optional - Compaction runtime.RawExtension `json:"compaction,omitempty"` - // +optional - Rules []runtime.RawExtension `json:"rules,omitempty"` -} - -type DruidIngestionStatus struct { - TaskId string `json:"taskId"` - Type string `json:"type,omitempty"` - Status v1.ConditionStatus `json:"status,omitempty"` - Reason string `json:"reason,omitempty"` - Message string `json:"message,omitempty"` - LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty"` - // CurrentIngestionSpec is a string instead of RawExtension to maintain compatibility with existing - // IngestionSpecs that are stored as JSON strings. - CurrentIngestionSpec string `json:"currentIngestionSpec.json"` - CurrentRules []runtime.RawExtension `json:"rules,omitempty"` -} - -// +kubebuilder:object:root=true -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" -// +kubebuilder:printcolumn:name="Type",type="string",JSONPath=".spec.ingestionSpec.type" -// Ingestion is the Schema for the Ingestion API -type DruidIngestion struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - - Spec DruidIngestionSpec `json:"spec"` - Status DruidIngestionStatus `json:"status,omitempty"` -} - -// +kubebuilder:object:root=true -// IngestionList contains a list of Ingestion -type DruidIngestionList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []DruidIngestion `json:"items"` -} - -func init() { - SchemeBuilder.Register(&DruidIngestion{}, &DruidIngestionList{}) -} diff --git a/druid-operator/apis/druid/v1alpha1/groupversion_info.go b/druid-operator/apis/druid/v1alpha1/groupversion_info.go deleted file mode 100644 index ff4554893f77..000000000000 --- a/druid-operator/apis/druid/v1alpha1/groupversion_info.go +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// Package v1alpha1 contains API Schema definitions for the druid v1alpha1 API group -// +kubebuilder:object:generate=true -// +groupName=druid.apache.org -package v1alpha1 - -import ( - "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" -) - -var ( - // GroupVersion is group version used to register these objects - GroupVersion = schema.GroupVersion{Group: "druid.apache.org", Version: "v1alpha1"} - - // SchemeBuilder is used to add go types to the GroupVersionKind scheme - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} - - // AddToScheme adds the types in this group-version to the given scheme. - AddToScheme = SchemeBuilder.AddToScheme -) diff --git a/druid-operator/apis/druid/v1alpha1/zz_generated.deepcopy.go b/druid-operator/apis/druid/v1alpha1/zz_generated.deepcopy.go deleted file mode 100644 index 8dff886e81ef..000000000000 --- a/druid-operator/apis/druid/v1alpha1/zz_generated.deepcopy.go +++ /dev/null @@ -1,790 +0,0 @@ -//go:build !ignore_autogenerated - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// Code generated by controller-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - "encoding/json" - appsv1 "k8s.io/api/apps/v1" - "k8s.io/api/autoscaling/v2" - "k8s.io/api/core/v1" - networkingv1 "k8s.io/api/networking/v1" - policyv1 "k8s.io/api/policy/v1" - "k8s.io/apimachinery/pkg/runtime" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AdditionalContainer) DeepCopyInto(out *AdditionalContainer) { - *out = *in - if in.Command != nil { - in, out := &in.Command, &out.Command - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Args != nil { - in, out := &in.Args, &out.Args - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.ContainerSecurityContext != nil { - in, out := &in.ContainerSecurityContext, &out.ContainerSecurityContext - *out = new(v1.SecurityContext) - (*in).DeepCopyInto(*out) - } - in.Resources.DeepCopyInto(&out.Resources) - if in.VolumeMounts != nil { - in, out := &in.VolumeMounts, &out.VolumeMounts - *out = make([]v1.VolumeMount, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Env != nil { - in, out := &in.Env, &out.Env - *out = make([]v1.EnvVar, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.EnvFrom != nil { - in, out := &in.EnvFrom, &out.EnvFrom - *out = make([]v1.EnvFromSource, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalContainer. -func (in *AdditionalContainer) DeepCopy() *AdditionalContainer { - if in == nil { - return nil - } - out := new(AdditionalContainer) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DeepStorageSpec) DeepCopyInto(out *DeepStorageSpec) { - *out = *in - if in.Spec != nil { - in, out := &in.Spec, &out.Spec - *out = make(json.RawMessage, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeepStorageSpec. -func (in *DeepStorageSpec) DeepCopy() *DeepStorageSpec { - if in == nil { - return nil - } - out := new(DeepStorageSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Druid) DeepCopyInto(out *Druid) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Druid. -func (in *Druid) DeepCopy() *Druid { - if in == nil { - return nil - } - out := new(Druid) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Druid) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidClusterStatus) DeepCopyInto(out *DruidClusterStatus) { - *out = *in - out.DruidNodeStatus = in.DruidNodeStatus - if in.StatefulSets != nil { - in, out := &in.StatefulSets, &out.StatefulSets - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Deployments != nil { - in, out := &in.Deployments, &out.Deployments - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Services != nil { - in, out := &in.Services, &out.Services - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.ConfigMaps != nil { - in, out := &in.ConfigMaps, &out.ConfigMaps - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.PodDisruptionBudgets != nil { - in, out := &in.PodDisruptionBudgets, &out.PodDisruptionBudgets - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Ingress != nil { - in, out := &in.Ingress, &out.Ingress - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.HPAutoScalers != nil { - in, out := &in.HPAutoScalers, &out.HPAutoScalers - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Pods != nil { - in, out := &in.Pods, &out.Pods - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.PersistentVolumeClaims != nil { - in, out := &in.PersistentVolumeClaims, &out.PersistentVolumeClaims - *out = make([]string, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidClusterStatus. -func (in *DruidClusterStatus) DeepCopy() *DruidClusterStatus { - if in == nil { - return nil - } - out := new(DruidClusterStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidIngestion) DeepCopyInto(out *DruidIngestion) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidIngestion. -func (in *DruidIngestion) DeepCopy() *DruidIngestion { - if in == nil { - return nil - } - out := new(DruidIngestion) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DruidIngestion) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidIngestionList) DeepCopyInto(out *DruidIngestionList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DruidIngestion, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidIngestionList. -func (in *DruidIngestionList) DeepCopy() *DruidIngestionList { - if in == nil { - return nil - } - out := new(DruidIngestionList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DruidIngestionList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidIngestionSpec) DeepCopyInto(out *DruidIngestionSpec) { - *out = *in - in.Ingestion.DeepCopyInto(&out.Ingestion) - out.Auth = in.Auth -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidIngestionSpec. -func (in *DruidIngestionSpec) DeepCopy() *DruidIngestionSpec { - if in == nil { - return nil - } - out := new(DruidIngestionSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidIngestionStatus) DeepCopyInto(out *DruidIngestionStatus) { - *out = *in - in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime) - if in.CurrentRules != nil { - in, out := &in.CurrentRules, &out.CurrentRules - *out = make([]runtime.RawExtension, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidIngestionStatus. -func (in *DruidIngestionStatus) DeepCopy() *DruidIngestionStatus { - if in == nil { - return nil - } - out := new(DruidIngestionStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidList) DeepCopyInto(out *DruidList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Druid, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidList. -func (in *DruidList) DeepCopy() *DruidList { - if in == nil { - return nil - } - out := new(DruidList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DruidList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidNodeSpec) DeepCopyInto(out *DruidNodeSpec) { - *out = *in - if in.PodLabels != nil { - in, out := &in.PodLabels, &out.PodLabels - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.PodDisruptionBudgetSpec != nil { - in, out := &in.PodDisruptionBudgetSpec, &out.PodDisruptionBudgetSpec - *out = new(policyv1.PodDisruptionBudgetSpec) - (*in).DeepCopyInto(*out) - } - if in.Services != nil { - in, out := &in.Services, &out.Services - *out = make([]v1.Service, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Tolerations != nil { - in, out := &in.Tolerations, &out.Tolerations - *out = make([]v1.Toleration, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Affinity != nil { - in, out := &in.Affinity, &out.Affinity - *out = new(v1.Affinity) - (*in).DeepCopyInto(*out) - } - if in.NodeSelector != nil { - in, out := &in.NodeSelector, &out.NodeSelector - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.TerminationGracePeriodSeconds != nil { - in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds - *out = new(int64) - **out = **in - } - if in.Ports != nil { - in, out := &in.Ports, &out.Ports - *out = make([]v1.ContainerPort, len(*in)) - copy(*out, *in) - } - if in.ImagePullSecrets != nil { - in, out := &in.ImagePullSecrets, &out.ImagePullSecrets - *out = make([]v1.LocalObjectReference, len(*in)) - copy(*out, *in) - } - if in.Env != nil { - in, out := &in.Env, &out.Env - *out = make([]v1.EnvVar, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.EnvFrom != nil { - in, out := &in.EnvFrom, &out.EnvFrom - *out = make([]v1.EnvFromSource, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - in.Resources.DeepCopyInto(&out.Resources) - if in.PodSecurityContext != nil { - in, out := &in.PodSecurityContext, &out.PodSecurityContext - *out = new(v1.PodSecurityContext) - (*in).DeepCopyInto(*out) - } - if in.ContainerSecurityContext != nil { - in, out := &in.ContainerSecurityContext, &out.ContainerSecurityContext - *out = new(v1.SecurityContext) - (*in).DeepCopyInto(*out) - } - if in.PodAnnotations != nil { - in, out := &in.PodAnnotations, &out.PodAnnotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.MaxSurge != nil { - in, out := &in.MaxSurge, &out.MaxSurge - *out = new(int32) - **out = **in - } - if in.MaxUnavailable != nil { - in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(int32) - **out = **in - } - if in.UpdateStrategy != nil { - in, out := &in.UpdateStrategy, &out.UpdateStrategy - *out = new(appsv1.StatefulSetUpdateStrategy) - (*in).DeepCopyInto(*out) - } - if in.LivenessProbe != nil { - in, out := &in.LivenessProbe, &out.LivenessProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.ReadinessProbe != nil { - in, out := &in.ReadinessProbe, &out.ReadinessProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.StartUpProbe != nil { - in, out := &in.StartUpProbe, &out.StartUpProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.IngressAnnotations != nil { - in, out := &in.IngressAnnotations, &out.IngressAnnotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.WorkloadAnnotations != nil { - in, out := &in.WorkloadAnnotations, &out.WorkloadAnnotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.Ingress != nil { - in, out := &in.Ingress, &out.Ingress - *out = new(networkingv1.IngressSpec) - (*in).DeepCopyInto(*out) - } - if in.PersistentVolumeClaim != nil { - in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim - *out = make([]v1.PersistentVolumeClaim, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Lifecycle != nil { - in, out := &in.Lifecycle, &out.Lifecycle - *out = new(v1.Lifecycle) - (*in).DeepCopyInto(*out) - } - if in.HPAutoScaler != nil { - in, out := &in.HPAutoScaler, &out.HPAutoScaler - *out = new(v2.HorizontalPodAutoscalerSpec) - (*in).DeepCopyInto(*out) - } - if in.TopologySpreadConstraints != nil { - in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints - *out = make([]v1.TopologySpreadConstraint, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.VolumeClaimTemplates != nil { - in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]v1.PersistentVolumeClaim, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.VolumeMounts != nil { - in, out := &in.VolumeMounts, &out.VolumeMounts - *out = make([]v1.VolumeMount, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Volumes != nil { - in, out := &in.Volumes, &out.Volumes - *out = make([]v1.Volume, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.AdditionalContainer != nil { - in, out := &in.AdditionalContainer, &out.AdditionalContainer - *out = make([]AdditionalContainer, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - in.DynamicConfig.DeepCopyInto(&out.DynamicConfig) - if in.DNSConfig != nil { - in, out := &in.DNSConfig, &out.DNSConfig - *out = new(v1.PodDNSConfig) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidNodeSpec. -func (in *DruidNodeSpec) DeepCopy() *DruidNodeSpec { - if in == nil { - return nil - } - out := new(DruidNodeSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidNodeTypeStatus) DeepCopyInto(out *DruidNodeTypeStatus) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidNodeTypeStatus. -func (in *DruidNodeTypeStatus) DeepCopy() *DruidNodeTypeStatus { - if in == nil { - return nil - } - out := new(DruidNodeTypeStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DruidSpec) DeepCopyInto(out *DruidSpec) { - *out = *in - if in.ExtraCommonConfig != nil { - in, out := &in.ExtraCommonConfig, &out.ExtraCommonConfig - *out = make([]*v1.ObjectReference, len(*in)) - for i := range *in { - if (*in)[i] != nil { - in, out := &(*in)[i], &(*out)[i] - *out = new(v1.ObjectReference) - **out = **in - } - } - } - if in.ImagePullSecrets != nil { - in, out := &in.ImagePullSecrets, &out.ImagePullSecrets - *out = make([]v1.LocalObjectReference, len(*in)) - copy(*out, *in) - } - if in.Env != nil { - in, out := &in.Env, &out.Env - *out = make([]v1.EnvVar, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.EnvFrom != nil { - in, out := &in.EnvFrom, &out.EnvFrom - *out = make([]v1.EnvFromSource, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.PodSecurityContext != nil { - in, out := &in.PodSecurityContext, &out.PodSecurityContext - *out = new(v1.PodSecurityContext) - (*in).DeepCopyInto(*out) - } - if in.ContainerSecurityContext != nil { - in, out := &in.ContainerSecurityContext, &out.ContainerSecurityContext - *out = new(v1.SecurityContext) - (*in).DeepCopyInto(*out) - } - if in.VolumeClaimTemplates != nil { - in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]v1.PersistentVolumeClaim, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.VolumeMounts != nil { - in, out := &in.VolumeMounts, &out.VolumeMounts - *out = make([]v1.VolumeMount, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Volumes != nil { - in, out := &in.Volumes, &out.Volumes - *out = make([]v1.Volume, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.PodAnnotations != nil { - in, out := &in.PodAnnotations, &out.PodAnnotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.WorkloadAnnotations != nil { - in, out := &in.WorkloadAnnotations, &out.WorkloadAnnotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.PodLabels != nil { - in, out := &in.PodLabels, &out.PodLabels - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.UpdateStrategy != nil { - in, out := &in.UpdateStrategy, &out.UpdateStrategy - *out = new(appsv1.StatefulSetUpdateStrategy) - (*in).DeepCopyInto(*out) - } - if in.LivenessProbe != nil { - in, out := &in.LivenessProbe, &out.LivenessProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.ReadinessProbe != nil { - in, out := &in.ReadinessProbe, &out.ReadinessProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.StartUpProbe != nil { - in, out := &in.StartUpProbe, &out.StartUpProbe - *out = new(v1.Probe) - (*in).DeepCopyInto(*out) - } - if in.Services != nil { - in, out := &in.Services, &out.Services - *out = make([]v1.Service, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.NodeSelector != nil { - in, out := &in.NodeSelector, &out.NodeSelector - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.Tolerations != nil { - in, out := &in.Tolerations, &out.Tolerations - *out = make([]v1.Toleration, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Affinity != nil { - in, out := &in.Affinity, &out.Affinity - *out = new(v1.Affinity) - (*in).DeepCopyInto(*out) - } - if in.Nodes != nil { - in, out := &in.Nodes, &out.Nodes - *out = make(map[string]DruidNodeSpec, len(*in)) - for key, val := range *in { - (*out)[key] = *val.DeepCopy() - } - } - if in.AdditionalContainer != nil { - in, out := &in.AdditionalContainer, &out.AdditionalContainer - *out = make([]AdditionalContainer, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Zookeeper != nil { - in, out := &in.Zookeeper, &out.Zookeeper - *out = new(ZookeeperSpec) - (*in).DeepCopyInto(*out) - } - if in.MetadataStore != nil { - in, out := &in.MetadataStore, &out.MetadataStore - *out = new(MetadataStoreSpec) - (*in).DeepCopyInto(*out) - } - if in.DeepStorage != nil { - in, out := &in.DeepStorage, &out.DeepStorage - *out = new(DeepStorageSpec) - (*in).DeepCopyInto(*out) - } - in.DynamicConfig.DeepCopyInto(&out.DynamicConfig) - out.Auth = in.Auth - if in.DNSConfig != nil { - in, out := &in.DNSConfig, &out.DNSConfig - *out = new(v1.PodDNSConfig) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DruidSpec. -func (in *DruidSpec) DeepCopy() *DruidSpec { - if in == nil { - return nil - } - out := new(DruidSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *IngestionSpec) DeepCopyInto(out *IngestionSpec) { - *out = *in - in.NativeSpec.DeepCopyInto(&out.NativeSpec) - in.Compaction.DeepCopyInto(&out.Compaction) - if in.Rules != nil { - in, out := &in.Rules, &out.Rules - *out = make([]runtime.RawExtension, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngestionSpec. -func (in *IngestionSpec) DeepCopy() *IngestionSpec { - if in == nil { - return nil - } - out := new(IngestionSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MetadataStoreSpec) DeepCopyInto(out *MetadataStoreSpec) { - *out = *in - if in.Spec != nil { - in, out := &in.Spec, &out.Spec - *out = make(json.RawMessage, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataStoreSpec. -func (in *MetadataStoreSpec) DeepCopy() *MetadataStoreSpec { - if in == nil { - return nil - } - out := new(MetadataStoreSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ZookeeperSpec) DeepCopyInto(out *ZookeeperSpec) { - *out = *in - if in.Spec != nil { - in, out := &in.Spec, &out.Spec - *out = make(json.RawMessage, len(*in)) - copy(*out, *in) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZookeeperSpec. -func (in *ZookeeperSpec) DeepCopy() *ZookeeperSpec { - if in == nil { - return nil - } - out := new(ZookeeperSpec) - in.DeepCopyInto(out) - return out -} diff --git a/druid-operator/chart/.helmignore b/druid-operator/chart/.helmignore deleted file mode 100644 index 315b55243a95..000000000000 --- a/druid-operator/chart/.helmignore +++ /dev/null @@ -1,39 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/druid-operator/chart/Chart.yaml b/druid-operator/chart/Chart.yaml deleted file mode 100644 index 4b556db0a571..000000000000 --- a/druid-operator/chart/Chart.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v2 -name: druid-operator -description: Druid Kubernetes Operator - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.9 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -appVersion: v1.3.0 -# icon -icon: "https://www.apache.org/logos/res/druid/druid-1.png" diff --git a/druid-operator/chart/crds/druid.apache.org_druidingestions.yaml b/druid-operator/chart/crds/druid.apache.org_druidingestions.yaml deleted file mode 100644 index 6bf076d93874..000000000000 --- a/druid-operator/chart/crds/druid.apache.org_druidingestions.yaml +++ /dev/null @@ -1,165 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: druidingestions.druid.apache.org -spec: - group: druid.apache.org - names: - kind: DruidIngestion - listKind: DruidIngestionList - plural: druidingestions - singular: druidingestion - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .spec.ingestionSpec.type - name: Type - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: Ingestion is the Schema for the Ingestion API - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - properties: - auth: - properties: - passwordKey: - description: PasswordKey specifies the key within the Kubernetes - secret that contains the password for authentication. - type: string - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: - type: string - usernameKey: - description: UsernameKey specifies the key within the Kubernetes - secret that contains the username for authentication. - type: string - required: - - secretRef - - type - type: object - druidCluster: - type: string - ingestion: - properties: - compaction: - type: object - x-kubernetes-preserve-unknown-fields: true - nativeSpec: - description: |- - nativeSpec allows the ingestion specification to be defined in a native Kubernetes format. - This is particularly useful for environment-specific configurations and will eventually - replace the JSON-based Spec field. - Note: Spec will be ignored if nativeSpec is provided. - type: object - x-kubernetes-preserve-unknown-fields: true - rules: - items: - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - spec: - description: |- - Spec should be passed in as a JSON string. - Note: This field is planned for deprecation in favor of nativeSpec. - type: string - type: - type: string - required: - - type - type: object - suspend: - type: boolean - required: - - druidCluster - - ingestion - type: object - status: - properties: - currentIngestionSpec.json: - description: |- - CurrentIngestionSpec is a string instead of RawExtension to maintain compatibility with existing - IngestionSpecs that are stored as JSON strings. - type: string - lastUpdateTime: - format: date-time - type: string - message: - type: string - reason: - type: string - rules: - items: - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - status: - type: string - taskId: - type: string - type: - type: string - required: - - currentIngestionSpec.json - - taskId - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} diff --git a/druid-operator/chart/crds/druid.apache.org_druids.yaml b/druid-operator/chart/crds/druid.apache.org_druids.yaml deleted file mode 100644 index fdde9d6c604c..000000000000 --- a/druid-operator/chart/crds/druid.apache.org_druids.yaml +++ /dev/null @@ -1,12064 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: druids.druid.apache.org -spec: - group: druid.apache.org - names: - kind: Druid - listKind: DruidList - plural: druids - singular: druid - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Druid is the Schema for the druids API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: DruidSpec defines the desired state of the Druid cluster. - properties: - additionalContainer: - description: AdditionalContainer defines additional sidecar containers - to be deployed with the `Druid` pods. - items: - description: |- - AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. - (will be part of Kubernetes native in the future: - https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary). - properties: - args: - description: Args Arguments to call the command. - items: - type: string - type: array - command: - description: Command command for the additional container. - items: - type: string - type: array - containerName: - description: ContainerName name of the additional container. - type: string - env: - description: Env Environment variables for the additional container. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote - source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - image: - description: Image Image of the additional container. - type: string - imagePullPolicy: - description: ImagePullPolicy If not present, will be taken from - top level spec. - type: string - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runAsInit: - description: RunAsInit indicate whether this should be an init - container. - type: boolean - securityContext: - description: ContainerSecurityContext If not present, will be - taken from top level pod. - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - required: - - command - - containerName - - image - type: object - type: array - affinity: - description: Affinity Kubernetes native `affinity` specification. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - auth: - properties: - passwordKey: - description: PasswordKey specifies the key within the Kubernetes - secret that contains the password for authentication. - type: string - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: - type: string - usernameKey: - description: UsernameKey specifies the key within the Kubernetes - secret that contains the username for authentication. - type: string - required: - - secretRef - - type - type: object - common.runtime.properties: - description: CommonRuntimeProperties Content fo the `common.runtime.properties` - configuration file. - type: string - commonConfigMountPath: - default: /opt/druid/conf/druid/cluster/_common - description: CommonConfigMountPath In-container directory to mount - the Druid common configuration - type: string - containerSecurityContext: - description: ContainerSecurityContext - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - core-site.xml: - description: CoreSite Contents of `core-site.xml`. - type: string - deepStorage: - description: 'DeepStorage IGNORED (Future API): In order to make Druid - dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - defaultProbes: - default: true - description: |- - DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components - but it won't override existing probes - type: boolean - deleteOrphanPvc: - default: true - description: DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned - up by the operator. - type: boolean - disablePVCDeletionFinalizer: - default: false - description: DisablePVCDeletionFinalizer Whether PVCs shall be deleted - on the deletion of the Druid cluster. - type: boolean - dnsConfig: - description: See v1.PodDNSConfig for more details. - properties: - nameservers: - description: |- - A list of DNS name server IP addresses. - This will be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. - items: - type: string - type: array - options: - description: |- - A list of DNS resolver options. - This will be merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. - items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. - properties: - name: - description: Required. - type: string - value: - type: string - type: object - type: array - searches: - description: |- - A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from DNSPolicy. - Duplicated search paths will be removed. - items: - type: string - type: array - type: object - dnsPolicy: - description: See v1.DNSPolicy for more details. - type: string - dynamicConfig: - description: Dynamic Configurations for Druid. Applied through the - dynamic configuration API. - type: object - x-kubernetes-preserve-unknown-fields: true - env: - description: Env Environment variables for druid containers. - items: - description: EnvVar represents an environment variable present in - a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. Cannot - be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath is - written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified - API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed - resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote source - (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each key in - the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - extraCommonConfig: - description: |- - ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the - common configuration path. - items: - description: |- - ObjectReference contains enough information to let you inspect or modify the referred object. - --- - New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. - 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. - 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular - restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". - Those cannot be well described when embedded. - 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. - 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity - during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple - and the version of the actual struct is irrelevant. - 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type - will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. - - - Instead of using this type, create a locally provided and used type that is well-focused on your reference. - For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - type: array - forceDeleteStsPodOnError: - default: true - description: |- - ForceDeleteStsPodOnError Delete the StatefulSet's pods if the StatefulSet is set to ordered ready. - issue: https://github.com/kubernetes/kubernetes/issues/67250 - doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback - type: boolean - hdfs-site.xml: - description: HdfsSite Contents of `hdfs-site.xml`. - type: string - ignored: - default: false - description: |- - Ignored is now deprecated API. In order to avoid reconciliation of objects use the - `druid.apache.org/ignored: "true"` annotation. - type: boolean - image: - description: Image Required here or at the NodeSpec level. - type: string - imagePullPolicy: - default: IfNotPresent - description: ImagePullPolicy - type: string - imagePullSecrets: - description: ImagePullSecrets - items: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - type: array - jvm.options: - description: JvmOptions Contents of the shared `jvm.options` configuration - file for druid JVM processes. - type: string - livenessProbe: - description: |- - LivenessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - log4j.config: - description: Log4jConfig contents `log4j.config` configuration file. - type: string - metadataStore: - description: 'MetadataStore IGNORED (Future API): In order to make - Druid dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - metricDimensions.json: - description: |- - DimensionsMapPath Custom Dimension Map Path for statsd emitter. - stastd documentation is described in the following documentation: - https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html - type: string - nodeSelector: - additionalProperties: - type: string - description: NodeSelector Kubernetes native `nodeSelector` specification. - type: object - nodes: - additionalProperties: - description: |- - DruidNodeSpec Specification of `Druid` Node type and its configurations. - The key in following map can be arbitrary string that helps you identify resources for a specific nodeSpec. - It is used in the Kubernetes resources' names, so it must be compliant with restrictions - placed on Kubernetes resource names: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ - properties: - additionalContainer: - description: Operator deploys the sidecar container based on - these properties. - items: - description: |- - AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. - (will be part of Kubernetes native in the future: - https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary). - properties: - args: - description: Args Arguments to call the command. - items: - type: string - type: array - command: - description: Command command for the additional container. - items: - type: string - type: array - containerName: - description: ContainerName name of the additional container. - type: string - env: - description: Env Environment variables for the additional - container. - items: - description: EnvVar represents an environment variable - present in a Container. - properties: - name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap - or its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for - volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the - pod's namespace - properties: - key: - description: The key of the secret to select - from. Must be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret - or its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from - remote source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of - a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must - be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must - be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - image: - description: Image Image of the additional container. - type: string - imagePullPolicy: - description: ImagePullPolicy If not present, will be taken - from top level spec. - type: string - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runAsInit: - description: RunAsInit indicate whether this should be - an init container. - type: boolean - securityContext: - description: ContainerSecurityContext If not present, - will be taken from top level pod. - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that - applies to the container. - type: string - role: - description: Role is a SELinux role label that - applies to the container. - type: string - type: - description: Type is a SELinux type label that - applies to the container. - type: string - user: - description: User is a SELinux user label that - applies to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` - specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - required: - - command - - containerName - - image - type: object - type: array - affinity: - description: Affinity Kubernetes native `affinity` specification. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for - the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated - with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the - corresponding nodeSelectorTerm, in the range - 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - containerSecurityContext: - description: ContainerSecurityContext - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - dnsConfig: - description: See v1.PodDNSConfig for more details. - properties: - nameservers: - description: |- - A list of DNS name server IP addresses. - This will be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. - items: - type: string - type: array - options: - description: |- - A list of DNS resolver options. - This will be merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. - items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. - properties: - name: - description: Required. - type: string - value: - type: string - type: object - type: array - searches: - description: |- - A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from DNSPolicy. - Duplicated search paths will be removed. - items: - type: string - type: array - type: object - dnsPolicy: - description: See v1.DNSPolicy for more details. - type: string - druid.port: - description: DruidPort Used by the `Druid` process. - format: int32 - type: integer - dynamicConfig: - description: Dynamic Configurations for Druid. Applied through - the dynamic configuration API. - type: object - x-kubernetes-preserve-unknown-fields: true - env: - description: Env Environment variables for druid containers. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote - source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - extra.jvm.options: - description: ExtraJvmOptions Appends extra jvm options to the - `JvmOptions` field. - type: string - hpAutoscaler: - description: HPAutoScaler Kubernetes Native `HorizontalPodAutoscaler` - specification. - properties: - behavior: - description: |- - behavior configures the scaling behavior of the target - in both Up and Down directions (scaleUp and scaleDown fields respectively). - If not set, the default HPAScalingRules for scale up and scale down are used. - properties: - scaleDown: - description: |- - scaleDown is scaling policy for scaling Down. - If not set, the default value is to allow to scale down to minReplicas pods, with a - 300 second stabilization window (i.e., the highest recommendation for - the last 300sec is used). - properties: - policies: - description: |- - policies is a list of potential scaling polices which can be used during scaling. - At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: |- - periodSeconds specifies the window of time for which the policy should hold true. - PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). - format: int32 - type: integer - type: - description: type is used to specify the scaling - policy. - type: string - value: - description: |- - value contains the amount of change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: |- - selectPolicy is used to specify which policy should be used. - If not set, the default value Max is used. - type: string - stabilizationWindowSeconds: - description: |- - stabilizationWindowSeconds is the number of seconds for which past recommendations should be - considered while scaling up or scaling down. - StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization window is 300 seconds long). - format: int32 - type: integer - type: object - scaleUp: - description: |- - scaleUp is scaling policy for scaling Up. - If not set, the default value is the higher of: - * increase no more than 4 pods per 60 seconds - * double the number of pods per 60 seconds - No stabilization is used. - properties: - policies: - description: |- - policies is a list of potential scaling polices which can be used during scaling. - At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: |- - periodSeconds specifies the window of time for which the policy should hold true. - PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). - format: int32 - type: integer - type: - description: type is used to specify the scaling - policy. - type: string - value: - description: |- - value contains the amount of change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: |- - selectPolicy is used to specify which policy should be used. - If not set, the default value Max is used. - type: string - stabilizationWindowSeconds: - description: |- - stabilizationWindowSeconds is the number of seconds for which past recommendations should be - considered while scaling up or scaling down. - StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization window is 300 seconds long). - format: int32 - type: integer - type: object - type: object - maxReplicas: - description: |- - maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. - It cannot be less that minReplicas. - format: int32 - type: integer - metrics: - description: |- - metrics contains the specifications for which to use to calculate the - desired replica count (the maximum replica count across all metrics will - be used). The desired replica count is calculated multiplying the - ratio between the target value and the current value by the current - number of pods. Ergo, metrics used must decrease as the pod count is - increased, and vice-versa. See the individual metric source types for - more information about how each type of metric must respond. - If not set, the default metric will be set to 80% average CPU utilization. - items: - description: |- - MetricSpec specifies how to scale based on a single metric - (only `type` and one other matching field should be set at once). - properties: - containerResource: - description: |- - containerResource refers to a resource metric (such as those specified in - requests and limits) known to Kubernetes describing a single container in - each pod of the current scale target (e.g. CPU or memory). Such metrics are - built in to Kubernetes, and have special scaling options on top of those - available to normal per-pod metrics using the "pods" source. - This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. - properties: - container: - description: container is the name of the container - in the pods of the scaling target - type: string - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - container - - name - - target - type: object - external: - description: |- - external refers to a global metric that is not associated - with any Kubernetes object. It allows autoscaling based on information - coming from components running outside of cluster - (for example length of queue in cloud messaging service, or - QPS from loadbalancer running outside of cluster). - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - object: - description: |- - object refers to a metric describing a single kubernetes object - (for example, hits-per-second on an Ingress object). - properties: - describedObject: - description: describedObject specifies the descriptions - of a object,such as kind,name apiVersion - properties: - apiVersion: - description: apiVersion is the API version - of the referent - type: string - kind: - description: 'kind is the kind of the referent; - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'name is the name of the referent; - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - required: - - kind - - name - type: object - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - describedObject - - metric - - target - type: object - pods: - description: |- - pods refers to a metric describing each pod in the current scale target - (for example, transactions-processed-per-second). The values will be - averaged together before being compared to the target value. - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - resource: - description: |- - resource refers to a resource metric (such as those specified in - requests and limits) known to Kubernetes describing each pod in the - current scale target (e.g. CPU or memory). Such metrics are built in to - Kubernetes, and have special scaling options on top of those available - to normal per-pod metrics using the "pods" source. - properties: - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - name - - target - type: object - type: - description: |- - type is the type of metric source. It should be one of "ContainerResource", "External", - "Object", "Pods" or "Resource", each mapping to a matching field in the object. - Note: "ContainerResource" type is available on when the feature-gate - HPAContainerMetrics is enabled - type: string - required: - - type - type: object - type: array - x-kubernetes-list-type: atomic - minReplicas: - description: |- - minReplicas is the lower limit for the number of replicas to which the autoscaler - can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the - alpha feature gate HPAScaleToZero is enabled and at least one Object or External - metric is configured. Scaling is active as long as at least one metric value is - available. - format: int32 - type: integer - scaleTargetRef: - description: |- - scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics - should be collected, as well as to actually change the replica count. - properties: - apiVersion: - description: apiVersion is the API version of the referent - type: string - kind: - description: 'kind is the kind of the referent; More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'name is the name of the referent; More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - required: - - kind - - name - type: object - required: - - maxReplicas - - scaleTargetRef - type: object - image: - description: Image Overrides image from top level, Required - if no image specified at top level. - type: string - imagePullPolicy: - description: ImagePullPolicy Overrides `imagePullPolicy` from - top level. - type: string - imagePullSecrets: - description: ImagePullSecrets Overrides `imagePullSecrets` from - top level. - items: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - type: array - ingress: - description: Ingress Kubernetes Native `Ingress` specification. - properties: - defaultBackend: - description: |- - defaultBackend is the backend that should handle requests that don't - match any rule. If Rules are not specified, DefaultBackend must be specified. - If DefaultBackend is not set, the handling of requests that do not match any - of the rules will be up to the Ingress controller. - properties: - resource: - description: |- - resource is an ObjectRef to another Kubernetes resource in the namespace - of the Ingress object. If resource is specified, a service.Name and - service.Port must not be specified. - This is a mutually exclusive setting with "Service". - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: |- - service references a service as a backend. - This is a mutually exclusive setting with "Resource". - properties: - name: - description: |- - name is the referenced service. The service must exist in - the same namespace as the Ingress object. - type: string - port: - description: |- - port of the referenced service. A port name or port number - is required for a IngressServiceBackend. - properties: - name: - description: |- - name is the name of the port on the Service. - This is a mutually exclusive setting with "Number". - type: string - number: - description: |- - number is the numerical port number (e.g. 80) on the Service. - This is a mutually exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - ingressClassName: - description: |- - ingressClassName is the name of an IngressClass cluster resource. Ingress - controller implementations use this field to know whether they should be - serving this Ingress resource, by a transitive connection - (controller -> IngressClass -> Ingress resource). Although the - `kubernetes.io/ingress.class` annotation (simple constant name) was never - formally defined, it was widely supported by Ingress controllers to create - a direct binding between Ingress controller and Ingress resources. Newly - created Ingress resources should prefer using the field. However, even - though the annotation is officially deprecated, for backwards compatibility - reasons, ingress controllers should still honor that annotation if present. - type: string - rules: - description: |- - rules is a list of host rules used to configure the Ingress. If unspecified, - or no rule matches, all traffic is sent to the default backend. - items: - description: |- - IngressRule represents the rules mapping the paths under a specified host to - the related backend services. Incoming requests are first evaluated for a host - match, then routed to the backend associated with the matching IngressRuleValue. - properties: - host: - description: "host is the fully qualified domain name - of a network host, as defined by RFC 3986.\nNote - the following deviations from the \"host\" part - of the\nURI as defined in RFC 3986:\n1. IPs are - not allowed. Currently an IngressRuleValue can only - apply to\n the IP in the Spec of the parent Ingress.\n2. - The `:` delimiter is not respected because ports - are not allowed.\n\t Currently the port of an Ingress - is implicitly :80 for http and\n\t :443 for https.\nBoth - these may change in the future.\nIncoming requests - are matched against the host before the\nIngressRuleValue. - If the host is unspecified, the Ingress routes all\ntraffic - based on the specified IngressRuleValue.\n\n\nhost - can be \"precise\" which is a domain name without - the terminating dot of\na network host (e.g. \"foo.bar.com\") - or \"wildcard\", which is a domain name\nprefixed - with a single wildcard label (e.g. \"*.foo.com\").\nThe - wildcard character '*' must appear by itself as - the first DNS label and\nmatches only a single label. - You cannot have a wildcard label by itself (e.g. - Host == \"*\").\nRequests will be matched against - the Host field in the following way:\n1. If host - is precise, the request matches this rule if the - http host header is equal to Host.\n2. If host is - a wildcard, then the request matches this rule if - the http host header\nis to equal to the suffix - (removing the first label) of the wildcard rule." - type: string - http: - description: |- - HTTPIngressRuleValue is a list of http selectors pointing to backends. - In the example: http:///? -> backend where - where parts of the url correspond to RFC 3986, this resource will be used - to match against everything after the last '/' and before the first '?' - or '#'. - properties: - paths: - description: paths is a collection of paths that - map requests to backends. - items: - description: |- - HTTPIngressPath associates a path with a backend. Incoming urls matching the - path are forwarded to the backend. - properties: - backend: - description: |- - backend defines the referenced service endpoint to which the traffic - will be forwarded to. - properties: - resource: - description: |- - resource is an ObjectRef to another Kubernetes resource in the namespace - of the Ingress object. If resource is specified, a service.Name and - service.Port must not be specified. - This is a mutually exclusive setting with "Service". - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of - resource being referenced - type: string - name: - description: Name is the name of - resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: |- - service references a service as a backend. - This is a mutually exclusive setting with "Resource". - properties: - name: - description: |- - name is the referenced service. The service must exist in - the same namespace as the Ingress object. - type: string - port: - description: |- - port of the referenced service. A port name or port number - is required for a IngressServiceBackend. - properties: - name: - description: |- - name is the name of the port on the Service. - This is a mutually exclusive setting with "Number". - type: string - number: - description: |- - number is the numerical port number (e.g. 80) on the Service. - This is a mutually exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - path: - description: |- - path is matched against the path of an incoming request. Currently it can - contain characters disallowed from the conventional "path" part of a URL - as defined by RFC 3986. Paths must begin with a '/' and must be present - when using PathType with value "Exact" or "Prefix". - type: string - pathType: - description: |- - pathType determines the interpretation of the path matching. PathType can - be one of the following values: - * Exact: Matches the URL path exactly. - * Prefix: Matches based on a URL path prefix split by '/'. Matching is - done on a path element by element basis. A path element refers is the - list of labels in the path split by the '/' separator. A request is a - match for path p if every p is an element-wise prefix of p of the - request path. Note that if the last element of the path is a substring - of the last element in request path, it is not a match (e.g. /foo/bar - matches /foo/bar/baz, but does not match /foo/barbaz). - * ImplementationSpecific: Interpretation of the Path matching is up to - the IngressClass. Implementations can treat this as a separate PathType - or treat it identically to Prefix or Exact path types. - Implementations are required to support all path types. - type: string - required: - - backend - - pathType - type: object - type: array - x-kubernetes-list-type: atomic - required: - - paths - type: object - type: object - type: array - x-kubernetes-list-type: atomic - tls: - description: |- - tls represents the TLS configuration. Currently the Ingress only supports a - single TLS port, 443. If multiple members of this list specify different hosts, - they will be multiplexed on the same port according to the hostname specified - through the SNI TLS extension, if the ingress controller fulfilling the - ingress supports SNI. - items: - description: IngressTLS describes the transport layer - security associated with an ingress. - properties: - hosts: - description: |- - hosts is a list of hosts included in the TLS certificate. The values in - this list must match the name/s used in the tlsSecret. Defaults to the - wildcard host setting for the loadbalancer controller fulfilling this - Ingress, if left unspecified. - items: - type: string - type: array - x-kubernetes-list-type: atomic - secretName: - description: |- - secretName is the name of the secret used to terminate TLS traffic on - port 443. Field is left optional to allow TLS routing based on SNI - hostname alone. If the SNI host in a listener conflicts with the "Host" - header field used by an IngressRule, the SNI host is used for termination - and value of the "Host" header is used for routing. - type: string - type: object - type: array - x-kubernetes-list-type: atomic - type: object - ingressAnnotations: - additionalProperties: - type: string - description: IngressAnnotations `Ingress` annotations to be - populated in ingress spec. - type: object - jvm.options: - description: JvmOptions overrides `JvmOptions` at top level. - type: string - kind: - default: StatefulSet - description: |- - Kind Can be StatefulSet or Deployment. - Note: volumeClaimTemplates are ignored when kind=Deployment - type: string - lifecycle: - description: Lifecycle - properties: - postStart: - description: |- - PostStart is called immediately after a container is created. If the handler fails, - the container is terminated and restarted according to its restart policy. - Other management of the container blocks until the hook completes. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: |- - Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept - for the backward compatibility. There are no validation of this field and - lifecycle hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: |- - PreStop is called immediately before a container is terminated due to an - API request or management event such as liveness/startup probe failure, - preemption, resource contention, etc. The handler is not called if the - container crashes or exits. The Pod's termination grace period countdown begins before the - PreStop hook is executed. Regardless of the outcome of the handler, the - container will eventually terminate within the Pod's termination grace - period (unless delayed by finalizers). Other management of the container blocks until the hook completes - or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: |- - Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept - for the backward compatibility. There are no validation of this field and - lifecycle hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: |- - LivenessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - log4j.config: - description: Log4jConfig Overrides `Log4jConfig` at top level. - type: string - maxSurge: - description: |- - MaxSurge For Deployment object only. - Set to 25% by default. - format: int32 - type: integer - maxUnavailable: - description: |- - MaxUnavailable For deployment object only. - Set to 25% by default - format: int32 - type: integer - nodeConfigMountPath: - description: NodeConfigMountPath in-container directory to mount - with runtime.properties, jvm.config, log4j2.xml files. - type: string - nodeSelector: - additionalProperties: - type: string - description: NodeSelector Kubernetes native `nodeSelector` specification. - type: object - nodeType: - description: NodeDruid `Druid` node type. - enum: - - historical - - overlord - - middleManager - - indexer - - broker - - coordinator - - router - type: string - persistentVolumeClaim: - description: VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` - specification. - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - podAnnotations: - additionalProperties: - type: string - description: PodAnnotations Custom annotation to be populated - in the workload's pods. - type: object - podDisruptionBudgetSpec: - description: PodDisruptionBudgetSpec Kubernetes native `podDisruptionBudget` - specification. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - An eviction is allowed if at most "maxUnavailable" pods selected by - "selector" are unavailable after the eviction, i.e. even in absence of - the evicted pod. For example, one can prevent all voluntary evictions - by specifying 0. This is a mutually exclusive setting with "minAvailable". - x-kubernetes-int-or-string: true - minAvailable: - anyOf: - - type: integer - - type: string - description: |- - An eviction is allowed if at least "minAvailable" pods selected by - "selector" will still be available after the eviction, i.e. even in the - absence of the evicted pod. So for example you can prevent all voluntary - evictions by specifying "100%". - x-kubernetes-int-or-string: true - selector: - description: |- - Label query over pods whose evictions are managed by the disruption - budget. - A null selector will match no pods, while an empty ({}) selector will select - all pods within the namespace. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - unhealthyPodEvictionPolicy: - description: |- - UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods - should be considered for eviction. Current implementation considers healthy pods, - as pods that have status.conditions item with type="Ready",status="True". - - - Valid policies are IfHealthyBudget and AlwaysAllow. - If no policy is specified, the default behavior will be used, - which corresponds to the IfHealthyBudget policy. - - - IfHealthyBudget policy means that running pods (status.phase="Running"), - but not yet healthy can be evicted only if the guarded application is not - disrupted (status.currentHealthy is at least equal to status.desiredHealthy). - Healthy pods will be subject to the PDB for eviction. - - - AlwaysAllow policy means that all running pods (status.phase="Running"), - but not yet healthy are considered disrupted and can be evicted regardless - of whether the criteria in a PDB is met. This means perspective running - pods of a disrupted application might not get a chance to become healthy. - Healthy pods will be subject to the PDB for eviction. - - - Additional policies may be added in the future. - Clients making eviction decisions should disallow eviction of unhealthy pods - if they encounter an unrecognized policy in this field. - - - This field is beta-level. The eviction API uses this field when - the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). - type: string - type: object - podLabels: - additionalProperties: - type: string - description: PodLabels Custom labels to be populated in the - workload's pods. - type: object - podManagementPolicy: - default: Parallel - description: PodManagementPolicy - type: string - ports: - description: Ports Extra ports to be added to pod spec. - items: - description: ContainerPort represents a network port in a - single container. - properties: - containerPort: - description: |- - Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: |- - Number of port to expose on the host. - If specified, this must be a valid port number, 0 < x < 65536. - If HostNetwork is specified, this must match ContainerPort. - Most containers do not need this. - format: int32 - type: integer - name: - description: |- - If specified, this must be an IANA_SVC_NAME and unique within the pod. Each - named port in a pod must have a unique name. Name for the port that can be - referred to by services. - type: string - protocol: - default: TCP - description: |- - Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - priorityClassName: - description: PriorityClassName Kubernetes native `priorityClassName` - specification. - type: string - readinessProbe: - description: |- - ReadinessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - replicas: - description: Replicas replica of the workload - format: int32 - minimum: 0 - type: integer - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runtime.properties: - description: RuntimeProperties Additional runtime configuration - for the specific workload. - type: string - securityContext: - description: PodSecurityContext Overrides `securityContext` - at top level. - properties: - fsGroup: - description: |- - A special supplemental group that applies to all containers in a pod. - Some volume types allow the Kubelet to change the ownership of that volume - to be owned by the pod: - - - 1. The owning GID will be the FSGroup - 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- - - - If unset, the Kubelet will not modify the ownership and permissions of any volume. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - fsGroupChangePolicy: - description: |- - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume - before being exposed inside Pod. This field will only apply to - volume types which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such as: secret, configmaps - and emptydir. - Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. - Note that this field cannot be set when spec.os.name is windows. - type: string - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in SecurityContext. If set in - both SecurityContext and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by the containers in this pod. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - supplementalGroups: - description: |- - A list of groups applied to the first process run in each container, in addition - to the container's primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container process. If unspecified, - no additional groups are added to any container. Note that group memberships - defined in the container image for the uid of the container process are still effective, - even if they are not included in this list. - Note that this field cannot be set when spec.os.name is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: |- - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported - sysctls (by the container runtime) might fail to launch. - Note that this field cannot be set when spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName Kubernetes native `serviceAccountName` - specification. - type: string - services: - description: Services Overrides services at top level. - items: - description: |- - Service is a named abstraction of software service (for example, mysql) consisting of local port - (for example 3306) that the proxy listens on, and the selector that determines which pods - will answer requests sent through the proxy. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - Spec defines the behavior of a service. - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: |- - allocateLoadBalancerNodePorts defines if NodePorts will be automatically - allocated for services with type LoadBalancer. Default is "true". It - may be set to "false" if the cluster load-balancer does not rely on - NodePorts. If the caller requests specific NodePorts (by specifying a - value), those requests will be respected, regardless of this field. - This field may only be set for services with type LoadBalancer and will - be cleared if the type is changed to any other type. - type: boolean - clusterIP: - description: |- - clusterIP is the IP address of the service and is usually assigned - randomly. If an address is specified manually, is in-range (as per - system configuration), and is not in use, it will be allocated to the - service; otherwise creation of the service will fail. This field may not - be changed through updates unless the type field is also being changed - to ExternalName (which requires this field to be blank) or the type - field is being changed from ExternalName (in which case this field may - optionally be specified, as describe above). Valid values are "None", - empty string (""), or a valid IP address. Setting this to "None" makes a - "headless service" (no virtual IP), which is useful when direct endpoint - connections are preferred and proxying is not required. Only applies to - types ClusterIP, NodePort, and LoadBalancer. If this field is specified - when creating a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - clusterIPs: - description: |- - ClusterIPs is a list of IP addresses assigned to this service, and are - usually assigned randomly. If an address is specified manually, is - in-range (as per system configuration), and is not in use, it will be - allocated to the service; otherwise creation of the service will fail. - This field may not be changed through updates unless the type field is - also being changed to ExternalName (which requires this field to be - empty) or the type field is being changed from ExternalName (in which - case this field may optionally be specified, as describe above). Valid - values are "None", empty string (""), or a valid IP address. Setting - this to "None" makes a "headless service" (no virtual IP), which is - useful when direct endpoint connections are preferred and proxying is - not required. Only applies to types ClusterIP, NodePort, and - LoadBalancer. If this field is specified when creating a Service of type - ExternalName, creation will fail. This field will be wiped when updating - a Service to type ExternalName. If this field is not specified, it will - be initialized from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP have the same - value. - - - This field may hold a maximum of two entries (dual-stack IPs, in either order). - These IPs must correspond to the values of the ipFamilies field. Both - clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: |- - externalIPs is a list of IP addresses for which nodes in the cluster - will also accept traffic for this service. These IPs are not managed by - Kubernetes. The user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external load-balancers - that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: |- - externalName is the external reference that discovery mechanisms will - return as an alias for this service (e.g. a DNS CNAME record). No - proxying will be involved. Must be a lowercase RFC-1123 hostname - (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: |- - externalTrafficPolicy describes how nodes distribute service traffic they - receive on one of the Service's "externally-facing" addresses (NodePorts, - ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure - the service in a way that assumes that external load balancers will take care - of balancing the service traffic between nodes, and so each node will deliver - traffic only to the node-local endpoints of the service, without masquerading - the client source IP. (Traffic mistakenly sent to a node with no endpoints will - be dropped.) The default value, "Cluster", uses the standard behavior of - routing to all endpoints evenly (possibly modified by topology and other - features). Note that traffic sent to an External IP or LoadBalancer IP from - within the cluster will always get "Cluster" semantics, but clients sending to - a NodePort from within the cluster may need to take traffic policy into account - when picking a node. - type: string - healthCheckNodePort: - description: |- - healthCheckNodePort specifies the healthcheck nodePort for the service. - This only applies when type is set to LoadBalancer and - externalTrafficPolicy is set to Local. If a value is specified, is - in-range, and is not in use, it will be used. If not specified, a value - will be automatically allocated. External systems (e.g. load-balancers) - can use this port to determine if a given node holds endpoints for this - service or not. If this field is specified when creating a Service - which does not need it, creation will fail. This field will be wiped - when updating a Service to no longer need it (e.g. changing type). - This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: |- - InternalTrafficPolicy describes how nodes distribute service traffic they - receive on the ClusterIP. If set to "Local", the proxy will assume that pods - only want to talk to endpoints of the service on the same node as the pod, - dropping the traffic if there are no local endpoints. The default value, - "Cluster", uses the standard behavior of routing to all endpoints evenly - (possibly modified by topology and other features). - type: string - ipFamilies: - description: |- - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this - service. This field is usually assigned automatically based on cluster - configuration and the ipFamilyPolicy field. If this field is specified - manually, the requested family is available in the cluster, - and ipFamilyPolicy allows it, it will be used; otherwise creation of - the service will fail. This field is conditionally mutable: it allows - for adding or removing a secondary IP family, but it does not allow - changing the primary IP family of the Service. Valid values are "IPv4" - and "IPv6". This field only applies to Services of types ClusterIP, - NodePort, and LoadBalancer, and does apply to "headless" services. - This field will be wiped when updating a Service to type ExternalName. - - - This field may hold a maximum of two entries (dual-stack families, in - either order). These families must correspond to the values of the - clusterIPs field, if specified. Both clusterIPs and ipFamilies are - governed by the ipFamilyPolicy field. - items: - description: |- - IPFamily represents the IP Family (IPv4 or IPv6). This type is used - to express the family of an IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by - this Service. If there is no value provided, then this field will be set - to SingleStack. Services can be "SingleStack" (a single IP family), - "PreferDualStack" (two IP families on dual-stack configured clusters or - a single IP family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, otherwise fail). The - ipFamilies and clusterIPs fields depend on the value of this field. This - field will be wiped when updating a service to type ExternalName. - type: string - loadBalancerClass: - description: |- - loadBalancerClass is the class of the load balancer implementation this Service belongs to. - If specified, the value of this field must be a label-style identifier, with an optional prefix, - e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. - This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load - balancer implementation is used, today this is typically done through the cloud provider integration, - but should apply for any default implementation. If set, it is assumed that a load balancer - implementation is watching for Services with a matching class. Any default load balancer - implementation (e.g. cloud providers) should ignore Services that set this field. - This field can only be set when creating or updating a Service to type 'LoadBalancer'. - Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: |- - Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. - This field will be ignored if the cloud-provider does not support the feature. - Deprecated: This field was under-specified and its meaning varies across implementations, - and it cannot support dual-stack. - As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. - This field may be removed in a future API version. - type: string - loadBalancerSourceRanges: - description: |- - If specified and supported by the platform, this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client IPs. This field will be ignored if the - cloud-provider does not support the feature." - More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - items: - type: string - type: array - ports: - description: |- - The list of ports that are exposed by this service. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - description: ServicePort contains information on - service's port. - properties: - appProtocol: - description: |- - The application protocol for this port. - This field follows standard Kubernetes label syntax. - Un-prefixed names are reserved for IANA standard service names (as per - RFC-6335 and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed names such as - mycompany.com/my-custom-protocol. - type: string - name: - description: |- - The name of this port within the service. This must be a DNS_LABEL. - All ports within a ServiceSpec must have unique names. When considering - the endpoints for a Service, this must match the 'name' field in the - EndpointPort. - Optional if only one ServicePort is defined on this service. - type: string - nodePort: - description: |- - The port on each node on which this service is exposed when type is - NodePort or LoadBalancer. Usually assigned by the system. If a value is - specified, in-range, and not in use it will be used, otherwise the - operation will fail. If not specified, a port will be allocated if this - Service requires one. If this field is specified when creating a - Service which does not need it, creation will fail. This field will be - wiped when updating a Service to no longer need it (e.g. changing type - from NodePort to ClusterIP). - More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - format: int32 - type: integer - port: - description: The port that will be exposed by - this service. - format: int32 - type: integer - protocol: - default: TCP - description: |- - The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". - Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the pods targeted by the service. - Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named port in the - target Pod's container ports. If this is not specified, the value - of the 'port' field is used (an identity map). - This field is ignored for services with clusterIP=None, and should be - omitted or set equal to the 'port' field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: |- - publishNotReadyAddresses indicates that any agent which deals with endpoints for this - Service should disregard any indications of ready/not-ready. - The primary use case for setting this field is for a StatefulSet's Headless Service to - propagate SRV DNS records for its Pods for the purpose of peer discovery. - The Kubernetes controllers that generate Endpoints and EndpointSlice resources for - Services interpret this to mean that all endpoints are considered "ready" even if the - Pods themselves are not. Agents which consume only Kubernetes generated endpoints - through the Endpoints or EndpointSlice resources can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: |- - Route service traffic to pods with label keys and values matching this - selector. If empty or not present, the service is assumed to have an - external process managing its endpoints, which Kubernetes will not - modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: |- - Supports "ClientIP" and "None". Used to maintain session affinity. - Enable client IP based session affinity. - Must be ClientIP or None. - Defaults to None. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations - of Client IP based session affinity. - properties: - timeoutSeconds: - description: |- - timeoutSeconds specifies the seconds of ClientIP type session sticky time. - The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". - Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: |- - type determines how the Service is exposed. Defaults to ClusterIP. Valid - options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that is not - specified, by manual construction of an Endpoints object or - EndpointSlice objects. If clusterIP is "None", no virtual IP is - allocated and the endpoints are published as a set of endpoints rather - than a virtual IP. - "NodePort" builds on ClusterIP and allocates a port on every node which - routes to the same endpoints as the clusterIP. - "LoadBalancer" builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes to the same endpoints - as the clusterIP. - "ExternalName" aliases this service to the specified externalName. - Several other fields do not apply to ExternalName services. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - type: string - type: object - status: - description: |- - Most recently observed status of the service. - Populated by the system. - Read-only. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one - aspect of the current state of this API Resource.\n---\nThis - struct is intended for direct use as an array - at the field path .status.conditions. For example,\n\n\n\ttype - FooStatus struct{\n\t // Represents the observations - of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t - \ // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t - \ // +listType=map\n\t // +listMapKey=type\n\t - \ Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of - True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: |- - LoadBalancer contains the current status of the load-balancer, - if one is present. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - --- - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number - of the service port of which status - is recorded here - format: int32 - type: integer - protocol: - default: TCP - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startUpProbe: - description: StartUpProbe - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - terminationGracePeriodSeconds: - description: TerminationGracePeriodSeconds - format: int64 - type: integer - tolerations: - description: Tolerations Kubernetes native `tolerations` specification. - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - description: |- - Effect indicates the taint effect to match. Empty means match all taint effects. - When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: |- - Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod can - tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - description: TopologySpreadConstraints Kubernetes Native `topologySpreadConstraints` - specification. - items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. - properties: - labelSelector: - description: |- - LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine the number of pods - in their corresponding topology domain. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - MatchLabelKeys cannot be set when LabelSelector isn't set. - Keys that don't exist in the incoming pod labels will - be ignored. A null or empty list means only match against labelSelector. - - - This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - maxSkew: - description: |- - MaxSkew describes the degree to which pods may be unevenly distributed. - When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference - between the number of matching pods in the target topology and the global minimum. - The global minimum is the minimum number of matching pods in an eligible domain - or zero if the number of eligible domains is less than MinDomains. - For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same - labelSelector spread as 2/2/1: - In this case, the global minimum is 1. - | zone1 | zone2 | zone3 | - | P P | P P | P | - - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; - scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) - violate MaxSkew(1). - - if MaxSkew is 2, incoming pod can be scheduled onto any zone. - When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence - to topologies that satisfy it. - It's a required field. Default value is 1 and 0 is not allowed. - format: int32 - type: integer - minDomains: - description: |- - MinDomains indicates a minimum number of eligible domains. - When the number of eligible domains with matching topology keys is less than minDomains, - Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. - And when the number of eligible domains with matching topology keys equals or greater than minDomains, - this value has no effect on scheduling. - As a result, when the number of eligible domains is less than minDomains, - scheduler won't schedule more than maxSkew Pods to those domains. - If value is nil, the constraint behaves as if MinDomains is equal to 1. - Valid values are integers greater than 0. - When value is not nil, WhenUnsatisfiable must be DoNotSchedule. - - - For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same - labelSelector spread as 2/2/2: - | zone1 | zone2 | zone3 | - | P P | P P | P P | - The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. - In this situation, new pod with the same labelSelector cannot be scheduled, - because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, - it will violate MaxSkew. - - - This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). - format: int32 - type: integer - nodeAffinityPolicy: - description: |- - NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector - when calculating pod topology spread skew. Options are: - - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. - - - If this value is nil, the behavior is equivalent to the Honor policy. - This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - type: string - nodeTaintsPolicy: - description: |- - NodeTaintsPolicy indicates how we will treat node taints when calculating - pod topology spread skew. Options are: - - Honor: nodes without taints, along with tainted nodes for which the incoming pod - has a toleration, are included. - - Ignore: node taints are ignored. All nodes are included. - - - If this value is nil, the behavior is equivalent to the Ignore policy. - This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - type: string - topologyKey: - description: |- - TopologyKey is the key of node labels. Nodes that have a label with this key - and identical values are considered to be in the same topology. - We consider each as a "bucket", and try to put balanced number - of pods into each bucket. - We define a domain as a particular instance of a topology. - Also, we define an eligible domain as a domain whose nodes meet the requirements of - nodeAffinityPolicy and nodeTaintsPolicy. - e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. - And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. - It's a required field. - type: string - whenUnsatisfiable: - description: |- - WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy - the spread constraint. - - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. - A constraint is considered "Unsatisfiable" for an incoming pod - if and only if every possible node assignment for that pod would violate - "MaxSkew" on some topology. - For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same - labelSelector spread as 3/1/1: - | zone1 | zone2 | zone3 | - | P P P | P | P | - If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled - to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies - MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler - won't make it *more* imbalanced. - It's a required field. - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - updateStrategy: - description: UpdateStrategy - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters - when Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - The maximum number of pods that can be unavailable during the update. - Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). - Absolute number is calculated from percentage by rounding up. This can not be 0. - Defaults to 1. This field is alpha-level and is only honored by servers that enable the - MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to - Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it - will be counted towards MaxUnavailable. - x-kubernetes-int-or-string: true - partition: - description: |- - Partition indicates the ordinal at which the StatefulSet should be partitioned - for updates. During a rolling update, all pods from ordinal Replicas-1 to - Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. - This is helpful in being able to do a canary based deployment. The default value is 0. - format: int32 - type: integer - type: object - type: - description: |- - Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - description: VolumeClaimTemplates Kubernetes Native `volumeClaimTemplates` - specification. - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - volumeMounts: - description: VolumeMounts Kubernetes Native `volumeMounts` specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes Kubernetes Native `volumes` specification. - items: - description: Volume represents a named volume in a pod that - may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: |- - awsElasticBlockStore represents an AWS Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - format: int32 - type: integer - readOnly: - description: |- - readOnly value true will force the readOnly setting in VolumeMounts. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: boolean - volumeID: - description: |- - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: - None, Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk - in the blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the - blob storage - type: string - fsType: - description: |- - fsType is Filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure managed - data disk (only in managed availability set). defaults - to shared' - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service - mount on the host and bind mount to the pod. - properties: - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that - contains Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the - host that shares a pod's lifetime - properties: - monitors: - description: |- - monitors is Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted - root, rather than the full Ceph tree, default is - /' - type: string - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: boolean - secretFile: - description: |- - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - secretRef: - description: |- - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is optional: User is the rados user name, default is admin - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - required: - - monitors - type: object - cinder: - description: |- - cinder represents a cinder volume attached and mounted on kubelets host machine. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: boolean - secretRef: - description: |- - secretRef is optional: points to a secret object containing parameters used to connect - to OpenStack. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: |- - volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should - populate this volume - properties: - defaultMode: - description: |- - defaultMode is optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers (Beta feature). - properties: - driver: - description: |- - driver is the name of the CSI driver that handles this volume. - Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: |- - fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated CSI driver - which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: |- - nodePublishSecretRef is a reference to the secret object containing - sensitive information to pass to the CSI driver to complete the CSI - NodePublishVolume and NodeUnpublishVolume calls. - This field is optional, and may be empty if no secret is required. If the - secret object contains more than one secret, all secret references are passed. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: |- - readOnly specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: |- - volumeAttributes stores driver-specific properties that are passed to the CSI - driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about - the pod that should populate this volume - properties: - defaultMode: - description: |- - Optional: mode bits to use on created files by default. Must be a - Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: Items is a list of downward API volume - file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the - pod: only annotations, labels, name and namespace - are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of the - relative path must not start with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required for - volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: |- - emptyDir represents a temporary directory that shares a pod's lifetime. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - properties: - medium: - description: |- - medium represents what type of storage medium should back this directory. - The default is "" which means to use the node's default medium. - Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: |- - sizeLimit is the total amount of local storage required for this EmptyDir volume. - The size limit is also applicable for memory medium. - The maximum usage on memory medium EmptyDir would be the minimum value between - the SizeLimit specified here and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: |- - ephemeral represents a volume that is handled by a cluster storage driver. - The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, - and deleted when the pod is removed. - - - Use this if: - a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot or capacity - tracking are needed, - c) the storage driver is specified through a storage class, and - d) the storage driver supports dynamic volume provisioning through - a PersistentVolumeClaim (see EphemeralVolumeSource for more - information on the connection between this volume type - and PersistentVolumeClaim). - - - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. - - - Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to - be used that way - see the documentation of the driver for - more information. - - - A pod can use both types of ephemeral volumes and - persistent volumes at the same time. - properties: - volumeClaimTemplate: - description: |- - Will be used to create a stand-alone PVC to provision the volume. - The pod in which this EphemeralVolumeSource is embedded will be the - owner of the PVC, i.e. the PVC will be deleted together with the - pod. The name of the PVC will be `-` where - `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated name - is not valid for a PVC (for example, too long). - - - An existing PVC with that name that is not owned by the pod - will *not* be used for the pod to avoid using an unrelated - volume by mistake. Starting the pod is then blocked until - the unrelated PVC is removed. If such a pre-created PVC is - meant to be used by the pod, the PVC has to updated with an - owner reference to the pod once the pod exists. Normally - this should not be necessary, but it may be useful when - manually reconstructing a broken cluster. - - - This field is read-only and no changes will be made by Kubernetes - to the PVC after it has been created. - - - Required, must not be nil. - properties: - metadata: - description: |- - May contain labels and annotations that will be copied into the PVC - when creating it. No other fields are allowed and will be rejected during - validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - The specification for the PersistentVolumeClaim. The entire content is - copied unchanged into the PVC that gets created from this - template. The same fields as in a PersistentVolumeClaim - are also valid here. - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references - one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over - volumes to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that - is attached to a kubelet's host machine and then exposed - to the pod. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: |- - wwids Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - items: - type: string - type: array - type: object - flexVolume: - description: |- - flexVolume represents a generic volume resource that is - provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use - for this volume. - type: string - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds - extra command options if any.' - type: object - readOnly: - description: |- - readOnly is Optional: defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef is Optional: secretRef is reference to the secret object containing - sensitive information to pass to the plugin scripts. This may be - empty if no secret object is specified. If the secret object - contains more than one secret, all secrets are passed to the plugin - scripts. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running - properties: - datasetName: - description: |- - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker - should be considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: |- - gcePersistentDisk represents a GCE Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - properties: - fsType: - description: |- - fsType is filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - format: int32 - type: integer - pdName: - description: |- - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: boolean - required: - - pdName - type: object - gitRepo: - description: |- - gitRepo represents a git repository at a particular revision. - DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an - EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir - into the Pod's container. - properties: - directory: - description: |- - directory is the target directory name. - Must not contain or start with '..'. If '.' is supplied, the volume directory will be the - git repository. Otherwise, if specified, the volume will contain the git repository in - the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: |- - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/glusterfs/README.md - properties: - endpoints: - description: |- - endpoints is the endpoint name that details Glusterfs topology. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - path: - description: |- - path is the Glusterfs volume path. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - readOnly: - description: |- - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: |- - hostPath represents a pre-existing file or directory on the host - machine that is directly exposed to the container. This is generally - used for system agents or other privileged things that are allowed - to see the host machine. Most containers will NOT need this. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- - TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not - mount host directories as read/write. - properties: - path: - description: |- - path of the directory on the host. - If the path is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - type: - description: |- - type for HostPath Volume - Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - required: - - path - type: object - iscsi: - description: |- - iscsi represents an ISCSI Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://examples.k8s.io/volumes/iscsi/README.md - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support - iSCSI Session CHAP authentication - type: boolean - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - initiatorName: - description: |- - initiatorName is the custom iSCSI Initiator Name. - If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface - : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: |- - iscsiInterface is the interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: |- - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI - target and initiator authentication - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: |- - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: |- - name of the volume. - Must be a DNS_LABEL and unique within the pod. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - nfs: - description: |- - nfs represents an NFS mount on the host that shares a pod's lifetime - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - properties: - path: - description: |- - path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - readOnly: - description: |- - readOnly here will force the NFS export to be mounted with read-only permissions. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: boolean - server: - description: |- - server is the hostname or IP address of the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: |- - persistentVolumeClaimVolumeSource represents a reference to a - PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - claimName: - description: |- - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - type: string - readOnly: - description: |- - readOnly Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host - machine - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon - Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume - attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx - volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources - secrets, configmaps, and downward API - properties: - defaultMode: - description: |- - defaultMode are the mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along - with other supported volume types - properties: - configMap: - description: configMap information about the - configMap data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the - ConfigMap or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the - downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a - field of the pod: only annotations, - labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema - the FieldPath is written in - terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field - to select in the specified API - version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the - relative path name of the file to - be created. Must not be absolute - or contain the ''..'' path. Must - be utf-8 encoded. The first item - of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: - required for volumes, optional - for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource - to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret - data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional field specify whether - the Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project - properties: - audience: - description: |- - audience is the intended audience of the token. A recipient of a token - must identify itself with an identifier specified in the audience of the - token, and otherwise should reject the token. The audience defaults to the - identifier of the apiserver. - type: string - expirationSeconds: - description: |- - expirationSeconds is the requested duration of validity of the service - account token. As the token approaches expiration, the kubelet volume - plugin will proactively rotate the service account token. The kubelet will - start trying to rotate the token if the token is older than 80 percent of - its time to live or if the token is older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - format: int64 - type: integer - path: - description: |- - path is the path relative to the mount point of the file to project the - token into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the - host that shares a pod's lifetime - properties: - group: - description: |- - group to map volume access to - Default is no group - type: string - readOnly: - description: |- - readOnly here will force the Quobyte volume to be mounted with read-only permissions. - Defaults to false. - type: boolean - registry: - description: |- - registry represents a single or multiple Quobyte Registry services - specified as a string as host:port pair (multiple entries are separated with commas) - which acts as the central registry for volumes - type: string - tenant: - description: |- - tenant owning the given Quobyte volume in the Backend - Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: |- - user to map volume access to - Defaults to serivceaccount user - type: string - volume: - description: volume is a string that references an - already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: |- - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/rbd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - image: - description: |- - image is the rados image name. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - keyring: - description: |- - keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - monitors: - description: |- - monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - items: - type: string - type: array - pool: - description: |- - pool is the rados pool name. - Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: boolean - secretRef: - description: |- - secretRef is name of the authentication secret for RBDUser. If provided - overrides keyring. - Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is the rados user name. - Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". - Default is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef references to the secret for ScaleIO user and other - sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: |- - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool - associated with the protection domain. - type: string - system: - description: system is the name of the storage system - as configured in ScaleIO. - type: string - volumeName: - description: |- - volumeName is the name of a volume already created in the ScaleIO system - that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: |- - secret represents a secret that should populate this volume. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - properties: - defaultMode: - description: |- - defaultMode is Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values - for mode bits. Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items If unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret - or its keys must be defined - type: boolean - secretName: - description: |- - secretName is the name of the secret in the pod's namespace to use. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef specifies the secret to use for obtaining the StorageOS API - credentials. If not specified, default values will be attempted. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: |- - volumeName is the human-readable name of the StorageOS volume. Volume - names are only unique within a namespace. - type: string - volumeNamespace: - description: |- - volumeNamespace specifies the scope of the volume within StorageOS. If no - namespace is specified then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS for tighter integration. - Set VolumeName to any name to override the default behaviour. - Set to "default" if you are not using namespaces within StorageOS. - Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume - attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated with - the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy - Based Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies - vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - workloadAnnotations: - additionalProperties: - type: string - description: WorkloadAnnotations annotations to be populated - in StatefulSet or Deployment spec. - type: object - required: - - druid.port - - nodeConfigMountPath - - nodeType - - runtime.properties - type: object - description: |- - Nodes a list of `Druid` Node types and their configurations. - `DruidSpec` is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific - `NodeSpec` level. - type: object - podAnnotations: - additionalProperties: - type: string - description: PodAnnotations Custom annotations to be populated in - `Druid` pods. - type: object - podLabels: - additionalProperties: - type: string - description: PodLabels Custom labels to be populated in `Druid` pods. - type: object - podManagementPolicy: - default: Parallel - description: PodManagementPolicy - type: string - priorityClassName: - description: PriorityClassName Kubernetes native `priorityClassName` - specification. - type: string - readinessProbe: - description: |- - ReadinessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - rollingDeploy: - default: true - description: |- - RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: - https://druid.apache.org/docs/latest/operations/rolling-updates.html - If set to true then operator checks the rollout status of previous version workloads before updating the next. - This will be done only for update actions. - type: boolean - scalePvcSts: - default: false - description: ScalePvcSts When enabled, operator will allow volume - expansion of StatefulSet's PVCs. - type: boolean - securityContext: - description: PodSecurityContext - properties: - fsGroup: - description: |- - A special supplemental group that applies to all containers in a pod. - Some volume types allow the Kubelet to change the ownership of that volume - to be owned by the pod: - - - 1. The owning GID will be the FSGroup - 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- - - - If unset, the Kubelet will not modify the ownership and permissions of any volume. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - fsGroupChangePolicy: - description: |- - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume - before being exposed inside Pod. This field will only apply to - volume types which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such as: secret, configmaps - and emptydir. - Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. - Note that this field cannot be set when spec.os.name is windows. - type: string - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in SecurityContext. If set in - both SecurityContext and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by the containers in this pod. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - supplementalGroups: - description: |- - A list of groups applied to the first process run in each container, in addition - to the container's primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container process. If unspecified, - no additional groups are added to any container. Note that group memberships - defined in the container image for the uid of the container process are still effective, - even if they are not included in this list. - Note that this field cannot be set when spec.os.name is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: |- - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported - sysctls (by the container runtime) might fail to launch. - Note that this field cannot be set when spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccount: - description: ServiceAccount - type: string - services: - description: Services Kubernetes services to be created for each workload. - items: - description: |- - Service is a named abstraction of software service (for example, mysql) consisting of local port - (for example 3306) that the proxy listens on, and the selector that determines which pods - will answer requests sent through the proxy. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - Spec defines the behavior of a service. - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: |- - allocateLoadBalancerNodePorts defines if NodePorts will be automatically - allocated for services with type LoadBalancer. Default is "true". It - may be set to "false" if the cluster load-balancer does not rely on - NodePorts. If the caller requests specific NodePorts (by specifying a - value), those requests will be respected, regardless of this field. - This field may only be set for services with type LoadBalancer and will - be cleared if the type is changed to any other type. - type: boolean - clusterIP: - description: |- - clusterIP is the IP address of the service and is usually assigned - randomly. If an address is specified manually, is in-range (as per - system configuration), and is not in use, it will be allocated to the - service; otherwise creation of the service will fail. This field may not - be changed through updates unless the type field is also being changed - to ExternalName (which requires this field to be blank) or the type - field is being changed from ExternalName (in which case this field may - optionally be specified, as describe above). Valid values are "None", - empty string (""), or a valid IP address. Setting this to "None" makes a - "headless service" (no virtual IP), which is useful when direct endpoint - connections are preferred and proxying is not required. Only applies to - types ClusterIP, NodePort, and LoadBalancer. If this field is specified - when creating a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - clusterIPs: - description: |- - ClusterIPs is a list of IP addresses assigned to this service, and are - usually assigned randomly. If an address is specified manually, is - in-range (as per system configuration), and is not in use, it will be - allocated to the service; otherwise creation of the service will fail. - This field may not be changed through updates unless the type field is - also being changed to ExternalName (which requires this field to be - empty) or the type field is being changed from ExternalName (in which - case this field may optionally be specified, as describe above). Valid - values are "None", empty string (""), or a valid IP address. Setting - this to "None" makes a "headless service" (no virtual IP), which is - useful when direct endpoint connections are preferred and proxying is - not required. Only applies to types ClusterIP, NodePort, and - LoadBalancer. If this field is specified when creating a Service of type - ExternalName, creation will fail. This field will be wiped when updating - a Service to type ExternalName. If this field is not specified, it will - be initialized from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP have the same - value. - - - This field may hold a maximum of two entries (dual-stack IPs, in either order). - These IPs must correspond to the values of the ipFamilies field. Both - clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: |- - externalIPs is a list of IP addresses for which nodes in the cluster - will also accept traffic for this service. These IPs are not managed by - Kubernetes. The user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external load-balancers - that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: |- - externalName is the external reference that discovery mechanisms will - return as an alias for this service (e.g. a DNS CNAME record). No - proxying will be involved. Must be a lowercase RFC-1123 hostname - (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: |- - externalTrafficPolicy describes how nodes distribute service traffic they - receive on one of the Service's "externally-facing" addresses (NodePorts, - ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure - the service in a way that assumes that external load balancers will take care - of balancing the service traffic between nodes, and so each node will deliver - traffic only to the node-local endpoints of the service, without masquerading - the client source IP. (Traffic mistakenly sent to a node with no endpoints will - be dropped.) The default value, "Cluster", uses the standard behavior of - routing to all endpoints evenly (possibly modified by topology and other - features). Note that traffic sent to an External IP or LoadBalancer IP from - within the cluster will always get "Cluster" semantics, but clients sending to - a NodePort from within the cluster may need to take traffic policy into account - when picking a node. - type: string - healthCheckNodePort: - description: |- - healthCheckNodePort specifies the healthcheck nodePort for the service. - This only applies when type is set to LoadBalancer and - externalTrafficPolicy is set to Local. If a value is specified, is - in-range, and is not in use, it will be used. If not specified, a value - will be automatically allocated. External systems (e.g. load-balancers) - can use this port to determine if a given node holds endpoints for this - service or not. If this field is specified when creating a Service - which does not need it, creation will fail. This field will be wiped - when updating a Service to no longer need it (e.g. changing type). - This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: |- - InternalTrafficPolicy describes how nodes distribute service traffic they - receive on the ClusterIP. If set to "Local", the proxy will assume that pods - only want to talk to endpoints of the service on the same node as the pod, - dropping the traffic if there are no local endpoints. The default value, - "Cluster", uses the standard behavior of routing to all endpoints evenly - (possibly modified by topology and other features). - type: string - ipFamilies: - description: |- - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this - service. This field is usually assigned automatically based on cluster - configuration and the ipFamilyPolicy field. If this field is specified - manually, the requested family is available in the cluster, - and ipFamilyPolicy allows it, it will be used; otherwise creation of - the service will fail. This field is conditionally mutable: it allows - for adding or removing a secondary IP family, but it does not allow - changing the primary IP family of the Service. Valid values are "IPv4" - and "IPv6". This field only applies to Services of types ClusterIP, - NodePort, and LoadBalancer, and does apply to "headless" services. - This field will be wiped when updating a Service to type ExternalName. - - - This field may hold a maximum of two entries (dual-stack families, in - either order). These families must correspond to the values of the - clusterIPs field, if specified. Both clusterIPs and ipFamilies are - governed by the ipFamilyPolicy field. - items: - description: |- - IPFamily represents the IP Family (IPv4 or IPv6). This type is used - to express the family of an IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by - this Service. If there is no value provided, then this field will be set - to SingleStack. Services can be "SingleStack" (a single IP family), - "PreferDualStack" (two IP families on dual-stack configured clusters or - a single IP family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, otherwise fail). The - ipFamilies and clusterIPs fields depend on the value of this field. This - field will be wiped when updating a service to type ExternalName. - type: string - loadBalancerClass: - description: |- - loadBalancerClass is the class of the load balancer implementation this Service belongs to. - If specified, the value of this field must be a label-style identifier, with an optional prefix, - e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. - This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load - balancer implementation is used, today this is typically done through the cloud provider integration, - but should apply for any default implementation. If set, it is assumed that a load balancer - implementation is watching for Services with a matching class. Any default load balancer - implementation (e.g. cloud providers) should ignore Services that set this field. - This field can only be set when creating or updating a Service to type 'LoadBalancer'. - Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: |- - Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. - This field will be ignored if the cloud-provider does not support the feature. - Deprecated: This field was under-specified and its meaning varies across implementations, - and it cannot support dual-stack. - As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. - This field may be removed in a future API version. - type: string - loadBalancerSourceRanges: - description: |- - If specified and supported by the platform, this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client IPs. This field will be ignored if the - cloud-provider does not support the feature." - More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - items: - type: string - type: array - ports: - description: |- - The list of ports that are exposed by this service. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - description: ServicePort contains information on service's - port. - properties: - appProtocol: - description: |- - The application protocol for this port. - This field follows standard Kubernetes label syntax. - Un-prefixed names are reserved for IANA standard service names (as per - RFC-6335 and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed names such as - mycompany.com/my-custom-protocol. - type: string - name: - description: |- - The name of this port within the service. This must be a DNS_LABEL. - All ports within a ServiceSpec must have unique names. When considering - the endpoints for a Service, this must match the 'name' field in the - EndpointPort. - Optional if only one ServicePort is defined on this service. - type: string - nodePort: - description: |- - The port on each node on which this service is exposed when type is - NodePort or LoadBalancer. Usually assigned by the system. If a value is - specified, in-range, and not in use it will be used, otherwise the - operation will fail. If not specified, a port will be allocated if this - Service requires one. If this field is specified when creating a - Service which does not need it, creation will fail. This field will be - wiped when updating a Service to no longer need it (e.g. changing type - from NodePort to ClusterIP). - More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - default: TCP - description: |- - The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". - Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the pods targeted by the service. - Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named port in the - target Pod's container ports. If this is not specified, the value - of the 'port' field is used (an identity map). - This field is ignored for services with clusterIP=None, and should be - omitted or set equal to the 'port' field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: |- - publishNotReadyAddresses indicates that any agent which deals with endpoints for this - Service should disregard any indications of ready/not-ready. - The primary use case for setting this field is for a StatefulSet's Headless Service to - propagate SRV DNS records for its Pods for the purpose of peer discovery. - The Kubernetes controllers that generate Endpoints and EndpointSlice resources for - Services interpret this to mean that all endpoints are considered "ready" even if the - Pods themselves are not. Agents which consume only Kubernetes generated endpoints - through the Endpoints or EndpointSlice resources can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: |- - Route service traffic to pods with label keys and values matching this - selector. If empty or not present, the service is assumed to have an - external process managing its endpoints, which Kubernetes will not - modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: |- - Supports "ClientIP" and "None". Used to maintain session affinity. - Enable client IP based session affinity. - Must be ClientIP or None. - Defaults to None. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations of - Client IP based session affinity. - properties: - timeoutSeconds: - description: |- - timeoutSeconds specifies the seconds of ClientIP type session sticky time. - The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". - Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: |- - type determines how the Service is exposed. Defaults to ClusterIP. Valid - options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that is not - specified, by manual construction of an Endpoints object or - EndpointSlice objects. If clusterIP is "None", no virtual IP is - allocated and the endpoints are published as a set of endpoints rather - than a virtual IP. - "NodePort" builds on ClusterIP and allocates a port on every node which - routes to the same endpoints as the clusterIP. - "LoadBalancer" builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes to the same endpoints - as the clusterIP. - "ExternalName" aliases this service to the specified externalName. - Several other fields do not apply to ExternalName services. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - type: string - type: object - status: - description: |- - Most recently observed status of the service. - Populated by the system. - Read-only. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one aspect - of the current state of this API Resource.\n---\nThis - struct is intended for direct use as an array at the - field path .status.conditions. For example,\n\n\n\ttype - FooStatus struct{\n\t // Represents the observations - of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t - \ // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t - \ // +listType=map\n\t // +listMapKey=type\n\t - \ Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: |- - LoadBalancer contains the current status of the load-balancer, - if one is present. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - --- - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of - the service port of which status is recorded - here - format: int32 - type: integer - protocol: - default: TCP - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startScript: - default: /druid.sh - description: StartScript Path to Druid's start script to be run on - start. - type: string - startUpProbe: - description: StartUpProbe - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - tolerations: - description: Tolerations Kubernetes native `tolerations` specification. - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - description: |- - Effect indicates the taint effect to match. Empty means match all taint effects. - When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: |- - Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod can - tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - updateStrategy: - description: UpdateStrategy - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters when - Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - The maximum number of pods that can be unavailable during the update. - Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). - Absolute number is calculated from percentage by rounding up. This can not be 0. - Defaults to 1. This field is alpha-level and is only honored by servers that enable the - MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to - Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it - will be counted towards MaxUnavailable. - x-kubernetes-int-or-string: true - partition: - description: |- - Partition indicates the ordinal at which the StatefulSet should be partitioned - for updates. During a rolling update, all pods from ordinal Replicas-1 to - Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. - This is helpful in being able to do a canary based deployment. The default value is 0. - format: int32 - type: integer - type: object - type: - description: |- - Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - description: VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` - specification. - items: - description: PersistentVolumeClaim is a user's request for and claim - to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in - PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes to consider - for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources of - the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains details - about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed the - condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time the condition - transitioned from one status to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` specification. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes Kubernetes Native `Volumes` specification. - items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: |- - awsElasticBlockStore represents an AWS Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - format: int32 - type: integer - readOnly: - description: |- - readOnly value true will force the readOnly setting in VolumeMounts. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: boolean - volumeID: - description: |- - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: None, - Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk in the - blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the blob - storage - type: string - fsType: - description: |- - fsType is Filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single blob - disk per storage account Managed: azure managed data - disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that contains - Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: |- - monitors is Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted root, - rather than the full Ceph tree, default is /' - type: string - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: boolean - secretFile: - description: |- - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - secretRef: - description: |- - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is optional: User is the rados user name, default is admin - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - required: - - monitors - type: object - cinder: - description: |- - cinder represents a cinder volume attached and mounted on kubelets host machine. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: boolean - secretRef: - description: |- - secretRef is optional: points to a secret object containing parameters used to connect - to OpenStack. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: |- - volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: |- - defaultMode is optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents ephemeral - storage that is handled by certain external CSI drivers (Beta - feature). - properties: - driver: - description: |- - driver is the name of the CSI driver that handles this volume. - Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: |- - fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated CSI driver - which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: |- - nodePublishSecretRef is a reference to the secret object containing - sensitive information to pass to the CSI driver to complete the CSI - NodePublishVolume and NodeUnpublishVolume calls. - This field is optional, and may be empty if no secret is required. If the - secret object contains more than one secret, all secret references are passed. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: |- - readOnly specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: |- - volumeAttributes stores driver-specific properties that are passed to the CSI - driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: |- - Optional: mode bits to use on created files by default. Must be a - Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative path - name of the file to be created. Must not be absolute - or contain the ''..'' path. Must be utf-8 encoded. - The first item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: |- - emptyDir represents a temporary directory that shares a pod's lifetime. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - properties: - medium: - description: |- - medium represents what type of storage medium should back this directory. - The default is "" which means to use the node's default medium. - Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: |- - sizeLimit is the total amount of local storage required for this EmptyDir volume. - The size limit is also applicable for memory medium. - The maximum usage on memory medium EmptyDir would be the minimum value between - the SizeLimit specified here and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: |- - ephemeral represents a volume that is handled by a cluster storage driver. - The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, - and deleted when the pod is removed. - - - Use this if: - a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot or capacity - tracking are needed, - c) the storage driver is specified through a storage class, and - d) the storage driver supports dynamic volume provisioning through - a PersistentVolumeClaim (see EphemeralVolumeSource for more - information on the connection between this volume type - and PersistentVolumeClaim). - - - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. - - - Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to - be used that way - see the documentation of the driver for - more information. - - - A pod can use both types of ephemeral volumes and - persistent volumes at the same time. - properties: - volumeClaimTemplate: - description: |- - Will be used to create a stand-alone PVC to provision the volume. - The pod in which this EphemeralVolumeSource is embedded will be the - owner of the PVC, i.e. the PVC will be deleted together with the - pod. The name of the PVC will be `-` where - `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated name - is not valid for a PVC (for example, too long). - - - An existing PVC with that name that is not owned by the pod - will *not* be used for the pod to avoid using an unrelated - volume by mistake. Starting the pod is then blocked until - the unrelated PVC is removed. If such a pre-created PVC is - meant to be used by the pod, the PVC has to updated with an - owner reference to the pod once the pod exists. Normally - this should not be necessary, but it may be useful when - manually reconstructing a broken cluster. - - - This field is read-only and no changes will be made by Kubernetes - to the PVC after it has been created. - - - Required, must not be nil. - properties: - metadata: - description: |- - May contain labels and annotations that will be copied into the PVC - when creating it. No other fields are allowed and will be rejected during - validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - The specification for the PersistentVolumeClaim. The entire content is - copied unchanged into the PVC that gets created from this - template. The same fields as in a PersistentVolumeClaim - are also valid here. - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one - entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to the - pod. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: |- - wwids Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - items: - type: string - type: array - type: object - flexVolume: - description: |- - flexVolume represents a generic volume resource that is - provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use for - this volume. - type: string - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds extra - command options if any.' - type: object - readOnly: - description: |- - readOnly is Optional: defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef is Optional: secretRef is reference to the secret object containing - sensitive information to pass to the plugin scripts. This may be - empty if no secret object is specified. If the secret object - contains more than one secret, all secrets are passed to the plugin - scripts. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached to - a kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: |- - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker - should be considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. This - is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: |- - gcePersistentDisk represents a GCE Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - properties: - fsType: - description: |- - fsType is filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - format: int32 - type: integer - pdName: - description: |- - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: boolean - required: - - pdName - type: object - gitRepo: - description: |- - gitRepo represents a git repository at a particular revision. - DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an - EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir - into the Pod's container. - properties: - directory: - description: |- - directory is the target directory name. - Must not contain or start with '..'. If '.' is supplied, the volume directory will be the - git repository. Otherwise, if specified, the volume will contain the git repository in - the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: |- - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/glusterfs/README.md - properties: - endpoints: - description: |- - endpoints is the endpoint name that details Glusterfs topology. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - path: - description: |- - path is the Glusterfs volume path. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - readOnly: - description: |- - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: |- - hostPath represents a pre-existing file or directory on the host - machine that is directly exposed to the container. This is generally - used for system agents or other privileged things that are allowed - to see the host machine. Most containers will NOT need this. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- - TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not - mount host directories as read/write. - properties: - path: - description: |- - path of the directory on the host. - If the path is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - type: - description: |- - type for HostPath Volume - Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - required: - - path - type: object - iscsi: - description: |- - iscsi represents an ISCSI Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://examples.k8s.io/volumes/iscsi/README.md - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support iSCSI - Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support iSCSI - Session CHAP authentication - type: boolean - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - initiatorName: - description: |- - initiatorName is the custom iSCSI Initiator Name. - If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface - : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: |- - iscsiInterface is the interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: |- - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI target - and initiator authentication - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: |- - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: |- - name of the volume. - Must be a DNS_LABEL and unique within the pod. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - nfs: - description: |- - nfs represents an NFS mount on the host that shares a pod's lifetime - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - properties: - path: - description: |- - path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - readOnly: - description: |- - readOnly here will force the NFS export to be mounted with read-only permissions. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: boolean - server: - description: |- - server is the hostname or IP address of the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: |- - persistentVolumeClaimVolumeSource represents a reference to a - PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - claimName: - description: |- - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - type: string - readOnly: - description: |- - readOnly Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon Controller - persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: |- - fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources secrets, - configmaps, and downward API - properties: - defaultMode: - description: |- - defaultMode are the mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: configMap information about the configMap - data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the downwardAPI - data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, - defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' - path. Must be utf-8 encoded. The first - item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults - to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to - select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret data - to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional field specify whether the - Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information about - the serviceAccountToken data to project - properties: - audience: - description: |- - audience is the intended audience of the token. A recipient of a token - must identify itself with an identifier specified in the audience of the - token, and otherwise should reject the token. The audience defaults to the - identifier of the apiserver. - type: string - expirationSeconds: - description: |- - expirationSeconds is the requested duration of validity of the service - account token. As the token approaches expiration, the kubelet volume - plugin will proactively rotate the service account token. The kubelet will - start trying to rotate the token if the token is older than 80 percent of - its time to live or if the token is older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - format: int64 - type: integer - path: - description: |- - path is the path relative to the mount point of the file to project the - token into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the host - that shares a pod's lifetime - properties: - group: - description: |- - group to map volume access to - Default is no group - type: string - readOnly: - description: |- - readOnly here will force the Quobyte volume to be mounted with read-only permissions. - Defaults to false. - type: boolean - registry: - description: |- - registry represents a single or multiple Quobyte Registry services - specified as a string as host:port pair (multiple entries are separated with commas) - which acts as the central registry for volumes - type: string - tenant: - description: |- - tenant owning the given Quobyte volume in the Backend - Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: |- - user to map volume access to - Defaults to serivceaccount user - type: string - volume: - description: volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: |- - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/rbd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - image: - description: |- - image is the rados image name. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - keyring: - description: |- - keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - monitors: - description: |- - monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - items: - type: string - type: array - pool: - description: |- - pool is the rados pool name. - Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: boolean - secretRef: - description: |- - secretRef is name of the authentication secret for RBDUser. If provided - overrides keyring. - Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is the rados user name. - Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". - Default is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef references to the secret for ScaleIO user and other - sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: |- - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool associated - with the protection domain. - type: string - system: - description: system is the name of the storage system as - configured in ScaleIO. - type: string - volumeName: - description: |- - volumeName is the name of a volume already created in the ScaleIO system - that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: |- - secret represents a secret that should populate this volume. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - properties: - defaultMode: - description: |- - defaultMode is Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values - for mode bits. Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items If unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret or - its keys must be defined - type: boolean - secretName: - description: |- - secretName is the name of the secret in the pod's namespace to use. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef specifies the secret to use for obtaining the StorageOS API - credentials. If not specified, default values will be attempted. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: |- - volumeName is the human-readable name of the StorageOS volume. Volume - names are only unique within a namespace. - type: string - volumeNamespace: - description: |- - volumeNamespace specifies the scope of the volume within StorageOS. If no - namespace is specified then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS for tighter integration. - Set VolumeName to any name to override the default behaviour. - Set to "default" if you are not using namespaces within StorageOS. - Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy Based - Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy Based - Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies vSphere - volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - workloadAnnotations: - additionalProperties: - type: string - description: |- - WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. - if the same key is specified at both the DruidNodeSpec level and DruidSpec level, the DruidNodeSpec WorkloadAnnotations will take precedence. - type: object - zookeeper: - description: 'Zookeeper IGNORED (Future API): In order to make Druid - dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - required: - - common.runtime.properties - - nodes - type: object - status: - description: DruidClusterStatus Defines the observed state of Druid. - properties: - configMaps: - items: - type: string - type: array - deployments: - items: - type: string - type: array - druidNodeStatus: - description: |- - INSERT ADDITIONAL STATUS FIELD - define observed state of cluster - Important: Run "make" to regenerate code after modifying this file - properties: - druidNode: - type: string - druidNodeConditionStatus: - type: string - druidNodeConditionType: - type: string - reason: - type: string - type: object - hpAutoscalers: - items: - type: string - type: array - ingress: - items: - type: string - type: array - persistentVolumeClaims: - items: - type: string - type: array - podDisruptionBudgets: - items: - type: string - type: array - pods: - items: - type: string - type: array - services: - items: - type: string - type: array - statefulSets: - items: - type: string - type: array - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} diff --git a/druid-operator/chart/templates/NOTES.txt b/druid-operator/chart/templates/NOTES.txt deleted file mode 100644 index 9de3813f9617..000000000000 --- a/druid-operator/chart/templates/NOTES.txt +++ /dev/null @@ -1,17 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -Refer to https://github.com/datainfrahq/druid-operator/blob/master/docs/README.md to get started. diff --git a/druid-operator/chart/templates/_helpers.tpl b/druid-operator/chart/templates/_helpers.tpl deleted file mode 100644 index 41852abe3103..000000000000 --- a/druid-operator/chart/templates/_helpers.tpl +++ /dev/null @@ -1,69 +0,0 @@ -{{/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -------------------------------------------------------------------------- -*/}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "druid-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "druid-operator.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "druid-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "druid-operator.labels" -}} -helm.sh/chart: {{ include "druid-operator.chart" . }} -{{ include "druid-operator.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "druid-operator.selectorLabels" -}} -app.kubernetes.io/name: {{ include "druid-operator.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} diff --git a/druid-operator/chart/templates/deployment.yaml b/druid-operator/chart/templates/deployment.yaml deleted file mode 100644 index 5eb8c387b4cf..000000000000 --- a/druid-operator/chart/templates/deployment.yaml +++ /dev/null @@ -1,121 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: manager - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - control-plane: controller-manager - name: {{ include "druid-operator.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - {{- include "druid-operator.selectorLabels" . | nindent 6 }} - control-plane: controller-manager - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "druid-operator.selectorLabels" . | nindent 8 }} - {{- with .Values.podLabels }} - {{ toYaml . | nindent 8 }} - {{- end }} - control-plane: controller-manager - spec: - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - args: - - --secure-listen-address=0.0.0.0:8443 - - --upstream=http://127.0.0.1:8080/ - - --logtostderr=true - - --v=0 - image: "{{ .Values.kube_rbac_proxy.image.repository }}:{{ .Values.kube_rbac_proxy.image.tag }}" - imagePullPolicy: {{ .Values.kube_rbac_proxy.image.pullPolicy }} - name: kube-rbac-proxy - ports: - - containerPort: 8443 - name: https - protocol: TCP - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 5m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=127.0.0.1:8080 - - --leader-elect - env: - {{- range $key, $value := .Values.env }} - - name: {{ $key }} - value: {{ tpl $value $ | quote }} - {{- end }} - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - command: - - /manager - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- with .Values.livenessProbe }} - livenessProbe: - {{ toYaml . | nindent 12 }} - {{- end }} - name: manager - {{- with .Values.readinessProbe }} - readinessProbe: - {{ toYaml . | nindent 12 }} - {{- end }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - serviceAccountName: {{ include "druid-operator.fullname" . }} - terminationGracePeriodSeconds: 10 diff --git a/druid-operator/chart/templates/rbac_leader_election.yaml b/druid-operator/chart/templates/rbac_leader_election.yaml deleted file mode 100644 index 89c6bd61c509..000000000000 --- a/druid-operator/chart/templates/rbac_leader_election.yaml +++ /dev/null @@ -1,77 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-leader-election-role - namespace: {{ .Release.Namespace }} -rules: - - apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-leader-election-rolebinding - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "druid-operator.fullname" . }}-leader-election-role -subjects: - - kind: ServiceAccount - name: {{ include "druid-operator.fullname" . }} - namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/druid-operator/chart/templates/rbac_manager.yaml b/druid-operator/chart/templates/rbac_manager.yaml deleted file mode 100644 index 1abe719ad5b5..000000000000 --- a/druid-operator/chart/templates/rbac_manager.yaml +++ /dev/null @@ -1,427 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -{{- $env := .Values.env }} -{{- if and ($env.WATCH_NAMESPACE) (ne $env.WATCH_NAMESPACE "default") }} -# Split WATCH_NAMESPACE by commas and loop on them -{{- $watchedNamespaces := (split "," $env.WATCH_NAMESPACE) -}} -{{- range $watchedNamespaces }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - namespace: {{ . }} - name: {{ template "druid-operator.fullname" $ }} - labels: - {{- include "druid-operator.labels" $ | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids/status - verbs: - - get - - patch - - update -- apiGroups: - - druid.apache.org - resources: - - druidingestions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druidingestions/status - verbs: - - get - - patch - - update -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list -{{- end }} -{{- end }} - ---- -{{- if .Values.global.createClusterRole }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ include "druid-operator.fullname" . }}-manager-role -rules: -{{- if and ($env.WATCH_NAMESPACE) (ne $env.WATCH_NAMESPACE "default") }} -{{- else }} -- apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids/status - verbs: - - get - - patch - - update -- apiGroups: - - druid.apache.org - resources: - - druidingestions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druidingestions/status - verbs: - - get - - patch - - update -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get - - list - - watch -{{- end }} - -{{- $operatorName := (include "druid-operator.fullname" .) -}} -{{- if and ($env.WATCH_NAMESPACE) (ne $env.WATCH_NAMESPACE "default") }} -# Split WATCH_NAMESPACE by commas and loop on them -{{- $watchedNamespaces := (split "," $env.WATCH_NAMESPACE) -}} -{{- range $watchedNamespaces }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - namespace: {{ . }} - name: {{ $operatorName }} - labels: - {{- include "druid-operator.labels" $ | nindent 4 }} -subjects: - - kind: ServiceAccount - name: {{ include "druid-operator.fullname" $ }} - namespace: {{ $.Release.Namespace }} -roleRef: - kind: Role - name: {{ $operatorName }} - apiGroup: rbac.authorization.k8s.io -{{- end }} -{{- end }} ---- -{{- if .Values.global.createClusterRole }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ include "druid-operator.fullname" . }}-manager-role -subjects: - - kind: ServiceAccount - name: {{ include "druid-operator.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/druid-operator/chart/templates/rbac_metrics.yaml b/druid-operator/chart/templates/rbac_metrics.yaml deleted file mode 100644 index 59d12f4f4a99..000000000000 --- a/druid-operator/chart/templates/rbac_metrics.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -{{- if .Values.global.createClusterRole }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-metrics-reader -rules: - - nonResourceURLs: - - /metrics - verbs: - - get -{{- end }} diff --git a/druid-operator/chart/templates/rbac_proxy.yaml b/druid-operator/chart/templates/rbac_proxy.yaml deleted file mode 100644 index d2b1f4a9eb12..000000000000 --- a/druid-operator/chart/templates/rbac_proxy.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -{{- if .Values.global.createClusterRole }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-proxy-role -rules: - - apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }}-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ include "druid-operator.fullname" . }}-proxy-role -subjects: - - kind: ServiceAccount - name: {{ include "druid-operator.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/druid-operator/chart/templates/service.yaml b/druid-operator/chart/templates/service.yaml deleted file mode 100644 index 9798fb8a883f..000000000000 --- a/druid-operator/chart/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: v1 -kind: Service -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: manager - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - control-plane: controller-manager - name: {{ include "druid-operator.fullname" . }}-metrics-service - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: https - port: 8443 - protocol: TCP - targetPort: https - selector: - control-plane: controller-manager diff --git a/druid-operator/chart/templates/service_account.yaml b/druid-operator/chart/templates/service_account.yaml deleted file mode 100644 index 88a77f2f31e9..000000000000 --- a/druid-operator/chart/templates/service_account.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "druid-operator.labels" . | nindent 4 }} - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - name: {{ include "druid-operator.fullname" . }} - namespace: {{ .Release.Namespace }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} diff --git a/druid-operator/chart/values.yaml b/druid-operator/chart/values.yaml deleted file mode 100644 index 751e4172e224..000000000000 --- a/druid-operator/chart/values.yaml +++ /dev/null @@ -1,116 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# Default values for druid-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - createClusterRole: true - -env: - DENY_LIST: "default,kube-system" # Comma-separated list of namespaces to ignore - RECONCILE_WAIT: "10s" # Reconciliation delay - WATCH_NAMESPACE: "" # Namespace to watch or empty string to watch all namespaces, To watch multiple namespaces add , into string. Ex: WATCH_NAMESPACE: "ns1,ns2,ns3" - #MAX_CONCURRENT_RECONCILES:: "" # MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. - -replicaCount: 1 - -image: - repository: datainfrahq/druid-operator - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: "" - -kube_rbac_proxy: - image: - repository: gcr.io/kubebuilder/kube-rbac-proxy - pullPolicy: IfNotPresent - tag: "v0.13.1" - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" - -livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - -readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - -serviceAccount: - # Annotations to add to the service account - annotations: - kubectl.kubernetes.io/default-container: manager - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "druid-operator-controller-manager" - -podAnnotations: {} - -podLabels: {} - -podSecurityContext: - runAsNonRoot: true - fsGroup: 65532 - runAsUser: 65532 - runAsGroup: 65532 - -securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - -resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 10m - memory: 64Mi - -nodeSelector: {} - -tolerations: [] - -affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - arm64 - - ppc64le - - s390x - - key: kubernetes.io/os - operator: In - values: - - linux - -crd: - enabled: true - keep: true diff --git a/druid-operator/config/crd/bases/druid.apache.org_druidingestions.yaml b/druid-operator/config/crd/bases/druid.apache.org_druidingestions.yaml deleted file mode 100644 index 6bf076d93874..000000000000 --- a/druid-operator/config/crd/bases/druid.apache.org_druidingestions.yaml +++ /dev/null @@ -1,165 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: druidingestions.druid.apache.org -spec: - group: druid.apache.org - names: - kind: DruidIngestion - listKind: DruidIngestionList - plural: druidingestions - singular: druidingestion - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .spec.ingestionSpec.type - name: Type - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: Ingestion is the Schema for the Ingestion API - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - properties: - auth: - properties: - passwordKey: - description: PasswordKey specifies the key within the Kubernetes - secret that contains the password for authentication. - type: string - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: - type: string - usernameKey: - description: UsernameKey specifies the key within the Kubernetes - secret that contains the username for authentication. - type: string - required: - - secretRef - - type - type: object - druidCluster: - type: string - ingestion: - properties: - compaction: - type: object - x-kubernetes-preserve-unknown-fields: true - nativeSpec: - description: |- - nativeSpec allows the ingestion specification to be defined in a native Kubernetes format. - This is particularly useful for environment-specific configurations and will eventually - replace the JSON-based Spec field. - Note: Spec will be ignored if nativeSpec is provided. - type: object - x-kubernetes-preserve-unknown-fields: true - rules: - items: - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - spec: - description: |- - Spec should be passed in as a JSON string. - Note: This field is planned for deprecation in favor of nativeSpec. - type: string - type: - type: string - required: - - type - type: object - suspend: - type: boolean - required: - - druidCluster - - ingestion - type: object - status: - properties: - currentIngestionSpec.json: - description: |- - CurrentIngestionSpec is a string instead of RawExtension to maintain compatibility with existing - IngestionSpecs that are stored as JSON strings. - type: string - lastUpdateTime: - format: date-time - type: string - message: - type: string - reason: - type: string - rules: - items: - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - status: - type: string - taskId: - type: string - type: - type: string - required: - - currentIngestionSpec.json - - taskId - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} diff --git a/druid-operator/config/crd/bases/druid.apache.org_druids.yaml b/druid-operator/config/crd/bases/druid.apache.org_druids.yaml deleted file mode 100644 index fdde9d6c604c..000000000000 --- a/druid-operator/config/crd/bases/druid.apache.org_druids.yaml +++ /dev/null @@ -1,12064 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: druids.druid.apache.org -spec: - group: druid.apache.org - names: - kind: Druid - listKind: DruidList - plural: druids - singular: druid - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Druid is the Schema for the druids API. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: DruidSpec defines the desired state of the Druid cluster. - properties: - additionalContainer: - description: AdditionalContainer defines additional sidecar containers - to be deployed with the `Druid` pods. - items: - description: |- - AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. - (will be part of Kubernetes native in the future: - https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary). - properties: - args: - description: Args Arguments to call the command. - items: - type: string - type: array - command: - description: Command command for the additional container. - items: - type: string - type: array - containerName: - description: ContainerName name of the additional container. - type: string - env: - description: Env Environment variables for the additional container. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote - source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - image: - description: Image Image of the additional container. - type: string - imagePullPolicy: - description: ImagePullPolicy If not present, will be taken from - top level spec. - type: string - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runAsInit: - description: RunAsInit indicate whether this should be an init - container. - type: boolean - securityContext: - description: ContainerSecurityContext If not present, will be - taken from top level pod. - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - required: - - command - - containerName - - image - type: object - type: array - affinity: - description: Affinity Kubernetes native `affinity` specification. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - auth: - properties: - passwordKey: - description: PasswordKey specifies the key within the Kubernetes - secret that contains the password for authentication. - type: string - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: - type: string - usernameKey: - description: UsernameKey specifies the key within the Kubernetes - secret that contains the username for authentication. - type: string - required: - - secretRef - - type - type: object - common.runtime.properties: - description: CommonRuntimeProperties Content fo the `common.runtime.properties` - configuration file. - type: string - commonConfigMountPath: - default: /opt/druid/conf/druid/cluster/_common - description: CommonConfigMountPath In-container directory to mount - the Druid common configuration - type: string - containerSecurityContext: - description: ContainerSecurityContext - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - core-site.xml: - description: CoreSite Contents of `core-site.xml`. - type: string - deepStorage: - description: 'DeepStorage IGNORED (Future API): In order to make Druid - dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - defaultProbes: - default: true - description: |- - DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components - but it won't override existing probes - type: boolean - deleteOrphanPvc: - default: true - description: DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned - up by the operator. - type: boolean - disablePVCDeletionFinalizer: - default: false - description: DisablePVCDeletionFinalizer Whether PVCs shall be deleted - on the deletion of the Druid cluster. - type: boolean - dnsConfig: - description: See v1.PodDNSConfig for more details. - properties: - nameservers: - description: |- - A list of DNS name server IP addresses. - This will be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. - items: - type: string - type: array - options: - description: |- - A list of DNS resolver options. - This will be merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. - items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. - properties: - name: - description: Required. - type: string - value: - type: string - type: object - type: array - searches: - description: |- - A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from DNSPolicy. - Duplicated search paths will be removed. - items: - type: string - type: array - type: object - dnsPolicy: - description: See v1.DNSPolicy for more details. - type: string - dynamicConfig: - description: Dynamic Configurations for Druid. Applied through the - dynamic configuration API. - type: object - x-kubernetes-preserve-unknown-fields: true - env: - description: Env Environment variables for druid containers. - items: - description: EnvVar represents an environment variable present in - a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. Cannot - be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath is - written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified - API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed - resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote source - (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each key in - the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - extraCommonConfig: - description: |- - ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the - common configuration path. - items: - description: |- - ObjectReference contains enough information to let you inspect or modify the referred object. - --- - New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. - 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. - 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular - restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". - Those cannot be well described when embedded. - 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. - 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity - during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple - and the version of the actual struct is irrelevant. - 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type - will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. - - - Instead of using this type, create a locally provided and used type that is well-focused on your reference. - For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - TODO: this design is not final and this field is subject to change in the future. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: - description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string - type: object - x-kubernetes-map-type: atomic - type: array - forceDeleteStsPodOnError: - default: true - description: |- - ForceDeleteStsPodOnError Delete the StatefulSet's pods if the StatefulSet is set to ordered ready. - issue: https://github.com/kubernetes/kubernetes/issues/67250 - doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback - type: boolean - hdfs-site.xml: - description: HdfsSite Contents of `hdfs-site.xml`. - type: string - ignored: - default: false - description: |- - Ignored is now deprecated API. In order to avoid reconciliation of objects use the - `druid.apache.org/ignored: "true"` annotation. - type: boolean - image: - description: Image Required here or at the NodeSpec level. - type: string - imagePullPolicy: - default: IfNotPresent - description: ImagePullPolicy - type: string - imagePullSecrets: - description: ImagePullSecrets - items: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - type: array - jvm.options: - description: JvmOptions Contents of the shared `jvm.options` configuration - file for druid JVM processes. - type: string - livenessProbe: - description: |- - LivenessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - log4j.config: - description: Log4jConfig contents `log4j.config` configuration file. - type: string - metadataStore: - description: 'MetadataStore IGNORED (Future API): In order to make - Druid dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - metricDimensions.json: - description: |- - DimensionsMapPath Custom Dimension Map Path for statsd emitter. - stastd documentation is described in the following documentation: - https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html - type: string - nodeSelector: - additionalProperties: - type: string - description: NodeSelector Kubernetes native `nodeSelector` specification. - type: object - nodes: - additionalProperties: - description: |- - DruidNodeSpec Specification of `Druid` Node type and its configurations. - The key in following map can be arbitrary string that helps you identify resources for a specific nodeSpec. - It is used in the Kubernetes resources' names, so it must be compliant with restrictions - placed on Kubernetes resource names: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ - properties: - additionalContainer: - description: Operator deploys the sidecar container based on - these properties. - items: - description: |- - AdditionalContainer defines additional sidecar containers to be deployed with the `Druid` pods. - (will be part of Kubernetes native in the future: - https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary). - properties: - args: - description: Args Arguments to call the command. - items: - type: string - type: array - command: - description: Command command for the additional container. - items: - type: string - type: array - containerName: - description: ContainerName name of the additional container. - type: string - env: - description: Env Environment variables for the additional - container. - items: - description: EnvVar represents an environment variable - present in a Container. - properties: - name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap - or its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for - volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the - pod's namespace - properties: - key: - description: The key of the secret to select - from. Must be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret - or its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from - remote source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of - a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must - be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must - be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - image: - description: Image Image of the additional container. - type: string - imagePullPolicy: - description: ImagePullPolicy If not present, will be taken - from top level spec. - type: string - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runAsInit: - description: RunAsInit indicate whether this should be - an init container. - type: boolean - securityContext: - description: ContainerSecurityContext If not present, - will be taken from top level pod. - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that - applies to the container. - type: string - role: - description: Role is a SELinux role label that - applies to the container. - type: string - type: - description: Type is a SELinux type label that - applies to the container. - type: string - user: - description: User is a SELinux user label that - applies to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` - specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - required: - - command - - containerName - - image - type: object - type: array - affinity: - description: Affinity Kubernetes native `affinity` specification. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for - the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated - with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the - corresponding nodeSelectorTerm, in the range - 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - containerSecurityContext: - description: ContainerSecurityContext - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - type: boolean - capabilities: - description: |- - The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container runtime. - Note that this field cannot be set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: |- - procMount denotes the type of proc mount to use for the containers. - The default is DefaultProcMount which uses the container runtime defaults for - readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by this container. If seccomp options are - provided at both the pod & container level, the container options - override the pod options. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - dnsConfig: - description: See v1.PodDNSConfig for more details. - properties: - nameservers: - description: |- - A list of DNS name server IP addresses. - This will be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. - items: - type: string - type: array - options: - description: |- - A list of DNS resolver options. - This will be merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. - items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. - properties: - name: - description: Required. - type: string - value: - type: string - type: object - type: array - searches: - description: |- - A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from DNSPolicy. - Duplicated search paths will be removed. - items: - type: string - type: array - type: object - dnsPolicy: - description: See v1.DNSPolicy for more details. - type: string - druid.port: - description: DruidPort Used by the `Druid` process. - format: int32 - type: integer - dynamicConfig: - description: Dynamic Configurations for Druid. Applied through - the dynamic configuration API. - type: object - x-kubernetes-preserve-unknown-fields: true - env: - description: Env Environment variables for druid containers. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: |- - Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: EnvFrom Extra environment variables from remote - source (ConfigMaps, Secrets...). - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - extra.jvm.options: - description: ExtraJvmOptions Appends extra jvm options to the - `JvmOptions` field. - type: string - hpAutoscaler: - description: HPAutoScaler Kubernetes Native `HorizontalPodAutoscaler` - specification. - properties: - behavior: - description: |- - behavior configures the scaling behavior of the target - in both Up and Down directions (scaleUp and scaleDown fields respectively). - If not set, the default HPAScalingRules for scale up and scale down are used. - properties: - scaleDown: - description: |- - scaleDown is scaling policy for scaling Down. - If not set, the default value is to allow to scale down to minReplicas pods, with a - 300 second stabilization window (i.e., the highest recommendation for - the last 300sec is used). - properties: - policies: - description: |- - policies is a list of potential scaling polices which can be used during scaling. - At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: |- - periodSeconds specifies the window of time for which the policy should hold true. - PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). - format: int32 - type: integer - type: - description: type is used to specify the scaling - policy. - type: string - value: - description: |- - value contains the amount of change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: |- - selectPolicy is used to specify which policy should be used. - If not set, the default value Max is used. - type: string - stabilizationWindowSeconds: - description: |- - stabilizationWindowSeconds is the number of seconds for which past recommendations should be - considered while scaling up or scaling down. - StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization window is 300 seconds long). - format: int32 - type: integer - type: object - scaleUp: - description: |- - scaleUp is scaling policy for scaling Up. - If not set, the default value is the higher of: - * increase no more than 4 pods per 60 seconds - * double the number of pods per 60 seconds - No stabilization is used. - properties: - policies: - description: |- - policies is a list of potential scaling polices which can be used during scaling. - At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: |- - periodSeconds specifies the window of time for which the policy should hold true. - PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). - format: int32 - type: integer - type: - description: type is used to specify the scaling - policy. - type: string - value: - description: |- - value contains the amount of change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: |- - selectPolicy is used to specify which policy should be used. - If not set, the default value Max is used. - type: string - stabilizationWindowSeconds: - description: |- - stabilizationWindowSeconds is the number of seconds for which past recommendations should be - considered while scaling up or scaling down. - StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization window is 300 seconds long). - format: int32 - type: integer - type: object - type: object - maxReplicas: - description: |- - maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. - It cannot be less that minReplicas. - format: int32 - type: integer - metrics: - description: |- - metrics contains the specifications for which to use to calculate the - desired replica count (the maximum replica count across all metrics will - be used). The desired replica count is calculated multiplying the - ratio between the target value and the current value by the current - number of pods. Ergo, metrics used must decrease as the pod count is - increased, and vice-versa. See the individual metric source types for - more information about how each type of metric must respond. - If not set, the default metric will be set to 80% average CPU utilization. - items: - description: |- - MetricSpec specifies how to scale based on a single metric - (only `type` and one other matching field should be set at once). - properties: - containerResource: - description: |- - containerResource refers to a resource metric (such as those specified in - requests and limits) known to Kubernetes describing a single container in - each pod of the current scale target (e.g. CPU or memory). Such metrics are - built in to Kubernetes, and have special scaling options on top of those - available to normal per-pod metrics using the "pods" source. - This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. - properties: - container: - description: container is the name of the container - in the pods of the scaling target - type: string - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - container - - name - - target - type: object - external: - description: |- - external refers to a global metric that is not associated - with any Kubernetes object. It allows autoscaling based on information - coming from components running outside of cluster - (for example length of queue in cloud messaging service, or - QPS from loadbalancer running outside of cluster). - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - object: - description: |- - object refers to a metric describing a single kubernetes object - (for example, hits-per-second on an Ingress object). - properties: - describedObject: - description: describedObject specifies the descriptions - of a object,such as kind,name apiVersion - properties: - apiVersion: - description: apiVersion is the API version - of the referent - type: string - kind: - description: 'kind is the kind of the referent; - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'name is the name of the referent; - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - required: - - kind - - name - type: object - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - describedObject - - metric - - target - type: object - pods: - description: |- - pods refers to a metric describing each pod in the current scale target - (for example, transactions-processed-per-second). The values will be - averaged together before being compared to the target value. - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: |- - selector is the string-encoded form of a standard kubernetes label selector for the given metric - When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. - When unset, just the metricName will be used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - resource: - description: |- - resource refers to a resource metric (such as those specified in - requests and limits) known to Kubernetes describing each pod in the - current scale target (e.g. CPU or memory). Such metrics are built in to - Kubernetes, and have special scaling options on top of those available - to normal per-pod metrics using the "pods" source. - properties: - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: |- - averageUtilization is the target value of the average of the - resource metric across all relevant pods, represented as a percentage of - the requested value of the resource for the pods. - Currently only valid for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: |- - averageValue is the target value of the average of the - metric across all relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - name - - target - type: object - type: - description: |- - type is the type of metric source. It should be one of "ContainerResource", "External", - "Object", "Pods" or "Resource", each mapping to a matching field in the object. - Note: "ContainerResource" type is available on when the feature-gate - HPAContainerMetrics is enabled - type: string - required: - - type - type: object - type: array - x-kubernetes-list-type: atomic - minReplicas: - description: |- - minReplicas is the lower limit for the number of replicas to which the autoscaler - can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the - alpha feature gate HPAScaleToZero is enabled and at least one Object or External - metric is configured. Scaling is active as long as at least one metric value is - available. - format: int32 - type: integer - scaleTargetRef: - description: |- - scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics - should be collected, as well as to actually change the replica count. - properties: - apiVersion: - description: apiVersion is the API version of the referent - type: string - kind: - description: 'kind is the kind of the referent; More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'name is the name of the referent; More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - required: - - kind - - name - type: object - required: - - maxReplicas - - scaleTargetRef - type: object - image: - description: Image Overrides image from top level, Required - if no image specified at top level. - type: string - imagePullPolicy: - description: ImagePullPolicy Overrides `imagePullPolicy` from - top level. - type: string - imagePullSecrets: - description: ImagePullSecrets Overrides `imagePullSecrets` from - top level. - items: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - type: array - ingress: - description: Ingress Kubernetes Native `Ingress` specification. - properties: - defaultBackend: - description: |- - defaultBackend is the backend that should handle requests that don't - match any rule. If Rules are not specified, DefaultBackend must be specified. - If DefaultBackend is not set, the handling of requests that do not match any - of the rules will be up to the Ingress controller. - properties: - resource: - description: |- - resource is an ObjectRef to another Kubernetes resource in the namespace - of the Ingress object. If resource is specified, a service.Name and - service.Port must not be specified. - This is a mutually exclusive setting with "Service". - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: |- - service references a service as a backend. - This is a mutually exclusive setting with "Resource". - properties: - name: - description: |- - name is the referenced service. The service must exist in - the same namespace as the Ingress object. - type: string - port: - description: |- - port of the referenced service. A port name or port number - is required for a IngressServiceBackend. - properties: - name: - description: |- - name is the name of the port on the Service. - This is a mutually exclusive setting with "Number". - type: string - number: - description: |- - number is the numerical port number (e.g. 80) on the Service. - This is a mutually exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - ingressClassName: - description: |- - ingressClassName is the name of an IngressClass cluster resource. Ingress - controller implementations use this field to know whether they should be - serving this Ingress resource, by a transitive connection - (controller -> IngressClass -> Ingress resource). Although the - `kubernetes.io/ingress.class` annotation (simple constant name) was never - formally defined, it was widely supported by Ingress controllers to create - a direct binding between Ingress controller and Ingress resources. Newly - created Ingress resources should prefer using the field. However, even - though the annotation is officially deprecated, for backwards compatibility - reasons, ingress controllers should still honor that annotation if present. - type: string - rules: - description: |- - rules is a list of host rules used to configure the Ingress. If unspecified, - or no rule matches, all traffic is sent to the default backend. - items: - description: |- - IngressRule represents the rules mapping the paths under a specified host to - the related backend services. Incoming requests are first evaluated for a host - match, then routed to the backend associated with the matching IngressRuleValue. - properties: - host: - description: "host is the fully qualified domain name - of a network host, as defined by RFC 3986.\nNote - the following deviations from the \"host\" part - of the\nURI as defined in RFC 3986:\n1. IPs are - not allowed. Currently an IngressRuleValue can only - apply to\n the IP in the Spec of the parent Ingress.\n2. - The `:` delimiter is not respected because ports - are not allowed.\n\t Currently the port of an Ingress - is implicitly :80 for http and\n\t :443 for https.\nBoth - these may change in the future.\nIncoming requests - are matched against the host before the\nIngressRuleValue. - If the host is unspecified, the Ingress routes all\ntraffic - based on the specified IngressRuleValue.\n\n\nhost - can be \"precise\" which is a domain name without - the terminating dot of\na network host (e.g. \"foo.bar.com\") - or \"wildcard\", which is a domain name\nprefixed - with a single wildcard label (e.g. \"*.foo.com\").\nThe - wildcard character '*' must appear by itself as - the first DNS label and\nmatches only a single label. - You cannot have a wildcard label by itself (e.g. - Host == \"*\").\nRequests will be matched against - the Host field in the following way:\n1. If host - is precise, the request matches this rule if the - http host header is equal to Host.\n2. If host is - a wildcard, then the request matches this rule if - the http host header\nis to equal to the suffix - (removing the first label) of the wildcard rule." - type: string - http: - description: |- - HTTPIngressRuleValue is a list of http selectors pointing to backends. - In the example: http:///? -> backend where - where parts of the url correspond to RFC 3986, this resource will be used - to match against everything after the last '/' and before the first '?' - or '#'. - properties: - paths: - description: paths is a collection of paths that - map requests to backends. - items: - description: |- - HTTPIngressPath associates a path with a backend. Incoming urls matching the - path are forwarded to the backend. - properties: - backend: - description: |- - backend defines the referenced service endpoint to which the traffic - will be forwarded to. - properties: - resource: - description: |- - resource is an ObjectRef to another Kubernetes resource in the namespace - of the Ingress object. If resource is specified, a service.Name and - service.Port must not be specified. - This is a mutually exclusive setting with "Service". - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of - resource being referenced - type: string - name: - description: Name is the name of - resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: |- - service references a service as a backend. - This is a mutually exclusive setting with "Resource". - properties: - name: - description: |- - name is the referenced service. The service must exist in - the same namespace as the Ingress object. - type: string - port: - description: |- - port of the referenced service. A port name or port number - is required for a IngressServiceBackend. - properties: - name: - description: |- - name is the name of the port on the Service. - This is a mutually exclusive setting with "Number". - type: string - number: - description: |- - number is the numerical port number (e.g. 80) on the Service. - This is a mutually exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - path: - description: |- - path is matched against the path of an incoming request. Currently it can - contain characters disallowed from the conventional "path" part of a URL - as defined by RFC 3986. Paths must begin with a '/' and must be present - when using PathType with value "Exact" or "Prefix". - type: string - pathType: - description: |- - pathType determines the interpretation of the path matching. PathType can - be one of the following values: - * Exact: Matches the URL path exactly. - * Prefix: Matches based on a URL path prefix split by '/'. Matching is - done on a path element by element basis. A path element refers is the - list of labels in the path split by the '/' separator. A request is a - match for path p if every p is an element-wise prefix of p of the - request path. Note that if the last element of the path is a substring - of the last element in request path, it is not a match (e.g. /foo/bar - matches /foo/bar/baz, but does not match /foo/barbaz). - * ImplementationSpecific: Interpretation of the Path matching is up to - the IngressClass. Implementations can treat this as a separate PathType - or treat it identically to Prefix or Exact path types. - Implementations are required to support all path types. - type: string - required: - - backend - - pathType - type: object - type: array - x-kubernetes-list-type: atomic - required: - - paths - type: object - type: object - type: array - x-kubernetes-list-type: atomic - tls: - description: |- - tls represents the TLS configuration. Currently the Ingress only supports a - single TLS port, 443. If multiple members of this list specify different hosts, - they will be multiplexed on the same port according to the hostname specified - through the SNI TLS extension, if the ingress controller fulfilling the - ingress supports SNI. - items: - description: IngressTLS describes the transport layer - security associated with an ingress. - properties: - hosts: - description: |- - hosts is a list of hosts included in the TLS certificate. The values in - this list must match the name/s used in the tlsSecret. Defaults to the - wildcard host setting for the loadbalancer controller fulfilling this - Ingress, if left unspecified. - items: - type: string - type: array - x-kubernetes-list-type: atomic - secretName: - description: |- - secretName is the name of the secret used to terminate TLS traffic on - port 443. Field is left optional to allow TLS routing based on SNI - hostname alone. If the SNI host in a listener conflicts with the "Host" - header field used by an IngressRule, the SNI host is used for termination - and value of the "Host" header is used for routing. - type: string - type: object - type: array - x-kubernetes-list-type: atomic - type: object - ingressAnnotations: - additionalProperties: - type: string - description: IngressAnnotations `Ingress` annotations to be - populated in ingress spec. - type: object - jvm.options: - description: JvmOptions overrides `JvmOptions` at top level. - type: string - kind: - default: StatefulSet - description: |- - Kind Can be StatefulSet or Deployment. - Note: volumeClaimTemplates are ignored when kind=Deployment - type: string - lifecycle: - description: Lifecycle - properties: - postStart: - description: |- - PostStart is called immediately after a container is created. If the handler fails, - the container is terminated and restarted according to its restart policy. - Other management of the container blocks until the hook completes. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: |- - Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept - for the backward compatibility. There are no validation of this field and - lifecycle hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: |- - PreStop is called immediately before a container is terminated due to an - API request or management event such as liveness/startup probe failure, - preemption, resource contention, etc. The handler is not called if the - container crashes or exits. The Pod's termination grace period countdown begins before the - PreStop hook is executed. Regardless of the outcome of the handler, the - container will eventually terminate within the Pod's termination grace - period (unless delayed by finalizers). Other management of the container blocks until the hook completes - or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: |- - Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept - for the backward compatibility. There are no validation of this field and - lifecycle hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: |- - LivenessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - log4j.config: - description: Log4jConfig Overrides `Log4jConfig` at top level. - type: string - maxSurge: - description: |- - MaxSurge For Deployment object only. - Set to 25% by default. - format: int32 - type: integer - maxUnavailable: - description: |- - MaxUnavailable For deployment object only. - Set to 25% by default - format: int32 - type: integer - nodeConfigMountPath: - description: NodeConfigMountPath in-container directory to mount - with runtime.properties, jvm.config, log4j2.xml files. - type: string - nodeSelector: - additionalProperties: - type: string - description: NodeSelector Kubernetes native `nodeSelector` specification. - type: object - nodeType: - description: NodeDruid `Druid` node type. - enum: - - historical - - overlord - - middleManager - - indexer - - broker - - coordinator - - router - type: string - persistentVolumeClaim: - description: VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` - specification. - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - podAnnotations: - additionalProperties: - type: string - description: PodAnnotations Custom annotation to be populated - in the workload's pods. - type: object - podDisruptionBudgetSpec: - description: PodDisruptionBudgetSpec Kubernetes native `podDisruptionBudget` - specification. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - An eviction is allowed if at most "maxUnavailable" pods selected by - "selector" are unavailable after the eviction, i.e. even in absence of - the evicted pod. For example, one can prevent all voluntary evictions - by specifying 0. This is a mutually exclusive setting with "minAvailable". - x-kubernetes-int-or-string: true - minAvailable: - anyOf: - - type: integer - - type: string - description: |- - An eviction is allowed if at least "minAvailable" pods selected by - "selector" will still be available after the eviction, i.e. even in the - absence of the evicted pod. So for example you can prevent all voluntary - evictions by specifying "100%". - x-kubernetes-int-or-string: true - selector: - description: |- - Label query over pods whose evictions are managed by the disruption - budget. - A null selector will match no pods, while an empty ({}) selector will select - all pods within the namespace. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - unhealthyPodEvictionPolicy: - description: |- - UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods - should be considered for eviction. Current implementation considers healthy pods, - as pods that have status.conditions item with type="Ready",status="True". - - - Valid policies are IfHealthyBudget and AlwaysAllow. - If no policy is specified, the default behavior will be used, - which corresponds to the IfHealthyBudget policy. - - - IfHealthyBudget policy means that running pods (status.phase="Running"), - but not yet healthy can be evicted only if the guarded application is not - disrupted (status.currentHealthy is at least equal to status.desiredHealthy). - Healthy pods will be subject to the PDB for eviction. - - - AlwaysAllow policy means that all running pods (status.phase="Running"), - but not yet healthy are considered disrupted and can be evicted regardless - of whether the criteria in a PDB is met. This means perspective running - pods of a disrupted application might not get a chance to become healthy. - Healthy pods will be subject to the PDB for eviction. - - - Additional policies may be added in the future. - Clients making eviction decisions should disallow eviction of unhealthy pods - if they encounter an unrecognized policy in this field. - - - This field is beta-level. The eviction API uses this field when - the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default). - type: string - type: object - podLabels: - additionalProperties: - type: string - description: PodLabels Custom labels to be populated in the - workload's pods. - type: object - podManagementPolicy: - default: Parallel - description: PodManagementPolicy - type: string - ports: - description: Ports Extra ports to be added to pod spec. - items: - description: ContainerPort represents a network port in a - single container. - properties: - containerPort: - description: |- - Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: |- - Number of port to expose on the host. - If specified, this must be a valid port number, 0 < x < 65536. - If HostNetwork is specified, this must match ContainerPort. - Most containers do not need this. - format: int32 - type: integer - name: - description: |- - If specified, this must be an IANA_SVC_NAME and unique within the pod. Each - named port in a pod must have a unique name. Name for the port that can be - referred to by services. - type: string - protocol: - default: TCP - description: |- - Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - priorityClassName: - description: PriorityClassName Kubernetes native `priorityClassName` - specification. - type: string - readinessProbe: - description: |- - ReadinessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - replicas: - description: Replicas replica of the workload - format: int32 - minimum: 0 - type: integer - resources: - description: Resources Kubernetes Native `resources` specification. - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - runtime.properties: - description: RuntimeProperties Additional runtime configuration - for the specific workload. - type: string - securityContext: - description: PodSecurityContext Overrides `securityContext` - at top level. - properties: - fsGroup: - description: |- - A special supplemental group that applies to all containers in a pod. - Some volume types allow the Kubelet to change the ownership of that volume - to be owned by the pod: - - - 1. The owning GID will be the FSGroup - 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- - - - If unset, the Kubelet will not modify the ownership and permissions of any volume. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - fsGroupChangePolicy: - description: |- - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume - before being exposed inside Pod. This field will only apply to - volume types which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such as: secret, configmaps - and emptydir. - Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. - Note that this field cannot be set when spec.os.name is windows. - type: string - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in SecurityContext. If set in - both SecurityContext and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by the containers in this pod. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - supplementalGroups: - description: |- - A list of groups applied to the first process run in each container, in addition - to the container's primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container process. If unspecified, - no additional groups are added to any container. Note that group memberships - defined in the container image for the uid of the container process are still effective, - even if they are not included in this list. - Note that this field cannot be set when spec.os.name is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: |- - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported - sysctls (by the container runtime) might fail to launch. - Note that this field cannot be set when spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName Kubernetes native `serviceAccountName` - specification. - type: string - services: - description: Services Overrides services at top level. - items: - description: |- - Service is a named abstraction of software service (for example, mysql) consisting of local port - (for example 3306) that the proxy listens on, and the selector that determines which pods - will answer requests sent through the proxy. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - Spec defines the behavior of a service. - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: |- - allocateLoadBalancerNodePorts defines if NodePorts will be automatically - allocated for services with type LoadBalancer. Default is "true". It - may be set to "false" if the cluster load-balancer does not rely on - NodePorts. If the caller requests specific NodePorts (by specifying a - value), those requests will be respected, regardless of this field. - This field may only be set for services with type LoadBalancer and will - be cleared if the type is changed to any other type. - type: boolean - clusterIP: - description: |- - clusterIP is the IP address of the service and is usually assigned - randomly. If an address is specified manually, is in-range (as per - system configuration), and is not in use, it will be allocated to the - service; otherwise creation of the service will fail. This field may not - be changed through updates unless the type field is also being changed - to ExternalName (which requires this field to be blank) or the type - field is being changed from ExternalName (in which case this field may - optionally be specified, as describe above). Valid values are "None", - empty string (""), or a valid IP address. Setting this to "None" makes a - "headless service" (no virtual IP), which is useful when direct endpoint - connections are preferred and proxying is not required. Only applies to - types ClusterIP, NodePort, and LoadBalancer. If this field is specified - when creating a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - clusterIPs: - description: |- - ClusterIPs is a list of IP addresses assigned to this service, and are - usually assigned randomly. If an address is specified manually, is - in-range (as per system configuration), and is not in use, it will be - allocated to the service; otherwise creation of the service will fail. - This field may not be changed through updates unless the type field is - also being changed to ExternalName (which requires this field to be - empty) or the type field is being changed from ExternalName (in which - case this field may optionally be specified, as describe above). Valid - values are "None", empty string (""), or a valid IP address. Setting - this to "None" makes a "headless service" (no virtual IP), which is - useful when direct endpoint connections are preferred and proxying is - not required. Only applies to types ClusterIP, NodePort, and - LoadBalancer. If this field is specified when creating a Service of type - ExternalName, creation will fail. This field will be wiped when updating - a Service to type ExternalName. If this field is not specified, it will - be initialized from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP have the same - value. - - - This field may hold a maximum of two entries (dual-stack IPs, in either order). - These IPs must correspond to the values of the ipFamilies field. Both - clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: |- - externalIPs is a list of IP addresses for which nodes in the cluster - will also accept traffic for this service. These IPs are not managed by - Kubernetes. The user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external load-balancers - that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: |- - externalName is the external reference that discovery mechanisms will - return as an alias for this service (e.g. a DNS CNAME record). No - proxying will be involved. Must be a lowercase RFC-1123 hostname - (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: |- - externalTrafficPolicy describes how nodes distribute service traffic they - receive on one of the Service's "externally-facing" addresses (NodePorts, - ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure - the service in a way that assumes that external load balancers will take care - of balancing the service traffic between nodes, and so each node will deliver - traffic only to the node-local endpoints of the service, without masquerading - the client source IP. (Traffic mistakenly sent to a node with no endpoints will - be dropped.) The default value, "Cluster", uses the standard behavior of - routing to all endpoints evenly (possibly modified by topology and other - features). Note that traffic sent to an External IP or LoadBalancer IP from - within the cluster will always get "Cluster" semantics, but clients sending to - a NodePort from within the cluster may need to take traffic policy into account - when picking a node. - type: string - healthCheckNodePort: - description: |- - healthCheckNodePort specifies the healthcheck nodePort for the service. - This only applies when type is set to LoadBalancer and - externalTrafficPolicy is set to Local. If a value is specified, is - in-range, and is not in use, it will be used. If not specified, a value - will be automatically allocated. External systems (e.g. load-balancers) - can use this port to determine if a given node holds endpoints for this - service or not. If this field is specified when creating a Service - which does not need it, creation will fail. This field will be wiped - when updating a Service to no longer need it (e.g. changing type). - This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: |- - InternalTrafficPolicy describes how nodes distribute service traffic they - receive on the ClusterIP. If set to "Local", the proxy will assume that pods - only want to talk to endpoints of the service on the same node as the pod, - dropping the traffic if there are no local endpoints. The default value, - "Cluster", uses the standard behavior of routing to all endpoints evenly - (possibly modified by topology and other features). - type: string - ipFamilies: - description: |- - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this - service. This field is usually assigned automatically based on cluster - configuration and the ipFamilyPolicy field. If this field is specified - manually, the requested family is available in the cluster, - and ipFamilyPolicy allows it, it will be used; otherwise creation of - the service will fail. This field is conditionally mutable: it allows - for adding or removing a secondary IP family, but it does not allow - changing the primary IP family of the Service. Valid values are "IPv4" - and "IPv6". This field only applies to Services of types ClusterIP, - NodePort, and LoadBalancer, and does apply to "headless" services. - This field will be wiped when updating a Service to type ExternalName. - - - This field may hold a maximum of two entries (dual-stack families, in - either order). These families must correspond to the values of the - clusterIPs field, if specified. Both clusterIPs and ipFamilies are - governed by the ipFamilyPolicy field. - items: - description: |- - IPFamily represents the IP Family (IPv4 or IPv6). This type is used - to express the family of an IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by - this Service. If there is no value provided, then this field will be set - to SingleStack. Services can be "SingleStack" (a single IP family), - "PreferDualStack" (two IP families on dual-stack configured clusters or - a single IP family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, otherwise fail). The - ipFamilies and clusterIPs fields depend on the value of this field. This - field will be wiped when updating a service to type ExternalName. - type: string - loadBalancerClass: - description: |- - loadBalancerClass is the class of the load balancer implementation this Service belongs to. - If specified, the value of this field must be a label-style identifier, with an optional prefix, - e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. - This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load - balancer implementation is used, today this is typically done through the cloud provider integration, - but should apply for any default implementation. If set, it is assumed that a load balancer - implementation is watching for Services with a matching class. Any default load balancer - implementation (e.g. cloud providers) should ignore Services that set this field. - This field can only be set when creating or updating a Service to type 'LoadBalancer'. - Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: |- - Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. - This field will be ignored if the cloud-provider does not support the feature. - Deprecated: This field was under-specified and its meaning varies across implementations, - and it cannot support dual-stack. - As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. - This field may be removed in a future API version. - type: string - loadBalancerSourceRanges: - description: |- - If specified and supported by the platform, this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client IPs. This field will be ignored if the - cloud-provider does not support the feature." - More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - items: - type: string - type: array - ports: - description: |- - The list of ports that are exposed by this service. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - description: ServicePort contains information on - service's port. - properties: - appProtocol: - description: |- - The application protocol for this port. - This field follows standard Kubernetes label syntax. - Un-prefixed names are reserved for IANA standard service names (as per - RFC-6335 and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed names such as - mycompany.com/my-custom-protocol. - type: string - name: - description: |- - The name of this port within the service. This must be a DNS_LABEL. - All ports within a ServiceSpec must have unique names. When considering - the endpoints for a Service, this must match the 'name' field in the - EndpointPort. - Optional if only one ServicePort is defined on this service. - type: string - nodePort: - description: |- - The port on each node on which this service is exposed when type is - NodePort or LoadBalancer. Usually assigned by the system. If a value is - specified, in-range, and not in use it will be used, otherwise the - operation will fail. If not specified, a port will be allocated if this - Service requires one. If this field is specified when creating a - Service which does not need it, creation will fail. This field will be - wiped when updating a Service to no longer need it (e.g. changing type - from NodePort to ClusterIP). - More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - format: int32 - type: integer - port: - description: The port that will be exposed by - this service. - format: int32 - type: integer - protocol: - default: TCP - description: |- - The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". - Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the pods targeted by the service. - Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named port in the - target Pod's container ports. If this is not specified, the value - of the 'port' field is used (an identity map). - This field is ignored for services with clusterIP=None, and should be - omitted or set equal to the 'port' field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: |- - publishNotReadyAddresses indicates that any agent which deals with endpoints for this - Service should disregard any indications of ready/not-ready. - The primary use case for setting this field is for a StatefulSet's Headless Service to - propagate SRV DNS records for its Pods for the purpose of peer discovery. - The Kubernetes controllers that generate Endpoints and EndpointSlice resources for - Services interpret this to mean that all endpoints are considered "ready" even if the - Pods themselves are not. Agents which consume only Kubernetes generated endpoints - through the Endpoints or EndpointSlice resources can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: |- - Route service traffic to pods with label keys and values matching this - selector. If empty or not present, the service is assumed to have an - external process managing its endpoints, which Kubernetes will not - modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: |- - Supports "ClientIP" and "None". Used to maintain session affinity. - Enable client IP based session affinity. - Must be ClientIP or None. - Defaults to None. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations - of Client IP based session affinity. - properties: - timeoutSeconds: - description: |- - timeoutSeconds specifies the seconds of ClientIP type session sticky time. - The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". - Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: |- - type determines how the Service is exposed. Defaults to ClusterIP. Valid - options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that is not - specified, by manual construction of an Endpoints object or - EndpointSlice objects. If clusterIP is "None", no virtual IP is - allocated and the endpoints are published as a set of endpoints rather - than a virtual IP. - "NodePort" builds on ClusterIP and allocates a port on every node which - routes to the same endpoints as the clusterIP. - "LoadBalancer" builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes to the same endpoints - as the clusterIP. - "ExternalName" aliases this service to the specified externalName. - Several other fields do not apply to ExternalName services. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - type: string - type: object - status: - description: |- - Most recently observed status of the service. - Populated by the system. - Read-only. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one - aspect of the current state of this API Resource.\n---\nThis - struct is intended for direct use as an array - at the field path .status.conditions. For example,\n\n\n\ttype - FooStatus struct{\n\t // Represents the observations - of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t - \ // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t - \ // +listType=map\n\t // +listMapKey=type\n\t - \ Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of - True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: |- - LoadBalancer contains the current status of the load-balancer, - if one is present. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - --- - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number - of the service port of which status - is recorded here - format: int32 - type: integer - protocol: - default: TCP - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startUpProbe: - description: StartUpProbe - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - terminationGracePeriodSeconds: - description: TerminationGracePeriodSeconds - format: int64 - type: integer - tolerations: - description: Tolerations Kubernetes native `tolerations` specification. - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - description: |- - Effect indicates the taint effect to match. Empty means match all taint effects. - When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: |- - Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod can - tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - description: TopologySpreadConstraints Kubernetes Native `topologySpreadConstraints` - specification. - items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. - properties: - labelSelector: - description: |- - LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine the number of pods - in their corresponding topology domain. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select the pods over which - spreading will be calculated. The keys are used to lookup values from the - incoming pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading will be calculated - for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - MatchLabelKeys cannot be set when LabelSelector isn't set. - Keys that don't exist in the incoming pod labels will - be ignored. A null or empty list means only match against labelSelector. - - - This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - maxSkew: - description: |- - MaxSkew describes the degree to which pods may be unevenly distributed. - When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference - between the number of matching pods in the target topology and the global minimum. - The global minimum is the minimum number of matching pods in an eligible domain - or zero if the number of eligible domains is less than MinDomains. - For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same - labelSelector spread as 2/2/1: - In this case, the global minimum is 1. - | zone1 | zone2 | zone3 | - | P P | P P | P | - - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; - scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) - violate MaxSkew(1). - - if MaxSkew is 2, incoming pod can be scheduled onto any zone. - When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence - to topologies that satisfy it. - It's a required field. Default value is 1 and 0 is not allowed. - format: int32 - type: integer - minDomains: - description: |- - MinDomains indicates a minimum number of eligible domains. - When the number of eligible domains with matching topology keys is less than minDomains, - Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. - And when the number of eligible domains with matching topology keys equals or greater than minDomains, - this value has no effect on scheduling. - As a result, when the number of eligible domains is less than minDomains, - scheduler won't schedule more than maxSkew Pods to those domains. - If value is nil, the constraint behaves as if MinDomains is equal to 1. - Valid values are integers greater than 0. - When value is not nil, WhenUnsatisfiable must be DoNotSchedule. - - - For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same - labelSelector spread as 2/2/2: - | zone1 | zone2 | zone3 | - | P P | P P | P P | - The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. - In this situation, new pod with the same labelSelector cannot be scheduled, - because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, - it will violate MaxSkew. - - - This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). - format: int32 - type: integer - nodeAffinityPolicy: - description: |- - NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector - when calculating pod topology spread skew. Options are: - - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. - - - If this value is nil, the behavior is equivalent to the Honor policy. - This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - type: string - nodeTaintsPolicy: - description: |- - NodeTaintsPolicy indicates how we will treat node taints when calculating - pod topology spread skew. Options are: - - Honor: nodes without taints, along with tainted nodes for which the incoming pod - has a toleration, are included. - - Ignore: node taints are ignored. All nodes are included. - - - If this value is nil, the behavior is equivalent to the Ignore policy. - This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. - type: string - topologyKey: - description: |- - TopologyKey is the key of node labels. Nodes that have a label with this key - and identical values are considered to be in the same topology. - We consider each as a "bucket", and try to put balanced number - of pods into each bucket. - We define a domain as a particular instance of a topology. - Also, we define an eligible domain as a domain whose nodes meet the requirements of - nodeAffinityPolicy and nodeTaintsPolicy. - e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. - And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. - It's a required field. - type: string - whenUnsatisfiable: - description: |- - WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy - the spread constraint. - - DoNotSchedule (default) tells the scheduler not to schedule it. - - ScheduleAnyway tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help reduce the - skew. - A constraint is considered "Unsatisfiable" for an incoming pod - if and only if every possible node assignment for that pod would violate - "MaxSkew" on some topology. - For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same - labelSelector spread as 3/1/1: - | zone1 | zone2 | zone3 | - | P P P | P | P | - If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled - to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies - MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler - won't make it *more* imbalanced. - It's a required field. - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - updateStrategy: - description: UpdateStrategy - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters - when Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - The maximum number of pods that can be unavailable during the update. - Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). - Absolute number is calculated from percentage by rounding up. This can not be 0. - Defaults to 1. This field is alpha-level and is only honored by servers that enable the - MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to - Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it - will be counted towards MaxUnavailable. - x-kubernetes-int-or-string: true - partition: - description: |- - Partition indicates the ordinal at which the StatefulSet should be partitioned - for updates. During a rolling update, all pods from ordinal Replicas-1 to - Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. - This is helpful in being able to do a canary based deployment. The default value is 0. - format: int32 - type: integer - type: object - type: - description: |- - Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - description: VolumeClaimTemplates Kubernetes Native `volumeClaimTemplates` - specification. - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - volumeMounts: - description: VolumeMounts Kubernetes Native `volumeMounts` specification. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes Kubernetes Native `volumes` specification. - items: - description: Volume represents a named volume in a pod that - may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: |- - awsElasticBlockStore represents an AWS Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - format: int32 - type: integer - readOnly: - description: |- - readOnly value true will force the readOnly setting in VolumeMounts. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: boolean - volumeID: - description: |- - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: - None, Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk - in the blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the - blob storage - type: string - fsType: - description: |- - fsType is Filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure managed - data disk (only in managed availability set). defaults - to shared' - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service - mount on the host and bind mount to the pod. - properties: - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that - contains Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the - host that shares a pod's lifetime - properties: - monitors: - description: |- - monitors is Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted - root, rather than the full Ceph tree, default is - /' - type: string - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: boolean - secretFile: - description: |- - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - secretRef: - description: |- - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is optional: User is the rados user name, default is admin - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - required: - - monitors - type: object - cinder: - description: |- - cinder represents a cinder volume attached and mounted on kubelets host machine. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: boolean - secretRef: - description: |- - secretRef is optional: points to a secret object containing parameters used to connect - to OpenStack. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: |- - volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should - populate this volume - properties: - defaultMode: - description: |- - defaultMode is optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers (Beta feature). - properties: - driver: - description: |- - driver is the name of the CSI driver that handles this volume. - Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: |- - fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated CSI driver - which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: |- - nodePublishSecretRef is a reference to the secret object containing - sensitive information to pass to the CSI driver to complete the CSI - NodePublishVolume and NodeUnpublishVolume calls. - This field is optional, and may be empty if no secret is required. If the - secret object contains more than one secret, all secret references are passed. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: |- - readOnly specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: |- - volumeAttributes stores driver-specific properties that are passed to the CSI - driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about - the pod that should populate this volume - properties: - defaultMode: - description: |- - Optional: mode bits to use on created files by default. Must be a - Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: Items is a list of downward API volume - file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the - pod: only annotations, labels, name and namespace - are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of the - relative path must not start with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required for - volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: |- - emptyDir represents a temporary directory that shares a pod's lifetime. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - properties: - medium: - description: |- - medium represents what type of storage medium should back this directory. - The default is "" which means to use the node's default medium. - Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: |- - sizeLimit is the total amount of local storage required for this EmptyDir volume. - The size limit is also applicable for memory medium. - The maximum usage on memory medium EmptyDir would be the minimum value between - the SizeLimit specified here and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: |- - ephemeral represents a volume that is handled by a cluster storage driver. - The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, - and deleted when the pod is removed. - - - Use this if: - a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot or capacity - tracking are needed, - c) the storage driver is specified through a storage class, and - d) the storage driver supports dynamic volume provisioning through - a PersistentVolumeClaim (see EphemeralVolumeSource for more - information on the connection between this volume type - and PersistentVolumeClaim). - - - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. - - - Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to - be used that way - see the documentation of the driver for - more information. - - - A pod can use both types of ephemeral volumes and - persistent volumes at the same time. - properties: - volumeClaimTemplate: - description: |- - Will be used to create a stand-alone PVC to provision the volume. - The pod in which this EphemeralVolumeSource is embedded will be the - owner of the PVC, i.e. the PVC will be deleted together with the - pod. The name of the PVC will be `-` where - `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated name - is not valid for a PVC (for example, too long). - - - An existing PVC with that name that is not owned by the pod - will *not* be used for the pod to avoid using an unrelated - volume by mistake. Starting the pod is then blocked until - the unrelated PVC is removed. If such a pre-created PVC is - meant to be used by the pod, the PVC has to updated with an - owner reference to the pod once the pod exists. Normally - this should not be necessary, but it may be useful when - manually reconstructing a broken cluster. - - - This field is read-only and no changes will be made by Kubernetes - to the PVC after it has been created. - - - Required, must not be nil. - properties: - metadata: - description: |- - May contain labels and annotations that will be copied into the PVC - when creating it. No other fields are allowed and will be rejected during - validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - The specification for the PersistentVolumeClaim. The entire content is - copied unchanged into the PVC that gets created from this - template. The same fields as in a PersistentVolumeClaim - are also valid here. - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references - one entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over - volumes to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that - is attached to a kubelet's host machine and then exposed - to the pod. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: |- - wwids Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - items: - type: string - type: array - type: object - flexVolume: - description: |- - flexVolume represents a generic volume resource that is - provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use - for this volume. - type: string - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds - extra command options if any.' - type: object - readOnly: - description: |- - readOnly is Optional: defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef is Optional: secretRef is reference to the secret object containing - sensitive information to pass to the plugin scripts. This may be - empty if no secret object is specified. If the secret object - contains more than one secret, all secrets are passed to the plugin - scripts. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running - properties: - datasetName: - description: |- - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker - should be considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: |- - gcePersistentDisk represents a GCE Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - properties: - fsType: - description: |- - fsType is filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - format: int32 - type: integer - pdName: - description: |- - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: boolean - required: - - pdName - type: object - gitRepo: - description: |- - gitRepo represents a git repository at a particular revision. - DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an - EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir - into the Pod's container. - properties: - directory: - description: |- - directory is the target directory name. - Must not contain or start with '..'. If '.' is supplied, the volume directory will be the - git repository. Otherwise, if specified, the volume will contain the git repository in - the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: |- - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/glusterfs/README.md - properties: - endpoints: - description: |- - endpoints is the endpoint name that details Glusterfs topology. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - path: - description: |- - path is the Glusterfs volume path. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - readOnly: - description: |- - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: |- - hostPath represents a pre-existing file or directory on the host - machine that is directly exposed to the container. This is generally - used for system agents or other privileged things that are allowed - to see the host machine. Most containers will NOT need this. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- - TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not - mount host directories as read/write. - properties: - path: - description: |- - path of the directory on the host. - If the path is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - type: - description: |- - type for HostPath Volume - Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - required: - - path - type: object - iscsi: - description: |- - iscsi represents an ISCSI Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://examples.k8s.io/volumes/iscsi/README.md - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support - iSCSI Session CHAP authentication - type: boolean - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - initiatorName: - description: |- - initiatorName is the custom iSCSI Initiator Name. - If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface - : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: |- - iscsiInterface is the interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: |- - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI - target and initiator authentication - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: |- - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: |- - name of the volume. - Must be a DNS_LABEL and unique within the pod. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - nfs: - description: |- - nfs represents an NFS mount on the host that shares a pod's lifetime - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - properties: - path: - description: |- - path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - readOnly: - description: |- - readOnly here will force the NFS export to be mounted with read-only permissions. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: boolean - server: - description: |- - server is the hostname or IP address of the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: |- - persistentVolumeClaimVolumeSource represents a reference to a - PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - claimName: - description: |- - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - type: string - readOnly: - description: |- - readOnly Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host - machine - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon - Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume - attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx - volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources - secrets, configmaps, and downward API - properties: - defaultMode: - description: |- - defaultMode are the mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along - with other supported volume types - properties: - configMap: - description: configMap information about the - configMap data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the - ConfigMap or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the - downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a - field of the pod: only annotations, - labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema - the FieldPath is written in - terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field - to select in the specified API - version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the - relative path name of the file to - be created. Must not be absolute - or contain the ''..'' path. Must - be utf-8 encoded. The first item - of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: - required for volumes, optional - for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource - to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret - data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional field specify whether - the Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project - properties: - audience: - description: |- - audience is the intended audience of the token. A recipient of a token - must identify itself with an identifier specified in the audience of the - token, and otherwise should reject the token. The audience defaults to the - identifier of the apiserver. - type: string - expirationSeconds: - description: |- - expirationSeconds is the requested duration of validity of the service - account token. As the token approaches expiration, the kubelet volume - plugin will proactively rotate the service account token. The kubelet will - start trying to rotate the token if the token is older than 80 percent of - its time to live or if the token is older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - format: int64 - type: integer - path: - description: |- - path is the path relative to the mount point of the file to project the - token into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the - host that shares a pod's lifetime - properties: - group: - description: |- - group to map volume access to - Default is no group - type: string - readOnly: - description: |- - readOnly here will force the Quobyte volume to be mounted with read-only permissions. - Defaults to false. - type: boolean - registry: - description: |- - registry represents a single or multiple Quobyte Registry services - specified as a string as host:port pair (multiple entries are separated with commas) - which acts as the central registry for volumes - type: string - tenant: - description: |- - tenant owning the given Quobyte volume in the Backend - Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: |- - user to map volume access to - Defaults to serivceaccount user - type: string - volume: - description: volume is a string that references an - already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: |- - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/rbd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - image: - description: |- - image is the rados image name. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - keyring: - description: |- - keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - monitors: - description: |- - monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - items: - type: string - type: array - pool: - description: |- - pool is the rados pool name. - Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: boolean - secretRef: - description: |- - secretRef is name of the authentication secret for RBDUser. If provided - overrides keyring. - Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is the rados user name. - Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". - Default is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef references to the secret for ScaleIO user and other - sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: |- - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool - associated with the protection domain. - type: string - system: - description: system is the name of the storage system - as configured in ScaleIO. - type: string - volumeName: - description: |- - volumeName is the name of a volume already created in the ScaleIO system - that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: |- - secret represents a secret that should populate this volume. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - properties: - defaultMode: - description: |- - defaultMode is Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values - for mode bits. Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items If unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret - or its keys must be defined - type: boolean - secretName: - description: |- - secretName is the name of the secret in the pod's namespace to use. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef specifies the secret to use for obtaining the StorageOS API - credentials. If not specified, default values will be attempted. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: |- - volumeName is the human-readable name of the StorageOS volume. Volume - names are only unique within a namespace. - type: string - volumeNamespace: - description: |- - volumeNamespace specifies the scope of the volume within StorageOS. If no - namespace is specified then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS for tighter integration. - Set VolumeName to any name to override the default behaviour. - Set to "default" if you are not using namespaces within StorageOS. - Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume - attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated with - the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy - Based Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies - vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - workloadAnnotations: - additionalProperties: - type: string - description: WorkloadAnnotations annotations to be populated - in StatefulSet or Deployment spec. - type: object - required: - - druid.port - - nodeConfigMountPath - - nodeType - - runtime.properties - type: object - description: |- - Nodes a list of `Druid` Node types and their configurations. - `DruidSpec` is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific - `NodeSpec` level. - type: object - podAnnotations: - additionalProperties: - type: string - description: PodAnnotations Custom annotations to be populated in - `Druid` pods. - type: object - podLabels: - additionalProperties: - type: string - description: PodLabels Custom labels to be populated in `Druid` pods. - type: object - podManagementPolicy: - default: Parallel - description: PodManagementPolicy - type: string - priorityClassName: - description: PriorityClassName Kubernetes native `priorityClassName` - specification. - type: string - readinessProbe: - description: |- - ReadinessProbe - Port is set to `druid.port` if not specified with httpGet handler. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - rollingDeploy: - default: true - description: |- - RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: - https://druid.apache.org/docs/latest/operations/rolling-updates.html - If set to true then operator checks the rollout status of previous version workloads before updating the next. - This will be done only for update actions. - type: boolean - scalePvcSts: - default: false - description: ScalePvcSts When enabled, operator will allow volume - expansion of StatefulSet's PVCs. - type: boolean - securityContext: - description: PodSecurityContext - properties: - fsGroup: - description: |- - A special supplemental group that applies to all containers in a pod. - Some volume types allow the Kubelet to change the ownership of that volume - to be owned by the pod: - - - 1. The owning GID will be the FSGroup - 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- - - - If unset, the Kubelet will not modify the ownership and permissions of any volume. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - fsGroupChangePolicy: - description: |- - fsGroupChangePolicy defines behavior of changing ownership and permission of the volume - before being exposed inside Pod. This field will only apply to - volume types which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such as: secret, configmaps - and emptydir. - Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. - Note that this field cannot be set when spec.os.name is windows. - type: string - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: |- - The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux context for each - container. May also be set in SecurityContext. If set in - both SecurityContext and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: |- - The seccomp options to use by the containers in this pod. - Note that this field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - type: string - type: - description: |- - type indicates which kind of seccomp profile will be applied. - Valid options are: - - - Localhost - a profile defined in a file on the node should be used. - RuntimeDefault - the container runtime default profile should be used. - Unconfined - no profile should be applied. - type: string - required: - - type - type: object - supplementalGroups: - description: |- - A list of groups applied to the first process run in each container, in addition - to the container's primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container process. If unspecified, - no additional groups are added to any container. Note that group memberships - defined in the container image for the uid of the container process are still effective, - even if they are not included in this list. - Note that this field cannot be set when spec.os.name is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: |- - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported - sysctls (by the container runtime) might fail to launch. - Note that this field cannot be set when spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: |- - The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext will be used. - If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccount: - description: ServiceAccount - type: string - services: - description: Services Kubernetes services to be created for each workload. - items: - description: |- - Service is a named abstraction of software service (for example, mysql) consisting of local port - (for example 3306) that the proxy listens on, and the selector that determines which pods - will answer requests sent through the proxy. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - Spec defines the behavior of a service. - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: |- - allocateLoadBalancerNodePorts defines if NodePorts will be automatically - allocated for services with type LoadBalancer. Default is "true". It - may be set to "false" if the cluster load-balancer does not rely on - NodePorts. If the caller requests specific NodePorts (by specifying a - value), those requests will be respected, regardless of this field. - This field may only be set for services with type LoadBalancer and will - be cleared if the type is changed to any other type. - type: boolean - clusterIP: - description: |- - clusterIP is the IP address of the service and is usually assigned - randomly. If an address is specified manually, is in-range (as per - system configuration), and is not in use, it will be allocated to the - service; otherwise creation of the service will fail. This field may not - be changed through updates unless the type field is also being changed - to ExternalName (which requires this field to be blank) or the type - field is being changed from ExternalName (in which case this field may - optionally be specified, as describe above). Valid values are "None", - empty string (""), or a valid IP address. Setting this to "None" makes a - "headless service" (no virtual IP), which is useful when direct endpoint - connections are preferred and proxying is not required. Only applies to - types ClusterIP, NodePort, and LoadBalancer. If this field is specified - when creating a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - clusterIPs: - description: |- - ClusterIPs is a list of IP addresses assigned to this service, and are - usually assigned randomly. If an address is specified manually, is - in-range (as per system configuration), and is not in use, it will be - allocated to the service; otherwise creation of the service will fail. - This field may not be changed through updates unless the type field is - also being changed to ExternalName (which requires this field to be - empty) or the type field is being changed from ExternalName (in which - case this field may optionally be specified, as describe above). Valid - values are "None", empty string (""), or a valid IP address. Setting - this to "None" makes a "headless service" (no virtual IP), which is - useful when direct endpoint connections are preferred and proxying is - not required. Only applies to types ClusterIP, NodePort, and - LoadBalancer. If this field is specified when creating a Service of type - ExternalName, creation will fail. This field will be wiped when updating - a Service to type ExternalName. If this field is not specified, it will - be initialized from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP have the same - value. - - - This field may hold a maximum of two entries (dual-stack IPs, in either order). - These IPs must correspond to the values of the ipFamilies field. Both - clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: |- - externalIPs is a list of IP addresses for which nodes in the cluster - will also accept traffic for this service. These IPs are not managed by - Kubernetes. The user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external load-balancers - that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: |- - externalName is the external reference that discovery mechanisms will - return as an alias for this service (e.g. a DNS CNAME record). No - proxying will be involved. Must be a lowercase RFC-1123 hostname - (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: |- - externalTrafficPolicy describes how nodes distribute service traffic they - receive on one of the Service's "externally-facing" addresses (NodePorts, - ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure - the service in a way that assumes that external load balancers will take care - of balancing the service traffic between nodes, and so each node will deliver - traffic only to the node-local endpoints of the service, without masquerading - the client source IP. (Traffic mistakenly sent to a node with no endpoints will - be dropped.) The default value, "Cluster", uses the standard behavior of - routing to all endpoints evenly (possibly modified by topology and other - features). Note that traffic sent to an External IP or LoadBalancer IP from - within the cluster will always get "Cluster" semantics, but clients sending to - a NodePort from within the cluster may need to take traffic policy into account - when picking a node. - type: string - healthCheckNodePort: - description: |- - healthCheckNodePort specifies the healthcheck nodePort for the service. - This only applies when type is set to LoadBalancer and - externalTrafficPolicy is set to Local. If a value is specified, is - in-range, and is not in use, it will be used. If not specified, a value - will be automatically allocated. External systems (e.g. load-balancers) - can use this port to determine if a given node holds endpoints for this - service or not. If this field is specified when creating a Service - which does not need it, creation will fail. This field will be wiped - when updating a Service to no longer need it (e.g. changing type). - This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: |- - InternalTrafficPolicy describes how nodes distribute service traffic they - receive on the ClusterIP. If set to "Local", the proxy will assume that pods - only want to talk to endpoints of the service on the same node as the pod, - dropping the traffic if there are no local endpoints. The default value, - "Cluster", uses the standard behavior of routing to all endpoints evenly - (possibly modified by topology and other features). - type: string - ipFamilies: - description: |- - IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this - service. This field is usually assigned automatically based on cluster - configuration and the ipFamilyPolicy field. If this field is specified - manually, the requested family is available in the cluster, - and ipFamilyPolicy allows it, it will be used; otherwise creation of - the service will fail. This field is conditionally mutable: it allows - for adding or removing a secondary IP family, but it does not allow - changing the primary IP family of the Service. Valid values are "IPv4" - and "IPv6". This field only applies to Services of types ClusterIP, - NodePort, and LoadBalancer, and does apply to "headless" services. - This field will be wiped when updating a Service to type ExternalName. - - - This field may hold a maximum of two entries (dual-stack families, in - either order). These families must correspond to the values of the - clusterIPs field, if specified. Both clusterIPs and ipFamilies are - governed by the ipFamilyPolicy field. - items: - description: |- - IPFamily represents the IP Family (IPv4 or IPv6). This type is used - to express the family of an IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: |- - IPFamilyPolicy represents the dual-stack-ness requested or required by - this Service. If there is no value provided, then this field will be set - to SingleStack. Services can be "SingleStack" (a single IP family), - "PreferDualStack" (two IP families on dual-stack configured clusters or - a single IP family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, otherwise fail). The - ipFamilies and clusterIPs fields depend on the value of this field. This - field will be wiped when updating a service to type ExternalName. - type: string - loadBalancerClass: - description: |- - loadBalancerClass is the class of the load balancer implementation this Service belongs to. - If specified, the value of this field must be a label-style identifier, with an optional prefix, - e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. - This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load - balancer implementation is used, today this is typically done through the cloud provider integration, - but should apply for any default implementation. If set, it is assumed that a load balancer - implementation is watching for Services with a matching class. Any default load balancer - implementation (e.g. cloud providers) should ignore Services that set this field. - This field can only be set when creating or updating a Service to type 'LoadBalancer'. - Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: |- - Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. - This field will be ignored if the cloud-provider does not support the feature. - Deprecated: This field was under-specified and its meaning varies across implementations, - and it cannot support dual-stack. - As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. - This field may be removed in a future API version. - type: string - loadBalancerSourceRanges: - description: |- - If specified and supported by the platform, this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client IPs. This field will be ignored if the - cloud-provider does not support the feature." - More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - items: - type: string - type: array - ports: - description: |- - The list of ports that are exposed by this service. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - items: - description: ServicePort contains information on service's - port. - properties: - appProtocol: - description: |- - The application protocol for this port. - This field follows standard Kubernetes label syntax. - Un-prefixed names are reserved for IANA standard service names (as per - RFC-6335 and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed names such as - mycompany.com/my-custom-protocol. - type: string - name: - description: |- - The name of this port within the service. This must be a DNS_LABEL. - All ports within a ServiceSpec must have unique names. When considering - the endpoints for a Service, this must match the 'name' field in the - EndpointPort. - Optional if only one ServicePort is defined on this service. - type: string - nodePort: - description: |- - The port on each node on which this service is exposed when type is - NodePort or LoadBalancer. Usually assigned by the system. If a value is - specified, in-range, and not in use it will be used, otherwise the - operation will fail. If not specified, a port will be allocated if this - Service requires one. If this field is specified when creating a - Service which does not need it, creation will fail. This field will be - wiped when updating a Service to no longer need it (e.g. changing type - from NodePort to ClusterIP). - More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - default: TCP - description: |- - The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". - Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the pods targeted by the service. - Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named port in the - target Pod's container ports. If this is not specified, the value - of the 'port' field is used (an identity map). - This field is ignored for services with clusterIP=None, and should be - omitted or set equal to the 'port' field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: |- - publishNotReadyAddresses indicates that any agent which deals with endpoints for this - Service should disregard any indications of ready/not-ready. - The primary use case for setting this field is for a StatefulSet's Headless Service to - propagate SRV DNS records for its Pods for the purpose of peer discovery. - The Kubernetes controllers that generate Endpoints and EndpointSlice resources for - Services interpret this to mean that all endpoints are considered "ready" even if the - Pods themselves are not. Agents which consume only Kubernetes generated endpoints - through the Endpoints or EndpointSlice resources can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: |- - Route service traffic to pods with label keys and values matching this - selector. If empty or not present, the service is assumed to have an - external process managing its endpoints, which Kubernetes will not - modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/ - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: |- - Supports "ClientIP" and "None". Used to maintain session affinity. - Enable client IP based session affinity. - Must be ClientIP or None. - Defaults to None. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations of - Client IP based session affinity. - properties: - timeoutSeconds: - description: |- - timeoutSeconds specifies the seconds of ClientIP type session sticky time. - The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". - Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: |- - type determines how the Service is exposed. Defaults to ClusterIP. Valid - options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that is not - specified, by manual construction of an Endpoints object or - EndpointSlice objects. If clusterIP is "None", no virtual IP is - allocated and the endpoints are published as a set of endpoints rather - than a virtual IP. - "NodePort" builds on ClusterIP and allocates a port on every node which - routes to the same endpoints as the clusterIP. - "LoadBalancer" builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes to the same endpoints - as the clusterIP. - "ExternalName" aliases this service to the specified externalName. - Several other fields do not apply to ExternalName services. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - type: string - type: object - status: - description: |- - Most recently observed status of the service. - Populated by the system. - Read-only. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one aspect - of the current state of this API Resource.\n---\nThis - struct is intended for direct use as an array at the - field path .status.conditions. For example,\n\n\n\ttype - FooStatus struct{\n\t // Represents the observations - of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t - \ // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t - \ // +listType=map\n\t // +listMapKey=type\n\t - \ Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: |- - LoadBalancer contains the current status of the load-balancer, - if one is present. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - --- - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of - the service port of which status is recorded - here - format: int32 - type: integer - protocol: - default: TCP - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startScript: - default: /druid.sh - description: StartScript Path to Druid's start script to be run on - start. - type: string - startUpProbe: - description: StartUpProbe - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - - If this is not specified, the default behavior is defined by gRPC. - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: |- - The header field name. - This will be canonicalized upon output, so case-variant names will be understood as the same header. - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Name or number of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: |- - Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: |- - Number or name of the port to access on the container. - Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - format: int32 - type: integer - type: object - tolerations: - description: Tolerations Kubernetes native `tolerations` specification. - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - description: |- - Effect indicates the taint effect to match. Empty means match all taint effects. - When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: |- - Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod can - tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - updateStrategy: - description: UpdateStrategy - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters when - Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: |- - The maximum number of pods that can be unavailable during the update. - Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). - Absolute number is calculated from percentage by rounding up. This can not be 0. - Defaults to 1. This field is alpha-level and is only honored by servers that enable the - MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to - Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it - will be counted towards MaxUnavailable. - x-kubernetes-int-or-string: true - partition: - description: |- - Partition indicates the ordinal at which the StatefulSet should be partitioned - for updates. During a rolling update, all pods from ordinal Replicas-1 to - Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. - This is helpful in being able to do a canary based deployment. The default value is 0. - format: int32 - type: integer - type: object - type: - description: |- - Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - description: VolumeClaimTemplates Kubernetes Native `VolumeClaimTemplate` - specification. - items: - description: PersistentVolumeClaim is a user's request for and claim - to a persistent volume - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - description: |- - Standard object's metadata. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - spec defines the desired characteristics of a volume requested by a pod author. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in - PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes to consider - for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: |- - status represents the current information/status of a persistent volume claim. - Read-only. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - accessModes: - description: |- - accessModes contains the actual access modes the volume backing the PVC has. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may - be larger than the actual capacity when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. - If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. - If a volume expansion capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress and if the actual volume capacity - is equal or lower than the requested capacity. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources of - the underlying volume. - type: object - conditions: - description: |- - conditions is the current Condition of persistent volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contains details - about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed the - condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time the condition - transitioned from one status to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: |- - reason is a unique, this should be a short, machine understandable string that gives the reason - for condition's last transition. If it reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of PersistentVolumeClaim. - type: string - resizeStatus: - description: |- - resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty - string by resize controller or kubelet. - This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - volumeMounts: - description: VolumeMounts Kubernetes Native `VolumeMount` specification. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - mountPropagation: - description: |- - mountPropagation determines how mounts are propagated from the host - to container and the other way around. - When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - type: boolean - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - type: string - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes Kubernetes Native `Volumes` specification. - items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: |- - awsElasticBlockStore represents an AWS Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - format: int32 - type: integer - readOnly: - description: |- - readOnly value true will force the readOnly setting in VolumeMounts. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: boolean - volumeID: - description: |- - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: None, - Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk in the - blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the blob - storage - type: string - fsType: - description: |- - fsType is Filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single blob - disk per storage account Managed: azure managed data - disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that contains - Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: |- - monitors is Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted root, - rather than the full Ceph tree, default is /' - type: string - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: boolean - secretFile: - description: |- - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - secretRef: - description: |- - secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is optional: User is the rados user name, default is admin - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - type: string - required: - - monitors - type: object - cinder: - description: |- - cinder represents a cinder volume attached and mounted on kubelets host machine. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: boolean - secretRef: - description: |- - secretRef is optional: points to a secret object containing parameters used to connect - to OpenStack. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: |- - volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: |- - defaultMode is optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents ephemeral - storage that is handled by certain external CSI drivers (Beta - feature). - properties: - driver: - description: |- - driver is the name of the CSI driver that handles this volume. - Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: |- - fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated CSI driver - which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: |- - nodePublishSecretRef is a reference to the secret object containing - sensitive information to pass to the CSI driver to complete the CSI - NodePublishVolume and NodeUnpublishVolume calls. - This field is optional, and may be empty if no secret is required. If the - secret object contains more than one secret, all secret references are passed. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: |- - readOnly specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: |- - volumeAttributes stores driver-specific properties that are passed to the CSI - driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: |- - Optional: mode bits to use on created files by default. Must be a - Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative path - name of the file to be created. Must not be absolute - or contain the ''..'' path. Must be utf-8 encoded. - The first item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: |- - emptyDir represents a temporary directory that shares a pod's lifetime. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - properties: - medium: - description: |- - medium represents what type of storage medium should back this directory. - The default is "" which means to use the node's default medium. - Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: |- - sizeLimit is the total amount of local storage required for this EmptyDir volume. - The size limit is also applicable for memory medium. - The maximum usage on memory medium EmptyDir would be the minimum value between - the SizeLimit specified here and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: |- - ephemeral represents a volume that is handled by a cluster storage driver. - The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, - and deleted when the pod is removed. - - - Use this if: - a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot or capacity - tracking are needed, - c) the storage driver is specified through a storage class, and - d) the storage driver supports dynamic volume provisioning through - a PersistentVolumeClaim (see EphemeralVolumeSource for more - information on the connection between this volume type - and PersistentVolumeClaim). - - - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. - - - Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to - be used that way - see the documentation of the driver for - more information. - - - A pod can use both types of ephemeral volumes and - persistent volumes at the same time. - properties: - volumeClaimTemplate: - description: |- - Will be used to create a stand-alone PVC to provision the volume. - The pod in which this EphemeralVolumeSource is embedded will be the - owner of the PVC, i.e. the PVC will be deleted together with the - pod. The name of the PVC will be `-` where - `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated name - is not valid for a PVC (for example, too long). - - - An existing PVC with that name that is not owned by the pod - will *not* be used for the pod to avoid using an unrelated - volume by mistake. Starting the pod is then blocked until - the unrelated PVC is removed. If such a pre-created PVC is - meant to be used by the pod, the PVC has to updated with an - owner reference to the pod once the pod exists. Normally - this should not be necessary, but it may be useful when - manually reconstructing a broken cluster. - - - This field is read-only and no changes will be made by Kubernetes - to the PVC after it has been created. - - - Required, must not be nil. - properties: - metadata: - description: |- - May contain labels and annotations that will be copied into the PVC - when creating it. No other fields are allowed and will be rejected during - validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: |- - The specification for the PersistentVolumeClaim. The entire content is - copied unchanged into the PVC that gets created from this - template. The same fields as in a PersistentVolumeClaim - are also valid here. - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - items: - type: string - type: array - dataSource: - description: |- - dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller can support the specified data source, - it will create a new volume based on the contents of the specified data source. - When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, - and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will not be copied to dataSource. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: |- - dataSourceRef specifies the object from which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a non-empty API group (non - core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only succeed if the type of - the specified object matches some installed volume populator or dynamic - provisioner. - This field will replace the functionality of the dataSource field and as such - if both fields are non-empty, they must have the same value. For backwards - compatibility, when namespace isn't specified in dataSourceRef, - both fields (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other is non-empty. - When namespace is specified in dataSourceRef, - dataSource isn't set to the same value and must be empty. - There are three important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping them), dataSourceRef - preserves all values, and generates an error if a disallowed value is - specified. - * While dataSource only allows local objects, dataSourceRef allows objects - in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: |- - Namespace is the namespace of resource being referenced - Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. - (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: |- - resources represents the minimum resources the volume should have. - If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements - that are lower than previous value but must still be higher than capacity recorded in the - status field of the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one - entry in PodSpec.ResourceClaims. - properties: - name: - description: |- - Name must match the name of one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: |- - Requests describes the minimum amount of compute resources required. - If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - type: string - volumeMode: - description: |- - volumeMode defines what type of volume is required by the claim. - Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to the - pod. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: |- - wwids Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - items: - type: string - type: array - type: object - flexVolume: - description: |- - flexVolume represents a generic volume resource that is - provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use for - this volume. - type: string - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds extra - command options if any.' - type: object - readOnly: - description: |- - readOnly is Optional: defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef is Optional: secretRef is reference to the secret object containing - sensitive information to pass to the plugin scripts. This may be - empty if no secret object is specified. If the secret object - contains more than one secret, all secrets are passed to the plugin - scripts. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached to - a kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: |- - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker - should be considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. This - is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: |- - gcePersistentDisk represents a GCE Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - properties: - fsType: - description: |- - fsType is filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - format: int32 - type: integer - pdName: - description: |- - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: boolean - required: - - pdName - type: object - gitRepo: - description: |- - gitRepo represents a git repository at a particular revision. - DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an - EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir - into the Pod's container. - properties: - directory: - description: |- - directory is the target directory name. - Must not contain or start with '..'. If '.' is supplied, the volume directory will be the - git repository. Otherwise, if specified, the volume will contain the git repository in - the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: |- - glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/glusterfs/README.md - properties: - endpoints: - description: |- - endpoints is the endpoint name that details Glusterfs topology. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - path: - description: |- - path is the Glusterfs volume path. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - readOnly: - description: |- - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: |- - hostPath represents a pre-existing file or directory on the host - machine that is directly exposed to the container. This is generally - used for system agents or other privileged things that are allowed - to see the host machine. Most containers will NOT need this. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- - TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not - mount host directories as read/write. - properties: - path: - description: |- - path of the directory on the host. - If the path is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - type: - description: |- - type for HostPath Volume - Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - required: - - path - type: object - iscsi: - description: |- - iscsi represents an ISCSI Disk resource that is attached to a - kubelet's host machine and then exposed to the pod. - More info: https://examples.k8s.io/volumes/iscsi/README.md - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support iSCSI - Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support iSCSI - Session CHAP authentication - type: boolean - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - initiatorName: - description: |- - initiatorName is the custom iSCSI Initiator Name. - If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface - : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: |- - iscsiInterface is the interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: |- - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI target - and initiator authentication - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: |- - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: |- - name of the volume. - Must be a DNS_LABEL and unique within the pod. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - nfs: - description: |- - nfs represents an NFS mount on the host that shares a pod's lifetime - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - properties: - path: - description: |- - path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - readOnly: - description: |- - readOnly here will force the NFS export to be mounted with read-only permissions. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: boolean - server: - description: |- - server is the hostname or IP address of the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: |- - persistentVolumeClaimVolumeSource represents a reference to a - PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - properties: - claimName: - description: |- - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - type: string - readOnly: - description: |- - readOnly Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon Controller - persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: |- - fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources secrets, - configmaps, and downward API - properties: - defaultMode: - description: |- - defaultMode are the mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: configMap information about the configMap - data to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the downwardAPI - data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, - defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' - path. Must be utf-8 encoded. The first - item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: |- - Selects a resource of the container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults - to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to - select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret data - to project - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - optional: - description: optional field specify whether the - Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information about - the serviceAccountToken data to project - properties: - audience: - description: |- - audience is the intended audience of the token. A recipient of a token - must identify itself with an identifier specified in the audience of the - token, and otherwise should reject the token. The audience defaults to the - identifier of the apiserver. - type: string - expirationSeconds: - description: |- - expirationSeconds is the requested duration of validity of the service - account token. As the token approaches expiration, the kubelet volume - plugin will proactively rotate the service account token. The kubelet will - start trying to rotate the token if the token is older than 80 percent of - its time to live or if the token is older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - format: int64 - type: integer - path: - description: |- - path is the path relative to the mount point of the file to project the - token into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the host - that shares a pod's lifetime - properties: - group: - description: |- - group to map volume access to - Default is no group - type: string - readOnly: - description: |- - readOnly here will force the Quobyte volume to be mounted with read-only permissions. - Defaults to false. - type: boolean - registry: - description: |- - registry represents a single or multiple Quobyte Registry services - specified as a string as host:port pair (multiple entries are separated with commas) - which acts as the central registry for volumes - type: string - tenant: - description: |- - tenant owning the given Quobyte volume in the Backend - Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: |- - user to map volume access to - Defaults to serivceaccount user - type: string - volume: - description: volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: |- - rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. - More info: https://examples.k8s.io/volumes/rbd/README.md - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising the machine - type: string - image: - description: |- - image is the rados image name. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - keyring: - description: |- - keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - monitors: - description: |- - monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - items: - type: string - type: array - pool: - description: |- - pool is the rados pool name. - Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: boolean - secretRef: - description: |- - secretRef is name of the authentication secret for RBDUser. If provided - overrides keyring. - Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: |- - user is the rados user name. - Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". - Default is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef references to the secret for ScaleIO user and other - sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: |- - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool associated - with the protection domain. - type: string - system: - description: system is the name of the storage system as - configured in ScaleIO. - type: string - volumeName: - description: |- - volumeName is the name of a volume already created in the ScaleIO system - that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: |- - secret represents a secret that should populate this volume. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - properties: - defaultMode: - description: |- - defaultMode is Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values - for mode bits. Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - items: - description: |- - items If unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret or - its keys must be defined - type: boolean - secretName: - description: |- - secretName is the name of the secret in the pod's namespace to use. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: |- - secretRef specifies the secret to use for obtaining the StorageOS API - credentials. If not specified, default values will be attempted. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: |- - volumeName is the human-readable name of the StorageOS volume. Volume - names are only unique within a namespace. - type: string - volumeNamespace: - description: |- - volumeNamespace specifies the scope of the volume within StorageOS. If no - namespace is specified then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS for tighter integration. - Set VolumeName to any name to override the default behaviour. - Set to "default" if you are not using namespaces within StorageOS. - Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: |- - fsType is filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy Based - Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy Based - Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies vSphere - volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - workloadAnnotations: - additionalProperties: - type: string - description: |- - WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. - if the same key is specified at both the DruidNodeSpec level and DruidSpec level, the DruidNodeSpec WorkloadAnnotations will take precedence. - type: object - zookeeper: - description: 'Zookeeper IGNORED (Future API): In order to make Druid - dependency setup extensible from within Druid operator.' - properties: - spec: - description: |- - RawMessage is a raw encoded JSON value. - It implements [Marshaler] and [Unmarshaler] and can - be used to delay JSON decoding or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - required: - - common.runtime.properties - - nodes - type: object - status: - description: DruidClusterStatus Defines the observed state of Druid. - properties: - configMaps: - items: - type: string - type: array - deployments: - items: - type: string - type: array - druidNodeStatus: - description: |- - INSERT ADDITIONAL STATUS FIELD - define observed state of cluster - Important: Run "make" to regenerate code after modifying this file - properties: - druidNode: - type: string - druidNodeConditionStatus: - type: string - druidNodeConditionType: - type: string - reason: - type: string - type: object - hpAutoscalers: - items: - type: string - type: array - ingress: - items: - type: string - type: array - persistentVolumeClaims: - items: - type: string - type: array - podDisruptionBudgets: - items: - type: string - type: array - pods: - items: - type: string - type: array - services: - items: - type: string - type: array - statefulSets: - items: - type: string - type: array - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} diff --git a/druid-operator/config/crd/kustomization.yaml b/druid-operator/config/crd/kustomization.yaml deleted file mode 100644 index fc9a8d202160..000000000000 --- a/druid-operator/config/crd/kustomization.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# This kustomization.yaml is not intended to be run by itself, -# since it depends on service name and namespace that are out of this kustomize package. -# It should be run by config/default -resources: -- bases/druid.apache.org_druids.yaml -- bases/druid.apache.org_druidingestions.yaml -#+kubebuilder:scaffold:crdkustomizeresource - -patchesStrategicMerge: -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. -# patches here are for enabling the conversion webhook for each CRD -#- patches/webhook_in_druids.yaml -#- patches/webhook_in_druidingestions.yaml -#+kubebuilder:scaffold:crdkustomizewebhookpatch - -# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. -# patches here are for enabling the CA injection for each CRD -#- patches/cainjection_in_druids.yaml -#- patches/cainjection_in_druidingestions.yaml -#+kubebuilder:scaffold:crdkustomizecainjectionpatch - -# the following config is for teaching kustomize how to do kustomization for CRDs. -configurations: -- kustomizeconfig.yaml diff --git a/druid-operator/config/crd/kustomizeconfig.yaml b/druid-operator/config/crd/kustomizeconfig.yaml deleted file mode 100644 index 35c67e1dff60..000000000000 --- a/druid-operator/config/crd/kustomizeconfig.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# This file is for teaching kustomize how to substitute name and namespace reference in CRD -nameReference: -- kind: Service - version: v1 - fieldSpecs: - - kind: CustomResourceDefinition - version: v1 - group: apiextensions.k8s.io - path: spec/conversion/webhook/clientConfig/service/name - -namespace: -- kind: CustomResourceDefinition - version: v1 - group: apiextensions.k8s.io - path: spec/conversion/webhook/clientConfig/service/namespace - create: false - -varReference: -- path: metadata/annotations diff --git a/druid-operator/config/crd/patches/cainjection_in_druid_druidingestions.yaml b/druid-operator/config/crd/patches/cainjection_in_druid_druidingestions.yaml deleted file mode 100644 index 2a3a683a6b20..000000000000 --- a/druid-operator/config/crd/patches/cainjection_in_druid_druidingestions.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# The following patch adds a directive for certmanager to inject CA into the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) - name: druidingestions.druid.apache.org diff --git a/druid-operator/config/crd/patches/cainjection_in_druids.yaml b/druid-operator/config/crd/patches/cainjection_in_druids.yaml deleted file mode 100644 index 1b99796a41b9..000000000000 --- a/druid-operator/config/crd/patches/cainjection_in_druids.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# The following patch adds a directive for certmanager to inject CA into the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) - name: druids.druid.apache.org diff --git a/druid-operator/config/crd/patches/webhook_in_druid_druidingestions.yaml b/druid-operator/config/crd/patches/webhook_in_druid_druidingestions.yaml deleted file mode 100644 index 6d091bdadf00..000000000000 --- a/druid-operator/config/crd/patches/webhook_in_druid_druidingestions.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# The following patch enables a conversion webhook for the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: druidingestions.druid.apache.org -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - namespace: system - name: webhook-service - path: /convert - conversionReviewVersions: - - v1 diff --git a/druid-operator/config/crd/patches/webhook_in_druids.yaml b/druid-operator/config/crd/patches/webhook_in_druids.yaml deleted file mode 100644 index 554459ba5bbc..000000000000 --- a/druid-operator/config/crd/patches/webhook_in_druids.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# The following patch enables a conversion webhook for the CRD -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: druids.druid.apache.org -spec: - conversion: - strategy: Webhook - webhook: - clientConfig: - service: - namespace: system - name: webhook-service - path: /convert - conversionReviewVersions: - - v1 diff --git a/druid-operator/config/default/kustomization.yaml b/druid-operator/config/default/kustomization.yaml deleted file mode 100644 index 1fffe69be5b4..000000000000 --- a/druid-operator/config/default/kustomization.yaml +++ /dev/null @@ -1,87 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# Adds namespace to all resources. -namespace: druid-operator-system - -# Value of this field is prepended to the -# names of all resources, e.g. a deployment named -# "wordpress" becomes "alices-wordpress". -# Note that it should also match with the prefix (text before '-') of the namespace -# field above. -namePrefix: druid-operator- - -# Labels to add to all resources and selectors. -#commonLabels: -# someName: someValue - -bases: -- ../crd -- ../rbac -- ../manager -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in -# crd/kustomization.yaml -#- ../webhook -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. -#- ../certmanager -# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. -#- ../prometheus - -patchesStrategicMerge: -# Protect the /metrics endpoint by putting it behind auth. -# If you want your controller-manager to expose the /metrics -# endpoint w/o any authn/z, please comment the following line. -- manager_auth_proxy_patch.yaml - - - -# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in -# crd/kustomization.yaml -#- manager_webhook_patch.yaml - -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. -# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks. -# 'CERTMANAGER' needs to be enabled to use ca injection -#- webhookcainjection_patch.yaml - -# the following config is for teaching kustomize how to do var substitution -vars: -# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. -#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR -# objref: -# kind: Certificate -# group: cert-manager.io -# version: v1 -# name: serving-cert # this name should match the one in certificate.yaml -# fieldref: -# fieldpath: metadata.namespace -#- name: CERTIFICATE_NAME -# objref: -# kind: Certificate -# group: cert-manager.io -# version: v1 -# name: serving-cert # this name should match the one in certificate.yaml -#- name: SERVICE_NAMESPACE # namespace of the service -# objref: -# kind: Service -# version: v1 -# name: webhook-service -# fieldref: -# fieldpath: metadata.namespace -#- name: SERVICE_NAME -# objref: -# kind: Service -# version: v1 -# name: webhook-service diff --git a/druid-operator/config/default/manager_auth_proxy_patch.yaml b/druid-operator/config/default/manager_auth_proxy_patch.yaml deleted file mode 100644 index f8b31bad8096..000000000000 --- a/druid-operator/config/default/manager_auth_proxy_patch.yaml +++ /dev/null @@ -1,70 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# This patch inject a sidecar container which is a HTTP proxy for the -# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system -spec: - template: - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - arm64 - - ppc64le - - s390x - - key: kubernetes.io/os - operator: In - values: - - linux - containers: - - name: kube-rbac-proxy - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - "ALL" - image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 - args: - - "--secure-listen-address=0.0.0.0:8443" - - "--upstream=http://127.0.0.1:8080/" - - "--logtostderr=true" - - "--v=0" - ports: - - containerPort: 8443 - protocol: TCP - name: https - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 5m - memory: 64Mi - - name: manager - args: - - "--health-probe-bind-address=:8081" - - "--metrics-bind-address=127.0.0.1:8080" - - "--leader-elect" diff --git a/druid-operator/config/default/manager_config_patch.yaml b/druid-operator/config/default/manager_config_patch.yaml deleted file mode 100644 index 336970320d32..000000000000 --- a/druid-operator/config/default/manager_config_patch.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system -spec: - template: - spec: - containers: - - name: manager diff --git a/druid-operator/config/druid.apache.org_druids.yaml b/druid-operator/config/druid.apache.org_druids.yaml deleted file mode 100644 index d604dd5391a6..000000000000 --- a/druid-operator/config/druid.apache.org_druids.yaml +++ /dev/null @@ -1,11575 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.11.2 - creationTimestamp: null - name: druids.druid.apache.org -spec: - group: druid.apache.org - names: - kind: Druid - listKind: DruidList - plural: druids - singular: druid - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Druid is the Schema for the druids API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: DruidSpec defines the desired state of Druid - properties: - additionalContainer: - description: Operator deploys the sidecar container based on these - properties. Sidecar will be deployed for all the Druid pods. - items: - description: AdditionalContainer defines the additional sidecar - container - properties: - args: - description: Argument to call the command - items: - type: string - type: array - command: - description: This is the command for the additional container - to run. - items: - type: string - type: array - containerName: - description: This is the name of the additional container. - type: string - env: - description: Environment variables for the Additional Container - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: Extra environment variables - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - image: - description: This is the image for the additional container - to run. - type: string - imagePullPolicy: - description: If not present, will be taken from top level spec - type: string - resources: - description: CPU/Memory Resources - properties: - claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It can only - be set for containers." - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - runAsInit: - type: boolean - securityContext: - description: ContainerSecurityContext. If not present, will - be taken from top level pod - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be set - when spec.os.name is windows.' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by - the container runtime. Note that this field cannot be - set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent to - root on the host. Defaults to false. Note that this field - cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: procMount denotes the type of proc mount to - use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a - non-root user. If true, the Kubelet will validate the - image at runtime to ensure that it does not run as UID - 0 (root) and fail to start the container if it does. If - unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both - SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a - random SELinux context for each container. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name is - windows. - properties: - localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile - must be preconfigured on the node to work. Must be - a descending path, relative to the kubelet's configured - seccomp profile location. Must only be set if type - is "Localhost". - type: string - type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should be - used. RuntimeDefault - the container runtime default - profile should be used. Unconfined - no profile should - be applied." - type: string - required: - - type - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is - linux. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is - alpha-level and will only be honored by components - that enable the WindowsHostProcessContainers feature - flag. Setting this field without the feature flag - will result in errors when validating the Pod. All - of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. - type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - type: string - type: object - type: object - volumeMounts: - description: Volumes etc for the Druid pods - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other - way around. When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - required: - - command - - containerName - - image - type: object - type: array - affinity: - description: Affinity to be used to for enabling node, pod affinity - and anti-affinity - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to - nodes that satisfy the affinity expressions specified by - this field, but it may choose a node that violates one or - more of the expressions. The node that is most preferred - is the one with the greatest sum of weights, i.e. for each - node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements of - this field and adding "weight" to the sum if the node matches - the corresponding matchExpressions; the node(s) with the - highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a no-op). - A null preferred scheduling term matches no objects (i.e. - is also a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. - type: string - values: - description: An array of string values. If - the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values array - must be empty. If the operator is Gt or - Lt, the values array must have a single - element, which will be interpreted as an - integer. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. - type: string - values: - description: An array of string values. If - the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values array - must be empty. If the operator is Gt or - Lt, the values array must have a single - element, which will be interpreted as an - integer. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. - type: string - values: - description: An array of string values. If - the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values array - must be empty. If the operator is Gt or - Lt, the values array must have a single - element, which will be interpreted as an - integer. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. - type: string - values: - description: An array of string values. If - the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values array - must be empty. If the operator is Gt or - Lt, the values array must have a single - element, which will be interpreted as an - integer. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to - nodes that satisfy the affinity expressions specified by - this field, but it may choose a node that violates one or - more of the expressions. The node that is most preferred - is the one with the greatest sum of weights, i.e. for each - node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements of - this field and adding "weight" to the sum if the node has - pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces field. - null selector and null or empty namespaces list - means "this pod's namespace". An empty selector - ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. The - term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces list - and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey - matches that of any node on which any of the selected - pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may - not try to eventually evict the pod from its node. When - there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms - must be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of - pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: A label selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If the - operator is Exists or DoesNotExist, the - values array must be empty. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". The - requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to the - union of the namespaces selected by this field and - the ones listed in the namespaces field. null selector - and null or empty namespaces list means "this pod's - namespace". An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: A label selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If the - operator is Exists or DoesNotExist, the - values array must be empty. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". The - requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace - names that the term applies to. The term is applied - to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. null or - empty namespaces list and null namespaceSelector means - "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of - any node on which any of the selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to - nodes that satisfy the anti-affinity expressions specified - by this field, but it may choose a node that violates one - or more of the expressions. The node that is most preferred - is the one with the greatest sum of weights, i.e. for each - node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, - etc.), compute a sum by iterating through the elements of - this field and adding "weight" to the sum if the node has - pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces field. - null selector and null or empty namespaces list - means "this pod's namespace". An empty selector - ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. The - term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces list - and null namespaceSelector means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey - matches that of any node on which any of the selected - pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will - not be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its - node. When there are multiple elements, the lists of nodes - corresponding to each podAffinityTerm are intersected, i.e. - all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of - pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: A label selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If the - operator is Exists or DoesNotExist, the - values array must be empty. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". The - requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to the - union of the namespaces selected by this field and - the ones listed in the namespaces field. null selector - and null or empty namespaces list means "this pod's - namespace". An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: A label selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If the - operator is Exists or DoesNotExist, the - values array must be empty. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". The - requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list of namespace - names that the term applies to. The term is applied - to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. null or - empty namespaces list and null namespaceSelector means - "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of - any node on which any of the selected pods is running. - Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - common.runtime.properties: - description: common.runtime.properties contents - type: string - commonConfigMountPath: - description: In-container directory to mount with common.runtime.properties - type: string - containerSecurityContext: - description: druid pods container-security-context - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process - can gain more privileges than its parent process. This bool - directly controls if the no_new_privs flag will be set on the - container process. AllowPrivilegeEscalation is true always when - the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows.' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the container - runtime. Note that this field cannot be set when spec.os.name - is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged - containers are essentially equivalent to root on the host. Defaults - to false. Note that this field cannot be set when spec.os.name - is windows. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for - the containers. The default is DefaultProcMount which uses the - container runtime defaults for readonly paths and masked paths. - This requires the ProcMountType feature flag to be enabled. - Note that this field cannot be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. Note that this field cannot be set when spec.os.name - is windows. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note that this - field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when spec.os.name - is windows. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note that this - field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: The seccomp options to use by this container. If - seccomp options are provided at both the pod & container level, - the container options override the pod options. Note that this - field cannot be set when spec.os.name is windows. - properties: - localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile must be - preconfigured on the node to work. Must be a descending - path, relative to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". - type: string - type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - a profile - defined in a file on the node should be used. RuntimeDefault - - the container runtime default profile should be used. - Unconfined - no profile should be applied." - type: string - required: - - type - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options from the PodSecurityContext will - be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is alpha-level - and will only be honored by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature flag - will result in errors when validating the Pod. All of a - Pod's containers must have the same effective HostProcess - value (it is not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, if HostProcess - is true then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: string - type: object - type: object - core-site.xml: - type: string - deepStorage: - properties: - spec: - description: RawMessage is a raw encoded JSON value. It implements - Marshaler and Unmarshaler and can be used to delay JSON decoding - or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - deleteOrphanPvc: - description: Default is set to true, orphaned ( unmounted pvc's ) - shall be cleaned up by the operator. - type: boolean - disablePVCDeletionFinalizer: - description: Default is set to false, pvc shall be deleted on deletion - of CR - type: boolean - env: - description: Environment variables for druid containers - items: - description: EnvVar represents an environment variable present in - a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using - the previously defined environment variables in the container - and any service environment variables. If a variable cannot - be resolved, the reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows for escaping - the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the - string literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists or - not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot - be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is - written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified - API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed - resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: Extra environment variables - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each key in - the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - forceDeleteStsPodOnError: - type: boolean - hdfs-site.xml: - description: HDFS common config - type: string - ignored: - default: false - description: 'Ignored is now deprecated API. In order to avoid reconciliation - of objects use the druid.apache.org/ignored: "true" annotation' - type: boolean - image: - description: Required here or at nodeSpec level - type: string - imagePullPolicy: - description: PullPolicy describes a policy for if/when to pull a container - image - type: string - imagePullSecrets: - description: imagePullSecrets for private registries - items: - description: LocalObjectReference contains enough information to - let you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - type: array - jvm.options: - description: jvm options for druid jvm processes - type: string - livenessProbe: - description: Port is set to druid.port if not specified with httpGet - handler - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command is - simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be - considered failed after having succeeded. Defaults to 3. Minimum - value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. This - is a beta field and requires enabling GRPCContainerProbe feature - gate. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to place - in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior is defined - by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod - IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults - to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default - to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be - considered successful after having failed. Defaults to 1. Must - be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully upon probe failure. The grace period is the duration - in seconds after the processes running in the pod are sent a - termination signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. Value must - be non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). This is a - beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - log4j.config: - description: log4j config contents - type: string - metadataStore: - properties: - spec: - description: RawMessage is a raw encoded JSON value. It implements - Marshaler and Unmarshaler and can be used to delay JSON decoding - or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - metricDimensions.json: - description: Custom Dimension Map Path for statsd emitter - type: string - nodeSelector: - additionalProperties: - type: string - description: Node selector to be used by Druid statefulsets - type: object - nodes: - additionalProperties: - properties: - affinity: - description: Affinity to be used to for enabling node, pod affinity - and anti-affinity - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for - the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node matches the corresponding matchExpressions; - the node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a - no-op). A null preferred scheduling term matches - no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated - with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. - type: string - values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. - type: string - values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - weight: - description: Weight associated with matching the - corresponding nodeSelectorTerm, in the range - 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an - update), the system may or may not try to eventually - evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. - items: - description: A null or empty node selector term - matches no objects. The requirements of them - are ANDed. The TopologySelectorTerm type implements - a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. - type: string - values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: The label key that the - selector applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. - type: string - values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - x-kubernetes-map-type: atomic - type: array - required: - - nodeSelectorTerms - type: object - x-kubernetes-map-type: atomic - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node has pods which matches the - corresponding podAffinityTerm; the node(s) with the - highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions - specified by this field, but it may choose a node - that violates one or more of the expressions. The - node that is most preferred is the one with the greatest - sum of weights, i.e. for each node that meets all - of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the - node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - containerSecurityContext: - description: Druid pods container-security-context - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be set - when spec.os.name is windows.' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by - the container runtime. Note that this field cannot be - set when spec.os.name is windows. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent to - root on the host. Defaults to false. Note that this field - cannot be set when spec.os.name is windows. - type: boolean - procMount: - description: procMount denotes the type of proc mount to - use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a - non-root user. If true, the Kubelet will validate the - image at runtime to ensure that it does not run as UID - 0 (root) and fail to start the container if it does. If - unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both - SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a - random SELinux context for each container. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name is - windows. - properties: - localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile - must be preconfigured on the node to work. Must be - a descending path, relative to the kubelet's configured - seccomp profile location. Must only be set if type - is "Localhost". - type: string - type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should be - used. RuntimeDefault - the container runtime default - profile should be used. Unconfined - no profile should - be applied." - type: string - required: - - type - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is - linux. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is - alpha-level and will only be honored by components - that enable the WindowsHostProcessContainers feature - flag. Setting this field without the feature flag - will result in errors when validating the Pod. All - of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. - type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - type: string - type: object - type: object - druid.port: - description: Port used by Druid Process - format: int32 - type: integer - env: - description: Extra environment variables - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be - a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - x-kubernetes-map-type: atomic - type: object - required: - - name - type: object - type: array - envFrom: - description: Extra environment variables - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap must be - defined - type: boolean - type: object - x-kubernetes-map-type: atomic - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - type: object - type: array - extra.jvm.options: - description: This appends extra jvm options to JvmOptions field - type: string - hpAutoscaler: - description: HorizontalPodAutoscalerSpec describes the desired - functionality of the HorizontalPodAutoscaler. - properties: - behavior: - description: behavior configures the scaling behavior of - the target in both Up and Down directions (scaleUp and - scaleDown fields respectively). If not set, the default - HPAScalingRules for scale up and scale down are used. - properties: - scaleDown: - description: scaleDown is scaling policy for scaling - Down. If not set, the default value is to allow to - scale down to minReplicas pods, with a 300 second - stabilization window (i.e., the highest recommendation - for the last 300sec is used). - properties: - policies: - description: policies is a list of potential scaling - polices which can be used during scaling. At least - one policy must be specified, otherwise the HPAScalingRules - will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: PeriodSeconds specifies the window - of time for which the policy should hold - true. PeriodSeconds must be greater than - zero and less than or equal to 1800 (30 - min). - format: int32 - type: integer - type: - description: Type is used to specify the scaling - policy. - type: string - value: - description: Value contains the amount of - change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: selectPolicy is used to specify which - policy should be used. If not set, the default - value Max is used. - type: string - stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is the - number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal to - 3600 (one hour). If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization - window is 300 seconds long).' - format: int32 - type: integer - type: object - scaleUp: - description: 'scaleUp is scaling policy for scaling - Up. If not set, the default value is the higher of: - * increase no more than 4 pods per 60 seconds * double - the number of pods per 60 seconds No stabilization - is used.' - properties: - policies: - description: policies is a list of potential scaling - polices which can be used during scaling. At least - one policy must be specified, otherwise the HPAScalingRules - will be discarded as invalid - items: - description: HPAScalingPolicy is a single policy - which must hold true for a specified past interval. - properties: - periodSeconds: - description: PeriodSeconds specifies the window - of time for which the policy should hold - true. PeriodSeconds must be greater than - zero and less than or equal to 1800 (30 - min). - format: int32 - type: integer - type: - description: Type is used to specify the scaling - policy. - type: string - value: - description: Value contains the amount of - change which is permitted by the policy. - It must be greater than zero - format: int32 - type: integer - required: - - periodSeconds - - type - - value - type: object - type: array - x-kubernetes-list-type: atomic - selectPolicy: - description: selectPolicy is used to specify which - policy should be used. If not set, the default - value Max is used. - type: string - stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is the - number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal to - 3600 (one hour). If not set, use the default values: - - For scale up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization - window is 300 seconds long).' - format: int32 - type: integer - type: object - type: object - maxReplicas: - description: maxReplicas is the upper limit for the number - of replicas to which the autoscaler can scale up. It cannot - be less that minReplicas. - format: int32 - type: integer - metrics: - description: metrics contains the specifications for which - to use to calculate the desired replica count (the maximum - replica count across all metrics will be used). The desired - replica count is calculated multiplying the ratio between - the target value and the current value by the current - number of pods. Ergo, metrics used must decrease as the - pod count is increased, and vice-versa. See the individual - metric source types for more information about how each - type of metric must respond. If not set, the default metric - will be set to 80% average CPU utilization. - items: - description: MetricSpec specifies how to scale based on - a single metric (only `type` and one other matching - field should be set at once). - properties: - containerResource: - description: containerResource refers to a resource - metric (such as those specified in requests and - limits) known to Kubernetes describing a single - container in each pod of the current scale target - (e.g. CPU or memory). Such metrics are built in - to Kubernetes, and have special scaling options - on top of those available to normal per-pod metrics - using the "pods" source. This is an alpha feature - and can be enabled by the HPAContainerMetrics feature - flag. - properties: - container: - description: container is the name of the container - in the pods of the scaling target - type: string - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: averageUtilization is the target - value of the average of the resource metric - across all relevant pods, represented as - a percentage of the requested value of the - resource for the pods. Currently only valid - for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: averageValue is the target value - of the average of the metric across all - relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - container - - name - - target - type: object - external: - description: external refers to a global metric that - is not associated with any Kubernetes object. It - allows autoscaling based on information coming from - components running outside of cluster (for example - length of queue in cloud messaging service, or QPS - from loadbalancer running outside of cluster). - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: selector is the string-encoded - form of a standard kubernetes label selector - for the given metric When set, it is passed - as an additional parameter to the metrics - server for more specific metrics scoping. - When unset, just the metricName will be - used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: averageUtilization is the target - value of the average of the resource metric - across all relevant pods, represented as - a percentage of the requested value of the - resource for the pods. Currently only valid - for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: averageValue is the target value - of the average of the metric across all - relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - object: - description: object refers to a metric describing - a single kubernetes object (for example, hits-per-second - on an Ingress object). - properties: - describedObject: - description: describedObject specifies the descriptions - of a object,such as kind,name apiVersion - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: 'Kind of the referent; More info: - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent; More info: - http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - required: - - kind - - name - type: object - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: selector is the string-encoded - form of a standard kubernetes label selector - for the given metric When set, it is passed - as an additional parameter to the metrics - server for more specific metrics scoping. - When unset, just the metricName will be - used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: averageUtilization is the target - value of the average of the resource metric - across all relevant pods, represented as - a percentage of the requested value of the - resource for the pods. Currently only valid - for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: averageValue is the target value - of the average of the metric across all - relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - describedObject - - metric - - target - type: object - pods: - description: pods refers to a metric describing each - pod in the current scale target (for example, transactions-processed-per-second). The - values will be averaged together before being compared - to the target value. - properties: - metric: - description: metric identifies the target metric - by name and selector - properties: - name: - description: name is the name of the given - metric - type: string - selector: - description: selector is the string-encoded - form of a standard kubernetes label selector - for the given metric When set, it is passed - as an additional parameter to the metrics - server for more specific metrics scoping. - When unset, just the metricName will be - used to gather metrics. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - required: - - name - type: object - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: averageUtilization is the target - value of the average of the resource metric - across all relevant pods, represented as - a percentage of the requested value of the - resource for the pods. Currently only valid - for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: averageValue is the target value - of the average of the metric across all - relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - metric - - target - type: object - resource: - description: resource refers to a resource metric - (such as those specified in requests and limits) - known to Kubernetes describing each pod in the current - scale target (e.g. CPU or memory). Such metrics - are built in to Kubernetes, and have special scaling - options on top of those available to normal per-pod - metrics using the "pods" source. - properties: - name: - description: name is the name of the resource - in question. - type: string - target: - description: target specifies the target value - for the given metric - properties: - averageUtilization: - description: averageUtilization is the target - value of the average of the resource metric - across all relevant pods, represented as - a percentage of the requested value of the - resource for the pods. Currently only valid - for Resource metric source type - format: int32 - type: integer - averageValue: - anyOf: - - type: integer - - type: string - description: averageValue is the target value - of the average of the metric across all - relevant pods (as a quantity) - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: - description: type represents whether the metric - type is Utilization, Value, or AverageValue - type: string - value: - anyOf: - - type: integer - - type: string - description: value is the target value of - the metric (as a quantity). - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - required: - - type - type: object - required: - - name - - target - type: object - type: - description: 'type is the type of metric source. It - should be one of "ContainerResource", "External", - "Object", "Pods" or "Resource", each mapping to - a matching field in the object. Note: "ContainerResource" - type is available on when the feature-gate HPAContainerMetrics - is enabled' - type: string - required: - - type - type: object - type: array - x-kubernetes-list-type: atomic - minReplicas: - description: minReplicas is the lower limit for the number - of replicas to which the autoscaler can scale down. It - defaults to 1 pod. minReplicas is allowed to be 0 if - the alpha feature gate HPAScaleToZero is enabled and at - least one Object or External metric is configured. Scaling - is active as long as at least one metric value is available. - format: int32 - type: integer - scaleTargetRef: - description: scaleTargetRef points to the target resource - to scale, and is used to the pods for which metrics should - be collected, as well as to actually change the replica - count. - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - required: - - kind - - name - type: object - required: - - maxReplicas - - scaleTargetRef - type: object - image: - description: Overrides image from top level, Required if no - image specified at top level - type: string - imagePullPolicy: - description: Overrides imagePullPolicy from top level - type: string - imagePullSecrets: - description: Overrides imagePullSecrets from top level - items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same - namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - type: array - ingress: - description: Ingress Spec - properties: - defaultBackend: - description: DefaultBackend is the backend that should handle - requests that don't match any rule. If Rules are not specified, - DefaultBackend must be specified. If DefaultBackend is - not set, the handling of requests that do not match any - of the rules will be up to the Ingress controller. - properties: - resource: - description: Resource is an ObjectRef to another Kubernetes - resource in the namespace of the Ingress object. If - resource is specified, a service.Name and service.Port - must not be specified. This is a mutually exclusive - setting with "Service". - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: Service references a Service as a Backend. - This is a mutually exclusive setting with "Resource". - properties: - name: - description: Name is the referenced service. The - service must exist in the same namespace as the - Ingress object. - type: string - port: - description: Port of the referenced service. A port - name or port number is required for a IngressServiceBackend. - properties: - name: - description: Name is the name of the port on - the Service. This is a mutually exclusive - setting with "Number". - type: string - number: - description: Number is the numerical port number - (e.g. 80) on the Service. This is a mutually - exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - ingressClassName: - description: IngressClassName is the name of an IngressClass - cluster resource. Ingress controller implementations use - this field to know whether they should be serving this - Ingress resource, by a transitive connection (controller - -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` - annotation (simple constant name) was never formally defined, - it was widely supported by Ingress controllers to create - a direct binding between Ingress controller and Ingress - resources. Newly created Ingress resources should prefer - using the field. However, even though the annotation is - officially deprecated, for backwards compatibility reasons, - ingress controllers should still honor that annotation - if present. - type: string - rules: - description: A list of host rules used to configure the - Ingress. If unspecified, or no rule matches, all traffic - is sent to the default backend. - items: - description: IngressRule represents the rules mapping - the paths under a specified host to the related backend - services. Incoming requests are first evaluated for - a host match, then routed to the backend associated - with the matching IngressRuleValue. - properties: - host: - description: "Host is the fully qualified domain name - of a network host, as defined by RFC 3986. Note - the following deviations from the \"host\" part - of the URI as defined in RFC 3986: 1. IPs are not - allowed. Currently an IngressRuleValue can only - apply to the IP in the Spec of the parent Ingress. - 2. The `:` delimiter is not respected because ports - are not allowed. Currently the port of an Ingress - is implicitly :80 for http and :443 for https. Both - these may change in the future. Incoming requests - are matched against the host before the IngressRuleValue. - If the host is unspecified, the Ingress routes all - traffic based on the specified IngressRuleValue. - \n Host can be \"precise\" which is a domain name - without the terminating dot of a network host (e.g. - \"foo.bar.com\") or \"wildcard\", which is a domain - name prefixed with a single wildcard label (e.g. - \"*.foo.com\"). The wildcard character '*' must - appear by itself as the first DNS label and matches - only a single label. You cannot have a wildcard - label by itself (e.g. Host == \"*\"). Requests will - be matched against the Host field in the following - way: 1. If Host is precise, the request matches - this rule if the http host header is equal to Host. - 2. If Host is a wildcard, then the request matches - this rule if the http host header is to equal to - the suffix (removing the first label) of the wildcard - rule." - type: string - http: - description: 'HTTPIngressRuleValue is a list of http - selectors pointing to backends. In the example: - http:///? -> backend where - where parts of the url correspond to RFC 3986, this - resource will be used to match against everything - after the last ''/'' and before the first ''?'' - or ''#''.' - properties: - paths: - description: A collection of paths that map requests - to backends. - items: - description: HTTPIngressPath associates a path - with a backend. Incoming urls matching the - path are forwarded to the backend. - properties: - backend: - description: Backend defines the referenced - service endpoint to which the traffic - will be forwarded to. - properties: - resource: - description: Resource is an ObjectRef - to another Kubernetes resource in - the namespace of the Ingress object. - If resource is specified, a service.Name - and service.Port must not be specified. - This is a mutually exclusive setting - with "Service". - properties: - apiGroup: - description: APIGroup is the group - for the resource being referenced. - If APIGroup is not specified, - the specified Kind must be in - the core API group. For any other - third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of - resource being referenced - type: string - name: - description: Name is the name of - resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - service: - description: Service references a Service - as a Backend. This is a mutually exclusive - setting with "Resource". - properties: - name: - description: Name is the referenced - service. The service must exist - in the same namespace as the Ingress - object. - type: string - port: - description: Port of the referenced - service. A port name or port number - is required for a IngressServiceBackend. - properties: - name: - description: Name is the name - of the port on the Service. - This is a mutually exclusive - setting with "Number". - type: string - number: - description: Number is the numerical - port number (e.g. 80) on the - Service. This is a mutually - exclusive setting with "Name". - format: int32 - type: integer - type: object - required: - - name - type: object - type: object - path: - description: Path is matched against the - path of an incoming request. Currently - it can contain characters disallowed from - the conventional "path" part of a URL - as defined by RFC 3986. Paths must begin - with a '/' and must be present when using - PathType with value "Exact" or "Prefix". - type: string - pathType: - description: 'PathType determines the interpretation - of the Path matching. PathType can be - one of the following values: * Exact: - Matches the URL path exactly. * Prefix: - Matches based on a URL path prefix split - by ''/''. Matching is done on a path element - by element basis. A path element refers - is the list of labels in the path split - by the ''/'' separator. A request is a - match for path p if every p is an element-wise - prefix of p of the request path. Note - that if the last element of the path is - a substring of the last element in request - path, it is not a match (e.g. /foo/bar - matches /foo/bar/baz, but does not match - /foo/barbaz). * ImplementationSpecific: - Interpretation of the Path matching is - up to the IngressClass. Implementations - can treat this as a separate PathType - or treat it identically to Prefix or Exact - path types. Implementations are required - to support all path types.' - type: string - required: - - backend - - pathType - type: object - type: array - x-kubernetes-list-type: atomic - required: - - paths - type: object - type: object - type: array - x-kubernetes-list-type: atomic - tls: - description: TLS configuration. Currently the Ingress only - supports a single TLS port, 443. If multiple members of - this list specify different hosts, they will be multiplexed - on the same port according to the hostname specified through - the SNI TLS extension, if the ingress controller fulfilling - the ingress supports SNI. - items: - description: IngressTLS describes the transport layer - security associated with an Ingress. - properties: - hosts: - description: Hosts are a list of hosts included in - the TLS certificate. The values in this list must - match the name/s used in the tlsSecret. Defaults - to the wildcard host setting for the loadbalancer - controller fulfilling this Ingress, if left unspecified. - items: - type: string - type: array - x-kubernetes-list-type: atomic - secretName: - description: SecretName is the name of the secret - used to terminate TLS traffic on port 443. Field - is left optional to allow TLS routing based on SNI - hostname alone. If the SNI host in a listener conflicts - with the "Host" header field used by an IngressRule, - the SNI host is used for termination and value of - the Host header is used for routing. - type: string - type: object - type: array - x-kubernetes-list-type: atomic - type: object - ingressAnnotations: - additionalProperties: - type: string - description: Ingress Annoatations to be populated in ingress - spec - type: object - jvm.options: - description: This overrides JvmOptions at top level - type: string - kind: - description: 'Defaults to statefulsets. Note: volumeClaimTemplates - are ignored when kind=Deployment' - type: string - lifecycle: - description: Lifecycle describes actions that the management - system should take in response to container lifecycle events. - For the PostStart and PreStop lifecycle handlers, management - of the container blocks until the action is complete, unless - the container process fails, in which case the handler is - aborted. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More - info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's - filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you need - to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is - unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in - httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward compatibility. - There are no validation of this field and lifecycle - hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The Pod''s termination grace period - countdown begins before the PreStop hook is executed. - Regardless of the outcome of the handler, the container - will eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other management - of the container blocks until the hook completes or until - the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's - filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you need - to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is - unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in - httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward compatibility. - There are no validation of this field and lifecycle - hooks will fail in runtime when tcp handler is specified. - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: Probe describes a health check to be performed - against a container to determine whether it is alive or ready - to receive traffic. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for the - command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', etc) - won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - This is a beta field and requires enabling GRPCContainerProbe - feature gate. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and the - time when the processes are forcibly halted with a kill - signal. Set this value longer than the expected cleanup - time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, - this value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates - stop immediately via the kill signal (no opportunity to - shut down). This is a beta field and requires enabling - ProbeTerminationGracePeriod feature gate. Minimum value - is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - log4j.config: - description: This overrides Log4jConfig at top level - type: string - maxSurge: - description: maxSurge for deployment object, only applicable - if kind=Deployment, by default set to 25% - format: int32 - type: integer - maxUnavailable: - description: maxUnavailable for deployment object, only applicable - if kind=Deployment, by default set to 25% - format: int32 - type: integer - nodeConfigMountPath: - description: in-container directory to mount with runtime.properties, - jvm.config, log4j2.xml files - type: string - nodeSelector: - additionalProperties: - type: string - description: Node selector to be used by Druid statefulsets - type: object - nodeType: - description: Druid node type - enum: - - historical - - overlord - - middleManager - - indexer - - broker - - coordinator - - router - type: string - persistentVolumeClaim: - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: 'APIVersion defines the versioned schema - of this representation of an object. Servers should - convert recognized schemas to the latest internal value, - and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the - REST resource this object represents. Servers may infer - this from the endpoint the client submits requests to. - Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - description: 'Standard object''s metadata. More info: - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: 'spec defines the desired characteristics - of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the desired access - modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'dataSource field can be used to specify - either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If the - provisioner or an external controller can support - the specified data source, it will create a new - volume based on the contents of the specified data - source. When the AnyVolumeDataSource feature gate - is enabled, dataSource contents will be copied to - dataSourceRef, and dataSourceRef contents will be - copied to dataSource when dataSourceRef.namespace - is not specified. If the namespace is specified, - then dataSourceRef will not be copied to dataSource.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: 'dataSourceRef specifies the object from - which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a - non-empty API group (non core object) or a PersistentVolumeClaim - object. When this field is specified, volume binding - will only succeed if the type of the specified object - matches some installed volume populator or dynamic - provisioner. This field will replace the functionality - of the dataSource field and as such if both fields - are non-empty, they must have the same value. For - backwards compatibility, when namespace isn''t specified - in dataSourceRef, both fields (dataSource and dataSourceRef) - will be set to the same value automatically if one - of them is empty and the other is non-empty. When - namespace is specified in dataSourceRef, dataSource - isn''t set to the same value and must be empty. - There are three important differences between dataSource - and dataSourceRef: * While dataSource only allows - two specific types of objects, dataSourceRef allows - any non-core object, as well as PersistentVolumeClaim - objects. * While dataSource ignores disallowed values - (dropping them), dataSourceRef preserves all values, - and generates an error if a disallowed value is - specified. * While dataSource only allows local - objects, dataSourceRef allows objects in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using the namespace - field of dataSourceRef requires the CrossNamespaceVolumeDataSource - feature gate to be enabled.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: Namespace is the namespace of resource - being referenced Note that when a namespace - is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept the - reference. See the ReferenceGrant documentation - for details. (Alpha) This field requires the - CrossNamespaceVolumeDataSource feature gate - to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: 'resources represents the minimum resources - the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify - resource requirements that are lower than previous - value but must still be higher than capacity recorded - in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used - by this container. \n This is an alpha field - and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It - can only be set for containers." - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name of - one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes - that resource available inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is - omitted for a container, it defaults to Limits - if that is explicitly specified, otherwise to - an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: 'storageClassName is the name of the - StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume - is required by the claim. Value of Filesystem is - implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: 'status represents the current information/status - of a persistent volume claim. Read-only. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the actual access - modes the volume backing the PVC has. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: allocatedResources is the storage resource - within AllocatedResources tracks the capacity allocated - to a PVC. It may be larger than the actual capacity - when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources - and PVC.spec.resources is used. If allocatedResources - is not set, PVC.spec.resources alone is used for - quota calculation. If a volume expansion capacity - request is lowered, allocatedResources is only lowered - if there are no expansion operations in progress - and if the actual volume capacity is equal or lower - than the requested capacity. This is an alpha field - and requires enabling RecoverVolumeExpansionFailure - feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: conditions is the current Condition of - persistent volume claim. If underlying persistent - volume is being resized then the Condition will - be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: reason is a unique, this should - be a short, machine understandable string - that gives the reason for condition's last - transition. If it reports "ResizeStarted" - that means the underlying persistent volume - is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: resizeStatus stores status of resize - operation. ResizeStatus is not set by default but - when expansion is complete resizeStatus is set to - empty string by resize controller or kubelet. This - is an alpha field and requires enabling RecoverVolumeExpansionFailure - feature. - type: string - type: object - type: object - type: array - podAnnotations: - additionalProperties: - type: string - description: Custom annotations to be populated in Druid pods - type: object - podDisruptionBudgetSpec: - description: PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: An eviction is allowed if at most "maxUnavailable" - pods selected by "selector" are unavailable after the - eviction, i.e. even in absence of the evicted pod. For - example, one can prevent all voluntary evictions by specifying - 0. This is a mutually exclusive setting with "minAvailable". - x-kubernetes-int-or-string: true - minAvailable: - anyOf: - - type: integer - - type: string - description: An eviction is allowed if at least "minAvailable" - pods selected by "selector" will still be available after - the eviction, i.e. even in the absence of the evicted - pod. So for example you can prevent all voluntary evictions - by specifying "100%". - x-kubernetes-int-or-string: true - selector: - description: Label query over pods whose evictions are managed - by the disruption budget. A null selector will match no - pods, while an empty ({}) selector will select all pods - within the namespace. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - unhealthyPodEvictionPolicy: - description: "UnhealthyPodEvictionPolicy defines the criteria - for when unhealthy pods should be considered for eviction. - Current implementation considers healthy pods, as pods - that have status.conditions item with type=\"Ready\",status=\"True\". - \n Valid policies are IfHealthyBudget and AlwaysAllow. - If no policy is specified, the default behavior will be - used, which corresponds to the IfHealthyBudget policy. - \n IfHealthyBudget policy means that running pods (status.phase=\"Running\"), - but not yet healthy can be evicted only if the guarded - application is not disrupted (status.currentHealthy is - at least equal to status.desiredHealthy). Healthy pods - will be subject to the PDB for eviction. \n AlwaysAllow - policy means that all running pods (status.phase=\"Running\"), - but not yet healthy are considered disrupted and can be - evicted regardless of whether the criteria in a PDB is - met. This means perspective running pods of a disrupted - application might not get a chance to become healthy. - Healthy pods will be subject to the PDB for eviction. - \n Additional policies may be added in the future. Clients - making eviction decisions should disallow eviction of - unhealthy pods if they encounter an unrecognized policy - in this field. \n This field is alpha-level. The eviction - API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy - is enabled (disabled by default)." - type: string - type: object - podLabels: - additionalProperties: - type: string - type: object - podManagementPolicy: - description: By default, it is set to "parallel" - type: string - ports: - description: Extra ports to be added to pod spec - items: - description: ContainerPort represents a network port in a - single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x < - 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: Probe describes a health check to be performed - against a container to determine whether it is alive or ready - to receive traffic. - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for the - command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', etc) - won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - This is a beta field and requires enabling GRPCContainerProbe - feature gate. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and the - time when the processes are forcibly halted with a kill - signal. Set this value longer than the expected cleanup - time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, - this value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates - stop immediately via the kill signal (no opportunity to - shut down). This is a beta field and requires enabling - ProbeTerminationGracePeriod feature gate. Minimum value - is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - replicas: - format: int32 - minimum: 0 - type: integer - resources: - description: CPU/Memory Resources - properties: - claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It can only - be set for containers." - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, - otherwise to an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - runtime.properties: - type: string - securityContext: - description: Overrides securityContext at top level - properties: - fsGroup: - description: "A special supplemental group that applies - to all containers in a pod. Some volume types allow the - Kubelet to change the ownership of that volume to be owned - by the pod: \n 1. The owning GID will be the FSGroup 2. - The setgid bit is set (new files created in the volume - will be owned by FSGroup) 3. The permission bits are OR'd - with rw-rw---- \n If unset, the Kubelet will not modify - the ownership and permissions of any volume. Note that - this field cannot be set when spec.os.name is windows." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types - which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such - as: secret, configmaps and emptydir. Valid values are - "OnRootMismatch" and "Always". If not specified, "Always" - is used. Note that this field cannot be set when spec.os.name - is windows.' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a - non-root user. If true, the Kubelet will validate the - image at runtime to ensure that it does not run as UID - 0 (root) and fail to start the container if it does. If - unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence for - that container. Note that this field cannot be set when - spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a - random SELinux context for each container. May also be - set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - seccompProfile: - description: The seccomp options to use by the containers - in this pod. Note that this field cannot be set when spec.os.name - is windows. - properties: - localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile - must be preconfigured on the node to work. Must be - a descending path, relative to the kubelet's configured - seccomp profile location. Must only be set if type - is "Localhost". - type: string - type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should be - used. RuntimeDefault - the container runtime default - profile should be used. Unconfined - no profile should - be applied." - type: string - required: - - type - type: object - supplementalGroups: - description: A list of groups applied to the first process - run in each container, in addition to the container's - primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container - process. If unspecified, no additional groups are added - to any container. Note that group memberships defined - in the container image for the uid of the container process - are still effective, even if they are not included in - this list. Note that this field cannot be set when spec.os.name - is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. Note that this field cannot - be set when spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options within a container's - SecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. - type: string - hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is - alpha-level and will only be honored by components - that enable the WindowsHostProcessContainers feature - flag. Setting this field without the feature flag - will result in errors when validating the Pod. All - of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. - type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - type: string - type: object - type: object - services: - description: Overrides services at top level - items: - description: Service is a named abstraction of software service - (for example, mysql) consisting of local port (for example - 3306) that the proxy listens on, and the selector that determines - which pods will answer requests sent through the proxy. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema - of this representation of an object. Servers should - convert recognized schemas to the latest internal value, - and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the - REST resource this object represents. Servers may infer - this from the endpoint the client submits requests to. - Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - description: 'Standard object''s metadata. More info: - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: allocateLoadBalancerNodePorts defines - if NodePorts will be automatically allocated for - services with type LoadBalancer. Default is "true". - It may be set to "false" if the cluster load-balancer - does not rely on NodePorts. If the caller requests - specific NodePorts (by specifying a value), those - requests will be respected, regardless of this field. - This field may only be set for services with type - LoadBalancer and will be cleared if the type is - changed to any other type. - type: boolean - clusterIP: - description: 'clusterIP is the IP address of the service - and is usually assigned randomly. If an address - is specified manually, is in-range (as per system - configuration), and is not in use, it will be allocated - to the service; otherwise creation of the service - will fail. This field may not be changed through - updates unless the type field is also being changed - to ExternalName (which requires this field to be - blank) or the type field is being changed from ExternalName - (in which case this field may optionally be specified, - as describe above). Valid values are "None", empty - string (""), or a valid IP address. Setting this - to "None" makes a "headless service" (no virtual - IP), which is useful when direct endpoint connections - are preferred and proxying is not required. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - If this field is specified when creating a Service - of type ExternalName, creation will fail. This field - will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string - clusterIPs: - description: "ClusterIPs is a list of IP addresses - assigned to this service, and are usually assigned - randomly. If an address is specified manually, - is in-range (as per system configuration), and is - not in use, it will be allocated to the service; - otherwise creation of the service will fail. This - field may not be changed through updates unless - the type field is also being changed to ExternalName - (which requires this field to be empty) or the type - field is being changed from ExternalName (in which - case this field may optionally be specified, as - describe above). Valid values are \"None\", empty - string (\"\"), or a valid IP address. Setting this - to \"None\" makes a \"headless service\" (no virtual - IP), which is useful when direct endpoint connections - are preferred and proxying is not required. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - If this field is specified when creating a Service - of type ExternalName, creation will fail. This field - will be wiped when updating a Service to type ExternalName. - \ If this field is not specified, it will be initialized - from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP - have the same value. \n This field may hold a maximum - of two entries (dual-stack IPs, in either order). - These IPs must correspond to the values of the ipFamilies - field. Both clusterIPs and ipFamilies are governed - by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: externalIPs is a list of IP addresses - for which nodes in the cluster will also accept - traffic for this service. These IPs are not managed - by Kubernetes. The user is responsible for ensuring - that traffic arrives at a node with this IP. A - common example is external load-balancers that are - not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: externalName is the external reference - that discovery mechanisms will return as an alias - for this service (e.g. a DNS CNAME record). No proxying - will be involved. Must be a lowercase RFC-1123 - hostname (https://tools.ietf.org/html/rfc1123) and - requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: externalTrafficPolicy describes how nodes - distribute service traffic they receive on one of - the Service's "externally-facing" addresses (NodePorts, - ExternalIPs, and LoadBalancer IPs). If set to "Local", - the proxy will configure the service in a way that - assumes that external load balancers will take care - of balancing the service traffic between nodes, - and so each node will deliver traffic only to the - node-local endpoints of the service, without masquerading - the client source IP. (Traffic mistakenly sent to - a node with no endpoints will be dropped.) The default - value, "Cluster", uses the standard behavior of - routing to all endpoints evenly (possibly modified - by topology and other features). Note that traffic - sent to an External IP or LoadBalancer IP from within - the cluster will always get "Cluster" semantics, - but clients sending to a NodePort from within the - cluster may need to take traffic policy into account - when picking a node. - type: string - healthCheckNodePort: - description: healthCheckNodePort specifies the healthcheck - nodePort for the service. This only applies when - type is set to LoadBalancer and externalTrafficPolicy - is set to Local. If a value is specified, is in-range, - and is not in use, it will be used. If not specified, - a value will be automatically allocated. External - systems (e.g. load-balancers) can use this port - to determine if a given node holds endpoints for - this service or not. If this field is specified - when creating a Service which does not need it, - creation will fail. This field will be wiped when - updating a Service to no longer need it (e.g. changing - type). This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: InternalTrafficPolicy describes how nodes - distribute service traffic they receive on the ClusterIP. - If set to "Local", the proxy will assume that pods - only want to talk to endpoints of the service on - the same node as the pod, dropping the traffic if - there are no local endpoints. The default value, - "Cluster", uses the standard behavior of routing - to all endpoints evenly (possibly modified by topology - and other features). - type: string - ipFamilies: - description: "IPFamilies is a list of IP families - (e.g. IPv4, IPv6) assigned to this service. This - field is usually assigned automatically based on - cluster configuration and the ipFamilyPolicy field. - If this field is specified manually, the requested - family is available in the cluster, and ipFamilyPolicy - allows it, it will be used; otherwise creation of - the service will fail. This field is conditionally - mutable: it allows for adding or removing a secondary - IP family, but it does not allow changing the primary - IP family of the Service. Valid values are \"IPv4\" - and \"IPv6\". This field only applies to Services - of types ClusterIP, NodePort, and LoadBalancer, - and does apply to \"headless\" services. This field - will be wiped when updating a Service to type ExternalName. - \n This field may hold a maximum of two entries - (dual-stack families, in either order). These families - must correspond to the values of the clusterIPs - field, if specified. Both clusterIPs and ipFamilies - are governed by the ipFamilyPolicy field." - items: - description: IPFamily represents the IP Family (IPv4 - or IPv6). This type is used to express the family - of an IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: IPFamilyPolicy represents the dual-stack-ness - requested or required by this Service. If there - is no value provided, then this field will be set - to SingleStack. Services can be "SingleStack" (a - single IP family), "PreferDualStack" (two IP families - on dual-stack configured clusters or a single IP - family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, - otherwise fail). The ipFamilies and clusterIPs fields - depend on the value of this field. This field will - be wiped when updating a service to type ExternalName. - type: string - loadBalancerClass: - description: loadBalancerClass is the class of the - load balancer implementation this Service belongs - to. If specified, the value of this field must be - a label-style identifier, with an optional prefix, - e.g. "internal-vip" or "example.com/internal-vip". - Unprefixed names are reserved for end-users. This - field can only be set when the Service type is 'LoadBalancer'. - If not set, the default load balancer implementation - is used, today this is typically done through the - cloud provider integration, but should apply for - any default implementation. If set, it is assumed - that a load balancer implementation is watching - for Services with a matching class. Any default - load balancer implementation (e.g. cloud providers) - should ignore Services that set this field. This - field can only be set when creating or updating - a Service to type 'LoadBalancer'. Once set, it can - not be changed. This field will be wiped when a - service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider - supports specifying the loadBalancerIP when a load - balancer is created. This field will be ignored - if the cloud-provider does not support the feature. - Deprecated: This field was under-specified and its - meaning varies across implementations, and it cannot - support dual-stack. As of Kubernetes v1.24, users - are encouraged to use implementation-specific annotations - when available. This field may be removed in a future - API version.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified - client IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by - this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on - service's port. - properties: - appProtocol: - description: The application protocol for this - port. This field follows standard Kubernetes - label syntax. Un-prefixed names are reserved - for IANA standard service names (as per RFC-6335 - and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed - names such as mycompany.com/my-custom-protocol. - type: string - name: - description: The name of this port within the - service. This must be a DNS_LABEL. All ports - within a ServiceSpec must have unique names. - When considering the endpoints for a Service, - this must match the 'name' field in the EndpointPort. - Optional if only one ServicePort is defined - on this service. - type: string - nodePort: - description: 'The port on each node on which - this service is exposed when type is NodePort - or LoadBalancer. Usually assigned by the - system. If a value is specified, in-range, - and not in use it will be used, otherwise - the operation will fail. If not specified, - a port will be allocated if this Service requires - one. If this field is specified when creating - a Service which does not need it, creation - will fail. This field will be wiped when updating - a Service to no longer need it (e.g. changing - type from NodePort to ClusterIP). More info: - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by - this service. - format: int32 - type: integer - protocol: - default: TCP - description: The IP protocol for this port. - Supports "TCP", "UDP", and "SCTP". Default - is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to - access on the pods targeted by the service. - Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. If this is a string, - it will be looked up as a named port in the - target Pod''s container ports. If this is - not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should - be omitted or set equal to the ''port'' field. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: publishNotReadyAddresses indicates that - any agent which deals with endpoints for this Service - should disregard any indications of ready/not-ready. - The primary use case for setting this field is for - a StatefulSet's Headless Service to propagate SRV - DNS records for its Pods for the purpose of peer - discovery. The Kubernetes controllers that generate - Endpoints and EndpointSlice resources for Services - interpret this to mean that all endpoints are considered - "ready" even if the Pods themselves are not. Agents - which consume only Kubernetes generated endpoints - through the Endpoints or EndpointSlice resources - can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label - keys and values matching this selector. If empty - or not present, the service is assumed to have an - external process managing its endpoints, which Kubernetes - will not modify. Only applies to types ClusterIP, - NodePort, and LoadBalancer. Ignored if type is ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used - to maintain session affinity. Enable client IP based - session affinity. Must be ClientIP or None. Defaults - to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations - of Client IP based session affinity. - properties: - timeoutSeconds: - description: timeoutSeconds specifies the - seconds of ClientIP type session sticky - time. The value must be >0 && <=86400(for - 1 day) if ServiceAffinity == "ClientIP". - Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ClusterIP" - allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector - or if that is not specified, by manual construction - of an Endpoints object or EndpointSlice objects. - If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a virtual IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes - to the same endpoints as the clusterIP. "LoadBalancer" - builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes - to the same endpoints as the clusterIP. "ExternalName" - aliases this service to the specified externalName. - Several other fields do not apply to ExternalName - services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - status: - description: 'Most recently observed status of the service. - Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one - aspect of the current state of this API Resource. - --- This struct is intended for direct use as - an array at the field path .status.conditions. - \ For example, \n type FooStatus struct{ // Represents - the observations of a foo's current state. // - Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type - // +patchStrategy=merge // +listType=map // +listMapKey=type - Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // - other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last - time the condition transitioned from one status - to another. This should be when the underlying - condition changed. If that is not known, - then using the time when the API field changed - is acceptable. - format: date-time - type: string - message: - description: message is a human readable message - indicating details about the transition. This - may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the - .metadata.generation that the condition was - set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect - to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic - identifier indicating the reason for the condition's - last transition. Producers of specific condition - types may define expected values and meanings - for this field, and whether the values are - considered a guaranteed API. The value should - be a CamelCase string. This field may not - be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of - True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase - or in foo.example.com/CamelCase. --- Many - .condition.type values are consistent across - resources like Available, but because arbitrary - conditions can be useful (see .node.status.conditions), - the ability to deconflict is important. The - regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: LoadBalancer contains the current status - of the load-balancer, if one is present. - properties: - ingress: - description: Ingress is a list containing ingress - points for the load-balancer. Traffic intended - for the service should be sent to these ingress - points. - items: - description: 'LoadBalancerIngress represents - the status of a load-balancer ingress point: - traffic intended for the service should be - sent to an ingress point.' - properties: - hostname: - description: Hostname is set for load-balancer - ingress points that are DNS based (typically - AWS load-balancers) - type: string - ip: - description: IP is set for load-balancer - ingress points that are IP based (typically - GCE or OpenStack load-balancers) - type: string - ports: - description: Ports is a list of records - of service ports If used, every port defined - in the service should have an entry in - it - items: - properties: - error: - description: 'Error is to record the - problem with the service port The - format of the error shall comply - with the following rules: - built-in - error values shall be specified - in this file and those shall use - CamelCase names - cloud provider - specific error values must have - names that comply with the format - foo.example.com/CamelCase. --- The - regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number - of the service port of which status - is recorded here - format: int32 - type: integer - protocol: - default: TCP - description: 'Protocol is the protocol - of the service port of which status - is recorded here The supported values - are: "TCP", "UDP", "SCTP"' - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startUpProbe: - description: StartupProbe for nodeSpec - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for the - command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', etc) - won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. - This is a beta field and requires enabling GRPCContainerProbe - feature gate. - properties: - port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP - port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on - the container. Number must be in the range 1 to 65535. - Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and the - time when the processes are forcibly halted with a kill - signal. Set this value longer than the expected cleanup - time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, - this value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates - stop immediately via the kill signal (no opportunity to - shut down). This is a beta field and requires enabling - ProbeTerminationGracePeriod feature gate. Minimum value - is 1. spec.terminationGracePeriodSeconds is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - description: Toleration to be used in order to run Druid on - nodes tainted - items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . - properties: - effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. - type: string - key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of - time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. - properties: - labelSelector: - description: LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine - the number of pods in their corresponding topology domain. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: MatchLabelKeys is a set of pod label keys - to select the pods over which spreading will be calculated. - The keys are used to lookup values from the incoming - pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading - will be calculated for the incoming pod. Keys that don't - exist in the incoming pod labels will be ignored. A - null or empty list means only match against labelSelector. - items: - type: string - type: array - x-kubernetes-list-type: atomic - maxSkew: - description: 'MaxSkew describes the degree to which pods - may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, - it is the maximum permitted difference between the number - of matching pods in the target topology and the global - minimum. The global minimum is the minimum number of - matching pods in an eligible domain or zero if the number - of eligible domains is less than MinDomains. For example, - in a 3-zone cluster, MaxSkew is set to 1, and pods with - the same labelSelector spread as 2/2/1: In this case, - the global minimum is 1. | zone1 | zone2 | zone3 | | P - P | P P | P | - if MaxSkew is 1, incoming pod - can only be scheduled to zone3 to become 2/2/2; scheduling - it onto zone1(zone2) would make the ActualSkew(3-1) - on zone1(zone2) violate MaxSkew(1). - if MaxSkew is - 2, incoming pod can be scheduled onto any zone. When - `whenUnsatisfiable=ScheduleAnyway`, it is used to give - higher precedence to topologies that satisfy it. It''s - a required field. Default value is 1 and 0 is not allowed.' - format: int32 - type: integer - minDomains: - description: "MinDomains indicates a minimum number of - eligible domains. When the number of eligible domains - with matching topology keys is less than minDomains, - Pod Topology Spread treats \"global minimum\" as 0, - and then the calculation of Skew is performed. And when - the number of eligible domains with matching topology - keys equals or greater than minDomains, this value has - no effect on scheduling. As a result, when the number - of eligible domains is less than minDomains, scheduler - won't schedule more than maxSkew Pods to those domains. - If value is nil, the constraint behaves as if MinDomains - is equal to 1. Valid values are integers greater than - 0. When value is not nil, WhenUnsatisfiable must be - DoNotSchedule. \n For example, in a 3-zone cluster, - MaxSkew is set to 2, MinDomains is set to 5 and pods - with the same labelSelector spread as 2/2/2: | zone1 - | zone2 | zone3 | | P P | P P | P P | The number - of domains is less than 5(MinDomains), so \"global minimum\" - is treated as 0. In this situation, new pod with the - same labelSelector cannot be scheduled, because computed - skew will be 3(3 - 0) if new Pod is scheduled to any - of the three zones, it will violate MaxSkew. \n This - is a beta field and requires the MinDomainsInPodTopologySpread - feature gate to be enabled (enabled by default)." - format: int32 - type: integer - nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will - treat Pod's nodeAffinity/nodeSelector when calculating - pod topology spread skew. Options are: - Honor: only - nodes matching nodeAffinity/nodeSelector are included - in the calculations. - Ignore: nodeAffinity/nodeSelector - are ignored. All nodes are included in the calculations. - \n If this value is nil, the behavior is equivalent - to the Honor policy. This is a beta-level feature default - enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." - type: string - nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat - node taints when calculating pod topology spread skew. - Options are: - Honor: nodes without taints, along with - tainted nodes for which the incoming pod has a toleration, - are included. - Ignore: node taints are ignored. All - nodes are included. \n If this value is nil, the behavior - is equivalent to the Ignore policy. This is a beta-level - feature default enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." - type: string - topologyKey: - description: TopologyKey is the key of node labels. Nodes - that have a label with this key and identical values - are considered to be in the same topology. We consider - each as a "bucket", and try to put balanced - number of pods into each bucket. We define a domain - as a particular instance of a topology. Also, we define - an eligible domain as a domain whose nodes meet the - requirements of nodeAffinityPolicy and nodeTaintsPolicy. - e.g. If TopologyKey is "kubernetes.io/hostname", each - Node is a domain of that topology. And, if TopologyKey - is "topology.kubernetes.io/zone", each zone is a domain - of that topology. It's a required field. - type: string - whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal - with a pod if it doesn''t satisfy the spread constraint. - - DoNotSchedule (default) tells the scheduler not to - schedule it. - ScheduleAnyway tells the scheduler to - schedule the pod in any location, but giving higher - precedence to topologies that would help reduce the - skew. A constraint is considered "Unsatisfiable" for - an incoming pod if and only if every possible node assignment - for that pod would violate "MaxSkew" on some topology. - For example, in a 3-zone cluster, MaxSkew is set to - 1, and pods with the same labelSelector spread as 3/1/1: - | zone1 | zone2 | zone3 | | P P P | P | P | - If WhenUnsatisfiable is set to DoNotSchedule, incoming - pod can only be scheduled to zone2(zone3) to become - 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies - MaxSkew(1). In other words, the cluster can still be - imbalanced, but scheduler won''t make it *more* imbalanced. - It''s a required field.' - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - updateStrategy: - description: StatefulSetUpdateStrategy indicates the strategy - that the StatefulSet controller will use to perform updates. - It includes any additional parameters necessary to perform - the update for the indicated strategy. - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters - when Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: 'The maximum number of pods that can be - unavailable during the update. Value can be an absolute - number (ex: 5) or a percentage of desired pods (ex: - 10%). Absolute number is calculated from percentage - by rounding up. This can not be 0. Defaults to 1. - This field is alpha-level and is only honored by servers - that enable the MaxUnavailableStatefulSet feature. - The field applies to all pods in the range 0 to Replicas-1. - That means if there is any unavailable pod in the - range 0 to Replicas-1, it will be counted towards - MaxUnavailable.' - x-kubernetes-int-or-string: true - partition: - description: Partition indicates the ordinal at which - the StatefulSet should be partitioned for updates. - During a rolling update, all pods from ordinal Replicas-1 - to Partition are updated. All pods from ordinal Partition-1 - to 0 remain untouched. This is helpful in being able - to do a canary based deployment. The default value - is 0. - format: int32 - type: integer - type: object - type: - description: Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - items: - description: PersistentVolumeClaim is a user's request for - and claim to a persistent volume - properties: - apiVersion: - description: 'APIVersion defines the versioned schema - of this representation of an object. Servers should - convert recognized schemas to the latest internal value, - and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the - REST resource this object represents. Servers may infer - this from the endpoint the client submits requests to. - Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - description: 'Standard object''s metadata. More info: - https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: 'spec defines the desired characteristics - of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the desired access - modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'dataSource field can be used to specify - either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If the - provisioner or an external controller can support - the specified data source, it will create a new - volume based on the contents of the specified data - source. When the AnyVolumeDataSource feature gate - is enabled, dataSource contents will be copied to - dataSourceRef, and dataSourceRef contents will be - copied to dataSource when dataSourceRef.namespace - is not specified. If the namespace is specified, - then dataSourceRef will not be copied to dataSource.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: 'dataSourceRef specifies the object from - which to populate the volume with data, if a non-empty - volume is desired. This may be any object from a - non-empty API group (non core object) or a PersistentVolumeClaim - object. When this field is specified, volume binding - will only succeed if the type of the specified object - matches some installed volume populator or dynamic - provisioner. This field will replace the functionality - of the dataSource field and as such if both fields - are non-empty, they must have the same value. For - backwards compatibility, when namespace isn''t specified - in dataSourceRef, both fields (dataSource and dataSourceRef) - will be set to the same value automatically if one - of them is empty and the other is non-empty. When - namespace is specified in dataSourceRef, dataSource - isn''t set to the same value and must be empty. - There are three important differences between dataSource - and dataSourceRef: * While dataSource only allows - two specific types of objects, dataSourceRef allows - any non-core object, as well as PersistentVolumeClaim - objects. * While dataSource ignores disallowed values - (dropping them), dataSourceRef preserves all values, - and generates an error if a disallowed value is - specified. * While dataSource only allows local - objects, dataSourceRef allows objects in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using the namespace - field of dataSourceRef requires the CrossNamespaceVolumeDataSource - feature gate to be enabled.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: Namespace is the namespace of resource - being referenced Note that when a namespace - is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept the - reference. See the ReferenceGrant documentation - for details. (Alpha) This field requires the - CrossNamespaceVolumeDataSource feature gate - to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: 'resources represents the minimum resources - the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify - resource requirements that are lower than previous - value but must still be higher than capacity recorded - in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used - by this container. \n This is an alpha field - and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It - can only be set for containers." - items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name of - one entry in pod.spec.resourceClaims of - the Pod where this field is used. It makes - that resource available inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is - omitted for a container, it defaults to Limits - if that is explicitly specified, otherwise to - an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: 'storageClassName is the name of the - StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume - is required by the claim. Value of Filesystem is - implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to - the PersistentVolume backing this claim. - type: string - type: object - status: - description: 'status represents the current information/status - of a persistent volume claim. Read-only. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the actual access - modes the volume backing the PVC has. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: allocatedResources is the storage resource - within AllocatedResources tracks the capacity allocated - to a PVC. It may be larger than the actual capacity - when a volume expansion operation is requested. - For storage quota, the larger value from allocatedResources - and PVC.spec.resources is used. If allocatedResources - is not set, PVC.spec.resources alone is used for - quota calculation. If a volume expansion capacity - request is lowered, allocatedResources is only lowered - if there are no expansion operations in progress - and if the actual volume capacity is equal or lower - than the requested capacity. This is an alpha field - and requires enabling RecoverVolumeExpansionFailure - feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources - of the underlying volume. - type: object - conditions: - description: conditions is the current Condition of - persistent volume claim. If underlying persistent - volume is being resized then the Condition will - be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails - details about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed - the condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time - the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: reason is a unique, this should - be a short, machine understandable string - that gives the reason for condition's last - transition. If it reports "ResizeStarted" - that means the underlying persistent volume - is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of - PersistentVolumeClaim. - type: string - resizeStatus: - description: resizeStatus stores status of resize - operation. ResizeStatus is not set by default but - when expansion is complete resizeStatus is set to - empty string by resize controller or kubelet. This - is an alpha field and requires enabling RecoverVolumeExpansionFailure - feature. - type: string - type: object - type: object - type: array - volumeMounts: - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other - way around. When not set, MountPropagationNone is used. - This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - items: - description: Volume represents a named volume in a pod that - may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem - from compromising the machine' - type: string - partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'volumeID is unique ID of the persistent - disk resource in AWS (Amazon EBS volume). More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: - None, Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk - in the blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the - blob storage - type: string - fsType: - description: fsType is Filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure managed - data disk (only in managed availability set). defaults - to shared' - type: string - readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service - mount on the host and bind mount to the pod. - properties: - readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that - contains Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the - host that shares a pod's lifetime - properties: - monitors: - description: 'monitors is Required: Monitors is a - collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted - root, rather than the full Ceph tree, default is - /' - type: string - readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'secretFile is Optional: SecretFile is - the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'secretRef is Optional: SecretRef is - reference to the authentication secret for User, - default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: 'user is optional: User is the rados - user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'cinder represents a cinder volume attached - and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to - OpenStack.' - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: 'volumeID used to identify the volume - in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should - populate this volume - properties: - defaultMode: - description: 'defaultMode is optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers (Beta feature). - properties: - driver: - description: driver is the name of the CSI driver - that handles this volume. Consult with your admin - for the correct name as registered in the cluster. - type: string - fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the - associated CSI driver which will determine the default - filesystem to apply. - type: string - nodePublishSecretRef: - description: nodePublishSecretRef is a reference to - the secret object containing sensitive information - to pass to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the - secret object contains more than one secret, all - secret references are passed. - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: volumeAttributes stores driver-specific - properties that are passed to the CSI driver. Consult - your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about - the pod that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created - files by default. Must be a Optional: mode bits - used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume - file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the - pod: only annotations, labels, name and namespace - are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: 'Optional: mode bits used to set - permissions on this file, must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of the - relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required for - volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'emptyDir represents a temporary directory - that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'medium represents what type of storage - medium should back this directory. The default is - "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More - info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'sizeLimit is the total amount of local - storage required for this EmptyDir volume. The size - limit is also applicable for memory medium. The - maximum usage on memory medium EmptyDir would be - the minimum value between the SizeLimit specified - here and the sum of memory limits of all containers - in a pod. The default is nil which means that the - limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle - is tied to the pod that defines it - it will be created - before the pod starts, and deleted when the pod is removed. - \n Use this if: a) the volume is only needed while the - pod runs, b) features of normal volumes like restoring - from snapshot or capacity tracking are needed, c) the - storage driver is specified through a storage class, - and d) the storage driver supports dynamic volume provisioning - through a PersistentVolumeClaim (see EphemeralVolumeSource - for more information on the connection between this - volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim - or one of the vendor-specific APIs for volumes that - persist for longer than the lifecycle of an individual - pod. \n Use CSI for light-weight local ephemeral volumes - if the CSI driver is meant to be used that way - see - the documentation of the driver for more information. - \n A pod can use both types of ephemeral volumes and - persistent volumes at the same time." - properties: - volumeClaimTemplate: - description: "Will be used to create a stand-alone - PVC to provision the volume. The pod in which this - EphemeralVolumeSource is embedded will be the owner - of the PVC, i.e. the PVC will be deleted together - with the pod. The name of the PVC will be `-` where `` is the - name from the `PodSpec.Volumes` array entry. Pod - validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). - \n An existing PVC with that name that is not owned - by the pod will *not* be used for the pod to avoid - using an unrelated volume by mistake. Starting the - pod is then blocked until the unrelated PVC is removed. - If such a pre-created PVC is meant to be used by - the pod, the PVC has to updated with an owner reference - to the pod once the pod exists. Normally this should - not be necessary, but it may be useful when manually - reconstructing a broken cluster. \n This field is - read-only and no changes will be made by Kubernetes - to the PVC after it has been created. \n Required, - must not be nil." - properties: - metadata: - description: May contain labels and annotations - that will be copied into the PVC when creating - it. No other fields are allowed and will be - rejected during validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into - the PVC that gets created from this template. - The same fields as in a PersistentVolumeClaim - are also valid here. - properties: - accessModes: - description: 'accessModes contains the desired - access modes the volume should have. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'dataSource field can be used - to specify either: * An existing VolumeSnapshot - object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller - can support the specified data source, it - will create a new volume based on the contents - of the specified data source. When the AnyVolumeDataSource - feature gate is enabled, dataSource contents - will be copied to dataSourceRef, and dataSourceRef - contents will be copied to dataSource when - dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef - will not be copied to dataSource.' - properties: - apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: 'dataSourceRef specifies the - object from which to populate the volume - with data, if a non-empty volume is desired. - This may be any object from a non-empty - API group (non core object) or a PersistentVolumeClaim - object. When this field is specified, volume - binding will only succeed if the type of - the specified object matches some installed - volume populator or dynamic provisioner. - This field will replace the functionality - of the dataSource field and as such if both - fields are non-empty, they must have the - same value. For backwards compatibility, - when namespace isn''t specified in dataSourceRef, - both fields (dataSource and dataSourceRef) - will be set to the same value automatically - if one of them is empty and the other is - non-empty. When namespace is specified in - dataSourceRef, dataSource isn''t set to - the same value and must be empty. There - are three important differences between - dataSource and dataSourceRef: * While dataSource - only allows two specific types of objects, - dataSourceRef allows any non-core object, - as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values - (dropping them), dataSourceRef preserves - all values, and generates an error if a - disallowed value is specified. * While dataSource - only allows local objects, dataSourceRef - allows objects in any namespaces. (Beta) - Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using - the namespace field of dataSourceRef requires - the CrossNamespaceVolumeDataSource feature - gate to be enabled.' - properties: - apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. - type: string - kind: - description: Kind is the type of resource - being referenced - type: string - name: - description: Name is the name of resource - being referenced - type: string - namespace: - description: Namespace is the namespace - of resource being referenced Note that - when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant - documentation for details. (Alpha) This - field requires the CrossNamespaceVolumeDataSource - feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: 'resources represents the minimum - resources the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to - specify resource requirements that are lower - than previous value but must still be higher - than capacity recorded in the status field - of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - claims: - description: "Claims lists the names of - resources, defined in spec.resourceClaims, - that are used by this container. \n - This is an alpha field and requires - enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. - It can only be set for containers." - items: - description: ResourceClaim references - one entry in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the - name of one entry in pod.spec.resourceClaims - of the Pod where this field is - used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum - amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. - If Requests is omitted for a container, - it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - selector: - description: selector is a label query over - volumes to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. - items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key - that the selector applies to. - type: string - operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: 'storageClassName is the name - of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type - of volume is required by the claim. Value - of Filesystem is implied when not included - in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that - is attached to a kubelet's host machine and then exposed - to the pod. - properties: - fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. TODO: how - do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: 'wwids Optional: FC volume world wide - identifiers (wwids) Either wwids or combination - of targetWWNs and lun must be set, but not both - simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use - for this volume. - type: string - fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". The - default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds - extra command options if any.' - type: object - readOnly: - description: 'readOnly is Optional: defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' - type: boolean - secretRef: - description: 'secretRef is Optional: secretRef is - reference to the secret object containing sensitive - information to pass to the plugin scripts. This - may be empty if no secret object is specified. If - the secret object contains more than one secret, - all secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running - properties: - datasetName: - description: datasetName is Name of the dataset stored - as metadata -> name on the dataset for Flocker should - be considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'fsType is filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem - from compromising the machine' - type: string - partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'pdName is unique name of the PD resource - in GCE. Used to identify the disk in GCE. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'gitRepo represents a git repository at a - particular revision. DEPRECATED: GitRepo is deprecated. - To provision a container with a git repo, mount an EmptyDir - into an InitContainer that clones the repo using git, - then mount the EmptyDir into the Pod''s container.' - properties: - directory: - description: directory is the target directory name. - Must not contain or start with '..'. If '.' is - supplied, the volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'glusterfs represents a Glusterfs mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'endpoints is the endpoint name that - details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'readOnly here will force the Glusterfs - volume to be mounted with read-only permissions. - Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'hostPath represents a pre-existing file - or directory on the host machine that is directly exposed - to the container. This is generally used for system - agents or other privileged things that are allowed to - see the host machine. Most containers will NOT need - this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host - directory mounts and who can/can not mount host directories - as read/write.' - properties: - path: - description: 'path of the directory on the host. If - the path is a symlink, it will follow the link to - the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'type for HostPath Volume Defaults to - "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'iscsi represents an ISCSI Disk resource - that is attached to a kubelet''s host machine and then - exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support - iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem - from compromising the machine' - type: string - initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iscsiInterface is the interface Name - that uses an iSCSI transport. Defaults to 'default' - (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: portals is the iSCSI Target Portal List. - The portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). - items: - type: string - type: array - readOnly: - description: readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI - target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: targetPortal is iSCSI Target Portal. - The Portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'name of the volume. Must be a DNS_LABEL - and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'nfs represents an NFS mount on the host - that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'readOnly here will force the NFS export - to be mounted with read-only permissions. Defaults - to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'server is the hostname or IP address - of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: readOnly Will force the ReadOnly setting - in VolumeMounts. Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host - machine - properties: - fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon - Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume - attached and mounted on kubelets host machine - properties: - fsType: - description: fSType represents the filesystem type - to mount Must be a filesystem type supported by - the host operating system. Ex. "ext4", "xfs". Implicitly - inferred to be "ext4" if unspecified. - type: string - readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx - volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources - secrets, configmaps, and downward API - properties: - defaultMode: - description: defaultMode are the mode bits used to - set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal values - for mode bits. Directories within the path are not - affected by this setting. This might be in conflict - with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along - with other supported volume types - properties: - configMap: - description: configMap information about the - configMap data to project - properties: - items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced ConfigMap will be projected - into the volume as a file whose name is - the key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, - the volume setup will error unless it - is marked optional. Paths must be relative - and may not contain the '..' path or start - with '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' - format: int32 - type: integer - path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: optional specify whether the - ConfigMap or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the - downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a - field of the pod: only annotations, - labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema - the FieldPath is written in - terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field - to select in the specified API - version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: 'Optional: mode bits - used to set permissions on this - file, must be an octal value between - 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the - relative path name of the file to - be created. Must not be absolute - or contain the ''..'' path. Must - be utf-8 encoded. The first item - of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of - the container: only resources limits - and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: - required for volumes, optional - for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource - to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret - data to project - properties: - items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced Secret will be projected into - the volume as a file whose name is the - key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the - volume setup will error unless it is marked - optional. Paths must be relative and may - not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path - within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' - format: int32 - type: integer - path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: optional field specify whether - the Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project - properties: - audience: - description: audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience - defaults to the identifier of the apiserver. - type: string - expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The - kubelet will start trying to rotate the - token if the token is older than 80 percent - of its time to live or if the token is - older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - format: int64 - type: integer - path: - description: path is the path relative to - the mount point of the file to project - the token into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the - host that shares a pod's lifetime - properties: - group: - description: group to map volume access to Default - is no group - type: string - readOnly: - description: readOnly here will force the Quobyte - volume to be mounted with read-only permissions. - Defaults to false. - type: boolean - registry: - description: registry represents a single or multiple - Quobyte Registry services specified as a string - as host:port pair (multiple entries are separated - with commas) which acts as the central registry - for volumes - type: string - tenant: - description: tenant owning the given Quobyte volume - in the Backend Used with dynamically provisioned - Quobyte volumes, value is set by the plugin - type: string - user: - description: user to map volume access to Defaults - to serivceaccount user - type: string - volume: - description: volume is a string that references an - already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'rbd represents a Rados Block Device mount - on the host that shares a pod''s lifetime. More info: - https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem - from compromising the machine' - type: string - image: - description: 'image is the rados image name. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'keyring is the path to key ring for - RBDUser. Default is /etc/ceph/keyring. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'pool is the rados pool name. Default - is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'secretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. - Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: 'user is the rados user name. Default - is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Default - is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. - type: boolean - secretRef: - description: secretRef references to the secret for - ScaleIO user and other sensitive information. If - this is not provided, Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: storageMode indicates whether the storage - for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool - associated with the protection domain. - type: string - system: - description: system is the name of the storage system - as configured in ScaleIO. - type: string - volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated - with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'defaultMode is Optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: items If unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the Secret, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret - or its keys must be defined - type: boolean - secretName: - description: 'secretName is the name of the secret - in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. - type: string - readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. - type: boolean - secretRef: - description: secretRef specifies the secret to use - for obtaining the StorageOS API credentials. If - not specified, default values will be attempted. - properties: - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: volumeName is the human-readable name - of the StorageOS volume. Volume names are only - unique within a namespace. - type: string - volumeNamespace: - description: volumeNamespace specifies the scope of - the volume within StorageOS. If no namespace is - specified then the Pod's namespace will be used. This - allows the Kubernetes name scoping to be mirrored - within StorageOS for tighter integration. Set VolumeName - to any name to override the default behaviour. Set - to "default" if you are not using namespaces within - StorageOS. Namespaces that do not pre-exist within - StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume - attached and mounted on kubelets host machine - properties: - fsType: - description: fsType is filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated with - the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy - Based Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies - vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - druid.port - - nodeConfigMountPath - - nodeType - - replicas - - runtime.properties - type: object - type: object - podAnnotations: - additionalProperties: - type: string - description: Custom annotations to be populated in Druid pods - type: object - podLabels: - additionalProperties: - type: string - description: Custom labels to be populated in Druid pods - type: object - podManagementPolicy: - description: By default, it is set to "parallel" - type: string - readinessProbe: - description: Port is set to druid.port if not specified with httpGet - handler - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command is - simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be - considered failed after having succeeded. Defaults to 3. Minimum - value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. This - is a beta field and requires enabling GRPCContainerProbe feature - gate. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to place - in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior is defined - by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod - IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults - to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default - to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be - considered successful after having failed. Defaults to 1. Must - be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully upon probe failure. The grace period is the duration - in seconds after the processes running in the pod are sent a - termination signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. Value must - be non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). This is a - beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - rollingDeploy: - type: boolean - scalePvcSts: - description: ScalePvcSts, defaults to false. When enabled, operator - will allow volume expansion of sts and pvc's. - type: boolean - securityContext: - description: druid pods pod-security-context - properties: - fsGroup: - description: "A special supplemental group that applies to all - containers in a pod. Some volume types allow the Kubelet to - change the ownership of that volume to be owned by the pod: - \n 1. The owning GID will be the FSGroup 2. The setgid bit is - set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- \n If unset, - the Kubelet will not modify the ownership and permissions of - any volume. Note that this field cannot be set when spec.os.name - is windows." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types which - support fsGroup based ownership(and permissions). It will have - no effect on ephemeral volume types such as: secret, configmaps - and emptydir. Valid values are "OnRootMismatch" and "Always". - If not specified, "Always" is used. Note that this field cannot - be set when spec.os.name is windows.' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field cannot - be set when spec.os.name is windows. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - seccompProfile: - description: The seccomp options to use by the containers in this - pod. Note that this field cannot be set when spec.os.name is - windows. - properties: - localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile must be - preconfigured on the node to work. Must be a descending - path, relative to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". - type: string - type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - a profile - defined in a file on the node should be used. RuntimeDefault - - the container runtime default profile should be used. - Unconfined - no profile should be applied." - type: string - required: - - type - type: object - supplementalGroups: - description: A list of groups applied to the first process run - in each container, in addition to the container's primary GID, - the fsGroup (if specified), and group memberships defined in - the container image for the uid of the container process. If - unspecified, no additional groups are added to any container. - Note that group memberships defined in the container image for - the uid of the container process are still effective, even if - they are not included in this list. Note that this field cannot - be set when spec.os.name is windows. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. Note that this field cannot be set when - spec.os.name is windows. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is linux. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. - type: string - hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is alpha-level - and will only be honored by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature flag - will result in errors when validating the Pod. All of a - Pod's containers must have the same effective HostProcess - value (it is not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, if HostProcess - is true then HostNetwork must also be set to true. - type: boolean - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccount: - description: ServiceAccount for the druid cluster - type: string - services: - description: k8s service resources to be created for each Druid statefulsets - items: - description: Service is a named abstraction of software service - (for example, mysql) consisting of local port (for example 3306) - that the proxy listens on, and the selector that determines which - pods will answer requests sent through the proxy. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - properties: - allocateLoadBalancerNodePorts: - description: allocateLoadBalancerNodePorts defines if NodePorts - will be automatically allocated for services with type - LoadBalancer. Default is "true". It may be set to "false" - if the cluster load-balancer does not rely on NodePorts. If - the caller requests specific NodePorts (by specifying - a value), those requests will be respected, regardless - of this field. This field may only be set for services - with type LoadBalancer and will be cleared if the type - is changed to any other type. - type: boolean - clusterIP: - description: 'clusterIP is the IP address of the service - and is usually assigned randomly. If an address is specified - manually, is in-range (as per system configuration), and - is not in use, it will be allocated to the service; otherwise - creation of the service will fail. This field may not - be changed through updates unless the type field is also - being changed to ExternalName (which requires this field - to be blank) or the type field is being changed from ExternalName - (in which case this field may optionally be specified, - as describe above). Valid values are "None", empty string - (""), or a valid IP address. Setting this to "None" makes - a "headless service" (no virtual IP), which is useful - when direct endpoint connections are preferred and proxying - is not required. Only applies to types ClusterIP, NodePort, - and LoadBalancer. If this field is specified when creating - a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string - clusterIPs: - description: "ClusterIPs is a list of IP addresses assigned - to this service, and are usually assigned randomly. If - an address is specified manually, is in-range (as per - system configuration), and is not in use, it will be allocated - to the service; otherwise creation of the service will - fail. This field may not be changed through updates unless - the type field is also being changed to ExternalName (which - requires this field to be empty) or the type field is - being changed from ExternalName (in which case this field - may optionally be specified, as describe above). Valid - values are \"None\", empty string (\"\"), or a valid IP - address. Setting this to \"None\" makes a \"headless - service\" (no virtual IP), which is useful when direct - endpoint connections are preferred and proxying is not - required. Only applies to types ClusterIP, NodePort, - and LoadBalancer. If this field is specified when creating - a Service of type ExternalName, creation will fail. This - field will be wiped when updating a Service to type ExternalName. - \ If this field is not specified, it will be initialized - from the clusterIP field. If this field is specified, - clients must ensure that clusterIPs[0] and clusterIP have - the same value. \n This field may hold a maximum of two - entries (dual-stack IPs, in either order). These IPs must - correspond to the values of the ipFamilies field. Both - clusterIPs and ipFamilies are governed by the ipFamilyPolicy - field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - description: externalIPs is a list of IP addresses for which - nodes in the cluster will also accept traffic for this - service. These IPs are not managed by Kubernetes. The - user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external - load-balancers that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: externalName is the external reference that - discovery mechanisms will return as an alias for this - service (e.g. a DNS CNAME record). No proxying will be - involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) - and requires `type` to be "ExternalName". - type: string - externalTrafficPolicy: - description: externalTrafficPolicy describes how nodes distribute - service traffic they receive on one of the Service's "externally-facing" - addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). - If set to "Local", the proxy will configure the service - in a way that assumes that external load balancers will - take care of balancing the service traffic between nodes, - and so each node will deliver traffic only to the node-local - endpoints of the service, without masquerading the client - source IP. (Traffic mistakenly sent to a node with no - endpoints will be dropped.) The default value, "Cluster", - uses the standard behavior of routing to all endpoints - evenly (possibly modified by topology and other features). - Note that traffic sent to an External IP or LoadBalancer - IP from within the cluster will always get "Cluster" semantics, - but clients sending to a NodePort from within the cluster - may need to take traffic policy into account when picking - a node. - type: string - healthCheckNodePort: - description: healthCheckNodePort specifies the healthcheck - nodePort for the service. This only applies when type - is set to LoadBalancer and externalTrafficPolicy is set - to Local. If a value is specified, is in-range, and is - not in use, it will be used. If not specified, a value - will be automatically allocated. External systems (e.g. - load-balancers) can use this port to determine if a given - node holds endpoints for this service or not. If this - field is specified when creating a Service which does - not need it, creation will fail. This field will be wiped - when updating a Service to no longer need it (e.g. changing - type). This field cannot be updated once set. - format: int32 - type: integer - internalTrafficPolicy: - description: InternalTrafficPolicy describes how nodes distribute - service traffic they receive on the ClusterIP. If set - to "Local", the proxy will assume that pods only want - to talk to endpoints of the service on the same node as - the pod, dropping the traffic if there are no local endpoints. - The default value, "Cluster", uses the standard behavior - of routing to all endpoints evenly (possibly modified - by topology and other features). - type: string - ipFamilies: - description: "IPFamilies is a list of IP families (e.g. - IPv4, IPv6) assigned to this service. This field is usually - assigned automatically based on cluster configuration - and the ipFamilyPolicy field. If this field is specified - manually, the requested family is available in the cluster, - and ipFamilyPolicy allows it, it will be used; otherwise - creation of the service will fail. This field is conditionally - mutable: it allows for adding or removing a secondary - IP family, but it does not allow changing the primary - IP family of the Service. Valid values are \"IPv4\" and - \"IPv6\". This field only applies to Services of types - ClusterIP, NodePort, and LoadBalancer, and does apply - to \"headless\" services. This field will be wiped when - updating a Service to type ExternalName. \n This field - may hold a maximum of two entries (dual-stack families, - in either order). These families must correspond to the - values of the clusterIPs field, if specified. Both clusterIPs - and ipFamilies are governed by the ipFamilyPolicy field." - items: - description: IPFamily represents the IP Family (IPv4 or - IPv6). This type is used to express the family of an - IP expressed by a type (e.g. service.spec.ipFamilies). - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - description: IPFamilyPolicy represents the dual-stack-ness - requested or required by this Service. If there is no - value provided, then this field will be set to SingleStack. - Services can be "SingleStack" (a single IP family), "PreferDualStack" - (two IP families on dual-stack configured clusters or - a single IP family on single-stack clusters), or "RequireDualStack" - (two IP families on dual-stack configured clusters, otherwise - fail). The ipFamilies and clusterIPs fields depend on - the value of this field. This field will be wiped when - updating a service to type ExternalName. - type: string - loadBalancerClass: - description: loadBalancerClass is the class of the load - balancer implementation this Service belongs to. If specified, - the value of this field must be a label-style identifier, - with an optional prefix, e.g. "internal-vip" or "example.com/internal-vip". - Unprefixed names are reserved for end-users. This field - can only be set when the Service type is 'LoadBalancer'. - If not set, the default load balancer implementation is - used, today this is typically done through the cloud provider - integration, but should apply for any default implementation. - If set, it is assumed that a load balancer implementation - is watching for Services with a matching class. Any default - load balancer implementation (e.g. cloud providers) should - ignore Services that set this field. This field can only - be set when creating or updating a Service to type 'LoadBalancer'. - Once set, it can not be changed. This field will be wiped - when a service is updated to a non 'LoadBalancer' type. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer. - This feature depends on whether the underlying cloud-provider - supports specifying the loadBalancerIP when a load balancer - is created. This field will be ignored if the cloud-provider - does not support the feature. Deprecated: This field was - under-specified and its meaning varies across implementations, - and it cannot support dual-stack. As of Kubernetes v1.24, - users are encouraged to use implementation-specific annotations - when available. This field may be removed in a future - API version.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by this - service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on service's - port. - properties: - appProtocol: - description: The application protocol for this port. - This field follows standard Kubernetes label syntax. - Un-prefixed names are reserved for IANA standard - service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). - Non-standard protocols should use prefixed names - such as mycompany.com/my-custom-protocol. - type: string - name: - description: The name of this port within the service. - This must be a DNS_LABEL. All ports within a ServiceSpec - must have unique names. When considering the endpoints - for a Service, this must match the 'name' field - in the EndpointPort. Optional if only one ServicePort - is defined on this service. - type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type is NodePort or LoadBalancer. Usually - assigned by the system. If a value is specified, - in-range, and not in use it will be used, otherwise - the operation will fail. If not specified, a port - will be allocated if this Service requires one. If - this field is specified when creating a Service - which does not need it, creation will fail. This - field will be wiped when updating a Service to no - longer need it (e.g. changing type from NodePort - to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - default: TCP - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to access - on the pods targeted by the service. Number must - be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named - port in the target Pod''s container ports. If this - is not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should be - omitted or set equal to the ''port'' field. More - info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - description: publishNotReadyAddresses indicates that any - agent which deals with endpoints for this Service should - disregard any indications of ready/not-ready. The primary - use case for setting this field is for a StatefulSet's - Headless Service to propagate SRV DNS records for its - Pods for the purpose of peer discovery. The Kubernetes - controllers that generate Endpoints and EndpointSlice - resources for Services interpret this to mean that all - endpoints are considered "ready" even if the Pods themselves - are not. Agents which consume only Kubernetes generated - endpoints through the Endpoints or EndpointSlice resources - can safely assume this behavior. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - x-kubernetes-map-type: atomic - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string - sessionAffinityConfig: - description: sessionAffinityConfig contains the configurations - of session affinity. - properties: - clientIP: - description: clientIP contains the configurations of - Client IP based session affinity. - properties: - timeoutSeconds: - description: timeoutSeconds specifies the seconds - of ClientIP type session sticky time. The value - must be >0 && <=86400(for 1 day) if ServiceAffinity - == "ClientIP". Default value is 10800(for 3 hours). - format: int32 - type: integer - type: object - type: object - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object or EndpointSlice objects. If clusterIP is "None", - no virtual IP is allocated and the endpoints are published - as a set of endpoints rather than a virtual IP. "NodePort" - builds on ClusterIP and allocates a port on every node - which routes to the same endpoints as the clusterIP. "LoadBalancer" - builds on NodePort and creates an external load-balancer - (if supported in the current cloud) which routes to the - same endpoints as the clusterIP. "ExternalName" aliases - this service to the specified externalName. Several other - fields do not apply to ExternalName services. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - status: - description: 'Most recently observed status of the service. - Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - conditions: - description: Current service state - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, \n type - FooStatus struct{ // Represents the observations of - a foo's current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - // +patchMergeKey=type // +patchStrategy=merge // +listType=map - // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - description: LoadBalancer contains the current status of - the load-balancer, if one is present. - properties: - ingress: - description: Ingress is a list containing ingress points - for the load-balancer. Traffic intended for the service - should be sent to these ingress points. - items: - description: 'LoadBalancerIngress represents the status - of a load-balancer ingress point: traffic intended - for the service should be sent to an ingress point.' - properties: - hostname: - description: Hostname is set for load-balancer - ingress points that are DNS based (typically - AWS load-balancers) - type: string - ip: - description: IP is set for load-balancer ingress - points that are IP based (typically GCE or OpenStack - load-balancers) - type: string - ports: - description: Ports is a list of records of service - ports If used, every port defined in the service - should have an entry in it - items: - properties: - error: - description: 'Error is to record the problem - with the service port The format of the - error shall comply with the following - rules: - built-in error values shall be - specified in this file and those shall - use CamelCase names - cloud provider specific - error values must have names that comply - with the format foo.example.com/CamelCase. - --- The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of - the service port of which status is recorded - here - format: int32 - type: integer - protocol: - default: TCP - description: 'Protocol is the protocol of - the service port of which status is recorded - here The supported values are: "TCP", - "UDP", "SCTP"' - type: string - required: - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - type: object - type: object - type: object - type: array - startScript: - description: Path to druid start script to be run on container start - type: string - startUpProbe: - description: StartupProbe for nodeSpec - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command is - simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be - considered failed after having succeeded. Defaults to 3. Minimum - value is 1. - format: int32 - type: integer - grpc: - description: GRPC specifies an action involving a GRPC port. This - is a beta field and requires enabling GRPCContainerProbe feature - gate. - properties: - port: - description: Port number of the gRPC service. Number must - be in the range 1 to 65535. - format: int32 - type: integer - service: - description: "Service is the name of the service to place - in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior is defined - by gRPC." - type: string - required: - - port - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod - IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows - repeated headers. - items: - description: HTTPHeader describes a custom header to be - used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults - to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default - to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be - considered successful after having failed. Defaults to 1. Must - be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: TCPSocket specifies an action involving a TCP port. - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. - Number must be in the range 1 to 65535. Name must be an - IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully upon probe failure. The grace period is the duration - in seconds after the processes running in the pod are sent a - termination signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, the pod's - terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. Value must - be non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). This is a - beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. - format: int64 - type: integer - timeoutSeconds: - description: 'Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - tolerations: - description: Toleration to be used in order to run Druid on nodes - tainted - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a pod - can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoExecute, otherwise - this field is ignored) tolerates the taint. By default, it - is not set, which means tolerate the taint forever (do not - evict). Zero and negative values will be treated as 0 (evict - immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. - type: string - type: object - type: array - updateStrategy: - description: StatefulSetUpdateStrategy indicates the strategy that - the StatefulSet controller will use to perform updates. It includes - any additional parameters necessary to perform the update for the - indicated strategy. - properties: - rollingUpdate: - description: RollingUpdate is used to communicate parameters when - Type is RollingUpdateStatefulSetStrategyType. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: 'The maximum number of pods that can be unavailable - during the update. Value can be an absolute number (ex: - 5) or a percentage of desired pods (ex: 10%). Absolute number - is calculated from percentage by rounding up. This can not - be 0. Defaults to 1. This field is alpha-level and is only - honored by servers that enable the MaxUnavailableStatefulSet - feature. The field applies to all pods in the range 0 to - Replicas-1. That means if there is any unavailable pod in - the range 0 to Replicas-1, it will be counted towards MaxUnavailable.' - x-kubernetes-int-or-string: true - partition: - description: Partition indicates the ordinal at which the - StatefulSet should be partitioned for updates. During a - rolling update, all pods from ordinal Replicas-1 to Partition - are updated. All pods from ordinal Partition-1 to 0 remain - untouched. This is helpful in being able to do a canary - based deployment. The default value is 0. - format: int32 - type: integer - type: object - type: - description: Type indicates the type of the StatefulSetUpdateStrategy. - Default is RollingUpdate. - type: string - type: object - volumeClaimTemplates: - description: volumes etc for the Druid pods - items: - description: PersistentVolumeClaim is a user's request for and claim - to a persistent volume - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: 'spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'dataSource field can be used to specify either: - * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If the provisioner - or an external controller can support the specified data - source, it will create a new volume based on the contents - of the specified data source. When the AnyVolumeDataSource - feature gate is enabled, dataSource contents will be copied - to dataSourceRef, and dataSourceRef contents will be copied - to dataSource when dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef will - not be copied to dataSource.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: 'dataSourceRef specifies the object from which - to populate the volume with data, if a non-empty volume - is desired. This may be any object from a non-empty API - group (non core object) or a PersistentVolumeClaim object. - When this field is specified, volume binding will only - succeed if the type of the specified object matches some - installed volume populator or dynamic provisioner. This - field will replace the functionality of the dataSource - field and as such if both fields are non-empty, they must - have the same value. For backwards compatibility, when - namespace isn''t specified in dataSourceRef, both fields - (dataSource and dataSourceRef) will be set to the same - value automatically if one of them is empty and the other - is non-empty. When namespace is specified in dataSourceRef, - dataSource isn''t set to the same value and must be empty. - There are three important differences between dataSource - and dataSourceRef: * While dataSource only allows two - specific types of objects, dataSourceRef allows any non-core - object, as well as PersistentVolumeClaim objects. * While - dataSource ignores disallowed values (dropping them), - dataSourceRef preserves all values, and generates an error - if a disallowed value is specified. * While dataSource - only allows local objects, dataSourceRef allows objects - in any namespaces. (Beta) Using this field requires the - AnyVolumeDataSource feature gate to be enabled. (Alpha) - Using the namespace field of dataSourceRef requires the - CrossNamespaceVolumeDataSource feature gate to be enabled.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - namespace: - description: Namespace is the namespace of resource - being referenced Note that when a namespace is specified, - a gateway.networking.k8s.io/ReferenceGrant object - is required in the referent namespace to allow that - namespace's owner to accept the reference. See the - ReferenceGrant documentation for details. (Alpha) - This field requires the CrossNamespaceVolumeDataSource - feature gate to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: 'resources represents the minimum resources - the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify resource - requirements that are lower than previous value but must - still be higher than capacity recorded in the status field - of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable. It can only be set for containers." - items: - description: ResourceClaim references one entry in - PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where - this field is used. It makes that resource available - inside a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - selector: - description: selector is a label query over volumes to consider - for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: 'storageClassName is the name of the StorageClass - required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'accessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - allocatedResources: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: allocatedResources is the storage resource - within AllocatedResources tracks the capacity allocated - to a PVC. It may be larger than the actual capacity when - a volume expansion operation is requested. For storage - quota, the larger value from allocatedResources and PVC.spec.resources - is used. If allocatedResources is not set, PVC.spec.resources - alone is used for quota calculation. If a volume expansion - capacity request is lowered, allocatedResources is only - lowered if there are no expansion operations in progress - and if the actual volume capacity is equal or lower than - the requested capacity. This is an alpha field and requires - enabling RecoverVolumeExpansionFailure feature. - type: object - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: capacity represents the actual resources of - the underlying volume. - type: object - conditions: - description: conditions is the current Condition of persistent - volume claim. If underlying persistent volume is being - resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: lastProbeTime is the time we probed the - condition. - format: date-time - type: string - lastTransitionTime: - description: lastTransitionTime is the time the condition - transitioned from one status to another. - format: date-time - type: string - message: - description: message is the human-readable message - indicating details about last transition. - type: string - reason: - description: reason is a unique, this should be a - short, machine understandable string that gives - the reason for condition's last transition. If it - reports "ResizeStarted" that means the underlying - persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: phase represents the current phase of PersistentVolumeClaim. - type: string - resizeStatus: - description: resizeStatus stores status of resize operation. - ResizeStatus is not set by default but when expansion - is complete resizeStatus is set to empty string by resize - controller or kubelet. This is an alpha field and requires - enabling RecoverVolumeExpansionFailure feature. - type: string - type: object - type: object - type: array - volumeMounts: - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When - not set, MountPropagationNone is used. This field is beta - in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the - container's volume should be mounted. Behaves similarly to - SubPath but environment variable references $(VAR_NAME) are - expanded using the container's environment. Defaults to "" - (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - partition: - description: 'partition is the partition in the volume that - you want to mount. If omitted, the default is to mount - by volume name. Examples: For volume /dev/sda1, you specify - the partition as "1". Similarly, the volume partition - for /dev/sda is "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'volumeID is unique ID of the persistent disk - resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: azureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'cachingMode is the Host Caching mode: None, - Read Only, Read Write.' - type: string - diskName: - description: diskName is the Name of the data disk in the - blob storage - type: string - diskURI: - description: diskURI is the URI of data disk in the blob - storage - type: string - fsType: - description: fsType is Filesystem type to mount. Must be - a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single blob - disk per storage account Managed: azure managed data - disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: readOnly Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: azureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: readOnly defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: secretName is the name of secret that contains - Azure Storage Account Name and Key - type: string - shareName: - description: shareName is the azure share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: cephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'monitors is Required: Monitors is a collection - of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'path is Optional: Used as the mounted root, - rather than the full Ceph tree, default is /' - type: string - readOnly: - description: 'readOnly is Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'secretFile is Optional: SecretFile is the - path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'secretRef is Optional: SecretRef is reference - to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: 'user is optional: User is the rados user name, - default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'cinder represents a cinder volume attached and - mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to - be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'readOnly defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - volumeID: - description: 'volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: configMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'defaultMode is optional: mode bits used to - set permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and decimal values, - JSON requires decimal values for mode bits. Defaults to - 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: items if unspecified, each key-value pair in - the Data field of the referenced ConfigMap will be projected - into the volume as a file whose name is the key and content - is the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in - the ConfigMap, the volume setup will error unless it is - marked optional. Paths must be relative and may not contain - the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal value - between 0000 and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and decimal values, - JSON requires decimal values for mode bits. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not start - with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: optional specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - csi: - description: csi (Container Storage Interface) represents ephemeral - storage that is handled by certain external CSI drivers (Beta - feature). - properties: - driver: - description: driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated - CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: nodePublishSecretRef is a reference to the - secret object containing sensitive information to pass - to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the secret - object contains more than one secret, all secret references - are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: volumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: downwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a Optional: mode bits used to set - permissions on created files by default. Must be an octal - value between 0000 and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and decimal values, - JSON requires decimal values for mode bits. Defaults to - 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: 'Optional: mode bits used to set permissions - on this file, must be an octal value between 0000 - and 0777 or a decimal value between 0 and 511. YAML - accepts both octal and decimal values, JSON requires - decimal values for mode bits. If not specified, - the volume defaultMode will be used. This might - be in conflict with other options that affect the - file mode, like fsGroup, and the result can be other - mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path - name of the file to be created. Must not be absolute - or contain the ''..'' path. Must be utf-8 encoded. - The first item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the - exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'emptyDir represents a temporary directory that - shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'medium represents what type of storage medium - should back this directory. The default is "" which means - to use the node''s default medium. Must be an empty string - (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'sizeLimit is the total amount of local storage - required for this EmptyDir volume. The size limit is also - applicable for memory medium. The maximum usage on memory - medium EmptyDir would be the minimum value between the - SizeLimit specified here and the sum of memory limits - of all containers in a pod. The default is nil which means - that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle is tied - to the pod that defines it - it will be created before the - pod starts, and deleted when the pod is removed. \n Use this - if: a) the volume is only needed while the pod runs, b) features - of normal volumes like restoring from snapshot or capacity - tracking are needed, c) the storage driver is specified through - a storage class, and d) the storage driver supports dynamic - volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource - for more information on the connection between this volume - type and PersistentVolumeClaim). \n Use PersistentVolumeClaim - or one of the vendor-specific APIs for volumes that persist - for longer than the lifecycle of an individual pod. \n Use - CSI for light-weight local ephemeral volumes if the CSI driver - is meant to be used that way - see the documentation of the - driver for more information. \n A pod can use both types of - ephemeral volumes and persistent volumes at the same time." - properties: - volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC to - provision the volume. The pod in which this EphemeralVolumeSource - is embedded will be the owner of the PVC, i.e. the PVC - will be deleted together with the pod. The name of the - PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. - Pod validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). \n - An existing PVC with that name that is not owned by the - pod will *not* be used for the pod to avoid using an unrelated - volume by mistake. Starting the pod is then blocked until - the unrelated PVC is removed. If such a pre-created PVC - is meant to be used by the pod, the PVC has to updated - with an owner reference to the pod once the pod exists. - Normally this should not be necessary, but it may be useful - when manually reconstructing a broken cluster. \n This - field is read-only and no changes will be made by Kubernetes - to the PVC after it has been created. \n Required, must - not be nil." - properties: - metadata: - description: May contain labels and annotations that - will be copied into the PVC when creating it. No other - fields are allowed and will be rejected during validation. - properties: - annotations: - additionalProperties: - type: string - type: object - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - type: object - spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into the PVC - that gets created from this template. The same fields - as in a PersistentVolumeClaim are also valid here. - properties: - accessModes: - description: 'accessModes contains the desired access - modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'dataSource field can be used to specify - either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If the - provisioner or an external controller can support - the specified data source, it will create a new - volume based on the contents of the specified - data source. When the AnyVolumeDataSource feature - gate is enabled, dataSource contents will be copied - to dataSourceRef, and dataSourceRef contents will - be copied to dataSource when dataSourceRef.namespace - is not specified. If the namespace is specified, - then dataSourceRef will not be copied to dataSource.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API - group. For any other third-party types, APIGroup - is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - x-kubernetes-map-type: atomic - dataSourceRef: - description: 'dataSourceRef specifies the object - from which to populate the volume with data, if - a non-empty volume is desired. This may be any - object from a non-empty API group (non core object) - or a PersistentVolumeClaim object. When this field - is specified, volume binding will only succeed - if the type of the specified object matches some - installed volume populator or dynamic provisioner. - This field will replace the functionality of the - dataSource field and as such if both fields are - non-empty, they must have the same value. For - backwards compatibility, when namespace isn''t - specified in dataSourceRef, both fields (dataSource - and dataSourceRef) will be set to the same value - automatically if one of them is empty and the - other is non-empty. When namespace is specified - in dataSourceRef, dataSource isn''t set to the - same value and must be empty. There are three - important differences between dataSource and dataSourceRef: - * While dataSource only allows two specific types - of objects, dataSourceRef allows any non-core - object, as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values (dropping - them), dataSourceRef preserves all values, and - generates an error if a disallowed value is specified. - * While dataSource only allows local objects, - dataSourceRef allows objects in any namespaces. - (Beta) Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using the - namespace field of dataSourceRef requires the - CrossNamespaceVolumeDataSource feature gate to - be enabled.' - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API - group. For any other third-party types, APIGroup - is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - namespace: - description: Namespace is the namespace of resource - being referenced Note that when a namespace - is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant documentation - for details. (Alpha) This field requires the - CrossNamespaceVolumeDataSource feature gate - to be enabled. - type: string - required: - - kind - - name - type: object - resources: - description: 'resources represents the minimum resources - the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify - resource requirements that are lower than previous - value but must still be higher than capacity recorded - in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used - by this container. \n This is an alpha field - and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. - It can only be set for containers." - items: - description: ResourceClaim references one - entry in PodSpec.ResourceClaims. - properties: - name: - description: Name must match the name - of one entry in pod.spec.resourceClaims - of the Pod where this field is used. - It makes that resource available inside - a container. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. If Requests - is omitted for a container, it defaults to - Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: - https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' - type: object - type: object - selector: - description: selector is a label query over volumes - to consider for binding. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - storageClassName: - description: 'storageClassName is the name of the - StorageClass required by the claim. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume - is required by the claim. Value of Filesystem - is implied when not included in claim spec. - type: string - volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. - type: string - type: object - required: - - spec - type: object - type: object - fc: - description: fc represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to the - pod. - properties: - fsType: - description: 'fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. TODO: how do we prevent errors in the - filesystem from compromising the machine' - type: string - lun: - description: 'lun is Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'readOnly is Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' - items: - type: string - type: array - wwids: - description: 'wwids Optional: FC volume world wide identifiers - (wwids) Either wwids or combination of targetWWNs and - lun must be set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use for - this volume. - type: string - fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends - on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'options is Optional: this field holds extra - command options if any.' - type: object - readOnly: - description: 'readOnly is Optional: defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'secretRef is Optional: secretRef is reference - to the secret object containing sensitive information - to pass to the plugin scripts. This may be empty if no - secret object is specified. If the secret object contains - more than one secret, all secrets are passed to the plugin - scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - required: - - driver - type: object - flocker: - description: flocker represents a Flocker volume attached to - a kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: datasetName is Name of the dataset stored as - metadata -> name on the dataset for Flocker should be - considered as deprecated - type: string - datasetUUID: - description: datasetUUID is the UUID of the dataset. This - is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'fsType is filesystem type of the volume that - you want to mount. Tip: Ensure that the filesystem type - is supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - partition: - description: 'partition is the partition in the volume that - you want to mount. If omitted, the default is to mount - by volume name. Examples: For volume /dev/sda1, you specify - the partition as "1". Similarly, the volume partition - for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'pdName is unique name of the PD resource in - GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'gitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision - a container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: directory is the target directory name. Must - not contain or start with '..'. If '.' is supplied, the - volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. - type: string - repository: - description: repository is the URL - type: string - revision: - description: revision is the commit hash for the specified - revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'glusterfs represents a Glusterfs mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'endpoints is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'readOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to - false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'hostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'path of the directory on the host. If the - path is a symlink, it will follow the link to the real - path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'iscsi represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to - the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: chapAuthDiscovery defines whether support iSCSI - Discovery CHAP authentication - type: boolean - chapAuthSession: - description: chapAuthSession defines whether support iSCSI - Session CHAP authentication - type: boolean - fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. - type: string - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iscsiInterface is the interface Name that uses - an iSCSI transport. Defaults to 'default' (tcp). - type: string - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: portals is the iSCSI Target Portal List. The - portal is either an IP or ip_addr:port if the port is - other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: secretRef is the CHAP Secret for iSCSI target - and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - targetPortal: - description: targetPortal is iSCSI Target Portal. The Portal - is either an IP or ip_addr:port if the port is other than - default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'name of the volume. Must be a DNS_LABEL and unique - within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'nfs represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'readOnly here will force the NFS export to - be mounted with read-only permissions. Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents a - reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: readOnly Will force the ReadOnly setting in - VolumeMounts. Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - pdID: - description: pdID is the ID that identifies Photon Controller - persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: portworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: readOnly defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: volumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: projected items for all in one resources secrets, - configmaps, and downward API - properties: - defaultMode: - description: defaultMode are the mode bits used to set permissions - on created files by default. Must be an octal value between - 0000 and 0777 or a decimal value between 0 and 511. YAML - accepts both octal and decimal values, JSON requires decimal - values for mode bits. Directories within the path are - not affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: sources is the list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: configMap information about the configMap - data to project - properties: - items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified which - is not present in the ConfigMap, the volume - setup will error unless it is marked optional. - Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 and - 0777 or a decimal value between 0 and - 511. YAML accepts both octal and decimal - values, JSON requires decimal values for - mode bits. If not specified, the volume - defaultMode will be used. This might be - in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of - the file to map the key to. May not be - an absolute path. May not contain the - path element '..'. May not start with - the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: optional specify whether the ConfigMap - or its keys must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - downwardAPI: - description: downwardAPI information about the downwardAPI - data to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, - defaults to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - x-kubernetes-map-type: atomic - mode: - description: 'Optional: mode bits used to - set permissions on this file, must be - an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML - accepts both octal and decimal values, - JSON requires decimal values for mode - bits. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can - be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' - path. Must be utf-8 encoded. The first - item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the - container: only resources limits and requests - (limits.cpu, limits.memory, requests.cpu - and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format - of the exposed resources, defaults - to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to - select' - type: string - required: - - resource - type: object - x-kubernetes-map-type: atomic - required: - - path - type: object - type: array - type: object - secret: - description: secret information about the secret data - to project - properties: - items: - description: items if unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified which - is not present in the Secret, the volume setup - will error unless it is marked optional. Paths - must be relative and may not contain the '..' - path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 and - 0777 or a decimal value between 0 and - 511. YAML accepts both octal and decimal - values, JSON requires decimal values for - mode bits. If not specified, the volume - defaultMode will be used. This might be - in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of - the file to map the key to. May not be - an absolute path. May not contain the - path element '..'. May not start with - the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: optional field specify whether the - Secret or its key must be defined - type: boolean - type: object - x-kubernetes-map-type: atomic - serviceAccountToken: - description: serviceAccountToken is information about - the serviceAccountToken data to project - properties: - audience: - description: audience is the intended audience - of the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, the - kubelet volume plugin will proactively rotate - the service account token. The kubelet will - start trying to rotate the token if the token - is older than 80 percent of its time to live - or if the token is older than 24 hours.Defaults - to 1 hour and must be at least 10 minutes. - format: int64 - type: integer - path: - description: path is the path relative to the - mount point of the file to project the token - into. - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - description: quobyte represents a Quobyte mount on the host - that shares a pod's lifetime - properties: - group: - description: group to map volume access to Default is no - group - type: string - readOnly: - description: readOnly here will force the Quobyte volume - to be mounted with read-only permissions. Defaults to - false. - type: boolean - registry: - description: registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: user to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'rbd represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - image: - description: 'image is the rados image name. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'pool is the rados pool name. Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'secretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is - nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - user: - description: 'user is the rados user name. Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: gateway is the host address of the ScaleIO - API Gateway. - type: string - protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. - type: string - readOnly: - description: readOnly Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: secretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: storageMode indicates whether the storage for - a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - type: string - storagePool: - description: storagePool is the ScaleIO Storage Pool associated - with the protection domain. - type: string - system: - description: system is the name of the storage system as - configured in ScaleIO. - type: string - volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated with - this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'defaultMode is Optional: mode bits used to - set permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and decimal values, - JSON requires decimal values for mode bits. Defaults to - 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: items If unspecified, each key-value pair in - the Data field of the referenced Secret will be projected - into the volume as a file whose name is the key and content - is the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in - the Secret, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: key is the key to project. - type: string - mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal value - between 0000 and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and decimal values, - JSON requires decimal values for mode bits. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not start - with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: optional field specify whether the Secret or - its keys must be defined - type: boolean - secretName: - description: 'secretName is the name of the secret in the - pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: readOnly defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: secretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - x-kubernetes-map-type: atomic - volumeName: - description: volumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within - a namespace. - type: string - volumeNamespace: - description: volumeNamespace specifies the scope of the - volume within StorageOS. If no namespace is specified - then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS - for tighter integration. Set VolumeName to any name to - override the default behaviour. Set to "default" if you - are not using namespaces within StorageOS. Namespaces - that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: vsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: fsType is filesystem type to mount. Must be - a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - storagePolicyID: - description: storagePolicyID is the storage Policy Based - Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: storagePolicyName is the storage Policy Based - Management (SPBM) profile name. - type: string - volumePath: - description: volumePath is the path that identifies vSphere - volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - zookeeper: - description: futuristic stuff to make Druid dependency setup extensible - from within Druid operator ignore for now. - properties: - spec: - description: RawMessage is a raw encoded JSON value. It implements - Marshaler and Unmarshaler and can be used to delay JSON decoding - or precompute a JSON encoding. - format: byte - type: string - type: - type: string - required: - - spec - - type - type: object - required: - - common.runtime.properties - - commonConfigMountPath - - nodes - - startScript - type: object - status: - description: DruidStatus defines the observed state of Druid - properties: - configMaps: - items: - type: string - type: array - deployments: - items: - type: string - type: array - druidNodeStatus: - description: 'INSERT ADDITIONAL STATUS FIELD - define observed state - of cluster Important: Run "make" to regenerate code after modifying - this file' - properties: - druidNode: - type: string - druidNodeConditionStatus: - type: string - druidNodeConditionType: - type: string - reason: - type: string - type: object - hpAutoscalers: - items: - type: string - type: array - ingress: - items: - type: string - type: array - persistentVolumeClaims: - items: - type: string - type: array - podDisruptionBudgets: - items: - type: string - type: array - pods: - items: - type: string - type: array - services: - items: - type: string - type: array - statefulSets: - items: - type: string - type: array - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} diff --git a/druid-operator/config/manager/kustomization.yaml b/druid-operator/config/manager/kustomization.yaml deleted file mode 100644 index c9e787640d1c..000000000000 --- a/druid-operator/config/manager/kustomization.yaml +++ /dev/null @@ -1,23 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -resources: -- manager.yaml -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -images: -- name: controller - newName: datainfrahq/druid-operator - newTag: latest diff --git a/druid-operator/config/manager/manager.yaml b/druid-operator/config/manager/manager.yaml deleted file mode 100644 index 8f68400af586..000000000000 --- a/druid-operator/config/manager/manager.yaml +++ /dev/null @@ -1,117 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -kind: Namespace -metadata: - labels: - control-plane: controller-manager - app.kubernetes.io/name: namespace - app.kubernetes.io/instance: system - app.kubernetes.io/component: manager - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: system ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: controller-manager - namespace: system - labels: - control-plane: controller-manager - app.kubernetes.io/name: deployment - app.kubernetes.io/instance: controller-manager - app.kubernetes.io/component: manager - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize -spec: - selector: - matchLabels: - control-plane: controller-manager - replicas: 1 - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: - control-plane: controller-manager - spec: - # TODO(user): Uncomment the following code to configure the nodeAffinity expression - # according to the platforms which are supported by your solution. - # It is considered best practice to support multiple architectures. You can - # build your manager image using the makefile target docker-buildx. - # affinity: - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: kubernetes.io/arch - # operator: In - # values: - # - amd64 - # - arm64 - # - ppc64le - # - s390x - # - key: kubernetes.io/os - # operator: In - # values: - # - linux - securityContext: - runAsNonRoot: true - # TODO(user): For common cases that do not require escalating privileges - # it is recommended to ensure that all your Pods/Containers are restrictive. - # More info: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted - # Please uncomment the following code if your project does NOT have to work on old Kubernetes - # versions < 1.19 or on vendors versions which do NOT support this field by default (i.e. Openshift < 4.11 ). - # seccompProfile: - # type: RuntimeDefault - containers: - - command: - - /manager - args: - - --leader-elect - image: controller:latest - name: manager - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - "ALL" - livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - # TODO(user): Configure the resources accordingly based on the project requirements. - # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 10m - memory: 64Mi - serviceAccountName: controller-manager - terminationGracePeriodSeconds: 10 diff --git a/druid-operator/config/prometheus/kustomization.yaml b/druid-operator/config/prometheus/kustomization.yaml deleted file mode 100644 index ffdabb51121b..000000000000 --- a/druid-operator/config/prometheus/kustomization.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -resources: -- monitor.yaml diff --git a/druid-operator/config/prometheus/monitor.yaml b/druid-operator/config/prometheus/monitor.yaml deleted file mode 100644 index 30df9404c60a..000000000000 --- a/druid-operator/config/prometheus/monitor.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- - -# Prometheus Monitor Service (Metrics) -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: - control-plane: controller-manager - app.kubernetes.io/name: servicemonitor - app.kubernetes.io/instance: controller-manager-metrics-monitor - app.kubernetes.io/component: metrics - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: controller-manager-metrics-monitor - namespace: system -spec: - endpoints: - - path: /metrics - port: https - scheme: https - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - tlsConfig: - insecureSkipVerify: true - selector: - matchLabels: - control-plane: controller-manager diff --git a/druid-operator/config/rbac/auth_proxy_client_clusterrole.yaml b/druid-operator/config/rbac/auth_proxy_client_clusterrole.yaml deleted file mode 100644 index e335b5d86f46..000000000000 --- a/druid-operator/config/rbac/auth_proxy_client_clusterrole.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: metrics-reader - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: metrics-reader -rules: -- nonResourceURLs: - - "/metrics" - verbs: - - get diff --git a/druid-operator/config/rbac/auth_proxy_role.yaml b/druid-operator/config/rbac/auth_proxy_role.yaml deleted file mode 100644 index c43d2158cf00..000000000000 --- a/druid-operator/config/rbac/auth_proxy_role.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: proxy-role - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create diff --git a/druid-operator/config/rbac/auth_proxy_role_binding.yaml b/druid-operator/config/rbac/auth_proxy_role_binding.yaml deleted file mode 100644 index 3b423e3de6ff..000000000000 --- a/druid-operator/config/rbac/auth_proxy_role_binding.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: clusterrolebinding - app.kubernetes.io/instance: proxy-rolebinding - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: proxy-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/druid-operator/config/rbac/auth_proxy_service.yaml b/druid-operator/config/rbac/auth_proxy_service.yaml deleted file mode 100644 index 0a5885371f70..000000000000 --- a/druid-operator/config/rbac/auth_proxy_service.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -kind: Service -metadata: - labels: - control-plane: controller-manager - app.kubernetes.io/name: service - app.kubernetes.io/instance: controller-manager-metrics-service - app.kubernetes.io/component: kube-rbac-proxy - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: controller-manager-metrics-service - namespace: system -spec: - ports: - - name: https - port: 8443 - protocol: TCP - targetPort: https - selector: - control-plane: controller-manager diff --git a/druid-operator/config/rbac/druid_druidingestion_editor_role.yaml b/druid-operator/config/rbac/druid_druidingestion_editor_role.yaml deleted file mode 100644 index 31c6a0f94835..000000000000 --- a/druid-operator/config/rbac/druid_druidingestion_editor_role.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# permissions for end users to edit druidingestions. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: druidingestion-editor-role - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: druidingestion-editor-role -rules: -- apiGroups: - - druid.apache.org - resources: - - druidingestions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druidingestions/status - verbs: - - get diff --git a/druid-operator/config/rbac/druid_druidingestion_viewer_role.yaml b/druid-operator/config/rbac/druid_druidingestion_viewer_role.yaml deleted file mode 100644 index 745f2dcbbb3b..000000000000 --- a/druid-operator/config/rbac/druid_druidingestion_viewer_role.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# permissions for end users to view druidingestions. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: druidingestion-viewer-role - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: druidingestion-viewer-role -rules: -- apiGroups: - - druid.apache.org - resources: - - druidingestions - verbs: - - get - - list - - watch -- apiGroups: - - druid.apache.org - resources: - - druidingestions/status - verbs: - - get diff --git a/druid-operator/config/rbac/druid_editor_role.yaml b/druid-operator/config/rbac/druid_editor_role.yaml deleted file mode 100644 index 285f231a3786..000000000000 --- a/druid-operator/config/rbac/druid_editor_role.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# permissions for end users to edit druids. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: druid-editor-role - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: druid-editor-role -rules: -- apiGroups: - - druid.apache.org - resources: - - druids - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids/status - verbs: - - get diff --git a/druid-operator/config/rbac/druid_viewer_role.yaml b/druid-operator/config/rbac/druid_viewer_role.yaml deleted file mode 100644 index 44eccf8aaad8..000000000000 --- a/druid-operator/config/rbac/druid_viewer_role.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# permissions for end users to view druids. -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: clusterrole - app.kubernetes.io/instance: druid-viewer-role - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: druid-viewer-role -rules: -- apiGroups: - - druid.apache.org - resources: - - druids - verbs: - - get - - list - - watch -- apiGroups: - - druid.apache.org - resources: - - druids/status - verbs: - - get diff --git a/druid-operator/config/rbac/kustomization.yaml b/druid-operator/config/rbac/kustomization.yaml deleted file mode 100644 index 0084d8e10c6c..000000000000 --- a/druid-operator/config/rbac/kustomization.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -resources: -# All RBAC will be applied under this service account in -# the deployment namespace. You may comment out this resource -# if your manager will use a service account that exists at -# runtime. Be sure to update RoleBinding and ClusterRoleBinding -# subjects if changing service account names. -- service_account.yaml -- role.yaml -- role_binding.yaml -- leader_election_role.yaml -- leader_election_role_binding.yaml -# Comment the following 4 lines if you want to disable -# the auth proxy (https://github.com/brancz/kube-rbac-proxy) -# which protects your /metrics endpoint. -- auth_proxy_service.yaml -- auth_proxy_role.yaml -- auth_proxy_role_binding.yaml -- auth_proxy_client_clusterrole.yaml diff --git a/druid-operator/config/rbac/leader_election_role.yaml b/druid-operator/config/rbac/leader_election_role.yaml deleted file mode 100644 index b57ba4ea630c..000000000000 --- a/druid-operator/config/rbac/leader_election_role.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -# permissions to do leader election. -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - labels: - app.kubernetes.io/name: role - app.kubernetes.io/instance: leader-election-role - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: leader-election-role -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch diff --git a/druid-operator/config/rbac/leader_election_role_binding.yaml b/druid-operator/config/rbac/leader_election_role_binding.yaml deleted file mode 100644 index c4eaa538601a..000000000000 --- a/druid-operator/config/rbac/leader_election_role_binding.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app.kubernetes.io/name: rolebinding - app.kubernetes.io/instance: leader-election-rolebinding - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: leader-election-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: leader-election-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/druid-operator/config/rbac/role.yaml b/druid-operator/config/rbac/role.yaml deleted file mode 100644 index abed24a7a7e4..000000000000 --- a/druid-operator/config/rbac/role.yaml +++ /dev/null @@ -1,167 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: manager-role -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - druid.apache.org - resources: - - druids/status - verbs: - - get - - patch - - update -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get - - list - - watch diff --git a/druid-operator/config/rbac/role_binding.yaml b/druid-operator/config/rbac/role_binding.yaml deleted file mode 100644 index 77e967eeadf6..000000000000 --- a/druid-operator/config/rbac/role_binding.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: clusterrolebinding - app.kubernetes.io/instance: manager-rolebinding - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: manager-role -subjects: -- kind: ServiceAccount - name: controller-manager - namespace: system diff --git a/druid-operator/config/rbac/service_account.yaml b/druid-operator/config/rbac/service_account.yaml deleted file mode 100644 index 783a95a84f13..000000000000 --- a/druid-operator/config/rbac/service_account.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/name: serviceaccount - app.kubernetes.io/instance: controller-manager - app.kubernetes.io/component: rbac - app.kubernetes.io/created-by: druid-operator - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - name: controller-manager - namespace: system diff --git a/druid-operator/config/samples/druid_v1alpha1_druid.yaml b/druid-operator/config/samples/druid_v1alpha1_druid.yaml deleted file mode 100644 index f649799aa949..000000000000 --- a/druid-operator/config/samples/druid_v1alpha1_druid.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - labels: - app.kubernetes.io/name: druid - app.kubernetes.io/instance: druid-sample - app.kubernetes.io/part-of: druid-operator - app.kubernetes.io/managed-by: kustomize - app.kubernetes.io/created-by: druid-operator - name: druid-sample -spec: - # TODO(user): Add fields here diff --git a/druid-operator/config/samples/druid_v1alpha1_druidingestion.yaml b/druid-operator/config/samples/druid_v1alpha1_druidingestion.yaml deleted file mode 100644 index 4dfb341d1957..000000000000 --- a/druid-operator/config/samples/druid_v1alpha1_druidingestion.yaml +++ /dev/null @@ -1,90 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: druid.apache.org/v1alpha1 -kind: DruidIngestion -metadata: - labels: - app.kubernetes.io/name: druidingestion - app.kubernetes.io/instance: druidingestion-sample - name: wikipedia-10 -spec: - suspend: false - druidCluster: tiny-cluster - ingestion: - type: native-batch - spec: |- - { - "type" : "index_parallel", - "spec" : { - "dataSchema" : { - "dataSource" : "wikipedia-10", - "dimensionsSpec" : { - "dimensions" : [ - "channel", - "cityName", - "comment", - "countryIsoCode", - "countryName", - "isAnonymous", - "isMinor", - "isNew", - "isRobot", - "isUnpatrolled", - "metroCode", - "namespace", - "page", - "regionIsoCode", - "regionName", - "user", - { "name": "added", "type": "long" }, - { "name": "deleted", "type": "long" }, - { "name": "delta", "type": "long" } - ] - }, - "timestampSpec": { - "column": "time", - "format": "iso" - }, - "metricsSpec" : [], - "granularitySpec" : { - "type" : "uniform", - "segmentGranularity" : "day", - "queryGranularity" : "none", - "intervals" : ["2015-09-12/2015-09-13"], - "rollup" : false - } - }, - "ioConfig" : { - "type" : "index_parallel", - "inputSource" : { - "type" : "local", - "baseDir" : "quickstart/tutorial/", - "filter" : "wikiticker-2015-09-12-sampled.json.gz" - }, - "inputFormat" : { - "type": "json" - }, - "appendToExisting" : false - }, - "tuningConfig" : { - "type" : "index_parallel", - "partitionsSpec": { - "type": "dynamic" - }, - "maxRowsInMemory" : 25000 - } - } - } diff --git a/druid-operator/controllers/druid/additional_containers.go b/druid-operator/controllers/druid/additional_containers.go deleted file mode 100644 index 0a5275fa1c89..000000000000 --- a/druid-operator/controllers/druid/additional_containers.go +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "fmt" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - v1 "k8s.io/api/core/v1" -) - -func addAdditionalContainers(m *v1alpha1.Druid, nodeSpec *v1alpha1.DruidNodeSpec, podSpec *v1.PodSpec) { - allAdditional := getAllAdditionalContainers(m, nodeSpec) - - for _, additional := range allAdditional { - container := convertAdditionalContainer(&additional) - - if additional.RunAsInit { - podSpec.InitContainers = append(podSpec.InitContainers, container) - } else { - podSpec.Containers = append(podSpec.Containers, container) - } - } -} - -func getAllAdditionalContainers(m *v1alpha1.Druid, nodeSpec *v1alpha1.DruidNodeSpec) []v1alpha1.AdditionalContainer { - var allAdditional []v1alpha1.AdditionalContainer - if m.Spec.AdditionalContainer != nil { - allAdditional = append(allAdditional, m.Spec.AdditionalContainer...) - } - if nodeSpec.AdditionalContainer != nil { - allAdditional = append(allAdditional, nodeSpec.AdditionalContainer...) - } - return allAdditional -} - -func convertAdditionalContainer(additional *v1alpha1.AdditionalContainer) v1.Container { - return v1.Container{ - Image: additional.Image, - Name: additional.ContainerName, - Resources: additional.Resources, - VolumeMounts: additional.VolumeMounts, - Command: additional.Command, - Args: additional.Args, - ImagePullPolicy: additional.ImagePullPolicy, - SecurityContext: additional.ContainerSecurityContext, - Env: additional.Env, - EnvFrom: additional.EnvFrom, - } -} - -func validateAdditionalContainersSpec(drd *v1alpha1.Druid) error { - for _, nodeSpec := range drd.Spec.Nodes { - if err := validateNodeAdditionalContainersSpec(drd, &nodeSpec); err != nil { - return err - } - } - return nil -} - -func validateNodeAdditionalContainersSpec(drd *v1alpha1.Druid, nodeSpec *v1alpha1.DruidNodeSpec) error { - allAdditional := getAllAdditionalContainers(drd, nodeSpec) - var containerNames []string - for _, container := range allAdditional { - containerNames = append(containerNames, container.ContainerName) - } - if duplicate, containerName := hasDuplicateString(containerNames); duplicate { - return fmt.Errorf("node group %s has duplicate container name: %s", - nodeSpec.NodeType, containerName) - } - return nil -} diff --git a/druid-operator/controllers/druid/additional_containers_test.go b/druid-operator/controllers/druid/additional_containers_test.go deleted file mode 100644 index 301b182c3162..000000000000 --- a/druid-operator/controllers/druid/additional_containers_test.go +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "fmt" - "time" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - v1 "k8s.io/api/apps/v1" - "k8s.io/apimachinery/pkg/types" -) - -// +kubebuilder:docs-gen:collapse=Imports - -var _ = Describe("Test Additional Containers", func() { - const ( - timeout = time.Second * 45 - interval = time.Millisecond * 250 - ) - - Context("When adding cluster-level additional containers", func() { - It("Should add the containers to the pod", func() { - By("By creating a Druid object") - filePath := "testdata/additional-containers.yaml" - druid, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - Expect(k8sClient.Create(ctx, druid)).To(Succeed()) - - existDruid := &v1alpha1.Druid{} - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, existDruid) - return err == nil - }, timeout, interval).Should(BeTrue()) - - brokerDeployment := &v1.Deployment{} - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{ - Namespace: druid.Namespace, - Name: fmt.Sprintf("druid-%s-%s", druid.Name, "brokers"), - }, brokerDeployment) - return err == nil - }, timeout, interval).Should(BeTrue()) - - Expect(brokerDeployment.Spec.Template.Spec.Containers).ShouldNot(BeNil()) - - isClusterContainerExists := false - isNodeContainerExists := false - for _, container := range brokerDeployment.Spec.Template.Spec.Containers { - if container.Name == "cluster-level" { - isClusterContainerExists = true - continue - } - if container.Name == "node-level" { - isNodeContainerExists = true - continue - } - } - - Expect(isClusterContainerExists).Should(BeTrue()) - Expect(isNodeContainerExists).Should(BeTrue()) - }) - }) -}) diff --git a/druid-operator/controllers/druid/configuration.go b/druid-operator/controllers/druid/configuration.go deleted file mode 100644 index 4c91bf748506..000000000000 --- a/druid-operator/controllers/druid/configuration.go +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "fmt" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -func makeConfigMap(name string, namespace string, labels map[string]string, data map[string]string) (*v1.ConfigMap, error) { - return &v1.ConfigMap{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "v1", - Kind: "ConfigMap", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: namespace, - Labels: labels, - }, - Data: data, - }, nil -} - -func makeCommonConfigMap(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, ls map[string]string) (*v1.ConfigMap, error) { - prop := m.Spec.CommonRuntimeProperties - - if m.Spec.Zookeeper != nil { - if zm, err := createZookeeperManager(m.Spec.Zookeeper); err != nil { - return nil, err - } else { - prop = prop + "\n" + zm.Configuration() + "\n" - } - } - - if m.Spec.MetadataStore != nil { - if msm, err := createMetadataStoreManager(m.Spec.MetadataStore); err != nil { - return nil, err - } else { - prop = prop + "\n" + msm.Configuration() + "\n" - } - } - - if m.Spec.DeepStorage != nil { - if dsm, err := createDeepStorageManager(m.Spec.DeepStorage); err != nil { - return nil, err - } else { - prop = prop + "\n" + dsm.Configuration() + "\n" - } - } - - data := map[string]string{ - "common.runtime.properties": prop, - } - - if m.Spec.DimensionsMapPath != "" { - data["metricDimensions.json"] = m.Spec.DimensionsMapPath - } - if m.Spec.HdfsSite != "" { - data["hdfs-site.xml"] = m.Spec.HdfsSite - } - if m.Spec.CoreSite != "" { - data["core-site.xml"] = m.Spec.CoreSite - } - - if err := addExtraCommonConfig(ctx, sdk, m, data); err != nil { - return nil, err - } - - cfg, err := makeConfigMap( - fmt.Sprintf("%s-druid-common-config", m.ObjectMeta.Name), - m.Namespace, - ls, - data) - return cfg, err -} - -func addExtraCommonConfig(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, data map[string]string) error { - if m.Spec.ExtraCommonConfig == nil { - return nil - } - - for _, cmRef := range m.Spec.ExtraCommonConfig { - cm := &v1.ConfigMap{} - if err := sdk.Get(ctx, types.NamespacedName{ - Name: cmRef.Name, - Namespace: cmRef.Namespace}, cm); err != nil { - // If a configMap is not found - output error and keep reconciliation - continue - } - - for fileName, fileContent := range cm.Data { - data[fileName] = fileContent - } - } - - return nil -} - -func makeConfigMapForNodeSpec(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, lm map[string]string, nodeSpecUniqueStr string) (*v1.ConfigMap, error) { - - data := map[string]string{ - "runtime.properties": fmt.Sprintf("druid.port=%d\n%s", nodeSpec.DruidPort, nodeSpec.RuntimeProperties), - "jvm.config": fmt.Sprintf("%s\n%s", firstNonEmptyStr(nodeSpec.JvmOptions, m.Spec.JvmOptions), nodeSpec.ExtraJvmOptions), - } - log4jconfig := firstNonEmptyStr(nodeSpec.Log4jConfig, m.Spec.Log4jConfig) - if log4jconfig != "" { - data["log4j2.xml"] = log4jconfig - } - - return makeConfigMap( - fmt.Sprintf("%s-config", nodeSpecUniqueStr), - m.Namespace, - lm, - data) -} - -func getNodeConfigMountPath(nodeSpec *v1alpha1.DruidNodeSpec) string { - return fmt.Sprintf("/druid/conf/druid/%s", nodeSpec.NodeType) -} diff --git a/druid-operator/controllers/druid/deep_storage_dep_mgmt.go b/druid-operator/controllers/druid/deep_storage_dep_mgmt.go deleted file mode 100644 index b60a360e9500..000000000000 --- a/druid-operator/controllers/druid/deep_storage_dep_mgmt.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - "github.com/datainfrahq/druid-operator/controllers/druid/ext" -) - -var deepStorageExtTypes = map[string]reflect.Type{} - -func init() { - deepStorageExtTypes["default"] = reflect.TypeOf(ext.DefaultDeepStorageManager{}) -} - -// We might have to add more methods to this interface to enable extensions that completely manage -// deploy, upgrade and termination of deep storage. -type deepStorageManager interface { - Configuration() string -} - -func createDeepStorageManager(spec *v1alpha1.DeepStorageSpec) (deepStorageManager, error) { - if t, ok := deepStorageExtTypes[spec.Type]; ok { - v := reflect.New(t).Interface() - if err := json.Unmarshal(spec.Spec, v); err != nil { - return nil, fmt.Errorf("Couldn't unmarshall deepStorage type[%s]. Error[%s].", spec.Type, err.Error()) - } else { - return v.(deepStorageManager), nil - } - } else { - return nil, fmt.Errorf("Can't find type[%s] for DeepStorage Mgmt.", spec.Type) - } -} diff --git a/druid-operator/controllers/druid/druid_controller.go b/druid-operator/controllers/druid/druid_controller.go deleted file mode 100644 index 69941b21791a..000000000000 --- a/druid-operator/controllers/druid/druid_controller.go +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "os" - "time" - - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/client-go/tools/record" - - "github.com/go-logr/logr" - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller" - "sigs.k8s.io/controller-runtime/pkg/reconcile" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" -) - -// DruidReconciler reconciles a Druid object -type DruidReconciler struct { - client.Client - Log logr.Logger - Scheme *runtime.Scheme - // reconcile time duration, defaults to 10s - ReconcileWait time.Duration - Recorder record.EventRecorder -} - -func NewDruidReconciler(mgr ctrl.Manager) *DruidReconciler { - return &DruidReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("Druid"), - Scheme: mgr.GetScheme(), - ReconcileWait: LookupReconcileTime(), - Recorder: mgr.GetEventRecorderFor("druid-operator"), - } -} - -// +kubebuilder:rbac:groups=druid.apache.org,resources=druids,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=druid.apache.org,resources=druids/status,verbs=get;update;patch -// +kubebuilder:rbac:groups="",resources=pods,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups="",resources=configmaps,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups="",resources=persistentvolumeclaims,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups="",resources=events,verbs=get;list;watch;create;patch -// +kubebuilder:rbac:groups=apps,resources=statefulsets,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=autoscaling,resources=horizontalpodautoscalers,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=policy,resources=poddisruptionbudgets,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=storage.k8s.io,resources=storageclasses,verbs=get;list;watch - -func (r *DruidReconciler) Reconcile(ctx context.Context, request reconcile.Request) (ctrl.Result, error) { - _ = r.Log.WithValues("druid", request.NamespacedName) - - // Fetch the Druid instance - instance := &druidv1alpha1.Druid{} - err := r.Get(ctx, request.NamespacedName, instance) - if err != nil { - if errors.IsNotFound(err) { - // Request object not found, could have been deleted after reconcile request. - // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. - // Return and don't requeue - return ctrl.Result{}, nil - } - // Error reading the object - requeue the request. - return ctrl.Result{}, err - } - - // Initialize Emit Events - var emitEvent EventEmitter = EmitEventFuncs{r.Recorder} - - // Deploy Druid Cluster - if err := deployDruidCluster(ctx, r.Client, instance, emitEvent); err != nil { - return ctrl.Result{}, err - } - - // Update Druid Dynamic Configs - if err := updateDruidDynamicConfigs(ctx, r.Client, instance, emitEvent); err != nil { - return ctrl.Result{}, err - } - - // If both operations succeed, requeue after specified wait time - return ctrl.Result{RequeueAfter: r.ReconcileWait}, nil -} - -func (r *DruidReconciler) SetupWithManager(mgr ctrl.Manager) error { - return ctrl.NewControllerManagedBy(mgr). - For(&druidv1alpha1.Druid{}). - WithEventFilter(GenericPredicates{}). - WithOptions(controller.Options{ - MaxConcurrentReconciles: getMaxConcurrentReconciles(), - }). - Complete(r) -} - -func LookupReconcileTime() time.Duration { - val, exists := os.LookupEnv("RECONCILE_WAIT") - if !exists { - return time.Second * 10 - } else { - v, err := time.ParseDuration(val) - if err != nil { - logger.Error(err, err.Error()) - // Exit Program if not valid - os.Exit(1) - } - return v - } -} - -func getMaxConcurrentReconciles() int { - var MaxConcurrentReconciles = "MAX_CONCURRENT_RECONCILES" - - nu, found := os.LookupEnv(MaxConcurrentReconciles) - if !found { - return 1 - } - return Str2Int(nu) -} diff --git a/druid-operator/controllers/druid/druid_controller_test.go b/druid-operator/controllers/druid/druid_controller_test.go deleted file mode 100644 index bffd9a64a0c0..000000000000 --- a/druid-operator/controllers/druid/druid_controller_test.go +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "fmt" - "time" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - appsv1 "k8s.io/api/apps/v1" - autoscalev2 "k8s.io/api/autoscaling/v2" - v1 "k8s.io/api/core/v1" - netv1 "k8s.io/api/networking/v1" - policyv1 "k8s.io/api/policy/v1" - "k8s.io/apimachinery/pkg/types" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -testDruidOperator -*/ -var _ = Describe("Druid Operator", func() { - - // Define utility constants for object names and testing timeouts/durations and intervals. - const ( - filePath = "testdata/druid-smoke-test-cluster.yaml" - timeout = time.Second * 45 - interval = time.Millisecond * 250 - ) - druid := &druidv1alpha1.Druid{} - druidComponents := []string{"coordinators", "historicals", "routers", "brokers"} - - Context("When testing Druid Operator", func() { - druidCR, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - It("Test druidCR creation - testDruidOperator", func() { - By("By creating a new druidCR") - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - // Get CR and match ConfigMaps - expectedConfigMaps := []string{ - fmt.Sprintf("druid-%s-brokers-config", druidCR.Name), - fmt.Sprintf("druid-%s-coordinators-config", druidCR.Name), - fmt.Sprintf("druid-%s-historicals-config", druidCR.Name), - fmt.Sprintf("druid-%s-routers-config", druidCR.Name), - fmt.Sprintf("%s-druid-common-config", druidCR.Name), - } - - By("By getting a newly created druidCR") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - if !areStringArraysEqual(druid.Status.ConfigMaps, expectedConfigMaps) { - return false - } - return err == nil - }, timeout, interval).Should(BeTrue()) - - // Match ConfigMaps - By("By matching ConfigMaps") - Expect(druid.Status.ConfigMaps).Should(ConsistOf(expectedConfigMaps)) - - // Match Services - By("By matching Services") - expectedServices := []string{ - fmt.Sprintf("druid-%s-brokers", druidCR.Name), - fmt.Sprintf("druid-%s-coordinators", druidCR.Name), - fmt.Sprintf("druid-%s-historicals", druidCR.Name), - fmt.Sprintf("druid-%s-routers", druidCR.Name), - } - Expect(druid.Status.Services).Should(ConsistOf(expectedServices)) - - // Match StatefulSets - By("By matching StatefulSets") - expectedStatefulSets := []string{ - fmt.Sprintf("druid-%s-coordinators", druidCR.Name), - fmt.Sprintf("druid-%s-historicals", druidCR.Name), - fmt.Sprintf("druid-%s-routers", druidCR.Name), - } - Expect(druid.Status.StatefulSets).Should(ConsistOf(expectedStatefulSets)) - - // Match Deployments - By("By matching Deployments") - expectedDeployments := []string{ - fmt.Sprintf("druid-%s-brokers", druidCR.Name), - } - Expect(druid.Status.Deployments).Should(ConsistOf(expectedDeployments)) - - // Match PDBs - By("By matching PDBs") - expectedPDBs := []string{ - fmt.Sprintf("druid-%s-brokers", druidCR.Name), - } - Expect(druid.Status.PodDisruptionBudgets).Should(ConsistOf(expectedPDBs)) - - // Match HPAs - By("By matching HPAs") - expectedHPAs := []string{ - fmt.Sprintf("druid-%s-brokers", druidCR.Name), - } - Expect(druid.Status.HPAutoScalers).Should(ConsistOf(expectedHPAs)) - - // Match Ingress - By("By matching Ingress") - expectedIngress := []string{ - fmt.Sprintf("druid-%s-routers", druidCR.Name), - } - Expect(druid.Status.Ingress).Should(ConsistOf(expectedIngress)) - - }) - - It("Test broker deployment", func() { - componentName := "brokers" - createdDeploy := &appsv1.Deployment{} - brokerDeployment := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - depNamespacedName := types.NamespacedName{Name: brokerDeployment, Namespace: druidCR.Namespace} - - // Match Deployment replicas - By("By getting deployment and checking replicas") - - Eventually(func() bool { - err := k8sClient.Get(ctx, depNamespacedName, createdDeploy) - return err == nil - }, timeout, interval).Should(BeTrue()) - - Expect(*createdDeploy.Spec.Replicas).To(Equal(druidCR.Spec.Nodes[componentName].Replicas)) - - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - - By("By updating broker deployment replicas") - replicaCount := 2 - if druidRep, ok := druid.Spec.Nodes[componentName]; ok { - druidRep.Replicas = int32(replicaCount) - druid.Spec.Nodes[componentName] = druidRep - } - // updating CR - Expect(k8sClient.Update(ctx, druid)).Should(Succeed()) - - // Fetch druid CR and check replicas - Eventually(func() bool { - k8sClient.Get(ctx, depNamespacedName, druid) - return druid.Spec.Nodes[componentName].Replicas == 2 - }, timeout, interval).Should(BeTrue()) - - // Fetch deployment and check replicas - Eventually(func() bool { - k8sClient.Get(ctx, depNamespacedName, createdDeploy) - return *createdDeploy.Spec.Replicas == 2 - }, timeout, interval).Should(BeTrue()) - }) - - // Test statefulsets replica count and update the replica count then match - expectedStatefulSets := []string{"coordinators", "historicals", "routers"} - for _, componentName := range expectedStatefulSets { - componentName := componentName - It(fmt.Sprintf("Test statefulset for %s", componentName), func() { - createdSts := &appsv1.StatefulSet{} - stsName := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - stsNamespacedName := types.NamespacedName{Name: stsName, Namespace: druidCR.Namespace} - - // Match statefulset replicas - By(fmt.Sprintf("By getting statefulset and checking replicas for %s ", stsName)) - Eventually(func() bool { - err := k8sClient.Get(ctx, stsNamespacedName, createdSts) - return err == nil - }, timeout, interval).Should(BeTrue()) - Expect(*createdSts.Spec.Replicas).To(Equal(druidCR.Spec.Nodes[componentName].Replicas)) - - By(fmt.Sprintf("By updating statefulset replicas %s ", stsName)) - replicaCount := 2 - if druidRep, ok := druid.Spec.Nodes[componentName]; ok { - druidRep.Replicas = int32(replicaCount) - druid.Spec.Nodes[componentName] = druidRep - } - // updating CR - Expect(k8sClient.Update(ctx, druid)).Should(Succeed()) - - // Fetch druid CR and check replicas - Eventually(func() bool { - k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return druid.Spec.Nodes[componentName].Replicas == 2 - }, timeout, interval).Should(BeTrue()) - - // Fetch statefulset and check replicas - Eventually(func() bool { - k8sClient.Get(ctx, stsNamespacedName, createdSts) - return *createdSts.Spec.Replicas == 2 - }, timeout, interval).Should(BeTrue()) - }) - } - - // Test statefulsets replica count and update the replica count then match - for _, componentName := range druidComponents { - componentName := componentName - It(fmt.Sprintf("Test kubernetes service for %s", componentName), func() { - createdService := &v1.Service{} - serviceName := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - serviceNamespacedName := types.NamespacedName{Name: serviceName, Namespace: druidCR.Namespace} - - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking kubernetes service type %s ", serviceName)) - Eventually(func() bool { - err := k8sClient.Get(ctx, serviceNamespacedName, createdService) - return err == nil - }, timeout, interval).Should(BeTrue()) - Expect(createdService.Spec.Type).To(Equal(druidCR.Spec.Services[0].Spec.Type)) - // Kubernetes service check for targetport and port - By(fmt.Sprintf("By checking kubernetes service port for %s ", serviceName)) - Expect(createdService.Spec.Ports[0].Port).To(Equal(druidCR.Spec.Nodes[componentName].DruidPort)) - Expect(createdService.Spec.Ports[0].TargetPort.IntVal).To(Equal(druidCR.Spec.Nodes[componentName].DruidPort)) - }) - } - // Check for pod distruption budget - It("Test poddisruptionbudget for broker", func() { - componentName := "brokers" - createdPdb := &policyv1.PodDisruptionBudget{} - pdbName := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - pdbNamespacedName := types.NamespacedName{Name: pdbName, Namespace: druidCR.Namespace} - - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking kubernetes poddisruptionbudget for %s ", pdbName)) - - Eventually(func() bool { - err := k8sClient.Get(ctx, pdbNamespacedName, createdPdb) - return err == nil - }, timeout, interval).Should(BeTrue()) - Expect(createdPdb.Spec.MinAvailable).To(Equal(druidCR.Spec.Nodes[componentName].PodDisruptionBudgetSpec.MinAvailable)) - }) - // Check for ingress - It("Test ingress for router", func() { - componentName := "routers" - createdIngress := &netv1.Ingress{} - ingressName := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - ingressNamespacedName := types.NamespacedName{Name: ingressName, Namespace: druidCR.Namespace} - - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking ingress for %s ", ingressName)) - Eventually(func() bool { - err := k8sClient.Get(ctx, ingressNamespacedName, createdIngress) - return err == nil - }, timeout, interval).Should(BeTrue()) - // check host and validate the domain - Expect(createdIngress.Spec.Rules[0].Host).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.Rules[0].Host)) - // check service name - Expect(createdIngress.Spec.Rules[0].HTTP.Paths[0].Backend.Service.Name).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.Rules[0].HTTP.Paths[0].Backend.Service.Name)) - // check service port name - Expect(createdIngress.Spec.Rules[0].HTTP.Paths[0].Backend.Service.Port.Name).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.Rules[0].HTTP.Paths[0].Backend.Service.Port.Name)) - // check ingress path - Expect(createdIngress.Spec.Rules[0].HTTP.Paths[0].Path).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.Rules[0].HTTP.Paths[0].Path)) - // check ingress pathtype - Expect(*createdIngress.Spec.Rules[0].HTTP.Paths[0].PathType).To(Equal(*druidCR.Spec.Nodes[componentName].Ingress.Rules[0].HTTP.Paths[0].PathType)) - // check tls hostname - Expect(createdIngress.Spec.TLS[0].Hosts).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.TLS[0].Hosts)) - // check tls secret name - Expect(createdIngress.Spec.TLS[0].SecretName).To(Equal(druidCR.Spec.Nodes[componentName].Ingress.TLS[0].SecretName)) - }) - // Check for pod distruption budget - It("Test common configmap", func() { - createdConfigMap := &v1.ConfigMap{} - configMapName := fmt.Sprintf("%s-druid-common-config", druidCR.Name) - configMapNamespacedName := types.NamespacedName{Name: configMapName, Namespace: druidCR.Namespace} - - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking common configmap for %s config ", configMapName)) - - Eventually(func() bool { - err := k8sClient.Get(ctx, configMapNamespacedName, createdConfigMap) - return err == nil - }, timeout, interval).Should(BeTrue()) - Expect(createdConfigMap.Data["metricDimensions.json"]).To(Equal(druidCR.Spec.DimensionsMapPath)) - Expect(createdConfigMap.Data["common.runtime.properties"]).To(Equal(druidCR.Spec.CommonRuntimeProperties)) - }) - for _, componentName := range druidComponents { - componentName := componentName - It(fmt.Sprintf("Test configMap for %s", componentName), func() { - createdConfigMap := &v1.ConfigMap{} - configMapName := fmt.Sprintf("druid-%s-%s-config", druidCR.Name, componentName) - configMapNamespacedName := types.NamespacedName{Name: configMapName, Namespace: druidCR.Namespace} - runtimeProperties := fmt.Sprintf("druid.port=%d\n%s", druidCR.Spec.Nodes[componentName].DruidPort, druidCR.Spec.Nodes[componentName].RuntimeProperties) - jvmConfig := fmt.Sprintf("%s\n%s", druidCR.Spec.JvmOptions, druidCR.Spec.Nodes[componentName].ExtraJvmOptions) - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking configmap check for %s config", configMapName)) - Eventually(func() bool { - err := k8sClient.Get(ctx, configMapNamespacedName, createdConfigMap) - return err == nil - }, timeout, interval).Should(BeTrue()) - Expect(createdConfigMap.Data["log4j2.xml"]).To(Equal(druidCR.Spec.Log4jConfig)) - Expect(createdConfigMap.Data["runtime.properties"]).To(Equal(runtimeProperties)) - Expect(createdConfigMap.Data["jvm.config"]).To(Equal(jvmConfig)) - - }) - } - // Check for HPA - It("Test horizontal pod autoscaler for broker", func() { - componentName := "brokers" - createdHpa := &autoscalev2.HorizontalPodAutoscaler{} - hpaName := fmt.Sprintf("druid-%s-%s", druidCR.Name, componentName) - hpaNamespacedName := types.NamespacedName{Name: hpaName, Namespace: druidCR.Namespace} - - // Checking the kubernetes service Type - By(fmt.Sprintf("By checking horizontal pod autoscaler for %s ", hpaName)) - Eventually(func() bool { - err := k8sClient.Get(ctx, hpaNamespacedName, createdHpa) - return err == nil - }, timeout, interval).Should(BeTrue()) - // check for max replicas - Expect(createdHpa.Spec.MaxReplicas).To(Equal(druidCR.Spec.Nodes[componentName].HPAutoScaler.MaxReplicas)) - // check for min replicas - Expect(createdHpa.Spec.MinReplicas).To(Equal(druidCR.Spec.Nodes[componentName].HPAutoScaler.MinReplicas)) - // check for ScaleTargetRef - Expect(createdHpa.Spec.ScaleTargetRef).To(Equal(druidCR.Spec.Nodes[componentName].HPAutoScaler.ScaleTargetRef)) - }) - - }) -}) - -func areStringArraysEqual(a1, a2 []string) bool { - if len(a1) == len(a2) { - for i, v := range a1 { - if v != a2[i] { - return false - } - } - } else { - return false - } - return true -} diff --git a/druid-operator/controllers/druid/dynamic_config.go b/druid-operator/controllers/druid/dynamic_config.go deleted file mode 100644 index 2a11b2ff2c7e..000000000000 --- a/druid-operator/controllers/druid/dynamic_config.go +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "fmt" - "net/http" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - druidapi "github.com/datainfrahq/druid-operator/pkg/druidapi" - internalhttp "github.com/datainfrahq/druid-operator/pkg/http" - "github.com/datainfrahq/druid-operator/pkg/util" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -// updateDruidDynamicConfigs updates the Druid cluster's dynamic configurations -// for both overlords (middlemanagers) and coordinators. -func updateDruidDynamicConfigs( - ctx context.Context, - client client.Client, - druid *v1alpha1.Druid, - emitEvent EventEmitter, -) error { - nodeTypes := []string{"middlemanagers", "coordinators"} - - for _, nodeType := range nodeTypes { - nodeConfig, exists := druid.Spec.Nodes[nodeType] - if !exists || nodeConfig.DynamicConfig.Size() == 0 { - // Skip if dynamic configurations are not provided for the node type - continue - } - - dynamicConfig := nodeConfig.DynamicConfig.Raw - - svcName, err := druidapi.GetRouterSvcUrl(druid.Namespace, druid.Name, client) - if err != nil { - emitEvent.EmitEventGeneric( - druid, - string(druidGetRouterSvcUrlFailed), - fmt.Sprintf("Failed to get router service URL for %s", nodeType), - err, - ) - return err - } - - basicAuth, err := druidapi.GetAuthCreds( - ctx, - client, - druid.Spec.Auth, - ) - if err != nil { - emitEvent.EmitEventGeneric( - druid, - string(druidGetAuthCredsFailed), - fmt.Sprintf("Failed to get authentication credentials for %s", nodeType), - err, - ) - return err - } - - // Create the HTTP client with basic authentication - httpClient := internalhttp.NewHTTPClient( - &http.Client{}, - &internalhttp.Auth{BasicAuth: basicAuth}, - ) - - // Determine the URL path for dynamic configurations based on the nodeType - var dynamicConfigPath string - switch nodeType { - case "middlemanagers": - dynamicConfigPath = druidapi.MakePath(svcName, "indexer", "worker") - case "coordinators": - dynamicConfigPath = druidapi.MakePath(svcName, "coordinator", "config") - default: - return fmt.Errorf("unsupported node type: %s", nodeType) - } - - // Fetch current dynamic configurations - currentResp, err := httpClient.Do( - http.MethodGet, - dynamicConfigPath, - nil, - ) - if err != nil { - emitEvent.EmitEventGeneric( - druid, - string(druidFetchCurrentConfigsFailed), - fmt.Sprintf("Failed to fetch current %s dynamic configurations", nodeType), - err, - ) - return err - } - if currentResp.StatusCode != http.StatusOK { - err = fmt.Errorf( - "failed to retrieve current Druid %s dynamic configurations. Status code: %d, Response body: %s", - nodeType, currentResp.StatusCode, string(currentResp.ResponseBody), - ) - emitEvent.EmitEventGeneric( - druid, - string(druidFetchCurrentConfigsFailed), - fmt.Sprintf("Failed to fetch current %s dynamic configurations", nodeType), - err, - ) - return err - } - - // Handle empty response body - var currentConfigsJson string - if len(currentResp.ResponseBody) == 0 { - currentConfigsJson = "{}" // Initialize as empty JSON object if response body is empty - } else { - currentConfigsJson = currentResp.ResponseBody - } - - // Compare current and desired configurations - equal, err := util.IncludesJson(currentConfigsJson, string(dynamicConfig)) - if err != nil { - emitEvent.EmitEventGeneric( - druid, - string(druidConfigComparisonFailed), - fmt.Sprintf("Failed to compare %s configurations", nodeType), - err, - ) - return err - } - if equal { - // Configurations are already up-to-date - continue - } - - // Update the Druid cluster's dynamic configurations if needed - respDynamicConfigs, err := httpClient.Do( - http.MethodPost, - dynamicConfigPath, - dynamicConfig, - ) - if err != nil { - emitEvent.EmitEventGeneric( - druid, - string(druidUpdateConfigsFailed), - fmt.Sprintf("Failed to update %s dynamic configurations", nodeType), - err, - ) - return err - } - if respDynamicConfigs.StatusCode != http.StatusOK { - return fmt.Errorf("failed to update Druid %s dynamic configurations", nodeType) - } - - emitEvent.EmitEventGeneric( - druid, - string(druidUpdateConfigsSuccess), - fmt.Sprintf("Successfully updated %s dynamic configurations", nodeType), - nil, - ) - } - - return nil -} diff --git a/druid-operator/controllers/druid/ext/deep_storage_default_ext.go b/druid-operator/controllers/druid/ext/deep_storage_default_ext.go deleted file mode 100644 index e6dc45673e8b..000000000000 --- a/druid-operator/controllers/druid/ext/deep_storage_default_ext.go +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ext - -type DefaultDeepStorageManager struct { - Properties string `json:"properties"` -} - -func (p *DefaultDeepStorageManager) Configuration() string { - return p.Properties -} diff --git a/druid-operator/controllers/druid/ext/metadata_store_default_ext.go b/druid-operator/controllers/druid/ext/metadata_store_default_ext.go deleted file mode 100644 index 2766fd11c650..000000000000 --- a/druid-operator/controllers/druid/ext/metadata_store_default_ext.go +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ext - -type DefaultMetadataStoreManager struct { - Properties string `json:"properties"` -} - -func (p *DefaultMetadataStoreManager) Configuration() string { - return p.Properties -} diff --git a/druid-operator/controllers/druid/ext/zookeeper_default_ext.go b/druid-operator/controllers/druid/ext/zookeeper_default_ext.go deleted file mode 100644 index 842cb886bd1f..000000000000 --- a/druid-operator/controllers/druid/ext/zookeeper_default_ext.go +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ext - -type DefaultZkManager struct { - Properties string `json:"properties"` -} - -func (p *DefaultZkManager) Configuration() string { - return p.Properties -} diff --git a/druid-operator/controllers/druid/finalizers.go b/druid-operator/controllers/druid/finalizers.go deleted file mode 100644 index 432ffdf99c03..000000000000 --- a/druid-operator/controllers/druid/finalizers.go +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -const ( - deletePVCFinalizerName = "deletepvc.finalizers.druid.apache.org" -) - -var ( - defaultFinalizers []string -) - -func updateFinalizers(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, emitEvents EventEmitter) error { - desiredFinalizers := m.GetFinalizers() - additionFinalizers := defaultFinalizers - - desiredFinalizers = RemoveString(desiredFinalizers, deletePVCFinalizerName) - if !m.Spec.DisablePVCDeletionFinalizer { - additionFinalizers = append(additionFinalizers, deletePVCFinalizerName) - } - - for _, finalizer := range additionFinalizers { - if !ContainsString(desiredFinalizers, finalizer) { - desiredFinalizers = append(desiredFinalizers, finalizer) - } - } - - if !equality.Semantic.DeepEqual(m.GetFinalizers(), desiredFinalizers) { - m.SetFinalizers(desiredFinalizers) - - finalizersBytes, err := json.Marshal(m.GetFinalizers()) - if err != nil { - return fmt.Errorf("failed to serialize finalizers patch to bytes: %v", err) - } - - patch := []byte(fmt.Sprintf(`[{"op": "replace", "path": "/metadata/finalizers", "value": %s}]`, finalizersBytes)) - - err = sdk.Patch(ctx, m, client.RawPatch(types.JSONPatchType, patch)) - if err != nil { - return err - } - - } - - return nil -} - -func executeFinalizers(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, emitEvents EventEmitter) error { - if m.Spec.DisablePVCDeletionFinalizer == false { - if err := executePVCFinalizer(ctx, sdk, m, emitEvents); err != nil { - return err - } - } - return nil -} - -/* -executePVCFinalizer will execute a PVC deletion of all Druid's PVCs. -Flow: - 1. Get sts List and PVC List - 2. Range and Delete sts first and then delete pvc. PVC must be deleted after sts termination has been executed - else pvc finalizer shall block deletion since a pod/sts is referencing it. - 3. Once delete is executed we block program and return. -*/ -func executePVCFinalizer(ctx context.Context, sdk client.Client, druid *v1alpha1.Druid, eventEmitter EventEmitter) error { - if ContainsString(druid.ObjectMeta.Finalizers, deletePVCFinalizerName) { - pvcLabels := map[string]string{ - "druid_cr": druid.Name, - } - - pvcList, err := readers.List(ctx, sdk, druid, pvcLabels, eventEmitter, func() objectList { return &v1.PersistentVolumeClaimList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PersistentVolumeClaimList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return err - } - - stsList, err := readers.List(ctx, sdk, druid, makeLabelsForDruid(druid), eventEmitter, func() objectList { return &appsv1.StatefulSetList{} }, func(listObj runtime.Object) []object { - items := listObj.(*appsv1.StatefulSetList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return err - } - - eventEmitter.EmitEventGeneric(druid, string(druidFinalizerTriggered), - fmt.Sprintf("Trigerring finalizer [%s] for CR [%s] in namespace [%s]", deletePVCFinalizerName, druid.Name, druid.Namespace), nil) - - if err = deleteSTSAndPVC(ctx, sdk, druid, stsList, pvcList, eventEmitter); err != nil { - eventEmitter.EmitEventGeneric(druid, string(druidFinalizerFailed), - fmt.Sprintf("Finalizer [%s] failed for CR [%s] in namespace [%s]", deletePVCFinalizerName, druid.Name, druid.Namespace), err) - - return err - } - - eventEmitter.EmitEventGeneric(druid, string(druidFinalizerSuccess), - fmt.Sprintf("Finalizer [%s] success for CR [%s] in namespace [%s]", deletePVCFinalizerName, druid.Name, druid.Namespace), nil) - - // remove our finalizer from the list and update it. - druid.ObjectMeta.Finalizers = RemoveString(druid.ObjectMeta.Finalizers, deletePVCFinalizerName) - - _, err = writers.Update(ctx, sdk, druid, druid, eventEmitter) - if err != nil { - return err - } - - } - return nil -} diff --git a/druid-operator/controllers/druid/finalizers_test.go b/druid-operator/controllers/druid/finalizers_test.go deleted file mode 100644 index a26759e84549..000000000000 --- a/druid-operator/controllers/druid/finalizers_test.go +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "time" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "k8s.io/apimachinery/pkg/types" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -finalizers_test -*/ -var _ = Describe("Test finalizers logic", func() { - const ( - filePath = "testdata/finalizers.yaml" - timeout = time.Second * 45 - interval = time.Millisecond * 250 - ) - - var ( - druid = &druidv1alpha1.Druid{} - ) - - Context("When creating a druid cluster", func() { - It("Should create the druid object", func() { - By("Creating a new druid") - druidCR, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - By("Getting a newly created druid") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - }) - It("Should add the delete PVC finalizer", func() { - By("Waiting for the finalizer to be created") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - if err == nil && ContainsString(druid.GetFinalizers(), deletePVCFinalizerName) { - return true - } - return false - }, timeout, interval).Should(BeTrue()) - }) - It("Should delete druid successfully", func() { - By("Waiting for the druid cluster to be deleted") - Expect(k8sClient.Delete(ctx, druid)).To(Succeed()) - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - return err != nil - }, timeout, interval).Should(BeTrue()) - }) - }) - - Context("When creating a druid cluster with disablePVCDeletion", func() { - It("Should create the druid object", func() { - By("Creating a new druid") - druidCR, err := readDruidClusterSpecFromFile(filePath) - druidCR.Spec.DisablePVCDeletionFinalizer = true - Expect(err).Should(BeNil()) - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - By("Getting a newly created druid") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - }) - It("Should not add the delete PVC finalizer", func() { - By("Call for the update finalizer function") - Expect(updateFinalizers(ctx, k8sClient, druid, emitEvent)).Should(BeNil()) - - By("Getting a updated druid") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - - By("Checking the absence of the finalizer") - Expect(ContainsString(druid.GetFinalizers(), deletePVCFinalizerName)).Should(BeFalse()) - }) - It("Should delete druid successfully", func() { - Expect(k8sClient.Delete(ctx, druid)).To(Succeed()) - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - return err != nil - }, timeout, interval).Should(BeTrue()) - }) - }) - - Context("When creating a druid cluster", func() { - It("Should create the druid object", func() { - By("Creating a new druid") - druidCR, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - By("Getting the CR") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - }) - It("Should add the delete PVC finalizer", func() { - By("Waiting for the finalizer to be created") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - if err == nil && ContainsString(druid.GetFinalizers(), deletePVCFinalizerName) { - return true - } - return false - }, timeout, interval).Should(BeTrue()) - }) - It("Should remove the delete PVC finalizer", func() { - By("Disabling the deletePVC finalizer") - druid.Spec.DisablePVCDeletionFinalizer = true - Expect(k8sClient.Update(ctx, druid)).To(BeNil()) - By("Waiting for the finalizer to be deleted") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - if err == nil && !ContainsString(druid.GetFinalizers(), deletePVCFinalizerName) { - return true - } - return false - }, timeout, interval).Should(BeTrue()) - }) - It("Should delete druid successfully", func() { - Expect(k8sClient.Delete(ctx, druid)).To(Succeed()) - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druid.Name, Namespace: druid.Namespace}, druid) - return err != nil - }, timeout, interval).Should(BeTrue()) - }) - }) -}) diff --git a/druid-operator/controllers/druid/handler.go b/druid-operator/controllers/druid/handler.go deleted file mode 100644 index ae651fc2c2ed..000000000000 --- a/druid-operator/controllers/druid/handler.go +++ /dev/null @@ -1,1429 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "crypto/sha1" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "regexp" - "sort" - "strconv" - "time" - - autoscalev2 "k8s.io/api/autoscaling/v2" - networkingv1 "k8s.io/api/networking/v1" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" - policyv1 "k8s.io/api/policy/v1" - apierrors "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/intstr" - "sigs.k8s.io/controller-runtime/pkg/client" - logf "sigs.k8s.io/controller-runtime/pkg/log" -) - -const ( - druidOpResourceHash = "druidOpResourceHash" - defaultCommonConfigMountPath = "/druid/conf/druid/_common" - toBeDeletedLabel = "toBeDeleted" - deletionTSLabel = "deletionTS" -) - -var logger = logf.Log.WithName("druid_operator_handler") - -func deployDruidCluster(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, emitEvents EventEmitter) error { - - if err := verifyDruidSpec(m); err != nil { - e := fmt.Errorf("invalid DruidSpec[%s:%s] due to [%s]", m.Kind, m.Name, err.Error()) - emitEvents.EmitEventGeneric(m, "DruidOperatorInvalidSpec", "", e) - return nil - } - - allNodeSpecs := getNodeSpecsByOrder(m) - - statefulSetNames := make(map[string]bool) - deploymentNames := make(map[string]bool) - serviceNames := make(map[string]bool) - configMapNames := make(map[string]bool) - podDisruptionBudgetNames := make(map[string]bool) - hpaNames := make(map[string]bool) - ingressNames := make(map[string]bool) - pvcNames := make(map[string]bool) - - ls := makeLabelsForDruid(m) - - commonConfig, err := makeCommonConfigMap(ctx, sdk, m, ls) - if err != nil { - return err - } - commonConfigSHA, err := getObjectHash(commonConfig) - if err != nil { - return err - } - - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { return makeCommonConfigMap(ctx, sdk, m, ls) }, - func() object { return &v1.ConfigMap{} }, - alwaysTrueIsEqualsFn, noopUpdaterFn, m, configMapNames, emitEvents); err != nil { - return err - } - - if m.GetDeletionTimestamp() != nil { - return executeFinalizers(ctx, sdk, m, emitEvents) - } - - if err := updateFinalizers(ctx, sdk, m, emitEvents); err != nil { - return err - } - - for _, elem := range allNodeSpecs { - key := elem.key - nodeSpec := elem.spec - - //Name in k8s must pass regex '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - //So this unique string must follow same. - nodeSpecUniqueStr := makeNodeSpecificUniqueString(m, key) - - lm := makeLabelsForNodeSpec(&nodeSpec, m, m.Name, nodeSpecUniqueStr) - - // create configmap first - nodeConfig, err := makeConfigMapForNodeSpec(&nodeSpec, m, lm, nodeSpecUniqueStr) - if err != nil { - return err - } - - nodeConfigSHA, err := getObjectHash(nodeConfig) - if err != nil { - return err - } - - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { return nodeConfig, nil }, - func() object { return &v1.ConfigMap{} }, - alwaysTrueIsEqualsFn, noopUpdaterFn, m, configMapNames, emitEvents); err != nil { - return err - } - - //create services before creating statefulset - firstServiceName := "" - services := firstNonNilValue(nodeSpec.Services, m.Spec.Services).([]v1.Service) - for _, svc := range services { - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { return makeService(&svc, &nodeSpec, m, lm, nodeSpecUniqueStr) }, - func() object { return &v1.Service{} }, alwaysTrueIsEqualsFn, - func(prev, curr object) { (curr.(*v1.Service)).Spec.ClusterIP = (prev.(*v1.Service)).Spec.ClusterIP }, - m, serviceNames, emitEvents); err != nil { - return err - } - if firstServiceName == "" { - firstServiceName = svc.ObjectMeta.Name - } - } - - nodeSpec.Ports = append(nodeSpec.Ports, v1.ContainerPort{ContainerPort: nodeSpec.DruidPort, Name: "druid-port"}) - - if nodeSpec.Kind == "Deployment" { - if deployCreateUpdateStatus, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { - return makeDeployment(&nodeSpec, m, lm, nodeSpecUniqueStr, fmt.Sprintf("%s-%s", commonConfigSHA, nodeConfigSHA), firstServiceName) - }, - func() object { return &appsv1.Deployment{} }, - deploymentIsEquals, noopUpdaterFn, m, deploymentNames, emitEvents); err != nil { - return err - } else if m.Spec.RollingDeploy { - - if deployCreateUpdateStatus == resourceUpdated { - return nil - } - - // Ignore isObjFullyDeployed() for the first iteration ie cluster creation - // will force cluster creation in parallel, post first iteration rolling updates - // will be sequential. - if m.Generation > 1 { - // Check Deployment rolling update status, if in-progress then stop here - done, err := isObjFullyDeployed(ctx, sdk, nodeSpec, nodeSpecUniqueStr, m, func() object { return &appsv1.Deployment{} }, emitEvents) - if !done { - return err - } - } - } - } else { - - // scalePVCForSTS to be called only if volumeExpansion is supported by the storage class. - // Ignore for the first iteration ie cluster creation, else get sts shall unnecessary log errors. - - if m.Generation > 1 && m.Spec.ScalePvcSts { - if err := expandStatefulSetVolumes(ctx, sdk, m, &nodeSpec, emitEvents, nodeSpecUniqueStr); err != nil { - return err - } - } - - // Create/Update StatefulSet - if stsCreateUpdateStatus, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { - return makeStatefulSet(&nodeSpec, m, lm, nodeSpecUniqueStr, fmt.Sprintf("%s-%s", commonConfigSHA, nodeConfigSHA), firstServiceName) - }, - func() object { return &appsv1.StatefulSet{} }, - statefulSetIsEquals, noopUpdaterFn, m, statefulSetNames, emitEvents); err != nil { - return err - } else if m.Spec.RollingDeploy { - - if stsCreateUpdateStatus == resourceUpdated { - // we just updated, give sts controller some time to update status of replicas after update - return nil - } - - // Default is set to true - execCheckCrashStatus(ctx, sdk, &nodeSpec, m, nodeSpecUniqueStr, emitEvents) - - // Ignore isObjFullyDeployed() for the first iteration ie cluster creation - // will force cluster creation in parallel, post first iteration rolling updates - // will be sequential. - if m.Generation > 1 { - //Check StatefulSet rolling update status, if in-progress then stop here - done, err := isObjFullyDeployed(ctx, sdk, nodeSpec, nodeSpecUniqueStr, m, func() object { return &appsv1.StatefulSet{} }, emitEvents) - if !done { - return err - } - } - } - - // Default is set to true - execCheckCrashStatus(ctx, sdk, &nodeSpec, m, nodeSpecUniqueStr, emitEvents) - } - - // Create Ingress Spec - if nodeSpec.Ingress != nil { - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { - return makeIngress(&nodeSpec, m, ls, nodeSpecUniqueStr) - }, - func() object { return &networkingv1.Ingress{} }, - alwaysTrueIsEqualsFn, noopUpdaterFn, m, ingressNames, emitEvents); err != nil { - return err - } - } - - // Create PodDisruptionBudget - if nodeSpec.PodDisruptionBudgetSpec != nil { - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { return makePodDisruptionBudget(&nodeSpec, m, lm, nodeSpecUniqueStr) }, - func() object { return &policyv1.PodDisruptionBudget{} }, - alwaysTrueIsEqualsFn, noopUpdaterFn, m, podDisruptionBudgetNames, emitEvents); err != nil { - return err - } - } - - // Create HPA Spec - if nodeSpec.HPAutoScaler != nil { - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { - return makeHorizontalPodAutoscaler(&nodeSpec, m, ls, nodeSpecUniqueStr) - }, - func() object { return &autoscalev2.HorizontalPodAutoscaler{} }, - alwaysTrueIsEqualsFn, noopUpdaterFn, m, hpaNames, emitEvents); err != nil { - return err - } - } - - if nodeSpec.PersistentVolumeClaim != nil { - for _, pvc := range nodeSpec.PersistentVolumeClaim { - if _, err := sdkCreateOrUpdateAsNeeded(ctx, sdk, - func() (object, error) { return makePersistentVolumeClaim(&pvc, &nodeSpec, m, lm, nodeSpecUniqueStr) }, - func() object { return &v1.PersistentVolumeClaim{} }, alwaysTrueIsEqualsFn, - noopUpdaterFn, - m, pvcNames, emitEvents); err != nil { - return err - } - } - } - } - - // Ignore on cluster creation - if m.Generation > 1 && m.Spec.DeleteOrphanPvc { - if err := deleteOrphanPVC(ctx, sdk, m, emitEvents); err != nil { - return err - } - } - - //update status and delete unwanted resources - updatedStatus := v1alpha1.DruidClusterStatus{} - - updatedStatus.StatefulSets = deleteUnusedResources(ctx, sdk, m, statefulSetNames, ls, - func() objectList { return &appsv1.StatefulSetList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*appsv1.StatefulSetList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.StatefulSets) - - updatedStatus.Deployments = deleteUnusedResources(ctx, sdk, m, deploymentNames, ls, - func() objectList { return &appsv1.DeploymentList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*appsv1.DeploymentList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.Deployments) - - updatedStatus.HPAutoScalers = deleteUnusedResources(ctx, sdk, m, hpaNames, ls, - func() objectList { return &autoscalev2.HorizontalPodAutoscalerList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*autoscalev2.HorizontalPodAutoscalerList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.HPAutoScalers) - - updatedStatus.Ingress = deleteUnusedResources(ctx, sdk, m, ingressNames, ls, - func() objectList { return &networkingv1.IngressList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*networkingv1.IngressList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.Ingress) - - updatedStatus.PodDisruptionBudgets = deleteUnusedResources(ctx, sdk, m, podDisruptionBudgetNames, ls, - func() objectList { return &policyv1.PodDisruptionBudgetList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*policyv1.PodDisruptionBudgetList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.PodDisruptionBudgets) - - updatedStatus.Services = deleteUnusedResources(ctx, sdk, m, serviceNames, ls, - func() objectList { return &v1.ServiceList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*v1.ServiceList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.Services) - - updatedStatus.ConfigMaps = deleteUnusedResources(ctx, sdk, m, configMapNames, ls, - func() objectList { return &v1.ConfigMapList{} }, - func(listObj runtime.Object) []object { - items := listObj.(*v1.ConfigMapList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }, emitEvents) - sort.Strings(updatedStatus.ConfigMaps) - - podList, _ := readers.List(ctx, sdk, m, makeLabelsForDruid(m), emitEvents, func() objectList { return &v1.PodList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PodList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - - updatedStatus.Pods = getPodNames(podList) - sort.Strings(updatedStatus.Pods) - - // All druid nodes are in Ready state. - // In case any druid node goes into a bad state, it shall be handled in above rollingDeploy block - updatedStatus.DruidNodeStatus = *newDruidNodeTypeStatus(v1.ConditionTrue, v1alpha1.DruidClusterReady, "", nil) - - // In case of rolling Deploy not present OR any error not catched in the above block, check the pod ready - // state and condition and patch the status with the CR - for _, po := range podList { - for _, c := range po.(*v1.Pod).Status.Conditions { - if c.Type == v1.PodReady && c.Status == v1.ConditionFalse { - updatedStatus.DruidNodeStatus = *newDruidNodeTypeStatus(v1.ConditionTrue, v1alpha1.DruidNodeErrorState, po.GetName(), errors.New(c.Reason)) - } - } - } - - err = druidClusterStatusPatcher(ctx, sdk, updatedStatus, m, emitEvents) - if err != nil { - return err - } - - return nil -} - -func deleteSTSAndPVC(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, stsList, pvcList []object, emitEvents EventEmitter) error { - - for _, sts := range stsList { - err := writers.Delete(ctx, sdk, drd, sts, emitEvents, &client.DeleteAllOfOptions{}) - if err != nil { - return err - } - } - - for i := range pvcList { - err := writers.Delete(ctx, sdk, drd, pvcList[i], emitEvents, &client.DeleteAllOfOptions{}) - if err != nil { - return err - } - } - - return nil -} - -func checkIfCRExists(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, emitEvents EventEmitter) bool { - _, err := readers.Get(ctx, sdk, m.Name, m, func() object { return &v1alpha1.Druid{} }, emitEvents) - if err != nil { - return false - } else { - return true - } -} - -func deleteOrphanPVC(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, emitEvents EventEmitter) error { - - podList, err := readers.List(ctx, sdk, drd, makeLabelsForDruid(drd), emitEvents, func() objectList { return &v1.PodList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PodList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return err - } - - pvcLabels := map[string]string{ - "druid_cr": drd.Name, - } - - pvcList, err := readers.List(ctx, sdk, drd, pvcLabels, emitEvents, func() objectList { return &v1.PersistentVolumeClaimList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PersistentVolumeClaimList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return err - } - - // Fix: https://github.com/datainfrahq/druid-operator/issues/149 - for _, pod := range podList { - if pod.(*v1.Pod).Status.Phase != v1.PodRunning { - return nil - } - for _, status := range pod.(*v1.Pod).Status.Conditions { - if status.Status != v1.ConditionTrue { - return nil - } - } - } - - mountedPVC := make([]string, len(podList)) - for _, pod := range podList { - if pod.(*v1.Pod).Spec.Volumes != nil { - for _, vol := range pod.(*v1.Pod).Spec.Volumes { - if vol.PersistentVolumeClaim != nil && pod.(*v1.Pod).Status.Phase != v1.PodPending { - if !ContainsString(mountedPVC, vol.PersistentVolumeClaim.ClaimName) { - mountedPVC = append(mountedPVC, vol.PersistentVolumeClaim.ClaimName) - } - } - } - } - - } - - if mountedPVC != nil { - for i, pvc := range pvcList { - - if !ContainsString(mountedPVC, pvc.GetName()) { - - if _, ok := pvc.GetLabels()[toBeDeletedLabel]; ok { - err := checkPVCLabelsAndDelete(ctx, sdk, drd, emitEvents, pvcList[i]) - if err != nil { - return err - } - } else { - // set labels when pvc comes for deletion for the first time - getPvcLabels := pvc.GetLabels() - getPvcLabels[toBeDeletedLabel] = "yes" - getPvcLabels[deletionTSLabel] = strconv.FormatInt(time.Now().Unix(), 10) - - err = setPVCLabels(ctx, sdk, drd, emitEvents, pvcList[i], getPvcLabels, true) - if err != nil { - return err - } - } - } else { - // do not delete pvc - if _, ok := pvc.GetLabels()[toBeDeletedLabel]; ok { - getPvcLabels := pvc.GetLabels() - delete(getPvcLabels, toBeDeletedLabel) - delete(getPvcLabels, deletionTSLabel) - - err = setPVCLabels(ctx, sdk, drd, emitEvents, pvcList[i], getPvcLabels, false) - if err != nil { - return err - } - } - } - } - } - return nil -} - -func checkPVCLabelsAndDelete(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, emitEvents EventEmitter, pvc object) error { - deletionTS := pvc.GetLabels()[deletionTSLabel] - - parsedDeletionTS, err := strconv.ParseInt(deletionTS, 10, 64) - - if err != nil { - msg := fmt.Sprintf("Unable to parse label %s [%s:%s]", deletionTSLabel, deletionTS, pvc.GetName()) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - return err - } - - timeNow := time.Now().Unix() - timeDiff := timeDifference(parsedDeletionTS, timeNow) - - if timeDiff >= int64(time.Second/time.Second)*60 { - // delete pvc - err = writers.Delete(ctx, sdk, drd, pvc, emitEvents, &client.DeleteAllOfOptions{}) - if err != nil { - return err - } else { - msg := fmt.Sprintf("Deleted orphaned pvc [%s:%s] successfully", pvc.GetName(), drd.Namespace) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - } - } else { - // wait for 60s - msg := fmt.Sprintf("pvc [%s:%s] marked to be deleted after %ds", pvc.GetName(), drd.Namespace, 60-timeDiff) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - } - return nil -} - -func setPVCLabels(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, emitEvents EventEmitter, pvc object, labels map[string]string, isSetLabel bool) error { - - pvc.SetLabels(labels) - _, err := writers.Update(ctx, sdk, drd, pvc, emitEvents) - if err != nil { - return err - } else { - if isSetLabel { - msg := fmt.Sprintf("marked pvc for deletion , added labels %s and %s successfully [%s]", toBeDeletedLabel, deletionTSLabel, pvc.GetName()) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - } else { - msg := fmt.Sprintf("unmarked pvc for deletion, removed labels %s and %s successfully in pvc [%s]", toBeDeletedLabel, deletionTSLabel, pvc.GetName()) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - } - } - return nil -} - -func execCheckCrashStatus(ctx context.Context, sdk client.Client, nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, nodeSpecUniqueStr string, event EventEmitter) { - if m.Spec.ForceDeleteStsPodOnError == false { - return - } else { - if nodeSpec.PodManagementPolicy == "OrderedReady" { - checkCrashStatus(ctx, sdk, nodeSpec, m, nodeSpecUniqueStr, event) - } - } -} - -func checkCrashStatus(ctx context.Context, sdk client.Client, nodeSpec *v1alpha1.DruidNodeSpec, drd *v1alpha1.Druid, nodeSpecUniqueStr string, emitEvents EventEmitter) error { - - podList, err := readers.List(ctx, sdk, drd, makeLabelsForNodeSpec(nodeSpec, drd, drd.Name, nodeSpecUniqueStr), emitEvents, func() objectList { return &v1.PodList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PodList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return err - } - - // the below condition evalutes if a pod is in - // 1. failed state 2. unknown state - // OR condtion.status is false which evalutes if neither of these conditions are met - // 1. ContainersReady 2. PodInitialized 3. PodReady 4. PodScheduled - for _, p := range podList { - if p.(*v1.Pod).Status.Phase == v1.PodFailed || p.(*v1.Pod).Status.Phase == v1.PodUnknown { - err := writers.Delete(ctx, sdk, drd, p, emitEvents, &client.DeleteOptions{}) - if err != nil { - return err - } - msg := fmt.Sprintf("Deleted pod [%s] in namespace [%s], since it was in [%s] state.", p.GetName(), p.GetNamespace(), p.(*v1.Pod).Status.Phase) - logger.Info(msg, "Object", stringifyForLogging(p, drd), "name", drd.Name, "namespace", drd.Namespace) - } else { - for _, condition := range p.(*v1.Pod).Status.Conditions { - if condition.Type == v1.ContainersReady { - if condition.Status == v1.ConditionFalse { - for _, containerStatus := range p.(*v1.Pod).Status.ContainerStatuses { - if containerStatus.RestartCount > 1 { - err := writers.Delete(ctx, sdk, drd, p, emitEvents, &client.DeleteOptions{}) - if err != nil { - return err - } - msg := fmt.Sprintf("Deleted pod [%s] in namespace [%s], since the container [%s] was crashlooping.", p.GetName(), p.GetNamespace(), containerStatus.Name) - logger.Info(msg, "Object", stringifyForLogging(p, drd), "name", drd.Name, "namespace", drd.Namespace) - } - } - } - } - } - } - } - - return nil -} - -func deleteUnusedResources(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, - names map[string]bool, selectorLabels map[string]string, emptyListObjFn func() objectList, itemsExtractorFn func(obj runtime.Object) []object, emitEvents EventEmitter) []string { - - listOpts := []client.ListOption{ - client.InNamespace(drd.Namespace), - client.MatchingLabels(selectorLabels), - } - - survivorNames := make([]string, 0, len(names)) - - listObj := emptyListObjFn() - - if err := sdk.List(ctx, listObj, listOpts...); err != nil { - e := fmt.Errorf("failed to list [%s] due to [%s]", listObj.GetObjectKind().GroupVersionKind().Kind, err.Error()) - logger.Error(e, e.Error(), "name", drd.Name, "namespace", drd.Namespace) - } else { - for _, s := range itemsExtractorFn(listObj) { - if names[s.GetName()] == false { - err := writers.Delete(ctx, sdk, drd, s, emitEvents, &client.DeleteOptions{}) - if err != nil { - survivorNames = append(survivorNames, s.GetName()) - } - } else { - survivorNames = append(survivorNames, s.GetName()) - } - } - } - - return survivorNames -} - -func alwaysTrueIsEqualsFn(prev, curr object) bool { - return true -} - -func noopUpdaterFn(prev, curr object) { - // do nothing -} - -func sdkCreateOrUpdateAsNeeded( - ctx context.Context, - sdk client.Client, - objFn func() (object, error), - emptyObjFn func() object, - isEqualFn func(prev, curr object) bool, - updaterFn func(prev, curr object), - drd *v1alpha1.Druid, - names map[string]bool, - emitEvent EventEmitter) (DruidNodeStatus, error) { - - if obj, err := objFn(); err != nil { - return "", err - } else { - names[obj.GetName()] = true - - addOwnerRefToObject(obj, asOwner(drd)) - addHashToObject(obj) - - prevObj := emptyObjFn() - if err := sdk.Get(ctx, *namespacedName(obj.GetName(), obj.GetNamespace()), prevObj); err != nil { - if apierrors.IsNotFound(err) { - // resource does not exist, create it. - create, err := writers.Create(ctx, sdk, drd, obj, emitEvent) - if err != nil { - return "", err - } else { - return create, nil - } - } else { - e := fmt.Errorf("Failed to get [%s:%s] due to [%s].", obj.GetObjectKind().GroupVersionKind().Kind, obj.GetName(), err.Error()) - logger.Error(e, e.Error(), "Prev object", stringifyForLogging(prevObj, drd), "name", drd.Name, "namespace", drd.Namespace) - emitEvent.EmitEventGeneric(drd, string(druidOjectGetFail), "", err) - return "", e - } - } else { - // resource already exists, updated it if needed - if obj.GetAnnotations()[druidOpResourceHash] != prevObj.GetAnnotations()[druidOpResourceHash] || !isEqualFn(prevObj, obj) { - - obj.SetResourceVersion(prevObj.GetResourceVersion()) - updaterFn(prevObj, obj) - update, err := writers.Update(ctx, sdk, drd, obj, emitEvent) - if err != nil { - return "", err - } else { - return update, err - } - } else { - return "", nil - } - } - } -} - -func isObjFullyDeployed(ctx context.Context, sdk client.Client, nodeSpec v1alpha1.DruidNodeSpec, nodeSpecUniqueStr string, drd *v1alpha1.Druid, emptyObjFn func() object, emitEvent EventEmitter) (bool, error) { - - // Get Object - obj, err := readers.Get(ctx, sdk, nodeSpecUniqueStr, drd, emptyObjFn, emitEvent) - if err != nil { - return false, err - } - - // In case obj is a statefulset or deployment, make sure the sts/deployment has successfully reconciled to desired state - // TODO: @AdheipSingh once https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/apps/types.go#L217 k8s conditions detect sts fail errors. - if detectType(obj) == "*v1.StatefulSet" { - if obj.(*appsv1.StatefulSet).Status.CurrentRevision != obj.(*appsv1.StatefulSet).Status.UpdateRevision { - return false, nil - } else if obj.(*appsv1.StatefulSet).Status.CurrentReplicas != obj.(*appsv1.StatefulSet).Status.ReadyReplicas { - return false, nil - } else { - return obj.(*appsv1.StatefulSet).Status.CurrentRevision == obj.(*appsv1.StatefulSet).Status.UpdateRevision, nil - } - } else if detectType(obj) == "*v1.Deployment" { - for _, condition := range obj.(*appsv1.Deployment).Status.Conditions { - // This detects a failure condition, operator should send a rolling deployment failed event - if condition.Type == appsv1.DeploymentReplicaFailure { - return false, errors.New(condition.Reason) - } else if condition.Type == appsv1.DeploymentProgressing && condition.Status != v1.ConditionTrue || obj.(*appsv1.Deployment).Status.ReadyReplicas != obj.(*appsv1.Deployment).Status.Replicas { - return false, nil - } else { - return obj.(*appsv1.Deployment).Status.ReadyReplicas == obj.(*appsv1.Deployment).Status.Replicas, nil - } - } - } - return false, nil -} - -// desVolumeClaimTemplateSize: the druid CR holds this value for a sts volumeclaimtemplate -// currVolumeClaimTemplateSize: the sts owned by druid CR holds this value in volumeclaimtemplate -// pvcSize: the pvc referenced by the sts holds this value -// type of vars is resource.Quantity. ref: https://godoc.org/k8s.io/apimachinery/pkg/api/resource -func getVolumeClaimTemplateSizes(sts object, nodeSpec *v1alpha1.DruidNodeSpec, pvc []object) (desVolumeClaimTemplateSize, currVolumeClaimTemplateSize, pvcSize []resource.Quantity) { - - for i := range nodeSpec.VolumeClaimTemplates { - desVolumeClaimTemplateSize = append(desVolumeClaimTemplateSize, nodeSpec.VolumeClaimTemplates[i].Spec.Resources.Requests[v1.ResourceStorage]) - } - - for i := range sts.(*appsv1.StatefulSet).Spec.VolumeClaimTemplates { - currVolumeClaimTemplateSize = append(currVolumeClaimTemplateSize, sts.(*appsv1.StatefulSet).Spec.VolumeClaimTemplates[i].Spec.Resources.Requests[v1.ResourceStorage]) - } - - for i := range pvc { - pvcSize = append(pvcSize, pvc[i].(*v1.PersistentVolumeClaim).Spec.Resources.Requests[v1.ResourceStorage]) - } - - return desVolumeClaimTemplateSize, currVolumeClaimTemplateSize, pvcSize - -} - -func stringifyForLogging(obj object, drd *v1alpha1.Druid) string { - if bytes, err := json.Marshal(obj); err != nil { - logger.Error(err, err.Error(), fmt.Sprintf("Failed to serialize [%s:%s]", obj.GetObjectKind().GroupVersionKind().Kind, obj.GetName()), "name", drd.Name, "namespace", drd.Namespace) - return fmt.Sprintf("%v", obj) - } else { - return string(bytes) - } - -} - -func addHashToObject(obj object) error { - if sha, err := getObjectHash(obj); err != nil { - return err - } else { - annotations := obj.GetAnnotations() - if annotations == nil { - annotations = make(map[string]string) - obj.SetAnnotations(annotations) - } - annotations[druidOpResourceHash] = sha - return nil - } -} - -func getObjectHash(obj object) (string, error) { - if bytes, err := json.Marshal(obj); err != nil { - return "", err - } else { - sha1Bytes := sha1.Sum(bytes) - return base64.StdEncoding.EncodeToString(sha1Bytes[:]), nil - } -} - -func makeNodeSpecificUniqueString(m *v1alpha1.Druid, key string) string { - return fmt.Sprintf("druid-%s-%s", m.Name, key) -} - -func makeService(svc *v1.Service, nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr string) (*v1.Service, error) { - svc.TypeMeta = metav1.TypeMeta{ - APIVersion: "v1", - Kind: "Service", - } - - svc.ObjectMeta.Name = getServiceName(svc.ObjectMeta.Name, nodeSpecUniqueStr) - - svc.ObjectMeta.Namespace = m.Namespace - - if svc.ObjectMeta.Labels == nil { - svc.ObjectMeta.Labels = ls - } else { - for k, v := range ls { - svc.ObjectMeta.Labels[k] = v - } - } - - if svc.Spec.Selector == nil { - svc.Spec.Selector = ls - } else { - for k, v := range ls { - svc.Spec.Selector[k] = v - } - } - - if svc.Spec.Ports == nil { - svc.Spec.Ports = []v1.ServicePort{ - { - Name: "service-port", - Port: nodeSpec.DruidPort, - TargetPort: intstr.FromInt(int(nodeSpec.DruidPort)), - }, - } - } - - return svc, nil -} - -func getServiceName(nameTemplate, nodeSpecUniqueStr string) string { - if nameTemplate == "" { - return nodeSpecUniqueStr - } else { - return fmt.Sprintf(nameTemplate, nodeSpecUniqueStr) - } -} - -func getPersistentVolumeClaim(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) []v1.PersistentVolumeClaim { - pvc := []v1.PersistentVolumeClaim{} - - for _, val := range m.Spec.VolumeClaimTemplates { - pvc = append(pvc, val) - } - - for _, val := range nodeSpec.VolumeClaimTemplates { - pvc = append(pvc, val) - } - - return pvc - -} - -func getVolumeMounts(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) []v1.VolumeMount { - volumeMount := []v1.VolumeMount{ - { - MountPath: firstNonEmptyStr(m.Spec.CommonConfigMountPath, defaultCommonConfigMountPath), - Name: "common-config-volume", - ReadOnly: true, - }, - { - MountPath: firstNonEmptyStr(nodeSpec.NodeConfigMountPath, getNodeConfigMountPath(nodeSpec)), - Name: "nodetype-config-volume", - ReadOnly: true, - }, - } - - volumeMount = append(volumeMount, m.Spec.VolumeMounts...) - volumeMount = append(volumeMount, nodeSpec.VolumeMounts...) - return volumeMount -} - -func getTolerations(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) []v1.Toleration { - tolerations := []v1.Toleration{} - - for _, val := range m.Spec.Tolerations { - tolerations = append(tolerations, val) - } - for _, val := range nodeSpec.Tolerations { - tolerations = append(tolerations, val) - } - - return tolerations -} - -func getTopologySpreadConstraints(nodeSpec *v1alpha1.DruidNodeSpec) []v1.TopologySpreadConstraint { - var topologySpreadConstraint []v1.TopologySpreadConstraint - - for _, val := range nodeSpec.TopologySpreadConstraints { - topologySpreadConstraint = append(topologySpreadConstraint, val) - } - - return topologySpreadConstraint -} - -func getVolume(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, nodeSpecUniqueStr string) []v1.Volume { - volumesHolder := []v1.Volume{ - { - Name: "common-config-volume", - VolumeSource: v1.VolumeSource{ - ConfigMap: &v1.ConfigMapVolumeSource{ - LocalObjectReference: v1.LocalObjectReference{ - Name: fmt.Sprintf("%s-druid-common-config", m.ObjectMeta.Name), - }, - }}, - }, - { - Name: "nodetype-config-volume", - VolumeSource: v1.VolumeSource{ - ConfigMap: &v1.ConfigMapVolumeSource{ - LocalObjectReference: v1.LocalObjectReference{ - Name: fmt.Sprintf("%s-config", nodeSpecUniqueStr), - }, - }, - }, - }, - } - volumesHolder = append(volumesHolder, m.Spec.Volumes...) - volumesHolder = append(volumesHolder, nodeSpec.Volumes...) - return volumesHolder -} - -func getEnv(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, configMapSHA string) []v1.EnvVar { - envHolder := firstNonNilValue(nodeSpec.Env, m.Spec.Env).([]v1.EnvVar) - // enables to do the trick to force redeployment in case of configmap changes. - envHolder = append(envHolder, v1.EnvVar{Name: "configMapSHA", Value: configMapSHA}) - - return envHolder -} - -func getAffinity(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) *v1.Affinity { - affinity := firstNonNilValue(m.Spec.Affinity, &v1.Affinity{}).(*v1.Affinity) - affinity = firstNonNilValue(nodeSpec.Affinity, affinity).(*v1.Affinity) - return affinity -} - -func setLivenessProbe(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) *v1.Probe { - probeType := "liveness" - livenessProbe := updateDefaultPortInProbe( - firstNonNilValue(nodeSpec.LivenessProbe, m.Spec.LivenessProbe).(*v1.Probe), - nodeSpec.DruidPort) - if livenessProbe == nil && m.Spec.DefaultProbes { - livenessProbe = setDefaultProbe(nodeSpec.DruidPort, nodeSpec.NodeType, probeType) - } - return livenessProbe -} - -func setReadinessProbe(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) *v1.Probe { - probeType := "readiness" - readinessProbe := updateDefaultPortInProbe( - firstNonNilValue(nodeSpec.ReadinessProbe, m.Spec.ReadinessProbe).(*v1.Probe), - nodeSpec.DruidPort) - if readinessProbe == nil && m.Spec.DefaultProbes { - readinessProbe = setDefaultProbe(nodeSpec.DruidPort, nodeSpec.NodeType, probeType) - } - return readinessProbe -} - -func setStartUpProbe(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) *v1.Probe { - probeType := "startup" - startUpProbe := updateDefaultPortInProbe( - firstNonNilValue(nodeSpec.StartUpProbe, m.Spec.StartUpProbe).(*v1.Probe), - nodeSpec.DruidPort) - if startUpProbe == nil && m.Spec.DefaultProbes { - startUpProbe = setDefaultProbe(nodeSpec.DruidPort, nodeSpec.NodeType, probeType) - } - return startUpProbe -} - -func getEnvFrom(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) []v1.EnvFromSource { - envFromHolder := firstNonNilValue(nodeSpec.EnvFrom, m.Spec.EnvFrom).([]v1.EnvFromSource) - return envFromHolder -} - -func getRollingUpdateStrategy(nodeSpec *v1alpha1.DruidNodeSpec) *appsv1.RollingUpdateDeployment { - var nil *int32 = nil - if nodeSpec.MaxSurge != nil || nodeSpec.MaxUnavailable != nil { - return &appsv1.RollingUpdateDeployment{ - MaxUnavailable: &intstr.IntOrString{ - IntVal: *nodeSpec.MaxUnavailable, - }, - MaxSurge: &intstr.IntOrString{ - IntVal: *nodeSpec.MaxSurge, - }, - } - } - return &appsv1.RollingUpdateDeployment{} - -} - -// makeStatefulSet shall create statefulset object. -func makeStatefulSet(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr, configMapSHA, serviceName string) (*appsv1.StatefulSet, error) { - - return &appsv1.StatefulSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "StatefulSet", - APIVersion: "apps/v1", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("%s", nodeSpecUniqueStr), - Annotations: makeAnnotationsForWorkload(nodeSpec, m), - Namespace: m.Namespace, - Labels: ls, - }, - Spec: makeStatefulSetSpec(nodeSpec, m, ls, nodeSpecUniqueStr, configMapSHA, serviceName), - }, nil -} - -func statefulSetIsEquals(obj1, obj2 object) bool { - - // This used to match replica counts, but was reverted to fix https://github.com/datainfrahq/druid-operator/issues/160 - // because it is legitimate for HPA to change replica counts and operator shouldn't reset those. - - return true -} - -// makeDeployment shall create deployment object. -func makeDeployment(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr, configMapSHA, serviceName string) (*appsv1.Deployment, error) { - return &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: "apps/v1", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("%s", nodeSpecUniqueStr), - Annotations: makeAnnotationsForWorkload(nodeSpec, m), - Namespace: m.Namespace, - Labels: ls, - }, - Spec: makeDeploymentSpec(nodeSpec, m, ls, nodeSpecUniqueStr, configMapSHA, serviceName), - }, nil -} - -func deploymentIsEquals(obj1, obj2 object) bool { - - // This used to match replica counts, but was reverted to fix https://github.com/datainfrahq/druid-operator/issues/160 - // because it is legitimate for HPA to change replica counts and operator shouldn't reset those. - - return true -} - -// makeStatefulSetSpec shall create statefulset spec for statefulsets. -func makeStatefulSetSpec(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecificUniqueString, configMapSHA, serviceName string) appsv1.StatefulSetSpec { - - updateStrategy := firstNonNilValue(m.Spec.UpdateStrategy, &appsv1.StatefulSetUpdateStrategy{}).(*appsv1.StatefulSetUpdateStrategy) - updateStrategy = firstNonNilValue(nodeSpec.UpdateStrategy, updateStrategy).(*appsv1.StatefulSetUpdateStrategy) - - stsSpec := appsv1.StatefulSetSpec{ - ServiceName: serviceName, - Selector: &metav1.LabelSelector{ - MatchLabels: ls, - }, - Replicas: &nodeSpec.Replicas, - PodManagementPolicy: appsv1.PodManagementPolicyType(firstNonEmptyStr(firstNonEmptyStr(string(nodeSpec.PodManagementPolicy), string(m.Spec.PodManagementPolicy)), string(appsv1.ParallelPodManagement))), - UpdateStrategy: *updateStrategy, - Template: makePodTemplate(nodeSpec, m, ls, nodeSpecificUniqueString, configMapSHA), - VolumeClaimTemplates: getPersistentVolumeClaim(nodeSpec, m), - } - - return stsSpec - -} - -// makeDeploymentSpec shall create deployment Spec for deployments. -func makeDeploymentSpec(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecificUniqueString, configMapSHA, serviceName string) appsv1.DeploymentSpec { - deploySpec := appsv1.DeploymentSpec{ - Selector: &metav1.LabelSelector{ - MatchLabels: ls, - }, - Replicas: &nodeSpec.Replicas, - Template: makePodTemplate(nodeSpec, m, ls, nodeSpecificUniqueString, configMapSHA), - Strategy: appsv1.DeploymentStrategy{ - Type: "RollingUpdate", - RollingUpdate: getRollingUpdateStrategy(nodeSpec), - }, - } - - return deploySpec -} - -// makePodTemplate shall create podTemplate common to both deployment and statefulset. -func makePodTemplate(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr, configMapSHA string) v1.PodTemplateSpec { - return v1.PodTemplateSpec{ - ObjectMeta: metav1.ObjectMeta{ - Labels: ls, - Annotations: firstNonNilValue(nodeSpec.PodAnnotations, m.Spec.PodAnnotations).(map[string]string), - }, - Spec: makePodSpec(nodeSpec, m, nodeSpecUniqueStr, configMapSHA), - } -} - -// makePodSpec shall create podSpec common to both deployment and statefulset. -func makePodSpec(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, nodeSpecUniqueStr, configMapSHA string) v1.PodSpec { - - mainContainer := v1.Container{ - Image: firstNonEmptyStr(nodeSpec.Image, m.Spec.Image), - Name: fmt.Sprintf("%s", nodeSpecUniqueStr), - Command: []string{firstNonEmptyStr(m.Spec.StartScript, "bin/run-druid.sh"), nodeSpec.NodeType}, - ImagePullPolicy: v1.PullPolicy(firstNonEmptyStr(string(nodeSpec.ImagePullPolicy), string(m.Spec.ImagePullPolicy))), - Ports: nodeSpec.Ports, - Resources: nodeSpec.Resources, - Env: getEnv(nodeSpec, m, configMapSHA), - EnvFrom: getEnvFrom(nodeSpec, m), - VolumeMounts: getVolumeMounts(nodeSpec, m), - LivenessProbe: setLivenessProbe(nodeSpec, m), - ReadinessProbe: setReadinessProbe(nodeSpec, m), - StartupProbe: setStartUpProbe(nodeSpec, m), - Lifecycle: nodeSpec.Lifecycle, - SecurityContext: firstNonNilValue(nodeSpec.ContainerSecurityContext, m.Spec.ContainerSecurityContext).(*v1.SecurityContext), - } - - spec := v1.PodSpec{ - NodeSelector: firstNonNilValue(nodeSpec.NodeSelector, m.Spec.NodeSelector).(map[string]string), - TopologySpreadConstraints: getTopologySpreadConstraints(nodeSpec), - Tolerations: getTolerations(nodeSpec, m), - Affinity: getAffinity(nodeSpec, m), - ImagePullSecrets: firstNonNilValue(nodeSpec.ImagePullSecrets, m.Spec.ImagePullSecrets).([]v1.LocalObjectReference), - Containers: []v1.Container{mainContainer}, - TerminationGracePeriodSeconds: nodeSpec.TerminationGracePeriodSeconds, - Volumes: getVolume(nodeSpec, m, nodeSpecUniqueStr), - SecurityContext: firstNonNilValue(nodeSpec.PodSecurityContext, m.Spec.PodSecurityContext).(*v1.PodSecurityContext), - ServiceAccountName: firstNonEmptyStr(nodeSpec.ServiceAccountName, m.Spec.ServiceAccount), - PriorityClassName: firstNonEmptyStr(nodeSpec.PriorityClassName, m.Spec.PriorityClassName), - DNSPolicy: v1.DNSPolicy(firstNonEmptyStr(string(nodeSpec.DNSPolicy), string(m.Spec.DNSPolicy))), - DNSConfig: firstNonNilValue(nodeSpec.DNSConfig, m.Spec.DNSConfig).(*v1.PodDNSConfig), - } - - addAdditionalContainers(m, nodeSpec, &spec) - - return spec -} - -func setDefaultProbe(defaultPort int32, nodeType string, probeType string) *v1.Probe { - probe := &v1.Probe{ - ProbeHandler: v1.ProbeHandler{ - HTTPGet: &v1.HTTPGetAction{ - Path: "/status/health", - Port: intstr.IntOrString{ - IntVal: defaultPort, - }, - }, - }, - InitialDelaySeconds: 5, - TimeoutSeconds: 5, - PeriodSeconds: 10, - SuccessThreshold: 1, - FailureThreshold: 10, - } - - if nodeType == historical && probeType != "liveness" { - probe.HTTPGet.Path = "/druid/historical/v1/readiness" - probe.FailureThreshold = 20 - } - if nodeType == broker && probeType != "liveness" { - probe.HTTPGet.Path = "/druid/broker/v1/readiness" - probe.FailureThreshold = 20 - } - - if nodeType == historical && probeType == "startup" { - probe.InitialDelaySeconds = 180 - probe.PeriodSeconds = 30 - probe.TimeoutSeconds = 10 - } - return probe -} - -func updateDefaultPortInProbe(probe *v1.Probe, defaultPort int32) *v1.Probe { - if probe != nil && probe.HTTPGet != nil && probe.HTTPGet.Port.IntVal == 0 && probe.HTTPGet.Port.StrVal == "" { - probe.HTTPGet.Port.IntVal = defaultPort - } - return probe -} - -func makePodDisruptionBudget(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr string) (*policyv1.PodDisruptionBudget, error) { - pdbSpec := *nodeSpec.PodDisruptionBudgetSpec - pdbSpec.Selector = &metav1.LabelSelector{MatchLabels: ls} - - pdb := &policyv1.PodDisruptionBudget{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "policy/v1", - Kind: "PodDisruptionBudget", - }, - - ObjectMeta: metav1.ObjectMeta{ - Name: nodeSpecUniqueStr, - Namespace: m.Namespace, - Labels: ls, - }, - - Spec: pdbSpec, - } - - return pdb, nil -} - -func makeHorizontalPodAutoscaler(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr string) (*autoscalev2.HorizontalPodAutoscaler, error) { - nodeHSpec := *nodeSpec.HPAutoScaler - - hpa := &autoscalev2.HorizontalPodAutoscaler{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "autoscaling/v2", - Kind: "HorizontalPodAutoscaler", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: nodeSpecUniqueStr, - Namespace: m.Namespace, - Labels: ls, - }, - Spec: nodeHSpec, - } - - return hpa, nil -} - -func makeIngress(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr string) (*networkingv1.Ingress, error) { - nodeIngressSpec := *nodeSpec.Ingress - - ingress := &networkingv1.Ingress{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "networking.k8s.io/v1", - Kind: "Ingress", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: nodeSpecUniqueStr, - Annotations: nodeSpec.IngressAnnotations, - Namespace: m.Namespace, - Labels: ls, - }, - Spec: nodeIngressSpec, - } - - return ingress, nil -} - -func makePersistentVolumeClaim(pvc *v1.PersistentVolumeClaim, nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, ls map[string]string, nodeSpecUniqueStr string) (*v1.PersistentVolumeClaim, error) { - - pvc.TypeMeta = metav1.TypeMeta{ - APIVersion: "v1", - Kind: "PersistentVolumeClaim", - } - - pvc.ObjectMeta.Namespace = m.Namespace - - if pvc.ObjectMeta.Labels == nil { - pvc.ObjectMeta.Labels = ls - } else { - for k, v := range ls { - pvc.ObjectMeta.Labels[k] = v - } - } - - if pvc.ObjectMeta.Name == "" { - pvc.ObjectMeta.Name = nodeSpecUniqueStr - } else { - for _, p := range nodeSpec.PersistentVolumeClaim { - pvc.ObjectMeta.Name = p.Name - pvc.Spec = p.Spec - } - - } - - return pvc, nil -} - -// makeLabelsForDruid returns the labels for selecting the resources -// belonging to the given Druid object. -func makeLabelsForDruid(druid *v1alpha1.Druid) map[string]string { - return map[string]string{"app": "druid", "druid_cr": druid.GetName()} -} - -// makeLabelsForDruid returns the labels for selecting the resources -// belonging to the given druid CR name. adds labels from both node & -// cluster specs. node spec labels will take precedence over clusters labels -func makeLabelsForNodeSpec(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid, clusterName, nodeSpecUniqueStr string) map[string]string { - var labels = map[string]string{} - - for k, v := range m.Spec.PodLabels { - labels[k] = v - } - - for k, v := range nodeSpec.PodLabels { - labels[k] = v - } - - labels["app"] = "druid" - labels["druid_cr"] = clusterName - labels["nodeSpecUniqueStr"] = nodeSpecUniqueStr - labels["component"] = nodeSpec.NodeType - return labels -} - -// makeAnnotationsForWorkload returns the annotations for a Deployment or StatefulSet -// If a given key is set in both the DruidSpec and DruidNodeSpec, the node-scoped value will take precedence. -func makeAnnotationsForWorkload(nodeSpec *v1alpha1.DruidNodeSpec, m *v1alpha1.Druid) map[string]string { - var annotations = map[string]string{} - - if m.Spec.WorkloadAnnotations != nil { - annotations = m.Spec.WorkloadAnnotations - } - - for k, v := range nodeSpec.WorkloadAnnotations { - annotations[k] = v - } - - return annotations -} - -// addOwnerRefToObject appends the desired OwnerReference to the object -func addOwnerRefToObject(obj metav1.Object, ownerRef metav1.OwnerReference) { - obj.SetOwnerReferences(append(obj.GetOwnerReferences(), ownerRef)) -} - -// asOwner returns an OwnerReference set as the druid CR -func asOwner(m *v1alpha1.Druid) metav1.OwnerReference { - trueVar := true - return metav1.OwnerReference{ - APIVersion: m.APIVersion, - Kind: m.Kind, - Name: m.Name, - UID: m.UID, - Controller: &trueVar, - } -} - -// getPodNames returns the pod names of the array of pods passed in -func getPodNames(pods []object) []string { - var podNames []string - for _, pod := range pods { - podNames = append(podNames, pod.(*v1.Pod).Name) - } - return podNames -} - -func sendEvent(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, eventtype, reason, message string) { - - ref := &v1.ObjectReference{ - Kind: drd.Kind, - APIVersion: drd.APIVersion, - Name: drd.Name, - Namespace: drd.Namespace, - UID: drd.UID, - ResourceVersion: drd.ResourceVersion, - } - - t := metav1.Now() - namespace := ref.Namespace - if namespace == "" { - namespace = metav1.NamespaceDefault - } - - event := &v1.Event{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "v1", - Kind: "Event", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("%v.%x", ref.Name, t.UnixNano()), - Namespace: namespace, - }, - InvolvedObject: *ref, - Reason: reason, - Message: message, - FirstTimestamp: t, - LastTimestamp: t, - Count: 1, - Type: eventtype, - Source: v1.EventSource{Component: "druid-operator"}, - } - - if err := sdk.Create(ctx, event); err != nil { - logger.Error(err, fmt.Sprintf("Failed to push event [%v]", event)) - } -} - -func verifyDruidSpec(drd *v1alpha1.Druid) error { - keyValidationRegex, err := regexp.Compile("[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*") - if err != nil { - return err - } - - if err = validateAdditionalContainersSpec(drd); err != nil { - return err - } - - if err = validateVolumeClaimTemplateSpec(drd); err != nil { - return err - } - - errorMsg := "" - for key, node := range drd.Spec.Nodes { - if drd.Spec.Image == "" && node.Image == "" { - errorMsg = fmt.Sprintf("%sImage missing from Druid Cluster Spec\n", errorMsg) - } - - if !keyValidationRegex.MatchString(key) { - errorMsg = fmt.Sprintf("%sNode[%s] Key must match k8s resource name regex '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'", errorMsg, key) - } - } - - if errorMsg == "" { - return nil - } else { - return fmt.Errorf(errorMsg) - } -} - -func namespacedName(name, namespace string) *types.NamespacedName { - return &types.NamespacedName{Name: name, Namespace: namespace} -} diff --git a/druid-operator/controllers/druid/handler_test.go b/druid-operator/controllers/druid/handler_test.go deleted file mode 100644 index 2548c492a1e5..000000000000 --- a/druid-operator/controllers/druid/handler_test.go +++ /dev/null @@ -1,372 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "io/ioutil" - "reflect" - "testing" - - "github.com/ghodss/yaml" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - policyv1 "k8s.io/api/policy/v1" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" -) - -// +kubebuilder:docs-gen:collapse=Imports - -// testHandler -var _ = Describe("Test handler", func() { - Context("When testing handler", func() { - It("should make statefulset for broker", func() { - By("By making statefulset for broker") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeStatefulSet(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr, "blah", nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(appsv1.StatefulSet) - err = readAndUnmarshallResource("testdata/broker-statefulset.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - It("should make statefulset for broker without default probe", func() { - By("By making statefulset for broker") - filePath := "testdata/druid-test-cr-noprobe.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeStatefulSet(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr, "blah", nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(appsv1.StatefulSet) - err = readAndUnmarshallResource("testdata/broker-statefulset-noprobe.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make statefulset for broker with sidecar", func() { - By("By making statefulset for broker with sidecar") - filePath := "testdata/druid-test-cr-sidecar.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeStatefulSet(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr, "blah", nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(appsv1.StatefulSet) - readAndUnmarshallResource("testdata/broker-statefulset-sidecar.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make deployment for broker", func() { - By("By making deployment for broker") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeDeployment(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr, "blah", nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(appsv1.Deployment) - readAndUnmarshallResource("testdata/broker-deployment.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make PDB for broker", func() { - By("By making PDB for broker") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makePodDisruptionBudget(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(policyv1.PodDisruptionBudget) - readAndUnmarshallResource("testdata/broker-pod-disruption-budget.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make headless service", func() { - By("By making headless service") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeService(&nodeSpec.Services[0], &nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(corev1.Service) - readAndUnmarshallResource("testdata/broker-headless-service.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make load balancer service", func() { - By("By making load balancer service") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeService(&nodeSpec.Services[1], &nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(corev1.Service) - readAndUnmarshallResource("testdata/broker-load-balancer-service.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make config map", func() { - By("By making config map") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - actual, _ := makeCommonConfigMap(ctx, k8sClient, clusterSpec, makeLabelsForDruid(clusterSpec)) - addHashToObject(actual) - - expected := new(corev1.ConfigMap) - readAndUnmarshallResource("testdata/common-config-map.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - It("should make broker config map", func() { - By("By making broker config map") - filePath := "testdata/druid-test-cr.yaml" - clusterSpec, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - - nodeSpecUniqueStr := makeNodeSpecificUniqueString(clusterSpec, "brokers") - nodeSpec := clusterSpec.Spec.Nodes["brokers"] - - actual, _ := makeConfigMapForNodeSpec(&nodeSpec, clusterSpec, makeLabelsForNodeSpec(&nodeSpec, clusterSpec, clusterSpec.Name, nodeSpecUniqueStr), nodeSpecUniqueStr) - addHashToObject(actual) - - expected := new(corev1.ConfigMap) - readAndUnmarshallResource("testdata/broker-config-map.yaml", &expected) - Expect(err).Should(BeNil()) - - Expect(actual).Should(Equal(expected)) - }) - - }) -}) - -func readDruidClusterSpecFromFile(filePath string) (*druidv1alpha1.Druid, error) { - clusterSpec := new(druidv1alpha1.Druid) - bytes, err := ioutil.ReadFile(filePath) - if err != nil { - return clusterSpec, err - } - - err = yaml.Unmarshal(bytes, &clusterSpec) - if err != nil { - return clusterSpec, err - } - return clusterSpec, nil -} - -func readAndUnmarshallResource(file string, res interface{}) error { - bytes, err := ioutil.ReadFile(file) - if err != nil { - return err - } - - err = yaml.Unmarshal(bytes, res) - if err != nil { - return err - } - return nil -} - -func TestPodSpecDNSConfig(t *testing.T) { - tests := []struct { - name string - nodeDNSConfig *corev1.PodDNSConfig - specDNSConfig *corev1.PodDNSConfig - expected *corev1.PodDNSConfig - }{ - { - name: "Both nil", - nodeDNSConfig: nil, - specDNSConfig: nil, - expected: nil, - }, - { - name: "Only spec provided", - nodeDNSConfig: nil, - specDNSConfig: &corev1.PodDNSConfig{ - Nameservers: []string{"8.8.8.8"}, - Searches: []string{"example.com"}, - }, - expected: &corev1.PodDNSConfig{ - Nameservers: []string{"8.8.8.8"}, - Searches: []string{"example.com"}, - }, - }, - { - name: "Only node provided", - nodeDNSConfig: &corev1.PodDNSConfig{ - Nameservers: []string{"1.1.1.1"}, - Searches: []string{"node.local"}, - }, - specDNSConfig: nil, - expected: &corev1.PodDNSConfig{ - Nameservers: []string{"1.1.1.1"}, - Searches: []string{"node.local"}, - }, - }, - { - name: "Both provided, node wins", - nodeDNSConfig: &corev1.PodDNSConfig{ - Nameservers: []string{"1.1.1.1"}, - Searches: []string{"node.local"}, - }, - specDNSConfig: &corev1.PodDNSConfig{ - Nameservers: []string{"8.8.8.8"}, - Searches: []string{"example.com"}, - }, - expected: &corev1.PodDNSConfig{ - Nameservers: []string{"1.1.1.1"}, - Searches: []string{"node.local"}, - }, - }, - } - - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - m := &druidv1alpha1.Druid{ - Spec: druidv1alpha1.DruidSpec{ - DNSConfig: tc.specDNSConfig, - }, - } - nodeSpec := &druidv1alpha1.DruidNodeSpec{ - DNSConfig: tc.nodeDNSConfig, - } - podSpec := makePodSpec(nodeSpec, m, "unique", "dummySHA") - if !reflect.DeepEqual(podSpec.DNSConfig, tc.expected) { - t.Errorf("expected DNSConfig %v, got %v", tc.expected, podSpec.DNSConfig) - } - }) - } -} - -func TestPodSpecDNSConfigYAML(t *testing.T) { - m, err := readDruidClusterSpecFromFile("testdata/druid-test-cr.yaml") - if err != nil { - t.Fatalf("failed to read cluster spec: %v", err) - } - nodeSpec := m.Spec.Nodes["middlemanagers"] - podSpec := makePodSpec(&nodeSpec, m, "unique", "dummySHA") - expectedDNSConfig := &corev1.PodDNSConfig{ - Nameservers: []string{"10.0.0.53"}, - Searches: []string{"example.local"}, - } - if !reflect.DeepEqual(podSpec.DNSConfig, expectedDNSConfig) { - t.Errorf("expected DNSConfig %v, got %v", expectedDNSConfig, podSpec.DNSConfig) - } -} - -// TestPodSpecDNSPolicy verifies DNSPolicy resolution in makePodSpec. -func TestPodSpecDNSPolicy(t *testing.T) { - tests := []struct { - name string - nodeDNS string - specDNS string - expected corev1.DNSPolicy - }{ - {"Both empty", "", "", corev1.DNSPolicy("")}, - {"Only spec provided", "", "ClusterFirst", corev1.DNSPolicy("ClusterFirst")}, - {"Only node provided", "Default", "", corev1.DNSPolicy("Default")}, - {"Both provided, node wins", "Default", "ClusterFirst", corev1.DNSPolicy("Default")}, - } - - for _, tc := range tests { - tc := tc // capture current test case - t.Run(tc.name, func(t *testing.T) { - m := &druidv1alpha1.Druid{ - Spec: druidv1alpha1.DruidSpec{ - DNSPolicy: corev1.DNSPolicy(tc.specDNS), - }, - } - nodeSpec := &druidv1alpha1.DruidNodeSpec{ - DNSPolicy: corev1.DNSPolicy(tc.nodeDNS), - } - podSpec := makePodSpec(nodeSpec, m, "unique", "dummySHA") - if podSpec.DNSPolicy != tc.expected { - t.Errorf("expected DNSPolicy %q, got %q", tc.expected, podSpec.DNSPolicy) - } - }) - } -} - -// TestPodSpecDNSPolicyYAML validates that the generated PodSpec DNSPolicy matches the expected value, -// using the druid-test-cr.yaml as the single input file. -func TestPodSpecDNSPolicyYAML(t *testing.T) { - m, err := readDruidClusterSpecFromFile("testdata/druid-test-cr.yaml") - if err != nil { - t.Fatalf("failed to read cluster spec: %v", err) - } - nodeSpec := m.Spec.Nodes["middlemanagers"] - podSpec := makePodSpec(&nodeSpec, m, "unique", "dummySHA") - expectedDNSPolicy := corev1.DNSPolicy("ClusterFirst") - if podSpec.DNSPolicy != expectedDNSPolicy { - t.Errorf("expected DNSPolicy %q, got %q", expectedDNSPolicy, podSpec.DNSPolicy) - } -} diff --git a/druid-operator/controllers/druid/interface.go b/druid-operator/controllers/druid/interface.go deleted file mode 100644 index b7639d3bef89..000000000000 --- a/druid-operator/controllers/druid/interface.go +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "fmt" - "reflect" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" - apierrors "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/tools/record" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -type DruidNodeStatus string - -const ( - resourceCreated DruidNodeStatus = "CREATED" - resourceUpdated DruidNodeStatus = "UPDATED" -) - -type druidEventReason string - -// Events emitted should be UpperCamelCaseFormat -// druidEventreason is the reason this event is generated. druidEventreason should be short and unique -const ( - rollingDeployWait druidEventReason = "DruidNodeRollingDeployWait" - druidOjectGetFail druidEventReason = "DruidOperatorGetFail" - druidNodeUpdateFail druidEventReason = "DruidOperatorUpdateFail" - druidNodeUpdateSuccess druidEventReason = "DruidOperatorUpdateSuccess" - druidNodeDeleteFail druidEventReason = "DruidOperatorDeleteFail" - druidNodeDeleteSuccess druidEventReason = "DruidOperatorDeleteSuccess" - druidNodeCreateSuccess druidEventReason = "DruidOperatorCreateSuccess" - druidNodeCreateFail druidEventReason = "DruidOperatorCreateFail" - druidNodePatchFail druidEventReason = "DruidOperatorPatchFail" - druidNodePatchSucess druidEventReason = "DruidOperatorPatchSuccess" - druidObjectListFail druidEventReason = "DruidOperatorListFail" - - druidFinalizerTriggered druidEventReason = "DruidOperatorFinalizerTriggered" - druidFinalizerFailed druidEventReason = "DruidFinalizerFailed" - druidFinalizerSuccess druidEventReason = "DruidFinalizerSuccess" - - druidGetRouterSvcUrlFailed druidEventReason = "DruidAPIGetRouterSvcUrlFailed" - druidGetAuthCredsFailed druidEventReason = "DruidAPIGetAuthCredsFailed" - druidFetchCurrentConfigsFailed druidEventReason = "DruidAPIFetchCurrentConfigsFailed" - druidConfigComparisonFailed druidEventReason = "DruidAPIConfigComparisonFailed" - druidUpdateConfigsFailed druidEventReason = "DruidAPIUpdateConfigsFailed" - druidUpdateConfigsSuccess druidEventReason = "DruidAPIUpdateConfigsSuccess" -) - -// Reader Interface -type Reader interface { - List(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, selectorLabels map[string]string, emitEvent EventEmitter, emptyListObjFn func() objectList, ListObjFn func(obj runtime.Object) []object) ([]object, error) - Get(ctx context.Context, sdk client.Client, nodeSpecUniqueStr string, drd *v1alpha1.Druid, emptyObjFn func() object, emitEvent EventEmitter) (object, error) -} - -// Writer Interface -type Writer interface { - Delete(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter, deleteOptions ...client.DeleteOption) error - Create(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter) (DruidNodeStatus, error) - Update(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter) (DruidNodeStatus, error) - Patch(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, status bool, patch client.Patch, emitEvent EventEmitter) error -} - -// EventEmitter Interface is a wrapper interface for all the emitter interface druid operator shall support. -// EventEmitter interface is initalized in druid_controller.go, reconcile method. The interface is passed as an arg to deployDruid(), handler.go -type EventEmitter interface { - K8sEventEmitter - GenericEventEmitter -} - -// GenericEventEmitter can be used for any case where the state change isn't handled by reader,writer or any custom event. -type GenericEventEmitter interface { - EmitEventGeneric(obj object, eventReason, msg string, err error) -} - -// Methods include an obj and k8s obj, obj is druid CR (runtime.Object) and k8s obj ( object interface ) -// K8sEventEmitter will also be displayed in logs of the operator. (only on state change) -// All methods are tied to reader,writer interfaces. Custom errors msg's and msg's are constructed within the methods and are not expected to change. -type K8sEventEmitter interface { - EmitEventRollingDeployWait(obj, k8sObj object, nodeSpecUniqueStr string) - EmitEventOnGetError(obj, getObj object, err error) - EmitEventOnUpdate(obj, updateObj object, err error) - EmitEventOnDelete(obj, deleteObj object, err error) - EmitEventOnCreate(obj, createObj object, err error) - EmitEventOnPatch(obj, patchObj object, err error) - EmitEventOnList(obj object, listObj objectList, err error) -} - -// Object Interface : Wrapper interface includes metav1 object and runtime object interface. -type object interface { - metav1.Object - runtime.Object -} - -// Object List Interface : Wrapper interface includes metav1 List and runtime object interface. -type objectList interface { - metav1.ListInterface - runtime.Object -} - -// WriterFuncs struct -type WriterFuncs struct{} - -// ReaderFuncs struct -type ReaderFuncs struct{} - -// EmitEventFuncs struct -type EmitEventFuncs struct { - record.EventRecorder -} - -// Initalizie Reader -var readers Reader = ReaderFuncs{} - -// Initalize Writer -var writers Writer = WriterFuncs{} - -// return k8s object type -// Deployment : *v1.Deployment -// StatefulSet: *v1.StatefulSet -func detectType(obj object) string { return reflect.TypeOf(obj).String() } - -// Patch method shall patch the status of Obj or the status. -// Pass status as true to patch the object status. -// NOTE: Not logging on patch success, it shall keep logging on each reconcile -func (f WriterFuncs) Patch(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, status bool, patch client.Patch, emitEvent EventEmitter) error { - - if !status { - if err := sdk.Patch(ctx, obj, patch); err != nil { - emitEvent.EmitEventOnPatch(drd, obj, err) - return err - } - } else { - if err := sdk.Status().Patch(ctx, obj, patch); err != nil { - emitEvent.EmitEventOnPatch(drd, obj, err) - return err - } - } - return nil -} - -// Update Func shall update the Object -func (f WriterFuncs) Update(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter) (DruidNodeStatus, error) { - - if err := sdk.Update(ctx, obj); err != nil { - emitEvent.EmitEventOnUpdate(drd, obj, err) - return "", err - } else { - emitEvent.EmitEventOnUpdate(drd, obj, nil) - return resourceUpdated, nil - } - -} - -// Create methods shall create an object, and returns a string, error -func (f WriterFuncs) Create(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter) (DruidNodeStatus, error) { - - if err := sdk.Create(ctx, obj); err != nil { - logger.Error(err, err.Error(), "object", stringifyForLogging(obj, drd), "name", drd.Name, "namespace", drd.Namespace, "errorType", apierrors.ReasonForError(err)) - emitEvent.EmitEventOnCreate(drd, obj, err) - return "", err - } else { - emitEvent.EmitEventOnCreate(drd, obj, nil) - return resourceCreated, nil - } - -} - -// Delete methods shall delete the object, deleteOptions is a variadic parameter to support various delete options such as cascade deletion. -func (f WriterFuncs) Delete(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, obj object, emitEvent EventEmitter, deleteOptions ...client.DeleteOption) error { - - if err := sdk.Delete(ctx, obj, deleteOptions...); err != nil { - emitEvent.EmitEventOnDelete(drd, obj, err) - return err - } else { - emitEvent.EmitEventOnDelete(drd, obj, err) - return nil - } -} - -// Get methods shall the get the object. -func (f ReaderFuncs) Get(ctx context.Context, sdk client.Client, nodeSpecUniqueStr string, drd *v1alpha1.Druid, emptyObjFn func() object, emitEvent EventEmitter) (object, error) { - obj := emptyObjFn() - - if err := sdk.Get(ctx, *namespacedName(nodeSpecUniqueStr, drd.Namespace), obj); err != nil { - emitEvent.EmitEventOnGetError(drd, obj, err) - return nil, err - } - return obj, nil -} - -// List methods shall return the list of an object -func (f ReaderFuncs) List(ctx context.Context, sdk client.Client, drd *v1alpha1.Druid, selectorLabels map[string]string, emitEvent EventEmitter, emptyListObjFn func() objectList, ListObjFn func(obj runtime.Object) []object) ([]object, error) { - listOpts := []client.ListOption{ - client.InNamespace(drd.Namespace), - client.MatchingLabels(selectorLabels), - } - listObj := emptyListObjFn() - - if err := sdk.List(ctx, listObj, listOpts...); err != nil { - emitEvent.EmitEventOnList(drd, listObj, err) - return nil, err - } - - return ListObjFn(listObj), nil -} - -// EmitEventRollingDeployWait shall emit an event when the current state of a druid node is rolling deploy -func (e EmitEventFuncs) EmitEventRollingDeployWait(obj, k8sObj object, nodeSpecUniqueStr string) { - if detectType(k8sObj) == "*v1.StatefulSet" { - msg := fmt.Sprintf("StatefulSet[%s] roll out is in progress CurrentRevision[%s] != UpdateRevision[%s]", nodeSpecUniqueStr, k8sObj.(*appsv1.StatefulSet).Status.CurrentRevision, k8sObj.(*appsv1.StatefulSet).Status.UpdateRevision) - e.Event(obj, v1.EventTypeNormal, string(rollingDeployWait), msg) - } else if detectType(k8sObj) == "*v1.Deployment" { - msg := fmt.Sprintf("Deployment[%s] roll out is in progress in namespace [%s], ReadyReplicas [%d] != Current Replicas [%d]", k8sObj.(*appsv1.Deployment).Name, k8sObj.GetNamespace(), k8sObj.(*appsv1.Deployment).Status.ReadyReplicas, k8sObj.(*appsv1.Deployment).Status.Replicas) - e.Event(obj, v1.EventTypeNormal, string(rollingDeployWait), msg) - } -} - -// EmitEventGeneric shall emit a generic event -func (e EmitEventFuncs) EmitEventGeneric(obj object, eventReason, msg string, err error) { - if err != nil { - e.Event(obj, v1.EventTypeWarning, eventReason, err.Error()) - } else if msg != "" { - e.Event(obj, v1.EventTypeNormal, eventReason, msg) - - } -} - -// EmitEventOnGetError shall emit event on GET err operation -func (e EmitEventFuncs) EmitEventOnGetError(obj, getObj object, err error) { - getErr := fmt.Errorf("Failed to get [Object:%s] due to [%s]", getObj.GetName(), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidOjectGetFail), getErr.Error()) -} - -// EmitEventOnList shall emit event on LIST err operation -func (e EmitEventFuncs) EmitEventOnList(obj object, listObj objectList, err error) { - if err != nil { - errMsg := fmt.Errorf("Error listing object [%s] in namespace [%s] due to [%s]", listObj.GetObjectKind().GroupVersionKind().Kind, obj.GetNamespace(), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidObjectListFail), errMsg.Error()) - } -} - -// EmitEventOnUpdate shall emit event on UPDATE operation -func (e EmitEventFuncs) EmitEventOnUpdate(obj, updateObj object, err error) { - if err != nil { - errMsg := fmt.Errorf("Failed to update [%s:%s] due to [%s].", updateObj.GetName(), detectType(updateObj), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidNodeUpdateFail), errMsg.Error()) - } else { - msg := fmt.Sprintf("Updated [%s:%s].", updateObj.GetName(), detectType(updateObj)) - e.Event(obj, v1.EventTypeNormal, string(druidNodeUpdateSuccess), msg) - } -} - -// EmitEventOnDelete shall emit event on DELETE operation -func (e EmitEventFuncs) EmitEventOnDelete(obj, deleteObj object, err error) { - if err != nil { - errMsg := fmt.Errorf("Error deleting object [%s:%s] in namespace [%s] due to [%s]", detectType(deleteObj), deleteObj.GetName(), deleteObj.GetNamespace(), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidNodeDeleteFail), errMsg.Error()) - } else { - msg := fmt.Sprintf("Successfully deleted object [%s:%s] in namespace [%s]", deleteObj.GetName(), detectType(deleteObj), deleteObj.GetNamespace()) - e.Event(obj, v1.EventTypeNormal, string(druidNodeDeleteSuccess), msg) - } -} - -// EmitEventOnCreate shall emit event on CREATE operation -func (e EmitEventFuncs) EmitEventOnCreate(obj, createObj object, err error) { - if err != nil { - errMsg := fmt.Errorf("Error creating object [%s] in namespace [%s:%s] due to [%s]", createObj.GetName(), detectType(createObj), createObj.GetNamespace(), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidNodeCreateFail), errMsg.Error()) - } else { - msg := fmt.Sprintf("Successfully created object [%s:%s] in namespace [%s]", createObj.GetName(), detectType(createObj), createObj.GetNamespace()) - e.Event(obj, v1.EventTypeNormal, string(druidNodeCreateSuccess), msg) - } -} - -// EmitEventOnPatch shall emit event on PATCH operation -func (e EmitEventFuncs) EmitEventOnPatch(obj, patchObj object, err error) { - if err != nil { - errMsg := fmt.Errorf("Error patching object [%s:%s] in namespace [%s] due to [%s]", patchObj.GetName(), detectType(patchObj), patchObj.GetNamespace(), err.Error()) - e.Event(obj, v1.EventTypeWarning, string(druidNodePatchFail), errMsg.Error()) - } else { - msg := fmt.Sprintf("Successfully patched object [%s:%s] in namespace [%s]", patchObj.GetName(), detectType(patchObj), patchObj.GetNamespace()) - e.Event(obj, v1.EventTypeNormal, string(druidNodePatchSucess), msg) - } -} diff --git a/druid-operator/controllers/druid/metadata_store_dep_mgmt.go b/druid-operator/controllers/druid/metadata_store_dep_mgmt.go deleted file mode 100644 index e8eda8f1b746..000000000000 --- a/druid-operator/controllers/druid/metadata_store_dep_mgmt.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - "github.com/datainfrahq/druid-operator/controllers/druid/ext" -) - -var metadataStoreExtTypes = map[string]reflect.Type{} - -func init() { - metadataStoreExtTypes["default"] = reflect.TypeOf(ext.DefaultMetadataStoreManager{}) -} - -// We might have to add more methods to this interface to enable extensions that completely manage -// deploy, upgrade and termination of metadata store. -type metadataStoreManager interface { - Configuration() string -} - -func createMetadataStoreManager(spec *v1alpha1.MetadataStoreSpec) (metadataStoreManager, error) { - if t, ok := metadataStoreExtTypes[spec.Type]; ok { - v := reflect.New(t).Interface() - if err := json.Unmarshal(spec.Spec, v); err != nil { - return nil, fmt.Errorf("Couldn't unmarshall metadataStore type[%s]. Error[%s].", spec.Type, err.Error()) - } else { - return v.(metadataStoreManager), nil - } - } else { - return nil, fmt.Errorf("Can't find type[%s] for MetadataStore Mgmt.", spec.Type) - } -} diff --git a/druid-operator/controllers/druid/ordering.go b/druid-operator/controllers/druid/ordering.go deleted file mode 100644 index 2787d9eb3688..000000000000 --- a/druid-operator/controllers/druid/ordering.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - -var ( - druidServicesOrder = []string{historical, overlord, middleManager, indexer, broker, coordinator, router} -) - -type ServiceGroup struct { - key string - spec v1alpha1.DruidNodeSpec -} - -// getNodeSpecsByOrder returns all NodeSpecs f a given Druid object. -// Recommended order is described at http://druid.io/docs/latest/operations/rolling-updates.html -func getNodeSpecsByOrder(m *v1alpha1.Druid) []*ServiceGroup { - - scaledServiceSpecsByNodeType := map[string][]*ServiceGroup{} - for _, t := range druidServicesOrder { - scaledServiceSpecsByNodeType[t] = []*ServiceGroup{} - } - - for key, nodeSpec := range m.Spec.Nodes { - scaledServiceSpec := scaledServiceSpecsByNodeType[nodeSpec.NodeType] - scaledServiceSpecsByNodeType[nodeSpec.NodeType] = append(scaledServiceSpec, &ServiceGroup{key: key, spec: nodeSpec}) - } - - allScaledServiceSpecs := make([]*ServiceGroup, 0, len(m.Spec.Nodes)) - - for _, t := range druidServicesOrder { - allScaledServiceSpecs = append(allScaledServiceSpecs, scaledServiceSpecsByNodeType[t]...) - } - - return allScaledServiceSpecs -} diff --git a/druid-operator/controllers/druid/ordering_test.go b/druid-operator/controllers/druid/ordering_test.go deleted file mode 100644 index 8ee1d9a2ebd4..000000000000 --- a/druid-operator/controllers/druid/ordering_test.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "time" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "k8s.io/apimachinery/pkg/types" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -ordering_test -*/ -var _ = Describe("Test ordering logic", func() { - const ( - filePath = "testdata/ordering.yaml" - timeout = time.Second * 45 - interval = time.Millisecond * 250 - ) - - var ( - druid = &druidv1alpha1.Druid{} - ) - - Context("When creating a druid cluster with multiple nodes", func() { - It("Should create the druid object", func() { - By("Creating a new druid") - druidCR, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - By("Getting a newly created druid") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - }) - It("Should return an ordered list of nodes", func() { - orderedServiceGroups := getNodeSpecsByOrder(druid) - Expect(orderedServiceGroups[0].key).Should(MatchRegexp("historicals")) - Expect(orderedServiceGroups[1].key).Should(MatchRegexp("historicals")) - Expect(orderedServiceGroups[2].key).Should(Equal("overlords")) - Expect(orderedServiceGroups[3].key).Should(Equal("middle-managers")) - Expect(orderedServiceGroups[4].key).Should(Equal("indexers")) - Expect(orderedServiceGroups[5].key).Should(Equal("brokers")) - Expect(orderedServiceGroups[6].key).Should(Equal("coordinators")) - Expect(orderedServiceGroups[7].key).Should(Equal("routers")) - }) - }) -}) diff --git a/druid-operator/controllers/druid/predicates.go b/druid-operator/controllers/druid/predicates.go deleted file mode 100644 index c654431ae678..000000000000 --- a/druid-operator/controllers/druid/predicates.go +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "fmt" - - "sigs.k8s.io/controller-runtime/pkg/event" - "sigs.k8s.io/controller-runtime/pkg/predicate" -) - -// All methods to implement GenericPredicates type -// GenericPredicates to be passed to manager -type GenericPredicates struct { - predicate.Funcs -} - -// create() to filter create events -func (GenericPredicates) Create(e event.CreateEvent) bool { - return IgnoreNamespacePredicate(e.Object) && IgnoreIgnoredObjectPredicate(e.Object) -} - -// update() to filter update events -func (GenericPredicates) Update(e event.UpdateEvent) bool { - return IgnoreNamespacePredicate(e.ObjectNew) && IgnoreIgnoredObjectPredicate(e.ObjectNew) -} - -func IgnoreNamespacePredicate(obj object) bool { - namespaces := getEnvAsSlice("DENY_LIST", nil, ",") - - for _, namespace := range namespaces { - if obj.GetNamespace() == namespace { - msg := fmt.Sprintf("druid operator will not re-concile namespace [%s], alter DENY_LIST to re-concile", obj.GetNamespace()) - logger.Info(msg) - return false - } - } - return true -} - -func IgnoreIgnoredObjectPredicate(obj object) bool { - if ignoredStatus := obj.GetAnnotations()[ignoredAnnotation]; ignoredStatus == "true" { - msg := fmt.Sprintf("druid operator will not re-concile ignored Druid [%s], removed annotation to re-concile", obj.GetName()) - logger.Info(msg) - return false - } - return true -} diff --git a/druid-operator/controllers/druid/status.go b/druid-operator/controllers/druid/status.go deleted file mode 100644 index e31c8292eafb..000000000000 --- a/druid-operator/controllers/druid/status.go +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "encoding/json" - "fmt" - "reflect" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -// constructor to DruidNodeTypeStatus status -// handles error -func newDruidNodeTypeStatus( - nodeConditionStatus v1.ConditionStatus, - nodeCondition v1alpha1.DruidNodeConditionType, - nodeTierOrType string, - err error) *v1alpha1.DruidNodeTypeStatus { - - var reason string - - if nodeCondition == v1alpha1.DruidClusterReady { - nodeTierOrType = "All" - reason = "All Druid Nodes are in Ready Condition" - } else if nodeCondition == v1alpha1.DruidNodeRollingUpdate { - reason = "Druid Node [" + nodeTierOrType + "] is Rolling Update" - } else if err != nil { - reason = err.Error() - nodeCondition = v1alpha1.DruidNodeErrorState - } - - return &v1alpha1.DruidNodeTypeStatus{ - DruidNode: nodeTierOrType, - DruidNodeConditionStatus: nodeConditionStatus, - DruidNodeConditionType: nodeCondition, - Reason: reason, - } - -} - -// wrapper to patch druid cluster status -func druidClusterStatusPatcher(ctx context.Context, sdk client.Client, updatedStatus v1alpha1.DruidClusterStatus, m *v1alpha1.Druid, emitEvent EventEmitter) error { - - if !reflect.DeepEqual(updatedStatus, m.Status) { - patchBytes, err := json.Marshal(map[string]v1alpha1.DruidClusterStatus{"status": updatedStatus}) - if err != nil { - return fmt.Errorf("failed to serialize status patch to bytes: %v", err) - } - _ = writers.Patch(ctx, sdk, m, m, true, client.RawPatch(types.MergePatchType, patchBytes), emitEvent) - } - return nil -} - -// In case of state change, patch the status and emit event. -// emit events only on state change, to avoid event pollution. -func druidNodeConditionStatusPatch(ctx context.Context, - updatedStatus v1alpha1.DruidClusterStatus, - sdk client.Client, - nodeSpecUniqueStr string, - m *v1alpha1.Druid, - emitEvent EventEmitter, - emptyObjFn func() object) (err error) { - - if !reflect.DeepEqual(updatedStatus.DruidNodeStatus, m.Status.DruidNodeStatus) { - - err = druidClusterStatusPatcher(ctx, sdk, updatedStatus, m, emitEvent) - if err != nil { - return err - } - - obj, err := readers.Get(ctx, sdk, nodeSpecUniqueStr, m, emptyObjFn, emitEvent) - if err != nil { - return err - } - - emitEvent.EmitEventRollingDeployWait(m, obj, nodeSpecUniqueStr) - - return nil - - } - return nil -} diff --git a/druid-operator/controllers/druid/suite_test.go b/druid-operator/controllers/druid/suite_test.go deleted file mode 100644 index 2cf48580c7cc..000000000000 --- a/druid-operator/controllers/druid/suite_test.go +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// +kubebuilder:docs-gen:collapse=Apache License - -package druid - -import ( - "context" - "path/filepath" - "testing" - - ctrl "sigs.k8s.io/controller-runtime" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/envtest" - "sigs.k8s.io/controller-runtime/pkg/log/zap" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - //+kubebuilder:scaffold:imports -) - -// These tests use Ginkgo (BDD-style Go testing framework). Refer to -// http://onsi.github.io/ginkgo/ to learn more about Ginkgo. - -// +kubebuilder:docs-gen:collapse=Imports - -// Now, let's go through the code generated. - -var ( - cfg *rest.Config - k8sClient client.Client // You'll be using this client in your tests. - testEnv *envtest.Environment - ctx context.Context - cancel context.CancelFunc - emitEvent EventEmitter -) - -func TestAPIs(t *testing.T) { - RegisterFailHandler(Fail) - - RunSpecs(t, "Controller Suite") -} - -var _ = BeforeSuite(func() { - ctrl.SetLogger(zap.New()) - - ctx, cancel = context.WithCancel(context.TODO()) - - /* - First, the envtest cluster is configured to read CRDs from the CRD directory Kubebuilder scaffolds for you. - */ - By("bootstrapping test environment") - testEnv = &envtest.Environment{ - CRDInstallOptions: envtest.CRDInstallOptions{ - Paths: []string{filepath.Join("..", "..", "config", "crd", "bases")}, - }, - ErrorIfCRDPathMissing: true, - } - - // Then, we start the envtest cluster. - var err error - // cfg is defined in this file globally. - cfg, err = testEnv.Start() - Expect(err).NotTo(HaveOccurred()) - Expect(cfg).NotTo(BeNil()) - - err = druidv1alpha1.AddToScheme(scheme.Scheme) - Expect(err).NotTo(HaveOccurred()) - /* - After the schemas, you will see the following marker. - This marker is what allows new schemas to be added here automatically when a new API is added to the project. - */ - - //+kubebuilder:scaffold:scheme - - // A client is created for our test CRUD operations. - k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) - Expect(err).NotTo(HaveOccurred()) - Expect(k8sClient).NotTo(BeNil()) - - k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{ - Scheme: scheme.Scheme, - }) - Expect(err).ToNot(HaveOccurred()) - - err = (&DruidReconciler{ - Client: k8sManager.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("Druid"), - Scheme: k8sManager.GetScheme(), - ReconcileWait: LookupReconcileTime(), - Recorder: k8sManager.GetEventRecorderFor("druid-operator"), - }).SetupWithManager(k8sManager) - Expect(err).ToNot(HaveOccurred()) - - emitEvent = EmitEventFuncs{k8sManager.GetEventRecorderFor("druid-operator")} - - go func() { - defer GinkgoRecover() - err = k8sManager.Start(ctx) - Expect(err).ToNot(HaveOccurred(), "failed to run manager") - }() - -}) - -/* -Kubebuilder also generates boilerplate functions for cleaning up envtest and actually running your test files in your controllers/ directory. -You won't need to touch these. -*/ - -var _ = AfterSuite(func() { - cancel() - By("tearing down the test environment") - err := testEnv.Stop() - Expect(err).NotTo(HaveOccurred()) -}) diff --git a/druid-operator/controllers/druid/testdata/additional-containers.yaml b/druid-operator/controllers/druid/testdata/additional-containers.yaml deleted file mode 100644 index ddb4654b8faa..000000000000 --- a/druid-operator/controllers/druid/testdata/additional-containers.yaml +++ /dev/null @@ -1,90 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: additional-containers - namespace: default -spec: - image: apache/druid:25.0.0 - startScript: /druid.sh - rollingDeploy: false - additionalContainer: - - command: - - /bin/sh echo hello - containerName: cluster-level - image: hello-world - securityContext: - fsGroup: 1000 - runAsUser: 1000 - runAsGroup: 1000 - services: - - spec: - type: ClusterIP - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Djava.io.tmpdir=/druid/data - common.runtime.properties: |- - # Metadata Store - druid.metadata.storage.type=derby - druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true - druid.metadata.storage.connector.host=localhost - druid.metadata.storage.connector.port=1527 - druid.metadata.storage.connector.createTables=true - - # Deep Storage - druid.storage.type=local - druid.storage.storageDirectory=/druid/deepstorage - - # Service discovery - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - nodes: - brokers: - nodeType: "broker" - kind: "Deployment" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 1 - runtime.properties: |- - druid.service=druid/broker - additionalContainer: - - command: - - /bin/sh echo hello - containerName: node-level - image: hello-world - coordinators: - nodeType: "coordinator" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" - replicas: 1 - runtime.properties: |- - druid.service=druid/coordinator - druid.coordinator.asOverlord.enabled=true - druid.coordinator.asOverlord.overlordService=druid/overlord - historicals: - nodeType: "historical" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: |- - druid.service=druid/historical - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 diff --git a/druid-operator/controllers/druid/testdata/broker-config-map.yaml b/druid-operator/controllers/druid/testdata/broker-config-map.yaml deleted file mode 100644 index 35e1e8d55c8e..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-config-map.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -data: - jvm.config: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Dlog4j.debug - -XX:+ExitOnOutOfMemoryError - -XX:+HeapDumpOnOutOfMemoryError - -XX:+UseG1GC - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager - -Xmx1G - -Xms1G - log4j2.xml: |- - - - - - - - - - - - - - - runtime.properties: |- - druid.port=8080 - druid.service=druid/broker - - # HTTP server threads - druid.broker.http.numConnections=5 - druid.server.http.numThreads=25 - - # Processing threads and buffers - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 -kind: ConfigMap -metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - name: druid-druid-test-brokers-config - namespace: test-namespace - annotations: - druidOpResourceHash: O3jmICgrTjJkMBlGlE05W7dGhA0= diff --git a/druid-operator/controllers/druid/testdata/broker-deployment.yaml b/druid-operator/controllers/druid/testdata/broker-deployment.yaml deleted file mode 100644 index 766399b2a0ba..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-deployment.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: druid-druid-test-brokers - namespace: test-namespace - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - druidOpResourceHash: nQv/LmxctTSRsI5dtBe3jvN5WM8= - kubernetes.io/cluster-scoped-annotation: "cluster" - kubernetes.io/node-scoped-annotation: "broker" - kubernetes.io/override-annotation: "node-scoped-annotation" -spec: - replicas: 2 - selector: - matchLabels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - strategy: - rollingUpdate: {} - type: RollingUpdate - template: - metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - key1: value1 - key2: value2 - spec: - tolerations: [] - affinity: {} - priorityClassName: high-priority - containers: - - command: - - bin/run-druid.sh - - broker - image: himanshu01/druid:druid-0.12.0-1 - name: druid-druid-test-brokers - env: - - name: configMapSHA - value: blah - ports: - - containerPort: 8083 - name: random - readinessProbe: - httpGet: - path: /status - port: 8080 - livenessProbe: - httpGet: - path: /status - port: 8080 - startupProbe: - failureThreshold: 20 - httpGet: - path: /druid/broker/v1/readiness - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - resources: - limits: - cpu: "4" - memory: 2Gi - requests: - cpu: "4" - memory: 2Gi - volumeMounts: - - mountPath: /druid/conf/druid/_common - readOnly: true - name: common-config-volume - - mountPath: /druid/conf/druid/broker - readOnly: true - name: nodetype-config-volume - - mountPath: /druid/data - readOnly: true - name: data-volume - securityContext: - fsGroup: 107 - runAsUser: 106 - volumes: - - configMap: - name: druid-test-druid-common-config - name: common-config-volume - - configMap: - name: druid-druid-test-brokers-config - name: nodetype-config-volume diff --git a/druid-operator/controllers/druid/testdata/broker-headless-service.yaml b/druid-operator/controllers/druid/testdata/broker-headless-service.yaml deleted file mode 100644 index 5a6c292a3b2b..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-headless-service.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -kind: Service -metadata: - annotations: - druidOpResourceHash: 5zzzIiXTlupyCeyb/P8llEZN1Ag= - creationTimestamp: null - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - name: druid-druid-test-brokers - namespace: test-namespace -spec: - clusterIP: None - ports: - - name: service-port - port: 8080 - targetPort: 8080 - selector: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - type: ClusterIP -status: - loadBalancer: {} diff --git a/druid-operator/controllers/druid/testdata/broker-load-balancer-service.yaml b/druid-operator/controllers/druid/testdata/broker-load-balancer-service.yaml deleted file mode 100644 index fe09bfa6307d..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-load-balancer-service.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -kind: Service -metadata: - annotations: - service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 - druidOpResourceHash: vQE/6DfWCQnWFVvW3KxfOLBfdlA= - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - name: broker-druid-druid-test-brokers-service - namespace: test-namespace -spec: - ports: - - name: service-port - port: 8090 - targetPort: 8080 - selector: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - type: LoadBalancer diff --git a/druid-operator/controllers/druid/testdata/broker-pod-disruption-budget.yaml b/druid-operator/controllers/druid/testdata/broker-pod-disruption-budget.yaml deleted file mode 100644 index 6507495b5237..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-pod-disruption-budget.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - name: druid-druid-test-brokers - namespace: test-namespace - annotations: - druidOpResourceHash: DmYcIjqpkJs9KWZ/tfHgHPBJ/wo= -spec: - maxUnavailable: 1 - selector: - matchLabels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker diff --git a/druid-operator/controllers/druid/testdata/broker-statefulset-noprobe.yaml b/druid-operator/controllers/druid/testdata/broker-statefulset-noprobe.yaml deleted file mode 100644 index d093ae4042fd..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-statefulset-noprobe.yaml +++ /dev/null @@ -1,103 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: druid-druid-test-brokers - namespace: test-namespace - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - druidOpResourceHash: SfMSTxw3YZTBJP0JKsd5ZBiGgkI= -spec: - podManagementPolicy: Parallel - replicas: 2 - selector: - matchLabels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - serviceName: druid-druid-test-brokers - template: - metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - key1: value1 - key2: value2 - spec: - tolerations: [] - affinity: {} - containers: - - command: - - bin/run-druid.sh - - broker - image: himanshu01/druid:druid-0.12.0-1 - name: druid-druid-test-brokers - env: - - name: configMapSHA - value: blah - ports: - - containerPort: 8083 - name: random - readinessProbe: - httpGet: - path: /status - port: 8080 - resources: - limits: - cpu: "4" - memory: 2Gi - requests: - cpu: "4" - memory: 2Gi - volumeMounts: - - mountPath: /druid/conf/druid/_common - readOnly: true - name: common-config-volume - - mountPath: /druid/conf/druid/broker - readOnly: true - name: nodetype-config-volume - - mountPath: /druid/data - readOnly: true - name: data-volume - securityContext: - fsGroup: 107 - runAsUser: 106 - volumes: - - configMap: - name: druid-test-druid-common-config - name: common-config-volume - - configMap: - name: druid-druid-test-brokers-config - name: nodetype-config-volume - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 diff --git a/druid-operator/controllers/druid/testdata/broker-statefulset-sidecar.yaml b/druid-operator/controllers/druid/testdata/broker-statefulset-sidecar.yaml deleted file mode 100644 index e2e64deb692d..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-statefulset-sidecar.yaml +++ /dev/null @@ -1,143 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -EOF < /dev/nullapiVersion: apps/v1 -kind: StatefulSet -metadata: - name: druid-druid-test-brokers - namespace: test-namespace - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - druidOpResourceHash: Q+HvxwhK3mmgnAm97GEQpeWbDv0= -spec: - podManagementPolicy: Parallel - replicas: 2 - selector: - matchLabels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - serviceName: druid-druid-test-brokers - template: - metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - key1: value1 - key2: value2 - spec: - tolerations: [] - affinity: {} - containers: - - command: - - bin/run-druid.sh - - broker - image: apache/druid:0.22.1 - name: druid-druid-test-brokers - env: - - name: configMapSHA - value: blah - ports: - - containerPort: 8083 - name: random - readinessProbe: - httpGet: - path: /status - port: 8080 - livenessProbe: - httpGet: - path: /status - port: 8080 - startupProbe: - failureThreshold: 20 - httpGet: - path: /druid/broker/v1/readiness - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - resources: - limits: - cpu: "4" - memory: 2Gi - requests: - cpu: "4" - memory: 2Gi - volumeMounts: - - mountPath: /druid/conf/druid/_common - readOnly: true - name: common-config-volume - - mountPath: /druid/conf/druid/broker - readOnly: true - name: nodetype-config-volume - - mountPath: /druid/data - readOnly: true - name: data-volume - - command: - - /bin/sidekick - image: universalforwarder-sidekick:next - name: forwarder - resources: - requests: - memory: "1Gi" - cpu: "500m" - limits: - memory: "1Gi" - cpu: "500m" - args: - - -loggingEnabled=true - - -dataCenter=dataCenter - - -environment=environment - - -application=application - - -instance=instance - - -logFiles=logFiles - securityContext: - runAsUser: 506 - imagePullPolicy: Always - volumeMounts: - - name: logstore - mountPath: /logstore - env: - - name: SAMPLE_ENV - value: SAMPLE_VALUE - securityContext: - fsGroup: 107 - runAsUser: 106 - volumes: - - configMap: - name: druid-test-druid-common-config - name: common-config-volume - - configMap: - name: druid-druid-test-brokers-config - name: nodetype-config-volume - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 diff --git a/druid-operator/controllers/druid/testdata/broker-statefulset.yaml b/druid-operator/controllers/druid/testdata/broker-statefulset.yaml deleted file mode 100644 index 15d23ef4a60a..000000000000 --- a/druid-operator/controllers/druid/testdata/broker-statefulset.yaml +++ /dev/null @@ -1,120 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: druid-druid-test-brokers - namespace: test-namespace - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - druidOpResourceHash: LXsKmbxQkX+94LkevlKDy4wemRQ= - kubernetes.io/cluster-scoped-annotation: "cluster" - kubernetes.io/node-scoped-annotation: "broker" - kubernetes.io/override-annotation: "node-scoped-annotation" -spec: - podManagementPolicy: Parallel - replicas: 2 - selector: - matchLabels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - serviceName: druid-druid-test-brokers - template: - metadata: - labels: - app: druid - druid_cr: druid-test - nodeSpecUniqueStr: druid-druid-test-brokers - component: broker - annotations: - key1: value1 - key2: value2 - spec: - tolerations: [] - affinity: {} - priorityClassName: high-priority - containers: - - command: - - bin/run-druid.sh - - broker - image: himanshu01/druid:druid-0.12.0-1 - name: druid-druid-test-brokers - env: - - name: configMapSHA - value: blah - ports: - - containerPort: 8083 - name: random - readinessProbe: - httpGet: - path: /status - port: 8080 - livenessProbe: - httpGet: - path: /status - port: 8080 - startupProbe: - failureThreshold: 20 - httpGet: - path: /druid/broker/v1/readiness - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - resources: - limits: - cpu: "4" - memory: 2Gi - requests: - cpu: "4" - memory: 2Gi - volumeMounts: - - mountPath: /druid/conf/druid/_common - readOnly: true - name: common-config-volume - - mountPath: /druid/conf/druid/broker - readOnly: true - name: nodetype-config-volume - - mountPath: /druid/data - readOnly: true - name: data-volume - securityContext: - fsGroup: 107 - runAsUser: 106 - volumes: - - configMap: - name: druid-test-druid-common-config - name: common-config-volume - - configMap: - name: druid-druid-test-brokers-config - name: nodetype-config-volume - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 diff --git a/druid-operator/controllers/druid/testdata/common-config-map.yaml b/druid-operator/controllers/druid/testdata/common-config-map.yaml deleted file mode 100644 index 039cfdb44f7a..000000000000 --- a/druid-operator/controllers/druid/testdata/common-config-map.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: v1 -data: - common.runtime.properties: | - # - # Extensions - # - druid.extensions.loadList=["druid-datasketches", "druid-s3-extensions", "postgresql-metadata-storage"] - - # - # Logging - # - # Log all runtime properties on startup. Disable to avoid logging properties on startup: - druid.startup.logging.logProperties=true - - # - # Indexing service logs - # - # Store indexing logs in an S3 bucket named 'druid-deep-storage' with the - # prefix 'druid/indexing-logs' - druid.indexer.logs.type=s3 - druid.indexer.logs.s3Bucket=mybucket - druid.indexer.logs.s3Prefix=druid/indexing-logs - - # - # Service discovery - # - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - - # - # Monitoring - # - druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"] - druid.emitter=logging - druid.emitter.logging.logLevel=info - - # Storage type of double columns - # ommiting this will lead to index double as float at the storage layer - druid.indexing.doubleStorage=double - druid.zk.service.host=zookeeper-0.zookeeper,zookeeper-1.zookeeper,zookeeper-2.zookeeper - druid.zk.paths.base=/druid - druid.zk.service.compress=false - - druid.metadata.storage.type=postgresql - druid.metadata.storage.connector.connectURI=jdbc:postgresql://rdsaddr.us-west-2.rds.amazonaws.com:5432/druiddb - druid.metadata.storage.connector.user=iamuser - druid.metadata.storage.connector.password=changeme - druid.metadata.storage.connector.createTables=true - - druid.storage.type=s3 - druid.storage.bucket=mybucket - druid.storage.baseKey=druid/segments - druid.s3.accessKey=accesskey - druid.s3.secretKey=secretkey - metricDimensions.json: |- - { - "query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"} - } -kind: ConfigMap -metadata: - labels: - app: druid - druid_cr: druid-test - name: druid-test-druid-common-config - namespace: test-namespace - annotations: - druidOpResourceHash: 1/BkoZEvfj+rB80LzeQeu6T7mhs= diff --git a/druid-operator/controllers/druid/testdata/druid-smoke-test-cluster.yaml b/druid-operator/controllers/druid/testdata/druid-smoke-test-cluster.yaml deleted file mode 100644 index 6ccd626b3695..000000000000 --- a/druid-operator/controllers/druid/testdata/druid-smoke-test-cluster.yaml +++ /dev/null @@ -1,268 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: "druid.apache.org/v1alpha1" -kind: "Druid" -metadata: - name: smoke-test - namespace: default -spec: - image: druidio/druid:test - # Optionally specify image for all nodes. Can be specify on nodes also - # imagePullSecrets: - # - name: tutu - defaultProbes: true - startScript: /druid.sh - podLabels: - environment: stage - release: alpha - podAnnotations: - dummykey: dummyval - readinessProbe: - httpGet: - path: /status - port: 8088 - securityContext: - fsGroup: 1000 - runAsUser: 1000 - runAsGroup: 1000 - services: - - spec: - type: ClusterIP - clusterIP: None - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - hdfs-site.xml: |- - - - - dfs.replication - 1 - - - dfs.client.use.datanode.hostname - true - - - dfs.datanode.use.datanode.hostname - true - - - core-site.xml: |- - - - - fs.defaultFS - hdfs://HOSTNAME:9000 - - - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Dlog4j.debug - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager - -Djava.io.tmpdir=/druid/data/tmp - log4j.config: |- - - - - - - - - - - - - - - common.runtime.properties: | - - # Zookeeper - - # Metadata Store - druid.metadata.storage.type=derby - druid.metadata.storage.type=derby - druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true - druid.metadata.storage.connector.host=localhost - druid.metadata.storage.connector.port=1527 - druid.metadata.storage.connector.createTables=true - - # Deep Storage - druid.storage.type=local - druid.storage.storageDirectory=/druid/deepstorage - - # - # Extensions - # - druid.extensions.loadList=[""] - - # - # Service discovery - # - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - - druid.serverview.type=http - druid.coordinator.loadqueuepeon.type=http - druid.indexer.runner.type=httpRemote - druid.indexer.logs.type=file - druid.indexer.logs.directory=/druid/data/indexing-logs - druid.lookup.enableLookupSyncOnStartup=false - metricDimensions.json: |- - { - "query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"} - } - volumeMounts: - - mountPath: /druid/data - name: data-volume - - mountPath: /druid/deepstorage - name: deepstorage-volume - volumes: - - name: data-volume - emptyDir: {} - - name: deepstorage-volume - hostPath: - path: /tmp/druid/deepstorage - type: DirectoryOrCreate - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - nodes: - brokers: - # Optionally specify for running broker as Deployment - # kind: Deployment - nodeType: "broker" - kind: "Deployment" - # Optionally specify for broker nodes - # imagePullSecrets: - # - name: tutu - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 1 - podDisruptionBudgetSpec: - minAvailable: 1 - hpAutoscaler: - maxReplicas: 3 - minReplicas: 1 - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: druid-smoke-test-brokers - runtime.properties: | - druid.service=druid/broker - - # HTTP server threads - druid.broker.http.numConnections=5 - druid.server.http.numThreads=10 - - # Processing threads and buffers - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - druid.sql.enable=true - extra.jvm.options: |- - -Xmx512M - -Xms512M - - coordinators: - # Optionally specify for running coordinator as Deployment - # kind: Deployment - nodeType: "coordinator" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" - replicas: 1 - runtime.properties: | - druid.service=druid/coordinator - - # HTTP server threads - druid.coordinator.startDelay=PT30S - druid.coordinator.period=PT30S - - # Configure this coordinator to also run as Overlord - druid.coordinator.asOverlord.enabled=true - druid.coordinator.asOverlord.overlordService=druid/overlord - druid.indexer.queue.startDelay=PT30S - druid.indexer.runner.type=local - extra.jvm.options: |- - -Xmx512M - -Xms512M - - historicals: - nodeType: "historical" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: | - druid.service=druid/historical - druid.server.http.numThreads=5 - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - # Segment storage - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - extra.jvm.options: |- - -Xmx512M - -Xms512M - - routers: - nodeType: "router" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/router" - replicas: 1 - ingress: - rules: - - host: broker.myhostname.com - http: - paths: - - backend: - service: - name: brokersvc - port: - name: http - path: / - pathType: ImplementationSpecific - tls: - - hosts: - - broker.myhostname.com - secretName: tls-broker-druid-cluster - runtime.properties: | - druid.service=druid/router - - # HTTP proxy - druid.router.http.numConnections=10 - druid.router.http.readTimeout=PT5M - druid.router.http.numMaxThreads=10 - druid.server.http.numThreads=10 - - # Service discovery - druid.router.defaultBrokerServiceName=druid/broker - druid.router.coordinatorServiceName=druid/coordinator - - # Management proxy to coordinator / overlord: required for unified web console. - druid.router.managementProxy.enabled=true - extra.jvm.options: |- - -Xmx512M - -Xms512M - diff --git a/druid-operator/controllers/druid/testdata/druid-test-cr-noprobe.yaml b/druid-operator/controllers/druid/testdata/druid-test-cr-noprobe.yaml deleted file mode 100644 index 76d7a969e65f..000000000000 --- a/druid-operator/controllers/druid/testdata/druid-test-cr-noprobe.yaml +++ /dev/null @@ -1,362 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: "druid.apache.org/v1alpha1" -kind: "Druid" -metadata: - name: druid-test - namespace: test-namespace -spec: - image: himanshu01/druid:druid-0.12.0-1 - defaultProbes: false - podAnnotations: - key1: value1 - key2: value2 - securityContext: - fsGroup: 107 - runAsUser: 106 - readinessProbe: - httpGet: - path: /status - zookeeper: - type: default - spec: - properties: |- - druid.zk.service.host=zookeeper-0.zookeeper,zookeeper-1.zookeeper,zookeeper-2.zookeeper - druid.zk.paths.base=/druid - druid.zk.service.compress=false - metadataStore: - type: default - spec: - properties: |- - druid.metadata.storage.type=postgresql - druid.metadata.storage.connector.connectURI=jdbc:postgresql://rdsaddr.us-west-2.rds.amazonaws.com:5432/druiddb - druid.metadata.storage.connector.user=iamuser - druid.metadata.storage.connector.password=changeme - druid.metadata.storage.connector.createTables=true - deepStorage: - type: default - spec: - properties: |- - druid.storage.type=s3 - druid.storage.bucket=mybucket - druid.storage.baseKey=druid/segments - druid.s3.accessKey=accesskey - druid.s3.secretKey=secretkey - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Dlog4j.debug - -XX:+ExitOnOutOfMemoryError - -XX:+HeapDumpOnOutOfMemoryError - -XX:+UseG1GC - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager - log4j.config: |- - - - - - - - - - - - - - - common.runtime.properties: |- - # - # Extensions - # - druid.extensions.loadList=["druid-datasketches", "druid-s3-extensions", "postgresql-metadata-storage"] - - # - # Logging - # - # Log all runtime properties on startup. Disable to avoid logging properties on startup: - druid.startup.logging.logProperties=true - - # - # Indexing service logs - # - # Store indexing logs in an S3 bucket named 'druid-deep-storage' with the - # prefix 'druid/indexing-logs' - druid.indexer.logs.type=s3 - druid.indexer.logs.s3Bucket=mybucket - druid.indexer.logs.s3Prefix=druid/indexing-logs - - # - # Service discovery - # - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - - # - # Monitoring - # - druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"] - druid.emitter=logging - druid.emitter.logging.logLevel=info - - # Storage type of double columns - # ommiting this will lead to index double as float at the storage layer - druid.indexing.doubleStorage=double - metricDimensions.json: |- - { - "query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"} - } - nodes: - brokers: - nodeType: "broker" - services: - - spec: - type: ClusterIP - clusterIP: None - - metadata: - name: broker-%s-service - annotations: - service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 - spec: - type: LoadBalancer - ports: - - name: service-port - port: 8090 - targetPort: 8080 - druid.port: 8080 - replicas: 2 - podDisruptionBudgetSpec: - maxUnavailable: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/broker - - # HTTP server threads - druid.broker.http.numConnections=5 - druid.server.http.numThreads=25 - - # Processing threads and buffers - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - readOnly: true - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - coordinators: - nodeType: "coordinator" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/coordinator - - # HTTP server threads - druid.coordinator.startDelay=PT30S - druid.coordinator.period=PT30S - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - historicals: - nodeType: "historical" - druid.port: 8080 - replicas: 2 - ports: - - name: random - containerPort: 8084 - runtime.properties: |- - druid.service=druid/historical - druid.server.http.numThreads=10 - druid.processing.buffer.sizeBytes=268435456 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - # Segment storage - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - overlords: - nodeType: "overlord" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/overlord - - # HTTP server threads - druid.indexer.queue.startDelay=PT30S - druid.indexer.runner.type=remote - druid.indexer.storage.type=metadata - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - middlemanagers: - nodeType: "middleManager" - druid.port: 8080 - replicas: 1 - ports: - - name: peon-0-pt - containerPort: 8100 - - name: peon-1-pt - containerPort: 8101 - - name: peon-2-pt - containerPort: 8102 - - name: peon-3-pt - containerPort: 8103 - - name: peon-4-pt - containerPort: 8104 - - name: peon-5-pt - containerPort: 8105 - - name: peon-6-pt - containerPort: 8106 - - name: peon-7-pt - containerPort: 8107 - - name: peon-8-pt - containerPort: 8108 - - name: peon-9-pt - containerPort: 8109 - - runtime.properties: |- - druid.service=druid/middleManager - druid.worker.capacity=1 - druid.indexer.runner.javaOpts=-server -XX:MaxDirectMemorySize=10240g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/druid/data/tmp -Dlog4j.debug -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=50 -XX:GCLogFileSize=10m -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Xloggc:/druid/data/logs/peon.gc.%t.%p.log -XX:HeapDumpPath=/druid/data/logs/peon.%t.%p.hprof -Xms1G -Xmx1G - druid.indexer.task.baseTaskDir=/druid/data/baseTaskDir - druid.server.http.numThreads=10 - druid.indexer.fork.property.druid.processing.buffer.sizeBytes=268435456 - druid.indexer.fork.property.druid.processing.numMergeBuffers=1 - druid.indexer.fork.property.druid.processing.numThreads=1 - druid.indexer.task.hadoopWorkingPath=/druid/data/hadoop-working-path - druid.indexer.task.defaultHadoopCoordinates=[\"org.apache.hadoop:hadoop-client:2.7.3\"] - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "3Gi" - cpu: "4" - limits: - memory: "3Gi" - cpu: "4" diff --git a/druid-operator/controllers/druid/testdata/druid-test-cr-sidecar.yaml b/druid-operator/controllers/druid/testdata/druid-test-cr-sidecar.yaml deleted file mode 100644 index ae606b35504b..000000000000 --- a/druid-operator/controllers/druid/testdata/druid-test-cr-sidecar.yaml +++ /dev/null @@ -1,393 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: "druid.apache.org/v1alpha1" -kind: "Druid" -metadata: - name: druid-test - namespace: test-namespace -spec: - image: apache/druid:0.22.1 - defaultProbes: true - podAnnotations: - key1: value1 - key2: value2 - securityContext: - fsGroup: 107 - runAsUser: 106 - readinessProbe: - httpGet: - path: /status - additionalContainer: - - image: universalforwarder-sidekick:next - containerName: forwarder - command: - - /bin/sidekick - imagePullPolicy: Always - securityContext: - runAsUser: 506 - volumeMounts: - - name: logstore - mountPath: /logstore - env: - - name: SAMPLE_ENV - value: SAMPLE_VALUE - resources: - requests: - memory: "1Gi" - cpu: "500m" - limits: - memory: "1Gi" - cpu: "500m" - args: - - -loggingEnabled=true - - -dataCenter=dataCenter - - -environment=environment - - -application=application - - -instance=instance - - -logFiles=logFiles - zookeeper: - type: default - spec: - properties: |- - druid.zk.service.host=zookeeper-0.zookeeper,zookeeper-1.zookeeper,zookeeper-2.zookeeper - druid.zk.paths.base=/druid - druid.zk.service.compress=false - metadataStore: - type: default - spec: - properties: |- - druid.metadata.storage.type=postgresql - druid.metadata.storage.connector.connectURI=jdbc:postgresql://rdsaddr.us-west-2.rds.amazonaws.com:5432/druiddb - druid.metadata.storage.connector.user=iamuser - druid.metadata.storage.connector.password=changeme - druid.metadata.storage.connector.createTables=true - deepStorage: - type: default - spec: - properties: |- - druid.storage.type=s3 - druid.storage.bucket=mybucket - druid.storage.baseKey=druid/segments - druid.s3.accessKey=accesskey - druid.s3.secretKey=secretkey - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Dlog4j.debug - -XX:+ExitOnOutOfMemoryError - -XX:+HeapDumpOnOutOfMemoryError - -XX:+UseG1GC - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager - log4j.config: |- - - - - - - - - - - - - - - common.runtime.properties: |- - # - # Extensions - # - druid.extensions.loadList=["druid-datasketches", "druid-s3-extensions", "postgresql-metadata-storage"] - - # - # Logging - # - # Log all runtime properties on startup. Disable to avoid logging properties on startup: - druid.startup.logging.logProperties=true - - # - # Indexing service logs - # - # Store indexing logs in an S3 bucket named 'druid-deep-storage' with the - # prefix 'druid/indexing-logs' - druid.indexer.logs.type=s3 - druid.indexer.logs.s3Bucket=mybucket - druid.indexer.logs.s3Prefix=druid/indexing-logs - - # - # Service discovery - # - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - - # - # Monitoring - # - druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"] - druid.emitter=logging - druid.emitter.logging.logLevel=info - - # Storage type of double columns - # ommiting this will lead to index double as float at the storage layer - druid.indexing.doubleStorage=double - metricDimensions.json: |- - { - "query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"} - } - nodes: - brokers: - nodeType: "broker" - services: - - spec: - type: ClusterIP - clusterIP: None - - metadata: - name: broker-%s-service - annotations: - service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 - spec: - type: LoadBalancer - ports: - - name: service-port - port: 8090 - targetPort: 8080 - druid.port: 8080 - replicas: 2 - podDisruptionBudgetSpec: - maxUnavailable: 1 - livenessProbe: - httpGet: - path: /status - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/broker - - # HTTP server threads - druid.broker.http.numConnections=5 - druid.server.http.numThreads=25 - - # Processing threads and buffers - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - readOnly: true - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - coordinators: - nodeType: "coordinator" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/coordinator - - # HTTP server threads - druid.coordinator.startDelay=PT30S - druid.coordinator.period=PT30S - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - historicals: - nodeType: "historical" - druid.port: 8080 - replicas: 2 - ports: - - name: random - containerPort: 8084 - runtime.properties: |- - druid.service=druid/historical - druid.server.http.numThreads=10 - druid.processing.buffer.sizeBytes=268435456 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - # Segment storage - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - overlords: - nodeType: "overlord" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/overlord - - # HTTP server threads - druid.indexer.queue.startDelay=PT30S - druid.indexer.runner.type=remote - druid.indexer.storage.type=metadata - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - middlemanagers: - nodeType: "middleManager" - druid.port: 8080 - replicas: 1 - ports: - - name: peon-0-pt - containerPort: 8100 - - name: peon-1-pt - containerPort: 8101 - - name: peon-2-pt - containerPort: 8102 - - name: peon-3-pt - containerPort: 8103 - - name: peon-4-pt - containerPort: 8104 - - name: peon-5-pt - containerPort: 8105 - - name: peon-6-pt - containerPort: 8106 - - name: peon-7-pt - containerPort: 8107 - - name: peon-8-pt - containerPort: 8108 - - name: peon-9-pt - containerPort: 8109 - - runtime.properties: |- - druid.service=druid/middleManager - druid.worker.capacity=1 - druid.indexer.runner.javaOpts=-server -XX:MaxDirectMemorySize=10240g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/druid/data/tmp -Dlog4j.debug -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=50 -XX:GCLogFileSize=10m -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Xloggc:/druid/data/logs/peon.gc.%t.%p.log -XX:HeapDumpPath=/druid/data/logs/peon.%t.%p.hprof -Xms1G -Xmx1G - druid.indexer.task.baseTaskDir=/druid/data/baseTaskDir - druid.server.http.numThreads=10 - druid.indexer.fork.property.druid.processing.buffer.sizeBytes=268435456 - druid.indexer.fork.property.druid.processing.numMergeBuffers=1 - druid.indexer.fork.property.druid.processing.numThreads=1 - druid.indexer.task.hadoopWorkingPath=/druid/data/hadoop-working-path - druid.indexer.task.defaultHadoopCoordinates=[\"org.apache.hadoop:hadoop-client:2.7.3\"] - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "3Gi" - cpu: "4" - limits: - memory: "3Gi" - cpu: "4" diff --git a/druid-operator/controllers/druid/testdata/druid-test-cr.yaml b/druid-operator/controllers/druid/testdata/druid-test-cr.yaml deleted file mode 100644 index 0d7b4e3fc848..000000000000 --- a/druid-operator/controllers/druid/testdata/druid-test-cr.yaml +++ /dev/null @@ -1,378 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: "druid.apache.org/v1alpha1" -kind: "Druid" -metadata: - name: druid-test - namespace: test-namespace -spec: - image: himanshu01/druid:druid-0.12.0-1 - defaultProbes: true - priorityClassName: high-priority - workloadAnnotations: - kubernetes.io/cluster-scoped-annotation: "cluster" - kubernetes.io/override-annotation: "cluster-scoped-annotation" - podAnnotations: - key1: value1 - key2: value2 - securityContext: - fsGroup: 107 - runAsUser: 106 - readinessProbe: - httpGet: - path: /status - zookeeper: - type: default - spec: - properties: |- - druid.zk.service.host=zookeeper-0.zookeeper,zookeeper-1.zookeeper,zookeeper-2.zookeeper - druid.zk.paths.base=/druid - druid.zk.service.compress=false - metadataStore: - type: default - spec: - properties: |- - druid.metadata.storage.type=postgresql - druid.metadata.storage.connector.connectURI=jdbc:postgresql://rdsaddr.us-west-2.rds.amazonaws.com:5432/druiddb - druid.metadata.storage.connector.user=iamuser - druid.metadata.storage.connector.password=changeme - druid.metadata.storage.connector.createTables=true - deepStorage: - type: default - spec: - properties: |- - druid.storage.type=s3 - druid.storage.bucket=mybucket - druid.storage.baseKey=druid/segments - druid.s3.accessKey=accesskey - druid.s3.secretKey=secretkey - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Dlog4j.debug - -XX:+ExitOnOutOfMemoryError - -XX:+HeapDumpOnOutOfMemoryError - -XX:+UseG1GC - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager - log4j.config: |- - - - - - - - - - - - - - - common.runtime.properties: |- - # - # Extensions - # - druid.extensions.loadList=["druid-datasketches", "druid-s3-extensions", "postgresql-metadata-storage"] - - # - # Logging - # - # Log all runtime properties on startup. Disable to avoid logging properties on startup: - druid.startup.logging.logProperties=true - - # - # Indexing service logs - # - # Store indexing logs in an S3 bucket named 'druid-deep-storage' with the - # prefix 'druid/indexing-logs' - druid.indexer.logs.type=s3 - druid.indexer.logs.s3Bucket=mybucket - druid.indexer.logs.s3Prefix=druid/indexing-logs - - # - # Service discovery - # - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - - # - # Monitoring - # - druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"] - druid.emitter=logging - druid.emitter.logging.logLevel=info - - # Storage type of double columns - # ommiting this will lead to index double as float at the storage layer - druid.indexing.doubleStorage=double - metricDimensions.json: |- - { - "query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"} - } - nodes: - brokers: - nodeType: "broker" - workloadAnnotations: - kubernetes.io/node-scoped-annotation: "broker" - kubernetes.io/override-annotation: "node-scoped-annotation" - services: - - spec: - type: ClusterIP - clusterIP: None - - metadata: - name: broker-%s-service - annotations: - service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 - spec: - type: LoadBalancer - ports: - - name: service-port - port: 8090 - targetPort: 8080 - druid.port: 8080 - replicas: 2 - podDisruptionBudgetSpec: - maxUnavailable: 1 - livenessProbe: - httpGet: - path: /status - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/broker - - # HTTP server threads - druid.broker.http.numConnections=5 - druid.server.http.numThreads=25 - - # Processing threads and buffers - druid.processing.buffer.sizeBytes=1 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - readOnly: true - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - coordinators: - nodeType: "coordinator" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/coordinator - - # HTTP server threads - druid.coordinator.startDelay=PT30S - druid.coordinator.period=PT30S - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - historicals: - nodeType: "historical" - druid.port: 8080 - replicas: 2 - ports: - - name: random - containerPort: 8084 - runtime.properties: |- - druid.service=druid/historical - druid.server.http.numThreads=10 - druid.processing.buffer.sizeBytes=268435456 - druid.processing.numMergeBuffers=1 - druid.processing.numThreads=1 - # Segment storage - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - overlords: - nodeType: "overlord" - druid.port: 8080 - replicas: 1 - ports: - - name: random - containerPort: 8083 - runtime.properties: |- - druid.service=druid/overlord - - # HTTP server threads - druid.indexer.queue.startDelay=PT30S - druid.indexer.runner.type=remote - druid.indexer.storage.type=metadata - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "2Gi" - cpu: "4" - limits: - memory: "2Gi" - cpu: "4" - - middlemanagers: - nodeType: "middleManager" - druid.port: 8080 - replicas: 1 - ports: - - name: peon-0-pt - containerPort: 8100 - - name: peon-1-pt - containerPort: 8101 - - name: peon-2-pt - containerPort: 8102 - - name: peon-3-pt - containerPort: 8103 - - name: peon-4-pt - containerPort: 8104 - - name: peon-5-pt - containerPort: 8105 - - name: peon-6-pt - containerPort: 8106 - - name: peon-7-pt - containerPort: 8107 - - name: peon-8-pt - containerPort: 8108 - - name: peon-9-pt - containerPort: 8109 - - runtime.properties: |- - druid.service=druid/middleManager - druid.worker.capacity=1 - druid.indexer.runner.javaOpts=-server -XX:MaxDirectMemorySize=10240g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/druid/data/tmp -Dlog4j.debug -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=50 -XX:GCLogFileSize=10m -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Xloggc:/druid/data/logs/peon.gc.%t.%p.log -XX:HeapDumpPath=/druid/data/logs/peon.%t.%p.hprof -Xms1G -Xmx1G - druid.indexer.task.baseTaskDir=/druid/data/baseTaskDir - druid.server.http.numThreads=10 - druid.indexer.fork.property.druid.processing.buffer.sizeBytes=268435456 - druid.indexer.fork.property.druid.processing.numMergeBuffers=1 - druid.indexer.fork.property.druid.processing.numThreads=1 - druid.indexer.task.hadoopWorkingPath=/druid/data/hadoop-working-path - druid.indexer.task.defaultHadoopCoordinates=[\"org.apache.hadoop:hadoop-client:2.7.3\"] - extra.jvm.options: |- - -Xmx1G - -Xms1G - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: gp2 - - volumeMounts: - - mountPath: /druid/data - name: data-volume - resources: - requests: - memory: "3Gi" - cpu: "4" - limits: - memory: "3Gi" - cpu: "4" - dnsPolicy: ClusterFirst - dnsConfig: - nameservers: - - 10.0.0.53 - searches: - - example.local diff --git a/druid-operator/controllers/druid/testdata/finalizers.yaml b/druid-operator/controllers/druid/testdata/finalizers.yaml deleted file mode 100644 index 33fb0a1c1fca..000000000000 --- a/druid-operator/controllers/druid/testdata/finalizers.yaml +++ /dev/null @@ -1,85 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: finalizers - namespace: default -spec: - image: apache/druid:25.0.0 - startScript: /druid.sh - rollingDeploy: false - securityContext: - fsGroup: 1000 - runAsUser: 1000 - runAsGroup: 1000 - services: - - spec: - type: ClusterIP - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Djava.io.tmpdir=/druid/data - common.runtime.properties: |- - # Metadata Store - druid.metadata.storage.type=derby - druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true - druid.metadata.storage.connector.host=localhost - druid.metadata.storage.connector.port=1527 - druid.metadata.storage.connector.createTables=true - - # Deep Storage - druid.storage.type=local - druid.storage.storageDirectory=/druid/deepstorage - - # Service discovery - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - nodes: - brokers: - nodeType: "broker" - kind: "Deployment" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 1 - runtime.properties: |- - druid.service=druid/broker - additionalContainer: - - command: - - /bin/sh echo hello - containerName: node-level - image: hello-world - coordinators: - nodeType: "coordinator" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" - replicas: 1 - runtime.properties: |- - druid.service=druid/coordinator - druid.coordinator.asOverlord.enabled=true - druid.coordinator.asOverlord.overlordService=druid/overlord - historicals: - nodeType: "historical" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: |- - druid.service=druid/historical - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 diff --git a/druid-operator/controllers/druid/testdata/ordering.yaml b/druid-operator/controllers/druid/testdata/ordering.yaml deleted file mode 100644 index 4388e21cb516..000000000000 --- a/druid-operator/controllers/druid/testdata/ordering.yaml +++ /dev/null @@ -1,134 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -EOF < /dev/nullapiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: ordering - namespace: default -spec: - image: apache/druid:25.0.0 - startScript: /druid.sh - rollingDeploy: false - securityContext: - fsGroup: 1000 - runAsUser: 1000 - runAsGroup: 1000 - services: - - spec: - type: ClusterIP - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Djava.io.tmpdir=/druid/data - common.runtime.properties: |- - # Metadata Store - druid.metadata.storage.type=derby - druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true - druid.metadata.storage.connector.host=localhost - druid.metadata.storage.connector.port=1527 - druid.metadata.storage.connector.createTables=true - - # Deep Storage - druid.storage.type=local - druid.storage.storageDirectory=/druid/deepstorage - - # Service discovery - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - nodes: - indexers: - nodeType: "indexer" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/indexers" - replicas: 1 - runtime.properties: |- - druid.service=druid/indexer - brokers: - nodeType: "broker" - kind: "Deployment" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 1 - runtime.properties: |- - druid.service=druid/broker - additionalContainer: - - command: - - /bin/sh echo hello - containerName: node-level - image: hello-world - historicals2: - nodeType: "historical" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: |- - druid.service=druid/historical - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - routers: - nodeType: "router" - kind: "Deployment" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/router" - replicas: 1 - runtime.properties: | - # General - druid.service=druid/router - # Service discovery - druid.router.defaultBrokerServiceName=druid/broker - druid.router.coordinatorServiceName=druid/coordinator - # Management proxy to coordinator / overlord: required for unified web console. - druid.router.managementProxy.enabled=true - coordinators: - nodeType: "coordinator" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" - replicas: 1 - runtime.properties: |- - druid.service=druid/coordinator - druid.coordinator.asOverlord.enabled=true - druid.coordinator.asOverlord.overlordService=druid/overlord - middle-managers: - nodeType: "middleManager" - kind: "Deployment" - druid.port: 8091 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/middleManager" - replicas: 1 - runtime.properties: | - # Caching - druid.realtime.cache.useCache=true - druid.realtime.cache.populateCache=true - druid.indexer.runner.javaOptsArray=["-server","-Duser.timezone=UTC","-Dfile.encoding=UTF-8","-XX:+ExitOnOutOfMemoryError","-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager","--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED","--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED","--add-opens=java.base/java.lang=ALL-UNNAMED","--add-opens=java.base/java.io=ALL-UNNAMED","--add-opens=java.base/java.nio=ALL-UNNAMED","--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED","--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"] - druid.indexer.task.restoreTasksOnRestart=true - historicals: - nodeType: "historical" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: |- - druid.service=druid/historical - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - overlords: - nodeType: "overlord" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/overlord" - replicas: 1 - runtime.properties: |- - druid.service=druid/overlord diff --git a/druid-operator/controllers/druid/testdata/volume-expansion.yaml b/druid-operator/controllers/druid/testdata/volume-expansion.yaml deleted file mode 100644 index c0d99a5e15ea..000000000000 --- a/druid-operator/controllers/druid/testdata/volume-expansion.yaml +++ /dev/null @@ -1,99 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#------------------------------------------------------------------------- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: volume-expansion - namespace: default -spec: - image: apache/druid:25.0.0 - startScript: /druid.sh - rollingDeploy: false - securityContext: - fsGroup: 1000 - runAsUser: 1000 - runAsGroup: 1000 - services: - - spec: - type: ClusterIP - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - jvm.options: |- - -server - -XX:MaxDirectMemorySize=10240g - -Duser.timezone=UTC - -Dfile.encoding=UTF-8 - -Djava.io.tmpdir=/druid/data - common.runtime.properties: |- - # Metadata Store - druid.metadata.storage.type=derby - druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/druid/data/derbydb/metadata.db;create=true - druid.metadata.storage.connector.host=localhost - druid.metadata.storage.connector.port=1527 - druid.metadata.storage.connector.createTables=true - - # Deep Storage - druid.storage.type=local - druid.storage.storageDirectory=/druid/deepstorage - - # Service discovery - druid.selectors.indexing.serviceName=druid/overlord - druid.selectors.coordinator.serviceName=druid/coordinator - nodes: - brokers: - nodeType: "broker" - kind: "Deployment" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 1 - runtime.properties: |- - druid.service=druid/broker - additionalContainer: - - command: - - /bin/sh echo hello - containerName: node-level - image: hello-world - coordinators: - nodeType: "coordinator" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord" - replicas: 1 - runtime.properties: |- - druid.service=druid/coordinator - druid.coordinator.asOverlord.enabled=true - druid.coordinator.asOverlord.overlordService=druid/overlord - historicals: - nodeType: "historical" - kind: "StatefulSet" - druid.port: 8080 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/data/historical" - replicas: 1 - runtime.properties: |- - druid.service=druid/historical - druid.segmentCache.locations=[{\"path\":\"/druid/data/segments\",\"maxSize\":10737418240}] - druid.server.maxSize=10737418240 - volumeMounts: - - mountPath: /druid/data - name: data-volume - volumeClaimTemplates: - - metadata: - name: data-volume - spec: - storageClassName: default - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10M diff --git a/druid-operator/controllers/druid/types.go b/druid-operator/controllers/druid/types.go deleted file mode 100644 index 666fae1e113f..000000000000 --- a/druid-operator/controllers/druid/types.go +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -const ( - ignoredAnnotation = "druid.apache.org/ignored" - - broker = "broker" - coordinator = "coordinator" - overlord = "overlord" - middleManager = "middleManager" - indexer = "indexer" - historical = "historical" - router = "router" -) diff --git a/druid-operator/controllers/druid/util.go b/druid-operator/controllers/druid/util.go deleted file mode 100644 index a9b4feacd14f..000000000000 --- a/druid-operator/controllers/druid/util.go +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "encoding/json" - "fmt" - "os" - "reflect" - "strconv" - "strings" - "time" -) - -func firstNonEmptyStr(s1 string, s2 string) string { - if len(s1) > 0 { - return s1 - } else { - return s2 - } -} - -// Note that all the arguments passed to this function must have zero value of Nil. -func firstNonNilValue(v1, v2 interface{}) interface{} { - if !reflect.ValueOf(v1).IsNil() { - return v1 - } else { - return v2 - } -} - -// lookup DENY_LIST, default is nil -func getDenyListEnv(key string, defaultVal string) string { - if value, exists := os.LookupEnv(key); exists { - return value - } - return defaultVal -} - -// pass slice of strings for namespaces -func getEnvAsSlice(name string, defaultVal []string, sep string) []string { - valStr := getDenyListEnv(name, "") - if valStr == "" { - return defaultVal - } - // split on "," - val := strings.Split(valStr, sep) - return val -} - -func ContainsString(slice []string, s string) bool { - for _, item := range slice { - if item == s { - return true - } - } - return false -} - -func RemoveString(slice []string, s string) (result []string) { - for _, item := range slice { - if item == s { - continue - } - result = append(result, item) - } - return -} - -// returns pointer to bool -func boolFalse() *bool { - bool := false - return &bool -} - -// to be used in max concurrent reconciles only -// defaulting to return 1 -func Str2Int(s string) int { - i, err := strconv.Atoi(s) - if err != nil { - return 1 - } - return i -} - -func IsEqualJson(s1, s2 string) (bool, error) { - var o1 interface{} - var o2 interface{} - - var err error - err = json.Unmarshal([]byte(s1), &o1) - if err != nil { - return false, fmt.Errorf("error mashalling string 1 :: %s", err.Error()) - } - err = json.Unmarshal([]byte(s2), &o2) - if err != nil { - return false, fmt.Errorf("error mashalling string 2 :: %s", err.Error()) - } - - return reflect.DeepEqual(o1, o2), nil -} - -// to find the time difference between two epoch times -func timeDifference(epochTime1, epochTime2 int64) int64 { - t1 := time.Unix(epochTime1, 0) - t2 := time.Unix(epochTime2, 0) - - diff := time.Duration(t2.Sub(t1)) - return int64(diff.Seconds()) -} - -func containsString(all []string, string string) bool { - for _, s := range all { - if s == string { - return true - } - } - - return false -} - -func hasDuplicateString(slice []string) (bool, string) { - seen := make(map[string]bool) - for _, s := range slice { - if seen[s] { - return true, s - } - seen[s] = true - } - return false, "" -} diff --git a/druid-operator/controllers/druid/util_test.go b/druid-operator/controllers/druid/util_test.go deleted file mode 100644 index 512a886679de..000000000000 --- a/druid-operator/controllers/druid/util_test.go +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "encoding/json" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - v1 "k8s.io/api/core/v1" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -util test -*/ -var _ = Describe("Test util", func() { - Context("When testing util", func() { - It("should test first non nil value", func() { - var js = []byte(` - { - "image": "apache/druid:25.0.0", - "securityContext": { "fsGroup": 107, "runAsUser": 106 }, - "env": [{ "name": "k", "value": "v" }], - "nodes": - { - "brokers": { - "nodeType": "broker", - "druid.port": 8080, - "replicas": 2 - } - } - }`) - - clusterSpec := druidv1alpha1.DruidSpec{} - Expect(json.Unmarshal(js, &clusterSpec)).Should(BeNil()) - - By("By testing first non nil value of PodSecurityContext.RunAsUser") - x := firstNonNilValue(clusterSpec.Nodes["brokers"].PodSecurityContext, clusterSpec.PodSecurityContext).(*v1.PodSecurityContext) - Expect(*x.RunAsUser).Should(Equal(int64(106))) - - By("By testing first non nil value of Env.Name") - y := firstNonNilValue(clusterSpec.Nodes["brokers"].Env, clusterSpec.Env).([]v1.EnvVar) - Expect(y[0].Name).Should(Equal("k")) - }) - - It("should test first non empty string", func() { - By("By testing first non empty string 1") - Expect(firstNonEmptyStr("a", "b")).Should(Equal("a")) - - By("By testing first non empty string 2") - Expect(firstNonEmptyStr("", "b")).Should(Equal("b")) - }) - - It("should test contains string", func() { - By("By testing contains string") - Expect(ContainsString([]string{"a", "b"}, "a")).Should(BeTrue()) - }) - - It("should test removes string", func() { - By("By testing removes string") - rs := RemoveString([]string{"a", "b"}, "a") - Expect(rs).Should(Not(ConsistOf("a"))) - }) - - }) -}) diff --git a/druid-operator/controllers/druid/volume_expansion.go b/druid-operator/controllers/druid/volume_expansion.go deleted file mode 100644 index ffd519652b96..000000000000 --- a/druid-operator/controllers/druid/volume_expansion.go +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "context" - "errors" - "fmt" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/core/v1" - storage "k8s.io/api/storage/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -func validateVolumeClaimTemplateSpec(drd *v1alpha1.Druid) error { - for _, nodeSpec := range drd.Spec.Nodes { - if nodeSpec.Kind == "StatefulSet" { - if err := validateNodeVolumeClaimTemplateSpec(&nodeSpec); err != nil { - return err - } - } - } - return nil -} - -func validateNodeVolumeClaimTemplateSpec(nodeSpec *v1alpha1.DruidNodeSpec) error { - for _, vct := range nodeSpec.VolumeClaimTemplates { - if vct.Spec.StorageClassName == nil || *vct.Spec.StorageClassName == "" { - return fmt.Errorf("node group %s has volume claim template without storage class which is not allowed: %s", - nodeSpec.NodeType, vct.Name) - } - } - return nil -} - -func expandStatefulSetVolumes(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, - nodeSpec *v1alpha1.DruidNodeSpec, emitEvent EventEmitter, nodeSpecUniqueStr string) error { - - isEnabled, err := isVolumeExpansionEnabled(ctx, sdk, m, nodeSpec, emitEvent) - if err != nil { - return err - } - - if isEnabled { - err := scalePVCForSts(ctx, sdk, nodeSpec, nodeSpecUniqueStr, m, emitEvent) - if err != nil { - return err - } - } - - return nil -} - -func isVolumeExpansionEnabled(ctx context.Context, sdk client.Client, m *v1alpha1.Druid, nodeSpec *v1alpha1.DruidNodeSpec, emitEvent EventEmitter) (bool, error) { - - for _, nodeVCT := range nodeSpec.VolumeClaimTemplates { - if nodeVCT.Spec.StorageClassName == nil { - err := errors.New("StorageClassName does not exists") - logger.WithValues("NodeType", nodeSpec.NodeType, "VolumeClaimTemplate", nodeVCT.Name). - Error(err, "storageClassName does not exists in spec") - return false, err - } - sc, err := readers.Get(ctx, sdk, *nodeVCT.Spec.StorageClassName, m, func() object { return &storage.StorageClass{} }, emitEvent) - if err != nil { - return false, err - } - - if sc.(*storage.StorageClass).AllowVolumeExpansion != boolFalse() { - return true, nil - } - } - return false, nil -} - -// scalePVCForSts shall expand the StatefulSet's VolumeClaimTemplates size as well as N no of pvc supported by the sts. -func scalePVCForSts(ctx context.Context, sdk client.Client, nodeSpec *v1alpha1.DruidNodeSpec, nodeSpecUniqueStr string, drd *v1alpha1.Druid, emitEvent EventEmitter) error { - - getSTSList, err := readers.List(ctx, sdk, drd, makeLabelsForDruid(drd), emitEvent, func() objectList { return &appsv1.StatefulSetList{} }, func(listObj runtime.Object) []object { - items := listObj.(*appsv1.StatefulSetList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return nil - } - - // Dont proceed unless all statefulsets are up and running. - // This can cause the go routine to panic - - for _, sts := range getSTSList { - if sts.(*appsv1.StatefulSet).Status.Replicas != sts.(*appsv1.StatefulSet).Status.ReadyReplicas { - return nil - } - } - - // return nil, in case return err the program halts since sts would not be able - // we would like the operator to create sts. - sts, err := readers.Get(ctx, sdk, nodeSpecUniqueStr, drd, func() object { return &appsv1.StatefulSet{} }, emitEvent) - if err != nil { - return nil - } - - pvcLabels := map[string]string{ - "nodeSpecUniqueStr": nodeSpecUniqueStr, - } - - pvcList, err := readers.List(ctx, sdk, drd, pvcLabels, emitEvent, func() objectList { return &v1.PersistentVolumeClaimList{} }, func(listObj runtime.Object) []object { - items := listObj.(*v1.PersistentVolumeClaimList).Items - result := make([]object, len(items)) - for i := 0; i < len(items); i++ { - result[i] = &items[i] - } - return result - }) - if err != nil { - return nil - } - - desVolumeClaimTemplateSize, currVolumeClaimTemplateSize, pvcSize := getVolumeClaimTemplateSizes(sts, nodeSpec, pvcList) - - // current number of PVC can't be less than desired number of pvc - if len(pvcSize) < len(desVolumeClaimTemplateSize) { - return nil - } - - // iterate over array for matching each index in desVolumeClaimTemplateSize, currVolumeClaimTemplateSize and pvcSize - for i := range desVolumeClaimTemplateSize { - - // Validate Request, shrinking of pvc not supported - // desired size cant be less than current size - // in that case re-create sts/pvc which is a user execute manual step - - desiredSize, _ := desVolumeClaimTemplateSize[i].AsInt64() - currentSize, _ := currVolumeClaimTemplateSize[i].AsInt64() - - if desiredSize < currentSize { - e := fmt.Errorf("Request for Shrinking of sts pvc size [sts:%s] in [namespace:%s] is not Supported", sts.(*appsv1.StatefulSet).Name, sts.(*appsv1.StatefulSet).Namespace) - logger.Error(e, e.Error(), "name", drd.Name, "namespace", drd.Namespace) - emitEvent.EmitEventGeneric(drd, "DruidOperatorPvcReSizeFail", "", err) - return e - } - - // In case size dont match and dessize > currsize, delete the sts using casacde=false / propagation policy set to orphan - // The operator on next reconcile shall create the sts with latest changes - if desiredSize != currentSize { - msg := fmt.Sprintf("Detected Change in VolumeClaimTemplate Sizes for Statefuleset [%s] in Namespace [%s], desVolumeClaimTemplateSize: [%s], currVolumeClaimTemplateSize: [%s]\n, deleteing STS [%s] with casacde=false]", sts.(*appsv1.StatefulSet).Name, sts.(*appsv1.StatefulSet).Namespace, desVolumeClaimTemplateSize[i].String(), currVolumeClaimTemplateSize[i].String(), sts.(*appsv1.StatefulSet).Name) - logger.Info(msg) - emitEvent.EmitEventGeneric(drd, "DruidOperatorPvcReSizeDetected", msg, nil) - - if err := writers.Delete(ctx, sdk, drd, sts, emitEvent, client.PropagationPolicy(metav1.DeletePropagationOrphan)); err != nil { - return err - } else { - msg := fmt.Sprintf("[StatefuleSet:%s] successfully deleted with casacde=false", sts.(*appsv1.StatefulSet).Name) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - emitEvent.EmitEventGeneric(drd, "DruidOperatorStsOrphaned", msg, nil) - } - - } - - // In case size dont match, patch the pvc with the desiredsize from druid CR - for p := range pvcSize { - pSize, _ := pvcSize[p].AsInt64() - if desiredSize != pSize { - // use deepcopy - patch := client.MergeFrom(pvcList[p].(*v1.PersistentVolumeClaim).DeepCopy()) - pvcList[p].(*v1.PersistentVolumeClaim).Spec.Resources.Requests[v1.ResourceStorage] = desVolumeClaimTemplateSize[i] - if err := writers.Patch(ctx, sdk, drd, pvcList[p].(*v1.PersistentVolumeClaim), false, patch, emitEvent); err != nil { - return err - } else { - msg := fmt.Sprintf("[PVC:%s] successfully Patched with [Size:%s]", pvcList[p].(*v1.PersistentVolumeClaim).Name, desVolumeClaimTemplateSize[i].String()) - logger.Info(msg, "name", drd.Name, "namespace", drd.Namespace) - } - } - } - - } - - return nil -} diff --git a/druid-operator/controllers/druid/volume_expansion_test.go b/druid-operator/controllers/druid/volume_expansion_test.go deleted file mode 100644 index 4638aea4a541..000000000000 --- a/druid-operator/controllers/druid/volume_expansion_test.go +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "time" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "k8s.io/apimachinery/pkg/types" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -volume_expansion_test -*/ -var _ = Describe("Test volume expansion feature", func() { - const ( - filePath = "testdata/volume-expansion.yaml" - timeout = time.Second * 45 - interval = time.Millisecond * 250 - ) - - var ( - druid = &druidv1alpha1.Druid{} - ) - - Context("When creating a druid cluster with volume expansion", func() { - It("Should create the druid object", func() { - By("Creating a new druid") - druidCR, err := readDruidClusterSpecFromFile(filePath) - Expect(err).Should(BeNil()) - Expect(k8sClient.Create(ctx, druidCR)).To(Succeed()) - - By("Getting a newly created druid") - Eventually(func() bool { - err := k8sClient.Get(ctx, types.NamespacedName{Name: druidCR.Name, Namespace: druidCR.Namespace}, druid) - return err == nil - }, timeout, interval).Should(BeTrue()) - }) - It("Should error on the CR verify stage if storage class is nil", func() { - By("Setting storage class name to nil") - druid.Spec.Nodes["historicals"].VolumeClaimTemplates[0].Spec.StorageClassName = nil - Expect(druid.Spec.Nodes["historicals"].VolumeClaimTemplates[0].Spec.StorageClassName).Should(BeNil()) - - By("Validating the created druid") - Expect(validateVolumeClaimTemplateSpec(druid)).Error() - }) - It("Should error if validate didn't worked and storageClassName does not exists", func() { - By("By getting the historicals nodeSpec") - allNodeSpecs := getNodeSpecsByOrder(druid) - - nodeSpec := &druidv1alpha1.DruidNodeSpec{} - for _, elem := range allNodeSpecs { - if elem.key == "historicals" { - nodeSpec = &elem.spec - } - } - Expect(nodeSpec).ShouldNot(BeNil()) - - By("By calling the expand volume function with storageClass nil") - Expect(isVolumeExpansionEnabled(ctx, k8sClient, druid, nodeSpec, nil)).Error() - }) - }) -}) diff --git a/druid-operator/controllers/druid/zookeeper_dep_mgmt.go b/druid-operator/controllers/druid/zookeeper_dep_mgmt.go deleted file mode 100644 index 2fdca43082dc..000000000000 --- a/druid-operator/controllers/druid/zookeeper_dep_mgmt.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - "github.com/datainfrahq/druid-operator/controllers/druid/ext" -) - -var zkExtTypes = map[string]reflect.Type{} - -func init() { - zkExtTypes["default"] = reflect.TypeOf(ext.DefaultZkManager{}) -} - -// We might have to add more methods to this interface to enable extensions that completely manage -// deploy, upgrade and termination of zk cluster. -type zookeeperManager interface { - Configuration() string -} - -func createZookeeperManager(spec *v1alpha1.ZookeeperSpec) (zookeeperManager, error) { - if t, ok := zkExtTypes[spec.Type]; ok { - v := reflect.New(t).Interface() - if err := json.Unmarshal(spec.Spec, v); err != nil { - return nil, fmt.Errorf("Couldn't unmarshall zk type[%s]. Error[%s].", spec.Type, err.Error()) - } else { - return v.(zookeeperManager), nil - } - } else { - return nil, fmt.Errorf("Can't find type[%s] for Zookeeper Mgmt.", spec.Type) - } -} diff --git a/druid-operator/controllers/druid/zookeeper_dep_mgmt_test.go b/druid-operator/controllers/druid/zookeeper_dep_mgmt_test.go deleted file mode 100644 index 57e0d5d67fad..000000000000 --- a/druid-operator/controllers/druid/zookeeper_dep_mgmt_test.go +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package druid - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" -) - -// +kubebuilder:docs-gen:collapse=Imports - -/* -zookeeper_dep_mgmt_test -*/ -var _ = Describe("Test zookeeper dep mgmt", func() { - Context("When testing zookeeper dep mgmt", func() { - It("should test zookeeper dep mgmt", func() { - v := druidv1alpha1.ZookeeperSpec{ - Type: "default", - Spec: []byte(`{ "properties": "my-zookeeper-config" }`), - } - - zm, err := createZookeeperManager(&v) - Expect(err).Should(BeNil()) - Expect(zm.Configuration()).Should(Equal("my-zookeeper-config")) - - }) - }) -}) diff --git a/druid-operator/controllers/ingestion/ingestion_controller.go b/druid-operator/controllers/ingestion/ingestion_controller.go deleted file mode 100644 index 81a70cb3fab2..000000000000 --- a/druid-operator/controllers/ingestion/ingestion_controller.go +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ingestion - -import ( - "context" - "os" - "time" - - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/client-go/tools/record" - - "github.com/go-logr/logr" - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/log" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - druidv1alpha1 "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" -) - -// IngestionReconciler -type DruidIngestionReconciler struct { - client.Client - Log logr.Logger - Scheme *runtime.Scheme - // reconcile time duration, defaults to 10s - ReconcileWait time.Duration - Recorder record.EventRecorder -} - -func NewDruidIngestionReconciler(mgr ctrl.Manager) *DruidIngestionReconciler { - return &DruidIngestionReconciler{ - Client: mgr.GetClient(), - Log: ctrl.Log.WithName("controllers").WithName("Ingestion"), - Scheme: mgr.GetScheme(), - Recorder: mgr.GetEventRecorderFor("druid-ingestion"), - } -} - -// +kubebuilder:rbac:groups=druid.apache.org,resources=ingestions,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=druid.apache.org,resources=ingestion/status,verbs=get;update;patch -func (r *DruidIngestionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - logr := log.FromContext(ctx) - - druidIngestionCR := &v1alpha1.DruidIngestion{} - err := r.Get(ctx, req.NamespacedName, druidIngestionCR) - if err != nil { - if errors.IsNotFound(err) { - return ctrl.Result{}, nil - } - return ctrl.Result{}, err - } - - if err := r.do(ctx, druidIngestionCR); err != nil { - logr.Error(err, err.Error()) - return ctrl.Result{}, err - } else { - return ctrl.Result{RequeueAfter: LookupReconcileTime()}, nil - } - -} - -func LookupReconcileTime() time.Duration { - val, exists := os.LookupEnv("RECONCILE_WAIT") - if !exists { - return time.Second * 10 - } else { - v, err := time.ParseDuration(val) - if err != nil { - // Exit Program if not valid - os.Exit(1) - } - return v - } -} - -func (r *DruidIngestionReconciler) SetupWithManager(mgr ctrl.Manager) error { - return ctrl.NewControllerManagedBy(mgr). - For(&druidv1alpha1.DruidIngestion{}). - Complete(r) -} diff --git a/druid-operator/controllers/ingestion/reconciler.go b/druid-operator/controllers/ingestion/reconciler.go deleted file mode 100644 index c7cdce0d6821..000000000000 --- a/druid-operator/controllers/ingestion/reconciler.go +++ /dev/null @@ -1,711 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ingestion - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "reflect" - "time" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - "github.com/datainfrahq/druid-operator/controllers/druid" - druidapi "github.com/datainfrahq/druid-operator/pkg/druidapi" - internalhttp "github.com/datainfrahq/druid-operator/pkg/http" - "github.com/datainfrahq/druid-operator/pkg/util" - "github.com/datainfrahq/operator-runtime/builder" - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" -) - -const ( - DruidIngestionControllerCreateSuccess = "DruidIngestionControllerCreateSuccess" - DruidIngestionControllerCreateFail = "DruidIngestionControllerCreateFail" - DruidIngestionControllerGetSuccess = "DruidIngestionControllerGetSuccess" - DruidIngestionControllerGetFail = "DruidIngestionControllerGetFail" - DruidIngestionControllerUpdateSuccess = "DruidIngestionControllerUpdateSuccess" - DruidIngestionControllerUpdateFail = "DruidIngestionControllerUpdateFail" - DruidIngestionControllerShutDownSuccess = "DruidIngestionControllerShutDownSuccess" - DruidIngestionControllerShutDownFail = "DruidIngestionControllerShutDownFail" - DruidIngestionControllerPatchStatusSuccess = "DruidIngestionControllerPatchStatusSuccess" - DruidIngestionControllerPatchStatusFail = "DruidIngestionControllerPatchStatusFail" - DruidIngestionControllerFinalizer = "druidingestion.datainfra.io/finalizer" -) - -func (r *DruidIngestionReconciler) do(ctx context.Context, di *v1alpha1.DruidIngestion) error { - basicAuth, err := druidapi.GetAuthCreds( - ctx, - r.Client, - di.Spec.Auth, - ) - if err != nil { - return err - } - - svcName, err := druidapi.GetRouterSvcUrl(di.Namespace, di.Spec.DruidClusterName, r.Client) - if err != nil { - return err - } - - build := builder.NewBuilder( - builder.ToNewBuilderRecorder(builder.BuilderRecorder{Recorder: r.Recorder, ControllerName: "DruidIngestionController"}), - ) - - _, err = r.CreateOrUpdate(di, svcName, *build, internalhttp.Auth{BasicAuth: basicAuth}) - if err != nil { - return err - } - - if di.ObjectMeta.DeletionTimestamp.IsZero() { - // The object is not being deleted, so if it does not have our finalizer, - // then lets add the finalizer and update the object. This is equivalent - // registering our finalizer. - if !controllerutil.ContainsFinalizer(di, DruidIngestionControllerFinalizer) { - controllerutil.AddFinalizer(di, DruidIngestionControllerFinalizer) - if err := r.Update(ctx, di.DeepCopyObject().(*v1alpha1.DruidIngestion)); err != nil { - return nil - } - } - } else { - if controllerutil.ContainsFinalizer(di, DruidIngestionControllerFinalizer) { - // our finalizer is present, so lets handle any external dependency - svcName, err := druidapi.GetRouterSvcUrl(di.Namespace, di.Spec.DruidClusterName, r.Client) - if err != nil { - return err - } - - posthttp := internalhttp.NewHTTPClient( - &http.Client{}, - &internalhttp.Auth{BasicAuth: basicAuth}, - ) - - respShutDownTask, err := posthttp.Do( - http.MethodPost, - getPath(di.Spec.Ingestion.Type, svcName, http.MethodPost, di.Status.TaskId, true), - []byte{}, - ) - if err != nil { - return err - } - if respShutDownTask.StatusCode != 200 { - build.Recorder.GenericEvent( - di, - v1.EventTypeWarning, - fmt.Sprintf("Resp [%s], StatusCode [%d]", string(respShutDownTask.ResponseBody), respShutDownTask.StatusCode), - DruidIngestionControllerShutDownFail, - ) - } else { - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - fmt.Sprintf("Resp [%s], StatusCode [%d]", string(respShutDownTask.ResponseBody), respShutDownTask.StatusCode), - DruidIngestionControllerShutDownSuccess, - ) - } - - // remove our finalizer from the list and update it. - controllerutil.RemoveFinalizer(di, DruidIngestionControllerFinalizer) - if err := r.Update(ctx, di.DeepCopyObject().(*v1alpha1.DruidIngestion)); err != nil { - return nil - } - } - } - - return nil -} - -// getSpec extracts the current ingestion spec from the DruidIngestion object. -// It first attempts to extract the nativeSpec, and if that is not available, it falls back to the Spec. -func getSpec(di *v1alpha1.DruidIngestion) (map[string]interface{}, error) { - if di.Spec.Ingestion.NativeSpec.Size() > 0 { - var nativeSpecMap map[string]interface{} - if err := json.Unmarshal(di.Spec.Ingestion.NativeSpec.Raw, &nativeSpecMap); err != nil { - return nil, fmt.Errorf("error unmarshalling nativeSpec: %v", err) - } - return nativeSpecMap, nil - } else if di.Spec.Ingestion.Spec != "" { - // Attempt to unmarshal the JSON Spec if nativeSpec is not available - var spec map[string]interface{} - err := json.Unmarshal([]byte(di.Spec.Ingestion.Spec), &spec) - if err != nil { - return nil, fmt.Errorf("error unmarshalling Spec: %v", err) - } - return spec, nil - } else { - // Return an error if neither nativeSpec nor Spec is valid - return nil, fmt.Errorf("no valid ingestion spec provided") - } -} - -// getSpecJson extracts the current ingestion spec from the DruidIngestion object and returns it as a string. -func getSpecJson(di *v1alpha1.DruidIngestion) (string, error) { - specData, err := getSpec(di) - if err != nil { - return "", err - } - return util.ToJsonString(specData) -} - -// getRules extracts the rules from the DruidIngestion object and returns them as a slice of maps. -// Each map represents a single rule. -func getRules(di *v1alpha1.DruidIngestion) ([]map[string]interface{}, error) { - if len(di.Spec.Ingestion.Rules) == 0 { - return nil, nil - } - - rules := make([]map[string]interface{}, 0, len(di.Spec.Ingestion.Rules)) // Initialize with capacity - for _, rule := range di.Spec.Ingestion.Rules { - var ruleMap map[string]interface{} - if err := json.Unmarshal(rule.Raw, &ruleMap); err != nil { - return nil, fmt.Errorf("error unmarshalling rule: %v", err) - } - rules = append(rules, ruleMap) - } - return rules, nil -} - -// getRulesJson extracts the rules from the DruidIngestion object and returns them as a JSON string. -func getRulesJson(di *v1alpha1.DruidIngestion) (string, error) { - rules, err := getRules(di) - if err != nil { - return "", err - } - return util.ToJsonString(rules) -} - -// extractDataSourceFromSpec extracts the dataSource from the spec map -func getDataSource(di *v1alpha1.DruidIngestion) (string, error) { - // Get the current ingestion spec - spec, err := getSpec(di) - if err != nil { - return "", err - } - - // Navigate through the nested structure to find dataSource - if specSection, ok := spec["spec"].(map[string]interface{}); ok { - if dataSchema, ok := specSection["dataSchema"].(map[string]interface{}); ok { - if dataSource, ok := dataSchema["dataSource"].(string); ok { - return dataSource, nil - } - } - } - return "", fmt.Errorf("dataSource not found in spec") -} - -func getCompaction(di *v1alpha1.DruidIngestion) (map[string]interface{}, error) { - compaction := di.Spec.Ingestion.Compaction - - compactionMap := make(map[string]interface{}) - if len(compaction.Raw) == 0 { - return compactionMap, nil - } - - if err := json.Unmarshal(compaction.Raw, &compactionMap); err != nil { - return nil, fmt.Errorf("error unmarshalling compaction: %v", err) - } - - dataSource, err := getDataSource(di) - if err != nil { - return nil, fmt.Errorf("error getting dataSource: %v", err) - } - - // Add dataSource to the map - compactionMap["dataSource"] = dataSource - - return compactionMap, nil -} - -func getCompactionJson(di *v1alpha1.DruidIngestion) (string, error) { - compaction, err := getCompaction(di) - if err != nil { - return "", err - } - return util.ToJsonString(compaction) -} - -// UpdateCompaction updates the compaction settings for a Druid data source. -func (r *DruidIngestionReconciler) UpdateCompaction( - di *v1alpha1.DruidIngestion, - svcName string, - auth internalhttp.Auth, -) (bool, error) { - // If there are no compaction settings, return false - if di.Spec.Ingestion.Compaction.Size() == 0 { - return false, nil - } - - httpClient := internalhttp.NewHTTPClient( - &http.Client{}, - &auth, - ) - - dataSource, err := getDataSource(di) - if err != nil { - return false, err - } - - // Get current compaction settings - currentResp, err := httpClient.Do( - http.MethodGet, - druidapi.MakePath(svcName, "coordinator", "config", "compaction", dataSource), - nil, - ) - if err != nil { - return false, err - } - - var currentCompactionJson string - if currentResp.StatusCode == http.StatusOK { - currentCompactionJson = string(currentResp.ResponseBody) - } else if currentResp.StatusCode == http.StatusNotFound { - // Assume no compaction settings are currently set - currentCompactionJson = "{}" - } else { - return false, fmt.Errorf("failed to retrieve current compaction settings, status code: %d", currentResp.StatusCode) - } - - desiredCompactionJson, err := getCompactionJson(di) - if err != nil { - return false, err - } - - // Compare current and desired compaction settings - if areEqual, err := util.IncludesJson(currentCompactionJson, desiredCompactionJson); err != nil { - return false, err - } else if areEqual { - // Compaction settings are already up-to-date - return false, nil - } - - // Update compaction settings - respUpdateCompaction, err := httpClient.Do( - http.MethodPost, - druidapi.MakePath(svcName, "coordinator", "config", "compaction"), - []byte(desiredCompactionJson), - ) - if err != nil { - return false, err - } - - if respUpdateCompaction.StatusCode == 200 { - return true, nil - } - - return false, fmt.Errorf( - "failed to update compaction, status code: %d, response body: %s", - respUpdateCompaction.StatusCode, respUpdateCompaction.ResponseBody) -} - -// UpdateRules updates the rules for a Druid data source. -func (r *DruidIngestionReconciler) UpdateRules( - di *v1alpha1.DruidIngestion, - svcName string, - auth internalhttp.Auth, -) (bool, error) { - // If there are no rules, return true - if len(di.Spec.Ingestion.Rules) == 0 { - return true, nil - } - - rulesData, err := getRulesJson(di) - if err != nil { - return false, err - } - postHttp := internalhttp.NewHTTPClient( - &http.Client{}, - &auth, - ) - - dataSource, err := getDataSource(di) - if err != nil { - return false, err - } - - // Update rules - respUpdateRules, err := postHttp.Do( - http.MethodPost, - druidapi.MakePath(svcName, "coordinator", "rules", dataSource), - []byte(rulesData), - ) - - if err != nil { - return false, err - } - - if respUpdateRules.StatusCode == 200 { - return true, nil - } - - return false, fmt.Errorf("failed to update rules, status code: %d, response body: %s", respUpdateRules.StatusCode, respUpdateRules.ResponseBody) -} - -func (r *DruidIngestionReconciler) CreateOrUpdate( - di *v1alpha1.DruidIngestion, - svcName string, - build builder.Builder, - auth internalhttp.Auth, -) (controllerutil.OperationResult, error) { - - // Marshal the current spec to JSON - specJson, err := getSpecJson(di) - if err != nil { - return controllerutil.OperationResultNone, err - } - - // check if task id does not exist in status - if di.Status.TaskId == "" && di.Status.CurrentIngestionSpec == "" { - // if does not exist create task - postHttp := internalhttp.NewHTTPClient( - &http.Client{}, - &auth, - ) - - // Create ingestion task - respCreateTask, err := postHttp.Do( - http.MethodPost, - getPath(di.Spec.Ingestion.Type, svcName, http.MethodPost, "", false), - []byte(specJson), - ) - - if err != nil { - return controllerutil.OperationResultNone, err - } - - compactionOk, err := r.UpdateCompaction(di, svcName, auth) - if err != nil { - return controllerutil.OperationResultNone, err - } - - rulesOk, err := r.UpdateRules(di, svcName, auth) - if err != nil { - return controllerutil.OperationResultNone, err - } - - // If the task creation was successful, patch the status with the new task ID. - if respCreateTask.StatusCode == 200 && compactionOk && rulesOk { - taskId, err := getTaskIdFromResponse(respCreateTask.ResponseBody) - if err != nil { - return controllerutil.OperationResultNone, err - } - result, err := r.makePatchDruidIngestionStatus( - di, - taskId, - DruidIngestionControllerCreateSuccess, - string(respCreateTask.ResponseBody), - v1.ConditionTrue, - DruidIngestionControllerCreateSuccess, - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - fmt.Sprintf("Resp [%s]", string(respCreateTask.ResponseBody)), - DruidIngestionControllerCreateSuccess, - ) - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - fmt.Sprintf("Resp [%s], Result [%s]", string(respCreateTask.ResponseBody), result), - DruidIngestionControllerPatchStatusSuccess) - return controllerutil.OperationResultCreated, nil - } else { - // If task creation failed, patch the status to reflect the failure. - taskId, err := getTaskIdFromResponse(respCreateTask.ResponseBody) - if err != nil { - return controllerutil.OperationResultNone, err - } - _, err = r.makePatchDruidIngestionStatus( - di, - taskId, - DruidIngestionControllerCreateFail, - string(respCreateTask.ResponseBody), - v1.ConditionTrue, - DruidIngestionControllerCreateFail, - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - build.Recorder.GenericEvent( - di, - v1.EventTypeWarning, - fmt.Sprintf("Resp [%s], Status", string(respCreateTask.ResponseBody)), - DruidIngestionControllerCreateFail, - ) - return controllerutil.OperationResultCreated, nil - } - } else { - - currentIngestionSpec, err := getSpecJson(di) - if err != nil { - return controllerutil.OperationResultNone, err - } - - ok, err := druid.IsEqualJson(di.Status.CurrentIngestionSpec, currentIngestionSpec) - if err != nil { - return controllerutil.OperationResultNone, err - } - - if !ok { - postHttp := internalhttp.NewHTTPClient( - &http.Client{}, - &auth, - ) - - respUpdateSpec, err := postHttp.Do( - http.MethodPost, - getPath(di.Spec.Ingestion.Type, svcName, http.MethodPost, "", false), - []byte(specJson), - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - - if respUpdateSpec.StatusCode == 200 { - // patch status to store the current valid ingestion spec json - taskId, err := getTaskIdFromResponse(respUpdateSpec.ResponseBody) - if err != nil { - return controllerutil.OperationResultNone, err - } - result, err := r.makePatchDruidIngestionStatus( - di, - taskId, - DruidIngestionControllerUpdateSuccess, - string(respUpdateSpec.ResponseBody), - v1.ConditionTrue, - DruidIngestionControllerUpdateSuccess, - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - fmt.Sprintf("Resp [%s]", string(respUpdateSpec.ResponseBody)), - DruidIngestionControllerUpdateSuccess, - ) - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - fmt.Sprintf("Resp [%s], Result [%s]", string(respUpdateSpec.ResponseBody), result), - DruidIngestionControllerPatchStatusSuccess) - } - - } - - compactionOk, err := r.UpdateCompaction(di, svcName, auth) - if err != nil { - return controllerutil.OperationResultNone, err - } - - if compactionOk { - // patch status to store the current compaction json - _, err := r.makePatchDruidIngestionStatus( - di, - di.Status.TaskId, - DruidIngestionControllerUpdateSuccess, - "compaction updated", - v1.ConditionTrue, - DruidIngestionControllerUpdateSuccess, - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - "compaction updated", - DruidIngestionControllerUpdateSuccess, - ) - } - - // compare the rules state - rulesEqual := reflect.DeepEqual(di.Status.CurrentRules, di.Spec.Ingestion.Rules) - - if !rulesEqual { - rulesOk, err := r.UpdateRules(di, svcName, auth) - if err != nil { - return controllerutil.OperationResultNone, err - } - - if rulesOk { - // patch status to store the current valid rules json - _, err := r.makePatchDruidIngestionStatus( - di, - di.Status.TaskId, - DruidIngestionControllerUpdateSuccess, - "rules updated", - v1.ConditionTrue, - DruidIngestionControllerUpdateSuccess, - ) - if err != nil { - return controllerutil.OperationResultNone, err - } - build.Recorder.GenericEvent( - di, - v1.EventTypeNormal, - "rules updated", - DruidIngestionControllerUpdateSuccess, - ) - } - } - - return controllerutil.OperationResultUpdated, nil - - } -} - -func (r *DruidIngestionReconciler) makePatchDruidIngestionStatus( - di *v1alpha1.DruidIngestion, - taskId string, - msg string, - reason string, - status v1.ConditionStatus, - diConditionType string, - -) (controllerutil.OperationResult, error) { - - // Get the current ingestion spec, stored in either nativeSpec or Spec - ingestionSpec, specErr := getSpecJson(di) - if specErr != nil { - return controllerutil.OperationResultNone, specErr - } - - if _, _, err := patchStatus(context.Background(), r.Client, di, func(obj client.Object) client.Object { - - in := obj.(*v1alpha1.DruidIngestion) - in.Status.CurrentIngestionSpec = ingestionSpec - in.Status.CurrentRules = di.Spec.Ingestion.Rules - in.Status.TaskId = taskId - in.Status.LastUpdateTime = metav1.Time{Time: time.Now()} - in.Status.Message = msg - in.Status.Reason = reason - in.Status.Status = status - in.Status.Type = diConditionType - return in - }); err != nil { - return controllerutil.OperationResultNone, err - } - - return controllerutil.OperationResultUpdatedStatusOnly, nil -} - -func getPath( - ingestionType v1alpha1.DruidIngestionMethod, - svcName, httpMethod, taskId string, - shutDownTask bool) string { - - switch ingestionType { - case v1alpha1.NativeBatchIndexParallel: - if httpMethod == http.MethodGet { - // get task - return druidapi.MakePath(svcName, "indexer", "task", taskId) - } else if httpMethod == http.MethodPost && !shutDownTask { - // create or update task - return druidapi.MakePath(svcName, "indexer", "task") - } else if shutDownTask { - // shutdown task - return druidapi.MakePath(svcName, "indexer", "task", taskId, "shutdown") - } - case v1alpha1.HadoopIndexHadoop: - case v1alpha1.Kafka: - if httpMethod == http.MethodGet { - // get supervisor task - return druidapi.MakePath(svcName, "indexer", "supervisor", taskId) - } else if httpMethod == http.MethodPost && !shutDownTask { - // create or update supervisor task - return druidapi.MakePath(svcName, "indexer", "supervisor") - } else if shutDownTask { - // shut down supervisor - return druidapi.MakePath(svcName, "indexer", "supervisor", taskId, "shutdown") - } - case v1alpha1.Kinesis: - case v1alpha1.QueryControllerSQL: - default: - return "" - } - - return "" -} - -type taskHolder struct { - Task string `json:"task"` // tasks - ID string `json:"id"` // supervisor -} - -func getTaskIdFromResponse(resp string) (string, error) { - var task taskHolder - if err := json.Unmarshal([]byte(resp), &task); err != nil { - return "", err - } - - // check both fields and return the appropriate value - // tasks use different field names than supervisors - if task.Task != "" { - return task.Task, nil - } - if task.ID != "" { - return task.ID, nil - } - - return "", errors.New("task id not found") -} - -type VerbType string - -type ( - TransformStatusFunc func(obj client.Object) client.Object -) - -const ( - VerbPatched VerbType = "Patched" - VerbUnchanged VerbType = "Unchanged" -) - -func patchStatus(ctx context.Context, c client.Client, obj client.Object, transform TransformStatusFunc, opts ...client.SubResourcePatchOption) (client.Object, VerbType, error) { - key := types.NamespacedName{ - Namespace: obj.GetNamespace(), - Name: obj.GetName(), - } - err := c.Get(ctx, key, obj) - if err != nil { - return nil, VerbUnchanged, err - } - - // The body of the request was in an unknown format - - // accepted media types include: - // - application/json-patch+json, - // - application/merge-patch+json, - // - application/apply-patch+yaml - patch := client.MergeFrom(obj) - obj = transform(obj.DeepCopyObject().(client.Object)) - err = c.Status().Patch(ctx, obj, patch, opts...) - if err != nil { - return nil, VerbUnchanged, err - } - return obj, VerbPatched, nil -} diff --git a/druid-operator/controllers/ingestion/reconciler_test.go b/druid-operator/controllers/ingestion/reconciler_test.go deleted file mode 100644 index 4c806cd7701a..000000000000 --- a/druid-operator/controllers/ingestion/reconciler_test.go +++ /dev/null @@ -1,633 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package ingestion - -import ( - "net/http" - "net/http/httptest" - "testing" - - "github.com/datainfrahq/druid-operator/apis/druid/v1alpha1" - - internalhttp "github.com/datainfrahq/druid-operator/pkg/http" - - "github.com/stretchr/testify/assert" - "k8s.io/apimachinery/pkg/runtime" -) - -func TestGetRules(t *testing.T) { - tests := []struct { - name string - druidIngestion *v1alpha1.DruidIngestion - expectedRules []map[string]interface{} - expectError bool - }{ - { - name: "No rules", - druidIngestion: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Rules: []runtime.RawExtension{}, - }, - }, - }, - expectedRules: nil, - expectError: false, - }, - { - name: "Valid rules", - druidIngestion: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Rules: []runtime.RawExtension{ - {Raw: []byte(`{"type": "load", "tieredReplicants": {"hot": 2}}`)}, - {Raw: []byte(`{"type": "drop", "interval": "2012-01-01/2013-01-01"}`)}, - }, - }, - }, - }, - expectedRules: []map[string]interface{}{ - {"type": "load", "tieredReplicants": map[string]interface{}{"hot": float64(2)}}, - {"type": "drop", "interval": "2012-01-01/2013-01-01"}, - }, - expectError: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - rules, err := getRules(tt.druidIngestion) - - if tt.expectError { - assert.Error(t, err, "expected an error but got none") - } else { - assert.NoError(t, err, "unexpected error") - assert.Equal(t, tt.expectedRules, rules, "rules do not match expected") - } - }) - } -} - -func TestGetRulesJson(t *testing.T) { - tests := []struct { - name string - druidIngestion *v1alpha1.DruidIngestion - expectedJson string - expectError bool - }{ - { - name: "No rules", - druidIngestion: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Rules: []runtime.RawExtension{}, - }, - }, - }, - expectedJson: "null", - expectError: false, - }, - { - name: "Valid rules", - druidIngestion: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Rules: []runtime.RawExtension{ - {Raw: []byte(`{"type": "load", "tieredReplicants": {"hot": 2}}`)}, - {Raw: []byte(`{"type": "drop", "interval": "2012-01-01/2013-01-01"}`)}, - }, - }, - }, - }, - expectedJson: `[{"type":"load","tieredReplicants":{"hot":2}},{"type":"drop","interval":"2012-01-01/2013-01-01"}]`, - expectError: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - actualJson, err := getRulesJson(tt.druidIngestion) - - if tt.expectError { - assert.Error(t, err, "expected an error but got none") - } else { - assert.NoError(t, err, "unexpected error") - assert.JSONEq(t, tt.expectedJson, actualJson, "JSON output does not match expected") - } - }) - } -} - -func TestUpdateCompaction_Success(t *testing.T) { - // Mock DruidIngestion data - di := &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Spec: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - Compaction: runtime.RawExtension{ - Raw: []byte(`{"metricsSpec": "testMetric"}`), - }, - }, - }, - } - - // Mock HTTP server - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == http.MethodGet { - // Return current compaction settings - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) - _, _ = w.Write([]byte(`{"metricsSpec": "currentMetric"}`)) - } else if r.Method == http.MethodPost { - // Simulate successful update - w.WriteHeader(http.StatusOK) - } - })) - defer server.Close() - - // Mock Auth - auth := internalhttp.Auth{ - BasicAuth: internalhttp.BasicAuth{ - UserName: "user", - Password: "pass", - }, - } - - // Mock DruidIngestionReconciler - r := &DruidIngestionReconciler{} - - // Call UpdateCompaction - success, err := r.UpdateCompaction(di, server.URL, auth) - - if err != nil { - t.Fatalf("expected no error, got %v", err) - } - if !success { - t.Fatalf("expected success, got failure") - } -} - -func TestUpdateCompaction_Failure(t *testing.T) { - // Mock DruidIngestion data - di := &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Spec: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - Compaction: runtime.RawExtension{ - Raw: []byte(`{"metricsSpec": "testMetric"}`), - }, - }, - }, - } - - // Mock HTTP server - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusInternalServerError) - })) - defer server.Close() - - // Mock Auth - auth := internalhttp.Auth{ - BasicAuth: internalhttp.BasicAuth{ - UserName: "user", - Password: "pass", - }, - } - - // Mock DruidIngestionReconciler - r := &DruidIngestionReconciler{} - - // Call UpdateCompaction - success, err := r.UpdateCompaction(di, server.URL, auth) - - if err == nil { - t.Fatalf("expected error, got nil") - } - - if success { - t.Fatalf("expected failure, got success") - } -} - -func TestGetCompaction(t *testing.T) { - compactionMap := make(map[string]interface{}) - tests := []struct { - name string - compactionRaw string - specRaw string - expectedMap map[string]interface{} - expectingErr bool - }{ - { - name: "Valid compaction settings with dataSource", - compactionRaw: `{ - "metricsSpec": "testMetric", - "tuningConfig": {"maxRowsInMemory": 10000} - }`, - specRaw: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - expectedMap: map[string]interface{}{ - "metricsSpec": "testMetric", - "tuningConfig": map[string]interface{}{ - "maxRowsInMemory": float64(10000), - }, - "dataSource": "testDataSource", - }, - expectingErr: false, - }, - { - name: "No compaction settings", - compactionRaw: ``, - specRaw: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - expectedMap: compactionMap, - expectingErr: false, - }, - { - name: "Missing dataSource", - compactionRaw: `{ - "metricsSpec": "testMetric", - "tuningConfig": {"maxRowsInMemory": 10000} - }`, - specRaw: `{ - "spec": { - "dataSchema": {} - } - }`, - expectedMap: nil, - expectingErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - di := &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Compaction: runtime.RawExtension{ - Raw: []byte(tt.compactionRaw), - }, - Spec: string(tt.specRaw), - }, - }, - } - - compactionMap, err := getCompaction(di) - if tt.expectingErr { - assert.Error(t, err, "Expected an error but got none") - } else { - assert.NoError(t, err, "Unexpected error") - assert.Equal(t, tt.expectedMap, compactionMap, "Compaction map does not match expected value") - } - }) - } -} - -func TestGetCompactionJson(t *testing.T) { - tests := []struct { - name string - compactionRaw string - specRaw string - expectedJson string - expectingErr bool - }{ - { - name: "Valid compaction settings with dataSource", - compactionRaw: `{ - "metricsSpec": "testMetric", - "tuningConfig": {"maxRowsInMemory": 10000} - }`, - specRaw: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - expectedJson: `{"metricsSpec":"testMetric","tuningConfig":{"maxRowsInMemory":10000},"dataSource":"testDataSource"}`, - expectingErr: false, - }, - { - name: "No compaction settings", - compactionRaw: ``, - specRaw: `{ - "spec": { - "dataSchema": { - "dataSource": "testDataSource" - } - } - }`, - expectedJson: "{}", - expectingErr: false, - }, - { - name: "Missing dataSource", - compactionRaw: `{ - "metricsSpec": "testMetric", - "tuningConfig": {"maxRowsInMemory": 10000} - }`, - specRaw: `{ - "spec": { - "dataSchema": {} - } - }`, - expectedJson: "", - expectingErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - di := &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Compaction: runtime.RawExtension{ - Raw: []byte(tt.compactionRaw), - }, - Spec: string(tt.specRaw), - }, - }, - } - - compactionJson, err := getCompactionJson(di) - if tt.expectingErr { - assert.Error(t, err, "Expected an error but got none") - } else { - assert.NoError(t, err, "Unexpected error") - assert.JSONEq(t, tt.expectedJson, compactionJson, "Compaction JSON does not match expected value") - } - }) - } -} - -func TestGetPath(t *testing.T) { - tests := []struct { - name string - ingestionType v1alpha1.DruidIngestionMethod - svcName string - httpMethod string - taskId string - shutDownTask bool - expected string - }{ - { - name: "NativeBatchGetTask", - ingestionType: v1alpha1.NativeBatchIndexParallel, - svcName: "http://example-druid-service", - httpMethod: http.MethodGet, - taskId: "task1", - expected: "http://example-druid-service/druid/indexer/v1/task/task1", - }, - { - name: "NativeBatchCreateUpdateTask", - ingestionType: v1alpha1.NativeBatchIndexParallel, - svcName: "http://example-druid-service", - httpMethod: http.MethodPost, - shutDownTask: false, - expected: "http://example-druid-service/druid/indexer/v1/task", - }, - { - name: "NativeBatchShutdownTask", - ingestionType: v1alpha1.NativeBatchIndexParallel, - svcName: "http://example-druid-service", - httpMethod: http.MethodPost, - taskId: "task1", - shutDownTask: true, - expected: "http://example-druid-service/druid/indexer/v1/task/task1/shutdown", - }, - { - name: "KafkaGetSupervisorTask", - ingestionType: v1alpha1.Kafka, - svcName: "http://example-druid-service", - httpMethod: http.MethodGet, - taskId: "supervisor1", - expected: "http://example-druid-service/druid/indexer/v1/supervisor/supervisor1", - }, - { - name: "KafkaCreateUpdateSupervisorTask", - ingestionType: v1alpha1.Kafka, - svcName: "http://example-druid-service", - httpMethod: http.MethodPost, - shutDownTask: false, - expected: "http://example-druid-service/druid/indexer/v1/supervisor", - }, - { - name: "KafkaShutdownSupervisor", - ingestionType: v1alpha1.Kafka, - svcName: "http://example-druid-service", - httpMethod: http.MethodPost, - taskId: "supervisor1", - shutDownTask: true, - expected: "http://example-druid-service/druid/indexer/v1/supervisor/supervisor1/shutdown", - }, - { - name: "UnsupportedIngestionType", - ingestionType: v1alpha1.Kinesis, - svcName: "http://example-druid-service", - httpMethod: http.MethodGet, - expected: "", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - actual := getPath(tt.ingestionType, tt.svcName, tt.httpMethod, tt.taskId, tt.shutDownTask) - if actual != tt.expected { - t.Errorf("getPath() = %v, expected %v", actual, tt.expected) - } - }) - } -} - -func TestGetSpec(t *testing.T) { - tests := []struct { - name string - di *v1alpha1.DruidIngestion - expectedSpec map[string]interface{} - expectingError bool - }{ - { - name: "NativeSpec is used", - di: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - NativeSpec: runtime.RawExtension{ - Raw: []byte(`{"key": "value"}`), - }, - }, - }, - }, - expectedSpec: map[string]interface{}{ - "key": "value", - }, - expectingError: false, - }, - { - name: "Spec is used when NativeSpec is empty", - di: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Spec: `{"key": "value"}`, - }, - }, - }, - expectedSpec: map[string]interface{}{ - "key": "value", - }, - expectingError: false, - }, - { - name: "Error when both NativeSpec and Spec are empty", - di: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - NativeSpec: runtime.RawExtension{}, - Spec: "", - }, - }, - }, - expectedSpec: nil, - expectingError: true, - }, - { - name: "Error when Spec is invalid JSON", - di: &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Spec: `{"key": "value"`, // Invalid JSON - }, - }, - }, - expectedSpec: nil, - expectingError: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - spec, err := getSpec(tt.di) - if tt.expectingError { - assert.Error(t, err) - } else { - assert.NoError(t, err) - assert.Equal(t, tt.expectedSpec, spec) - } - }) - } -} - -func TestGetDataSource(t *testing.T) { - tests := []struct { - name string - specJSON string - expected string - expectingErr bool - }{ - { - name: "Valid dataSource extraction", - specJSON: ` - { - "spec": { - "dataSchema": { - "dataSource": "wikipedia-2" - } - } - }`, - expected: "wikipedia-2", - expectingErr: false, - }, - { - name: "Missing dataSource", - specJSON: ` - { - "spec": { - "dataSchema": {} - } - }`, - expected: "", - expectingErr: true, - }, - { - name: "Incorrect dataSource type", - specJSON: ` - { - "spec": { - "dataSchema": { - "dataSource": 123 - } - } - }`, - expected: "", - expectingErr: true, - }, - { - name: "Missing spec section", - specJSON: ` - { - "otherField": {} - }`, - expected: "", - expectingErr: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - // Prepare the DruidIngestion object with the test JSON - di := &v1alpha1.DruidIngestion{ - Spec: v1alpha1.DruidIngestionSpec{ - Ingestion: v1alpha1.IngestionSpec{ - Spec: (tt.specJSON), - }, - }, - } - - dataSource, err := getDataSource(di) - if tt.expectingErr { - assert.Error(t, err, "Expected an error but got none") - } else { - assert.NoError(t, err, "Unexpected error") - assert.Equal(t, tt.expected, dataSource, "DataSource does not match expected value") - } - }) - } -} diff --git a/druid-operator/docs/README.md b/druid-operator/docs/README.md deleted file mode 100644 index ea9584ffe572..000000000000 --- a/druid-operator/docs/README.md +++ /dev/null @@ -1,60 +0,0 @@ - - -# Overview - -Druid Operator is a Kubernetes controller that manages the lifecycle of [Apache Druid](https://druid.apache.org/) clusters. -The operator simplifies the management of Druid clusters with its custom logic that is configurable via custom API -(Kubernetes CRD). - -## Druid Operator Documentation - -* [Getting Started](./getting_started.md) -* API Specifications - * [Druid API](./api_specifications/druid.md) -* [Supported Features](./features.md) -* [Example Specs](./examples.md) -* [Developer Documentation](./dev_doc.md) -* [Migration To Kubebuilder V3 in the Upcoming Version](./kubebuilder_v3_migration.md) - ---- - -:warning: You won't find any documentation about druid itself in this repository. -If you need details about how to architecture your druid cluster you can consult theses documentations: - -* [Druid introduction]() -* [Druid architecture](https://druid.apache.org/docs/latest/design/architecture.html) -* [Druid configuration reference](https://druid.apache.org/docs/latest/configuration/index.html) - ---- - -[German company iunera has published their druid cluster spec](https://www.iunera.com/) in github which is used in the context of a software project by the German Ministry for Digital and Transport. The spec have the following features: - -* Kubernetes-native Druid - * K8S jobs instead of Middlemanager with separated [pod-templates](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/druidcluster/podTemplates/default-task-template.yaml) - * [Service Discovery by Kubernetes](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/druidcluster/iuneradruid-cluster.yaml#L172) aka. no zookeeper - * [HPA for historical nodes](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/druidcluster/hpa.yaml) / extended [Metrics Exporter](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/metrics/druid-exporter.helm.yaml) -* Multiple [Authenticator/Authorizer](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/druidcluster/iuneradruid-cluster.yaml#L88) (Basic Auth and Azure AD Authentication with pac4j) -* [Examples](https://github.com/iunera/druid-cluster-config/tree/main/_authentication-and-authorization-druid) for authorization and authentication -* Based on druid-operator and [flux-cd](https://fluxcd.io/flux/) -* Secrets managed by [SOPS](https://fluxcd.io/flux/guides/mozilla-sops/) and [ingested as Environment Variables](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/druidcluster/iuneradruid-cluster.yaml#L245) -* Postgres as Metadata Store (incl. [Helmchart Config](https://github.com/iunera/druid-cluster-config/blob/main/kubernetes/druid/postgres/postgres.helm.yaml)) -* All endpoints TLS encrypted incl. [Howto](https://github.com/iunera/druid-cluster-config/blob/main/README.md#cluster-internal-tls-encryption) - -Link to the complete config file: https://github.com/iunera/druid-cluster-config diff --git a/druid-operator/docs/api_specifications/druid.md b/druid-operator/docs/api_specifications/druid.md deleted file mode 100644 index 572ee04f1f2c..000000000000 --- a/druid-operator/docs/api_specifications/druid.md +++ /dev/null @@ -1,2942 +0,0 @@ - - -

Druid API reference

-

Packages:

- -

druid.apache.org/v1alpha1

-Resource Types: -
    -

    AdditionalContainer -

    -

    -(Appears on: -DruidNodeSpec, -DruidSpec) -

    -

    AdditionalContainer defines additional sidecar containers to be deployed with the Druid pods. -(will be part of Kubernetes native in the future: -https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#summary).

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -runAsInit
    - -bool - -
    -(Optional) -

    RunAsInit indicate whether this should be an init container.

    -
    -image
    - -string - -
    -

    Image Image of the additional container.

    -
    -containerName
    - -string - -
    -

    ContainerName name of the additional container.

    -
    -command
    - -[]string - -
    -

    Command command for the additional container.

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -(Optional) -

    ImagePullPolicy If not present, will be taken from top level spec.

    -
    -args
    - -[]string - -
    -(Optional) -

    Args Arguments to call the command.

    -
    -securityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    ContainerSecurityContext If not present, will be taken from top level pod.

    -
    -resources
    - - -Kubernetes core/v1.ResourceRequirements - - -
    -(Optional) -

    Resources Kubernetes Native resources specification.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    VolumeMounts Kubernetes Native VolumeMount specification.

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    Env Environment variables for the additional container.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets…).

    -
    -
    -
    -

    DeepStorageSpec -

    -

    -(Appears on: -DruidSpec) -

    -

    DeepStorageSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -
    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -type
    - -string - -
    -
    -spec
    - -encoding/json.RawMessage - -
    -
    -
    - -
    -
    -
    -
    -

    Druid -

    -

    Druid is the Schema for the druids API.

    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -metadata
    - - -Kubernetes meta/v1.ObjectMeta - - -
    -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
    -spec
    - - -DruidSpec - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -ignored
    - -bool - -
    -(Optional) -

    Ignored is now deprecated API. In order to avoid reconciliation of objects use the -druid.apache.org/ignored: "true" annotation.

    -
    -common.runtime.properties
    - -string - -
    -

    CommonRuntimeProperties Content fo the common.runtime.properties configuration file.

    -
    -extraCommonConfig
    - - -[]*k8s.io/api/core/v1.ObjectReference - - -
    -(Optional) -

    ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the -common configuration path.

    -
    -forceDeleteStsPodOnError
    - -bool - -
    -(Optional) -

    ForceDeleteStsPodOnError Delete the StatefulSet’s pods if the StatefulSet is set to ordered ready. -issue: https://github.com/kubernetes/kubernetes/issues/67250 -doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback

    -
    -scalePvcSts
    - -bool - -
    -(Optional) -

    ScalePvcSts When enabled, operator will allow volume expansion of StatefulSet’s PVCs.

    -
    -commonConfigMountPath
    - -string - -
    -(Optional) -

    CommonConfigMountPath In-container directory to mount the Druid common configuration

    -
    -disablePVCDeletionFinalizer
    - -bool - -
    -(Optional) -

    DisablePVCDeletionFinalizer Whether PVCs shall be deleted on the deletion of the Druid cluster.

    -
    -deleteOrphanPvc
    - -bool - -
    -(Optional) -

    DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned up by the operator.

    -
    -startScript
    - -string - -
    -(Optional) -

    StartScript Path to Druid’s start script to be run on start.

    -
    -image
    - -string - -
    -(Optional) -

    Image Required here or at the NodeSpec level.

    -
    -serviceAccount
    - -string - -
    -(Optional) -

    ServiceAccount

    -
    -imagePullSecrets
    - - -[]Kubernetes core/v1.LocalObjectReference - - -
    -(Optional) -

    ImagePullSecrets

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -(Optional) -

    ImagePullPolicy

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    Env Environment variables for druid containers.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets…).

    -
    -jvm.options
    - -string - -
    -(Optional) -

    JvmOptions Contents of the shared jvm.options configuration file for druid JVM processes.

    -
    -log4j.config
    - -string - -
    -(Optional) -

    Log4jConfig contents log4j.config configuration file.

    -
    -securityContext
    - - -Kubernetes core/v1.PodSecurityContext - - -
    -(Optional) -

    PodSecurityContext

    -
    -containerSecurityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    ContainerSecurityContext

    -
    -volumeClaimTemplates
    - - -[]Kubernetes core/v1.PersistentVolumeClaim - - -
    -(Optional) -

    VolumeClaimTemplates Kubernetes Native VolumeClaimTemplate specification.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    VolumeMounts Kubernetes Native VolumeMount specification.

    -
    -volumes
    - - -[]Kubernetes core/v1.Volume - - -
    -(Optional) -

    Volumes Kubernetes Native Volumes specification.

    -
    -podAnnotations
    - -map[string]string - -
    -(Optional) -

    PodAnnotations Custom annotations to be populated in Druid pods.

    -
    -workloadAnnotations
    - -map[string]string - -
    -(Optional) -

    WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. -if the same key is specified at both the DruidNodeSpec level and DruidSpec level, the DruidNodeSpec WorkloadAnnotations will take precedence.

    -
    -podManagementPolicy
    - - -Kubernetes apps/v1.PodManagementPolicyType - - -
    -(Optional) -

    PodManagementPolicy

    -
    -podLabels
    - -map[string]string - -
    -(Optional) -

    PodLabels Custom labels to be populated in Druid pods.

    -
    -priorityClassName
    - -string - -
    -(Optional) -

    PriorityClassName Kubernetes native priorityClassName specification.

    -
    -updateStrategy
    - - -Kubernetes apps/v1.StatefulSetUpdateStrategy - - -
    -(Optional) -

    UpdateStrategy

    -
    -livenessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    LivenessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -readinessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    ReadinessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -startUpProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    StartUpProbe

    -
    -services
    - - -[]Kubernetes core/v1.Service - - -
    -(Optional) -

    Services Kubernetes services to be created for each workload.

    -
    -nodeSelector
    - -map[string]string - -
    -(Optional) -

    NodeSelector Kubernetes native nodeSelector specification.

    -
    -tolerations
    - - -[]Kubernetes core/v1.Toleration - - -
    -(Optional) -

    Tolerations Kubernetes native tolerations specification.

    -
    -affinity
    - - -Kubernetes core/v1.Affinity - - -
    -(Optional) -

    Affinity Kubernetes native affinity specification.

    -
    -nodes
    - - -map[string]./apis/druid/v1alpha1.DruidNodeSpec - - -
    -

    Nodes a list of Druid Node types and their configurations. -DruidSpec is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific -NodeSpec level.

    -
    -additionalContainer
    - - -[]AdditionalContainer - - -
    -(Optional) -

    AdditionalContainer defines additional sidecar containers to be deployed with the Druid pods.

    -
    -rollingDeploy
    - -bool - -
    -(Optional) -

    RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: -https://druid.apache.org/docs/latest/operations/rolling-updates.html -If set to true then operator checks the rollout status of previous version workloads before updating the next. -This will be done only for update actions.

    -
    -defaultProbes
    - -bool - -
    -(Optional) -

    DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components -but it won’t override existing probes

    -
    -zookeeper
    - - -ZookeeperSpec - - -
    -(Optional) -

    Zookeeper IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -metadataStore
    - - -MetadataStoreSpec - - -
    -(Optional) -

    MetadataStore IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -deepStorage
    - - -DeepStorageSpec - - -
    -(Optional) -

    DeepStorage IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -metricDimensions.json
    - -string - -
    -(Optional) -

    DimensionsMapPath Custom Dimension Map Path for statsd emitter. -stastd documentation is described in the following documentation: -https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html

    -
    -hdfs-site.xml
    - -string - -
    -(Optional) -

    HdfsSite Contents of hdfs-site.xml.

    -
    -core-site.xml
    - -string - -
    -(Optional) -

    CoreSite Contents of core-site.xml.

    -
    -dynamicConfig
    - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -

    Dynamic Configurations for Druid. Applied through the dynamic configuration API.

    -
    -auth
    - -github.com/datainfrahq/druid-operator/pkg/druidapi.Auth - -
    -(Optional) -
    -dnsPolicy
    - - -Kubernetes core/v1.DNSPolicy - - -
    -(Optional) -

    See v1.DNSPolicy for more details.

    -
    -dnsConfig
    - - -Kubernetes core/v1.PodDNSConfig - - -
    -(Optional) -

    See v1.PodDNSConfig for more details.

    -
    -
    -status
    - - -DruidClusterStatus - - -
    -
    -
    -
    -

    DruidClusterStatus -

    -

    -(Appears on: -Druid) -

    -

    DruidClusterStatus Defines the observed state of Druid.

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -druidNodeStatus
    - - -DruidNodeTypeStatus - - -
    -

    INSERT ADDITIONAL STATUS FIELD - define observed state of cluster -Important: Run “make” to regenerate code after modifying this file

    -
    -statefulSets
    - -[]string - -
    -
    -deployments
    - -[]string - -
    -
    -services
    - -[]string - -
    -
    -configMaps
    - -[]string - -
    -
    -podDisruptionBudgets
    - -[]string - -
    -
    -ingress
    - -[]string - -
    -
    -hpAutoscalers
    - -[]string - -
    -
    -pods
    - -[]string - -
    -
    -persistentVolumeClaims
    - -[]string - -
    -
    -
    -
    -

    DruidIngestion -

    -

    Ingestion is the Schema for the Ingestion API

    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -metadata
    - - -Kubernetes meta/v1.ObjectMeta - - -
    -Refer to the Kubernetes API documentation for the fields of the -metadata field. -
    -spec
    - - -DruidIngestionSpec - - -
    -
    -
    - - - - - - - - - - - - - - - - - -
    -suspend
    - -bool - -
    -(Optional) -
    -druidCluster
    - -string - -
    -
    -ingestion
    - - -IngestionSpec - - -
    -
    -auth
    - -github.com/datainfrahq/druid-operator/pkg/druidapi.Auth - -
    -(Optional) -
    -
    -status
    - - -DruidIngestionStatus - - -
    -
    -
    -
    -

    DruidIngestionMethod -(string alias)

    -

    -(Appears on: -IngestionSpec) -

    -

    DruidIngestionSpec -

    -

    -(Appears on: -DruidIngestion) -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -suspend
    - -bool - -
    -(Optional) -
    -druidCluster
    - -string - -
    -
    -ingestion
    - - -IngestionSpec - - -
    -
    -auth
    - -github.com/datainfrahq/druid-operator/pkg/druidapi.Auth - -
    -(Optional) -
    -
    -
    -

    DruidIngestionStatus -

    -

    -(Appears on: -DruidIngestion) -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -taskId
    - -string - -
    -
    -type
    - -string - -
    -
    -status
    - - -Kubernetes core/v1.ConditionStatus - - -
    -
    -reason
    - -string - -
    -
    -message
    - -string - -
    -
    -lastUpdateTime
    - - -Kubernetes meta/v1.Time - - -
    -
    -currentIngestionSpec.json
    - -string - -
    -

    CurrentIngestionSpec is a string instead of RawExtension to maintain compatibility with existing -IngestionSpecs that are stored as JSON strings.

    -
    -rules
    - -[]k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -
    -
    -
    -

    DruidNodeConditionType -(string alias)

    -

    -(Appears on: -DruidNodeTypeStatus) -

    -

    DruidNodeSpec -

    -

    -(Appears on: -DruidSpec) -

    -

    DruidNodeSpec Specification of Druid Node type and its configurations. -The key in following map can be arbitrary string that helps you identify resources for a specific nodeSpec. -It is used in the Kubernetes resources’ names, so it must be compliant with restrictions -placed on Kubernetes resource names: -https://kubernetes.io/docs/concepts/overview/working-with-objects/names/

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -nodeType
    - -string - -
    -

    NodeDruid Druid node type.

    -
    -druid.port
    - -int32 - -
    -

    DruidPort Used by the Druid process.

    -
    -kind
    - -string - -
    -(Optional) -

    Kind Can be StatefulSet or Deployment. -Note: volumeClaimTemplates are ignored when kind=Deployment

    -
    -replicas
    - -int32 - -
    -(Optional) -

    Replicas replica of the workload

    -
    -podLabels
    - -map[string]string - -
    -(Optional) -

    PodLabels Custom labels to be populated in the workload’s pods.

    -
    -podDisruptionBudgetSpec
    - - -Kubernetes policy/v1.PodDisruptionBudgetSpec - - -
    -(Optional) -

    PodDisruptionBudgetSpec Kubernetes native podDisruptionBudget specification.

    -
    -priorityClassName
    - -string - -
    -(Optional) -

    PriorityClassName Kubernetes native priorityClassName specification.

    -
    -runtime.properties
    - -string - -
    -

    RuntimeProperties Additional runtime configuration for the specific workload.

    -
    -jvm.options
    - -string - -
    -(Optional) -

    JvmOptions overrides JvmOptions at top level.

    -
    -extra.jvm.options
    - -string - -
    -(Optional) -

    ExtraJvmOptions Appends extra jvm options to the JvmOptions field.

    -
    -log4j.config
    - -string - -
    -(Optional) -

    Log4jConfig Overrides Log4jConfig at top level.

    -
    -nodeConfigMountPath
    - -string - -
    -

    NodeConfigMountPath in-container directory to mount with runtime.properties, jvm.config, log4j2.xml files.

    -
    -services
    - - -[]Kubernetes core/v1.Service - - -
    -(Optional) -

    Services Overrides services at top level.

    -
    -tolerations
    - - -[]Kubernetes core/v1.Toleration - - -
    -(Optional) -

    Tolerations Kubernetes native tolerations specification.

    -
    -affinity
    - - -Kubernetes core/v1.Affinity - - -
    -(Optional) -

    Affinity Kubernetes native affinity specification.

    -
    -nodeSelector
    - -map[string]string - -
    -(Optional) -

    NodeSelector Kubernetes native nodeSelector specification.

    -
    -terminationGracePeriodSeconds
    - -int64 - -
    -(Optional) -

    TerminationGracePeriodSeconds

    -
    -ports
    - - -[]Kubernetes core/v1.ContainerPort - - -
    -(Optional) -

    Ports Extra ports to be added to pod spec.

    -
    -image
    - -string - -
    -(Optional) -

    Image Overrides image from top level, Required if no image specified at top level.

    -
    -imagePullSecrets
    - - -[]Kubernetes core/v1.LocalObjectReference - - -
    -(Optional) -

    ImagePullSecrets Overrides imagePullSecrets from top level.

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -(Optional) -

    ImagePullPolicy Overrides imagePullPolicy from top level.

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    Env Environment variables for druid containers.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets…).

    -
    -resources
    - - -Kubernetes core/v1.ResourceRequirements - - -
    -(Optional) -

    Resources Kubernetes Native resources specification.

    -
    -securityContext
    - - -Kubernetes core/v1.PodSecurityContext - - -
    -(Optional) -

    PodSecurityContext Overrides securityContext at top level.

    -
    -containerSecurityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    ContainerSecurityContext

    -
    -podAnnotations
    - -map[string]string - -
    -(Optional) -

    PodAnnotations Custom annotation to be populated in the workload’s pods.

    -
    -podManagementPolicy
    - - -Kubernetes apps/v1.PodManagementPolicyType - - -
    -(Optional) -

    PodManagementPolicy

    -
    -maxSurge
    - -int32 - -
    -(Optional) -

    MaxSurge For Deployment object only. -Set to 25% by default.

    -
    -maxUnavailable
    - -int32 - -
    -(Optional) -

    MaxUnavailable For deployment object only. -Set to 25% by default

    -
    -updateStrategy
    - - -Kubernetes apps/v1.StatefulSetUpdateStrategy - - -
    -(Optional) -

    UpdateStrategy

    -
    -livenessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    LivenessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -readinessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    ReadinessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -startUpProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    StartUpProbe

    -
    -ingressAnnotations
    - -map[string]string - -
    -(Optional) -

    IngressAnnotations Ingress annotations to be populated in ingress spec.

    -
    -workloadAnnotations
    - -map[string]string - -
    -(Optional) -

    WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec.

    -
    -ingress
    - - -Kubernetes networking/v1.IngressSpec - - -
    -(Optional) -

    Ingress Kubernetes Native Ingress specification.

    -
    -persistentVolumeClaim
    - - -[]Kubernetes core/v1.PersistentVolumeClaim - - -
    -(Optional) -

    VolumeClaimTemplates Kubernetes Native VolumeClaimTemplate specification.

    -
    -lifecycle
    - - -Kubernetes core/v1.Lifecycle - - -
    -(Optional) -

    Lifecycle

    -
    -hpAutoscaler
    - - -Kubernetes autoscaling/v2.HorizontalPodAutoscalerSpec - - -
    -(Optional) -

    HPAutoScaler Kubernetes Native HorizontalPodAutoscaler specification.

    -
    -topologySpreadConstraints
    - - -[]Kubernetes core/v1.TopologySpreadConstraint - - -
    -(Optional) -

    TopologySpreadConstraints Kubernetes Native topologySpreadConstraints specification.

    -
    -volumeClaimTemplates
    - - -[]Kubernetes core/v1.PersistentVolumeClaim - - -
    -(Optional) -

    VolumeClaimTemplates Kubernetes Native volumeClaimTemplates specification.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    VolumeMounts Kubernetes Native volumeMounts specification.

    -
    -volumes
    - - -[]Kubernetes core/v1.Volume - - -
    -(Optional) -

    Volumes Kubernetes Native volumes specification.

    -
    -additionalContainer
    - - -[]AdditionalContainer - - -
    -(Optional) -

    Operator deploys the sidecar container based on these properties.

    -
    -serviceAccountName
    - -string - -
    -(Optional) -

    ServiceAccountName Kubernetes native serviceAccountName specification.

    -
    -dynamicConfig
    - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -

    Dynamic Configurations for Druid. Applied through the dynamic configuration API.

    -
    -dnsPolicy
    - - -Kubernetes core/v1.DNSPolicy - - -
    -(Optional) -

    See v1.DNSPolicy for more details.

    -
    -dnsConfig
    - - -Kubernetes core/v1.PodDNSConfig - - -
    -(Optional) -

    See v1.PodDNSConfig for more details.

    -
    -
    -
    -

    DruidNodeTypeStatus -

    -

    -(Appears on: -DruidClusterStatus) -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -druidNode
    - -string - -
    -
    -druidNodeConditionStatus
    - - -Kubernetes core/v1.ConditionStatus - - -
    -
    -druidNodeConditionType
    - - -DruidNodeConditionType - - -
    -
    -reason
    - -string - -
    -
    -
    -
    -

    DruidSpec -

    -

    -(Appears on: -Druid) -

    -

    DruidSpec defines the desired state of the Druid cluster.

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -ignored
    - -bool - -
    -(Optional) -

    Ignored is now deprecated API. In order to avoid reconciliation of objects use the -druid.apache.org/ignored: "true" annotation.

    -
    -common.runtime.properties
    - -string - -
    -

    CommonRuntimeProperties Content fo the common.runtime.properties configuration file.

    -
    -extraCommonConfig
    - - -[]*k8s.io/api/core/v1.ObjectReference - - -
    -(Optional) -

    ExtraCommonConfig References to ConfigMaps holding more configuration files to mount to the -common configuration path.

    -
    -forceDeleteStsPodOnError
    - -bool - -
    -(Optional) -

    ForceDeleteStsPodOnError Delete the StatefulSet’s pods if the StatefulSet is set to ordered ready. -issue: https://github.com/kubernetes/kubernetes/issues/67250 -doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback

    -
    -scalePvcSts
    - -bool - -
    -(Optional) -

    ScalePvcSts When enabled, operator will allow volume expansion of StatefulSet’s PVCs.

    -
    -commonConfigMountPath
    - -string - -
    -(Optional) -

    CommonConfigMountPath In-container directory to mount the Druid common configuration

    -
    -disablePVCDeletionFinalizer
    - -bool - -
    -(Optional) -

    DisablePVCDeletionFinalizer Whether PVCs shall be deleted on the deletion of the Druid cluster.

    -
    -deleteOrphanPvc
    - -bool - -
    -(Optional) -

    DeleteOrphanPvc Orphaned (unmounted PVCs) shall be cleaned up by the operator.

    -
    -startScript
    - -string - -
    -(Optional) -

    StartScript Path to Druid’s start script to be run on start.

    -
    -image
    - -string - -
    -(Optional) -

    Image Required here or at the NodeSpec level.

    -
    -serviceAccount
    - -string - -
    -(Optional) -

    ServiceAccount

    -
    -imagePullSecrets
    - - -[]Kubernetes core/v1.LocalObjectReference - - -
    -(Optional) -

    ImagePullSecrets

    -
    -imagePullPolicy
    - - -Kubernetes core/v1.PullPolicy - - -
    -(Optional) -

    ImagePullPolicy

    -
    -env
    - - -[]Kubernetes core/v1.EnvVar - - -
    -(Optional) -

    Env Environment variables for druid containers.

    -
    -envFrom
    - - -[]Kubernetes core/v1.EnvFromSource - - -
    -(Optional) -

    EnvFrom Extra environment variables from remote source (ConfigMaps, Secrets…).

    -
    -jvm.options
    - -string - -
    -(Optional) -

    JvmOptions Contents of the shared jvm.options configuration file for druid JVM processes.

    -
    -log4j.config
    - -string - -
    -(Optional) -

    Log4jConfig contents log4j.config configuration file.

    -
    -securityContext
    - - -Kubernetes core/v1.PodSecurityContext - - -
    -(Optional) -

    PodSecurityContext

    -
    -containerSecurityContext
    - - -Kubernetes core/v1.SecurityContext - - -
    -(Optional) -

    ContainerSecurityContext

    -
    -volumeClaimTemplates
    - - -[]Kubernetes core/v1.PersistentVolumeClaim - - -
    -(Optional) -

    VolumeClaimTemplates Kubernetes Native VolumeClaimTemplate specification.

    -
    -volumeMounts
    - - -[]Kubernetes core/v1.VolumeMount - - -
    -(Optional) -

    VolumeMounts Kubernetes Native VolumeMount specification.

    -
    -volumes
    - - -[]Kubernetes core/v1.Volume - - -
    -(Optional) -

    Volumes Kubernetes Native Volumes specification.

    -
    -podAnnotations
    - -map[string]string - -
    -(Optional) -

    PodAnnotations Custom annotations to be populated in Druid pods.

    -
    -workloadAnnotations
    - -map[string]string - -
    -(Optional) -

    WorkloadAnnotations annotations to be populated in StatefulSet or Deployment spec. -if the same key is specified at both the DruidNodeSpec level and DruidSpec level, the DruidNodeSpec WorkloadAnnotations will take precedence.

    -
    -podManagementPolicy
    - - -Kubernetes apps/v1.PodManagementPolicyType - - -
    -(Optional) -

    PodManagementPolicy

    -
    -podLabels
    - -map[string]string - -
    -(Optional) -

    PodLabels Custom labels to be populated in Druid pods.

    -
    -priorityClassName
    - -string - -
    -(Optional) -

    PriorityClassName Kubernetes native priorityClassName specification.

    -
    -updateStrategy
    - - -Kubernetes apps/v1.StatefulSetUpdateStrategy - - -
    -(Optional) -

    UpdateStrategy

    -
    -livenessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    LivenessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -readinessProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    ReadinessProbe -Port is set to druid.port if not specified with httpGet handler.

    -
    -startUpProbe
    - - -Kubernetes core/v1.Probe - - -
    -(Optional) -

    StartUpProbe

    -
    -services
    - - -[]Kubernetes core/v1.Service - - -
    -(Optional) -

    Services Kubernetes services to be created for each workload.

    -
    -nodeSelector
    - -map[string]string - -
    -(Optional) -

    NodeSelector Kubernetes native nodeSelector specification.

    -
    -tolerations
    - - -[]Kubernetes core/v1.Toleration - - -
    -(Optional) -

    Tolerations Kubernetes native tolerations specification.

    -
    -affinity
    - - -Kubernetes core/v1.Affinity - - -
    -(Optional) -

    Affinity Kubernetes native affinity specification.

    -
    -nodes
    - - -map[string]./apis/druid/v1alpha1.DruidNodeSpec - - -
    -

    Nodes a list of Druid Node types and their configurations. -DruidSpec is used to create Kubernetes workload specs. Many of the fields above can be overridden at the specific -NodeSpec level.

    -
    -additionalContainer
    - - -[]AdditionalContainer - - -
    -(Optional) -

    AdditionalContainer defines additional sidecar containers to be deployed with the Druid pods.

    -
    -rollingDeploy
    - -bool - -
    -(Optional) -

    RollingDeploy Whether to deploy the components in a rolling update as described in the documentation: -https://druid.apache.org/docs/latest/operations/rolling-updates.html -If set to true then operator checks the rollout status of previous version workloads before updating the next. -This will be done only for update actions.

    -
    -defaultProbes
    - -bool - -
    -(Optional) -

    DefaultProbes If set to true this will add default probes (liveness / readiness / startup) for all druid components -but it won’t override existing probes

    -
    -zookeeper
    - - -ZookeeperSpec - - -
    -(Optional) -

    Zookeeper IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -metadataStore
    - - -MetadataStoreSpec - - -
    -(Optional) -

    MetadataStore IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -deepStorage
    - - -DeepStorageSpec - - -
    -(Optional) -

    DeepStorage IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -metricDimensions.json
    - -string - -
    -(Optional) -

    DimensionsMapPath Custom Dimension Map Path for statsd emitter. -stastd documentation is described in the following documentation: -https://druid.apache.org/docs/latest/development/extensions-contrib/statsd.html

    -
    -hdfs-site.xml
    - -string - -
    -(Optional) -

    HdfsSite Contents of hdfs-site.xml.

    -
    -core-site.xml
    - -string - -
    -(Optional) -

    CoreSite Contents of core-site.xml.

    -
    -dynamicConfig
    - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -

    Dynamic Configurations for Druid. Applied through the dynamic configuration API.

    -
    -auth
    - -github.com/datainfrahq/druid-operator/pkg/druidapi.Auth - -
    -(Optional) -
    -dnsPolicy
    - - -Kubernetes core/v1.DNSPolicy - - -
    -(Optional) -

    See v1.DNSPolicy for more details.

    -
    -dnsConfig
    - - -Kubernetes core/v1.PodDNSConfig - - -
    -(Optional) -

    See v1.PodDNSConfig for more details.

    -
    -
    -
    -

    IngestionSpec -

    -

    -(Appears on: -DruidIngestionSpec) -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    -type
    - - -DruidIngestionMethod - - -
    -
    -spec
    - -string - -
    -(Optional) -

    Spec should be passed in as a JSON string. -Note: This field is planned for deprecation in favor of nativeSpec.

    -
    -
    - -
    -
    -nativeSpec
    - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -

    nativeSpec allows the ingestion specification to be defined in a native Kubernetes format. -This is particularly useful for environment-specific configurations and will eventually -replace the JSON-based Spec field. -Note: Spec will be ignored if nativeSpec is provided.

    -
    -compaction
    - -k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -
    -rules
    - -[]k8s.io/apimachinery/pkg/runtime.RawExtension - -
    -(Optional) -
    -
    -
    -

    MetadataStoreSpec -

    -

    -(Appears on: -DruidSpec) -

    -

    MetadataStoreSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -
    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -type
    - -string - -
    -
    -spec
    - -encoding/json.RawMessage - -
    -
    -
    - -
    -
    -
    -
    -

    ZookeeperSpec -

    -

    -(Appears on: -DruidSpec) -

    -

    ZookeeperSpec IGNORED (Future API): In order to make Druid dependency setup extensible from within Druid operator.

    -
    -
    - - - - - - - - - - - - - - - - - -
    FieldDescription
    -type
    - -string - -
    -
    -spec
    - -encoding/json.RawMessage - -
    -
    -
    - -
    -
    -
    -
    -
    -

    This page was automatically generated with gen-crd-api-reference-docs

    -
    diff --git a/druid-operator/docs/dev_doc.md b/druid-operator/docs/dev_doc.md deleted file mode 100644 index 444ad475e6d7..000000000000 --- a/druid-operator/docs/dev_doc.md +++ /dev/null @@ -1,80 +0,0 @@ - - -## Dev Dependencies - -- Golang 1.20+ -- Kubebuilder v3 -- It is recommended to install kind since the project's e2e tests are using it. - -## Running Operator Locally -We're using Kubebuilder so we are working with its `Makefile` and extra custom commands: -```shell -# If needed, create a kubernetes cluster (requires kind) -make kind - -# Install the CRDs -make install - -# Run the operator locally -make run -``` - -## Watch a namespace -```shell -# Watch all namespaces -export WATCH_NAMESPACE="" - -# Watch a single namespace -export WATCH_NAMESPACE="mynamespace" - -# Watch all namespaces except: kube-system, default -export DENY_LIST="kube-system,default" -``` - -## Building The Operator Docker Image -```shell -make docker-build - -# In case you want to build it with a custom image: -make docker-build IMG=custom-name:custom-tag -``` - -## Testing -Before submitting a PR, make sure the tests are running successfully. -```shell -# Run unit tests -make test - -# Run E2E tests (requires kind) -make e2e -``` - -## Documentation -If you changed the CRD API, please make sure the documentation is also updated: -```shell -make api-docs -``` - -## Help -The `Makefile` should contain all commands with explanations. You can also run: -```shell -# For help -make help -``` diff --git a/druid-operator/docs/druid_cr.md b/druid-operator/docs/druid_cr.md deleted file mode 100644 index 8700b963526d..000000000000 --- a/druid-operator/docs/druid_cr.md +++ /dev/null @@ -1,136 +0,0 @@ - - -## Druid CR Spec - -- Druid CR has a ```clusterSpec``` which is common for all the druid nodes deployed and a ```nodeSpec``` which is specific to druid nodes. -- Some key values are ```Required```, ie they must be present in the spec to get the cluster deployed. Other's are optional. -- For full details on spec refer to ```pkg/apis/druid/v1alpha1/druid_types.go``` -- The operator supports both deployments and statefulsets for druid Nodes. ```kind``` can be specified in the druid NodeSpec's to ```Deployment``` / ```StatefulSet```. -- ```NOTE: The default behavior shall provision all the nodes as statefulsets.``` -- The following are cluster scoped and common to all the druid nodes. - -```yaml -spec: - # Enable rolling deploy for druid, not required but suggested for production setup - # more information in features.md and in druid documentation - # http://druid.io/docs/latest/operations/rolling-updates.html - rollingDeploy: true - # Image for druid, Required Key - image: apache/druid:25.0.0 - .... - # Optionally specify image for all nodes. Can be specify on nodes also - # imagePullSecrets: - # - name: tutu - .... - # Entrypoint for druid cluster, Required Key - startScript: /druid.sh - ... - # Labels populated by pods - podLabels: - .... - # Pod Security Context - securityContext: - ... - # Service Spec created for all nodes - services: - ... - # Mount Path to mount the common runtime,jvm and log4xml configs inside druid pods. Required Key - commonConfigMountPath: "/opt/druid/conf/druid/cluster/_common" - ... - # JVM Options common for all druid nodes - jvm.options: |- - ... - # log4j.config common for all druid nodes - - log4j.config: |- - # common runtime properties for all druid nodes - common.runtime.properties: | - ``` - -- The following are specific to a node. - - ```yaml - nodes: - # String value, can be anything to define a node name. - brokers: - # nodeType can be broker, historical, middleManager, indexer, router, coordinator and overlord. - # Required Key - nodeType: "broker" - # Optionally specify for broker nodes - # imagePullSecrets: - # - name: tutu - # Port for the node - druid.port: 8088 - # MountPath where are the all node properties get mounted as configMap - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - # replica count, required must be greater than > 0. - replicas: 1 - # Runtime Properties for the node - # Required Key - runtime.properties: | - ... -``` - -## Authentication Setup - -Authentication can be configured to secure communication with the cluster API using credentials stored in Kubernetes secrets. - -Currently this is used for compaction, rules, dynamic configs, and ingestion configurations. - -This not only applies to the `Druid` CR but also to the `DruidIngestion` CR. - -### Configuring Basic Authentication - -To use basic authentication, you need to create a Kubernetes secret containing the username and password. This secret is then referenced in the Druid CR. - -Steps to Configure Basic Authentication: - -1. **Create a Kubernetes Secret:** Store your username and password in a Kubernetes secret. Below is an example of how to define the secret in a YAML file: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: mycluster-admin-operator - namespace: druid -type: Opaque -data: - OperatorUserName: - OperatorPassword: -``` - -Replace and with the base64-encoded values of your desired username and password. - -2. Define Authentication in the Druid CRD: Reference the secret in your Druid custom resource. Here is an example `Druid`: - -```yaml -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: agent -spec: - auth: - secretRef: - name: mycluster-admin-operator - namespace: druid - type: basic-auth -``` - -This configuration specifies that the Druid cluster should use basic authentication with credentials retrieved from the mycluster-admin-operator secret. diff --git a/druid-operator/docs/examples.md b/druid-operator/docs/examples.md deleted file mode 100644 index 1f8f4b6d326d..000000000000 --- a/druid-operator/docs/examples.md +++ /dev/null @@ -1,285 +0,0 @@ - - -## Configure Hot/Cold for Historical Pods -```yaml -... - nodes: - hot: - druid.port: 8083 - env: - - name: DRUID_XMS - value: 2g - - name: DRUID_XMX - value: 2g - - name: DRUID_MAXDIRECTMEMORYSIZE - value: 2g - livenessProbe: - failureThreshold: 3 - httpGet: - path: /status/health - port: 8083 - initialDelaySeconds: 1800 - periodSeconds: 5 - nodeConfigMountPath: /opt/druid/conf/druid/cluster/data/historical - nodeType: historical - podDisruptionBudgetSpec: - maxUnavailable: 1 - readinessProbe: - failureThreshold: 18 - httpGet: - path: /druid/historical/v1/readiness - port: 8083 - periodSeconds: 10 - replicas: 1 - resources: - limits: - cpu: 3 - memory: 6Gi - requests: - cpu: 1 - memory: 1Gi - runtime.properties: - druid.plaintextPort=8083 - druid.service=druid/historical/hot - cold: - druid.port: 8083 - env: - - name: DRUID_XMS - value: 1500m - - name: DRUID_XMX - value: 1500m - - name: DRUID_MAXDIRECTMEMORYSIZE - value: 2g - livenessProbe: - failureThreshold: 3 - httpGet: - path: /status/health - port: 8083 - initialDelaySeconds: 1800 - periodSeconds: 5 - nodeConfigMountPath: /opt/druid/conf/druid/cluster/data/historical - nodeType: historical - podDisruptionBudgetSpec: - maxUnavailable: 1 - readinessProbe: - failureThreshold: 18 - httpGet: - path: /druid/historical/v1/readiness - port: 8083 - periodSeconds: 10 - replicas: 1 - resources: - limits: - cpu: 4 - memory: 3.5Gi - requests: - cpu: 1 - memory: 1Gi - runtime.properties: - druid.plaintextPort=8083 - druid.service=druid/historical/cold -... -``` - -## Override default Probes -```yaml -... - nodes: - brokers: - kind: Deployment - nodeType: "broker" - druid.port: 8088 - nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker" - replicas: 2 - podDisruptionBudgetSpec: - maxUnavailable: 1 - selector: - matchLabels: - app: druid - component: broker - livenessProbe: - httpGet: - path: /status/health - port: 8088 - failureThreshold: 10 - initialDelaySeconds: 60 - periodSeconds: 30 - successThreshold: 1 - timeoutSeconds: 10 - readinessProbe: - httpGet: - path: /status/health - port: 8088 - failureThreshold: 10 - initialDelaySeconds: 60 - periodSeconds: 30 - successThreshold: 1 - timeoutSeconds: 10 - resources: - limits: - cpu: "4" - memory: "8Gi" - requests: - cpu: "2" - memory: "4Gi" -... -``` - -## Configure Ingress -```yaml -... - nodes: - brokers: - nodeType: "broker" - druid.port: 8080 - ingressAnnotations: - "nginx.ingress.kubernetes.io/rewrite-target": "/" - ingress: - ingressClassName: nginx # specific to ingress controllers. - rules: - - host: broker.myhostname.com - http: - paths: - - backend: - service: - name: broker_svc - port: - name: http - path: / - pathType: ImplementationSpecific - tls: - - hosts: - - broker.myhostname.com - secretName: tls-broker-druid-cluster -... -``` - -## Configure Additional Containers -```yaml -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: additional-containers -spec: - additionalContainer: - - command: - - /bin/sh echo hello - containerName: cluster-level - image: hello-world - nodes: - brokers: - additionalContainer: - - command: - - /bin/sh echo hello - containerName: node-level - image: hello-world -``` - -## Add additional configuration file into _common directory -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: hadoop-mapred-site.xml -data: - mapred-site.xml: | - - - - - dfs.nameservices - ... - - ---- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: druid -spec: - extraCommonConfig: - - name: hadoop-mapred-site.xml - namespace: druid -... -``` - -## Install hadoop-dependencies With Init Container -```yaml -spec: - volumeMounts: - - mountPath: /opt/druid/hadoop-dependencies - name: hadoop-dependencies - volumes: - - emptyDir: - sizeLimit: 500Mi - name: hadoop-dependencies - additionalContainer: - - command: - - java - - -cp - - lib/* - - -Ddruid.extensions.hadoopDependenciesDir=/hadoop-dependencies - - org.apache.druid.cli.Main - - tools - - pull-deps - - -h - - org.apache.hadoop:hadoop-client:3.3.0 - - --no-default-hadoop - containerName: hadoop-dependencies - image: apache/druid:25.0.0 - runAsInit: true - volumeMounts: - - mountPath: /hadoop-dependencies - name: hadoop-dependencies -``` - -## Secure Metadata Storage password - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: metadata-storage-password - namespace: -type: Opaque -data: - METADATA_STORAGE_PASSWORD: ---- -apiVersion: druid.apache.org/v1alpha1 -kind: Druid -metadata: - name: druid -spec: - envFrom: - - secretRef: - name: metadata-storage-password - nodes: - master: - runtime.properties: | - # General - druid.service=druid/coordinator - - # Metadata Storage - druid.metadata.storage.type= - druid.metadata.storage.connector.connectURI= - druid.metadata.storage.connector.user= - druid.metadata.storage.connector.password={ "type": "environment", "variable": "METADATA_STORAGE_PASSWORD" } -... -``` diff --git a/druid-operator/docs/features.md b/druid-operator/docs/features.md deleted file mode 100644 index 161cc502f526..000000000000 --- a/druid-operator/docs/features.md +++ /dev/null @@ -1,459 +0,0 @@ - - -# Features - -- [Deny List in Operator](#deny-list-in-operator) -- [Reconcile Time in Operator](#reconcile-time-in-operator) -- [Finalizer in Druid CR](#finalizer-in-druid-cr) -- [Deletion of Orphan PVCs](#deletion-of-orphan-pvcs) -- [Rolling Deploy](#rolling-deploy) -- [Force Delete of Sts Pods](#force-delete-of-sts-pods) -- [Horizontal Scaling of Druid Pods](#horizontal-scaling-of-druid-pods) -- [Volume Expansion of Druid Pods Running As StatefulSets](#volume-expansion-of-druid-pods-running-as-statefulsets) -- [Add Additional Containers to Druid Pods](#add-additional-containers-to-druid-pods) -- [Default Yet Configurable Probes](#default-yet-configurable-probes) - - -## Deny List in Operator -There may be use cases where we want the operator to watch all namespaces except a few -(might be due to security, testing flexibility, etc. reasons). -Druid operator supports such cases - in the chart, edit `env.DENY_LIST` to be a comma-seperated list. -For example: "default,kube-system" - -## Reconcile Time in Operator -As per operator pattern, *the druid operator reconciles every 10s* (default reconciliation time) to make sure -the desired state (in that case, the druid CR's spec) is in sync with the current state. -The reconciliation time can be adjusted - in the chart, add `env.RECONCILE_WAIT` to be a duration -in seconds. -Examples: "10s", "30s", "120s" - -## Finalizer in Druid CR -The Druid operator supports provisioning of StatefulSets and Deployments. When a StatefulSet is created, -a PVC is created along. When the Druid CR is deleted, the StatefulSet controller does not delete the PVC's -associated with it. -In case the PVC data is important and you wish to reclaim it, you can enable: `DisablePVCDeletionFinalizer: true` -in the Druid CR. -The default behavior is to trigger finalizers and pre-delete hooks that will be executed. They will first clean up the -StatefulSet and then the PVCs referenced to it. That means that after a -deletion of a Druid CR, any PVCs provisioned by a StatefulSet will be deleted. - -## Deletion of Orphan PVCs -There are some use-cases (the most popular is horizontal auto-scaling) where a StatefulSet scales down. In that case, -the statefulSet will terminate its owned pods but nit their attached PVCs which left orphaned and unused. -The operator support the ability to auto delete these PVCs. This can be enabled by setting `deleteOrphanPvc: true`. -⚠️ This feature is enabled by default. - -## Rolling Deploy -The operator supports Apache Druid's recommended rolling updates. It will do incremental updates in the order -specified in Druid's [documentation](https://druid.apache.org/docs/latest/operations/rolling-updates.html). -In case any of the node goes in pending/crashing state during an update, the operator halts the update and does -not continue with the update - this will require a manual intervention. -Default updates are done in parallel. Since cluster creation does not require a rolling update, they will be done -in parallel anyway. To enable this feature, set `rollingDeploy: true` in the Druid CR. -⚠️ This feature is enabled by default. - -## Force Delete of Sts Pods -During upgradeS, if THE StatefulSet is set to `OrderedReady` - the StatefulSet controller will not recover from -crash-loopback state. The issues is referenced [here](https://github.com/kubernetes/kubernetes/issues/67250). -Documentation reference: [doc](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback) -The operator solves this by using the `forceDeleteStsPodOnError` key, the operator will delete the sts pod if its in -crash-loopback state. -Example scenario: During upgrade, user rolls out a faulty configuration causing the historical pod going in crashing -state. Then, the user rolls out a valid configuration - the new configuration will not be applied unless user manually -delete the pods. To solve this scenario, the operator will delete the pod automatically without user intervention. - -``` -NOTE: User must be aware of this feature, there might be cases where crash-loopback might be caused due probe failure, -fault image etc, the operator will keep on deleting on each re-concile loop. Default Behavior is True. -``` - -## Horizontal Scaling of Druid Pods -The operator supports the `HPA autosaling/v2` specification in the `nodeSpec` for druid nodes. In case an HPA deployed, -the HPA controller maintains the replica count/state for the particular workload referenced. -Refer to `examples.md` for HPA configuration. - -``` -NOTE: This option in currently prefered to scale only brokers using HPA. In order to scale Middle Managers with HPA, -its recommended not to use HPA. Refer to these discussions which have adderessed the issues in details: -``` -1. -2. - -## Volume Expansion of Druid Pods Running As StatefulSets -``` -NOTE: This feature has been tested only on cloud environments and storage classes which have supported volume expansion. -This feature uses cascade=orphan strategy to make sure that only the StatefulSet is deleted and recreated and pods -are not deleted. -``` -Druid Nodes (specifically historical nodes) run as StatefulSets. Each StatefulSet replica has a PVC attached. The -`NodeSpec` in Druid CR has the key `volumeClaimTemplates` where users can define the PVC's storage class as well -as size. Currently, in Kubernetes, in case a user wants to increase the size in the node, the StatefulSets cannot -be directly updated. The Druid operator can perform a seamless update of the StatefulSet, and patch the -PVCs with the desired size defined in the druid CR. Behind the scenes, the operator performs a cascade deletion of the -StatefulSet, and patches the PVC. Cascade deletion has no affect to the pods running (queries are served and no -downtime is experienced). -While enabling this feature, the operator will check if volume expansion is supported in the storage class mentioned -in the druid CR, only then will it perform expansion. -This feature is disabled by default. To enable it set `scalePvcSts: true` in the Druid CR. -By default, this feature is disabled. -``` -IMPORTANT: Shrinkage of pvc's isnt supported - desiredSize cannot be less than currentSize as well as counts. -``` - -## Add Additional Containers to Druid Pods -The operator supports adding additional containers to run along with the druid pods. This helps support co-located, -co-managed helper processes for the primary druid application. This can be used for init containers, sidecars, -proxies etc. -To enable this features users just need to add new containers to the `AdditionalContainers` in the Druid spec API. -There are two scopes you can add additional container: - - Cluster scope: Under `spec.additionalContainer` which means that additional containers will be common to all the nodes. - - Node scope: Under `spec.nodes[NODE_TYPE].additionalContainer` which means that additional containers will be common to all the pods whithin a specific node group. - -## Default Yet Configurable Probes -The operator create the Deployments and StatefulSets with a default set of probes for each druid components. -These probes can be overriden by adding one of the probes in the `DruidSpec` (global) or under the -`NodeSpec` (component-scope). - -This feature is enabled by default. - -:warning: Disable this feature by settings : `defaultProbes: false` if you have the `kubernetes-overlord-extensions` enabled also named [middle manager less druid in k8s](https://druid.apache.org/docs/latest/development/extensions-contrib/k8s-jobs/) -more details are described here: https://github.com/datainfrahq/druid-operator/issues/97#issuecomment-1687048907 - -All the probes definitions are documented bellow: - -
    - -Coordinator, Overlord, MiddleManager, Router and Indexer probes - -```yaml - livenessProbe: - failureThreshold: 10 - httpGet: - path: /status/health - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - readinessProbe: - failureThreshold: 10 - httpGet: - path: /status/health - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - startupProbe: - failureThreshold: 10 - httpGet: - path: /status/health - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 -``` - -
    - -
    - -Broker probes - - ```yaml - livenessProbe: - failureThreshold: 10 - httpGet: - path: /status/health - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - readinessProbe: - failureThreshold: 20 - httpGet: - path: /druid/broker/v1/readiness - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - startupProbe: - failureThreshold: 20 - httpGet: - path: /druid/broker/v1/readiness - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - ``` -
    - -
    - -Historical probes - -```yaml - livenessProbe: - failureThreshold: 10 - httpGet: - path: /status/health - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - readinessProbe: - failureThreshold: 20 - httpGet: - path: /druid/historical/v1/readiness - port: $druid.port - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - startUpProbe: - failureThreshold: 20 - httpGet: - path: /druid/historical/v1/readiness - port: $druid.port - initialDelaySeconds: 180 - periodSeconds: 30 - successThreshold: 1 - timeoutSeconds: 10 -``` - -
    - -## Dynamic Configurations - -The Druid operator now supports specifying dynamic configurations directly within the Druid manifest. This feature allows for fine-tuned control over Druid's behavior at runtime by adjusting configurations dynamically. - - -### Overlord Dynamic Configurations - -Usage: Add overlord dynamic configurations under the middlemanagers section within the nodes element of the Druid manifest. - -
    - -Overlord Dynamic Configurations - -```yaml -spec: - nodes: - middlemanagers: - dynamicConfig: - type: default - selectStrategy: - type: fillCapacityWithCategorySpec - workerCategorySpec: - categoryMap: {} - strong: true - autoScaler: null -``` - -
    - -### Coordinator Dynamic Configurations - -Adjust coordinator settings to optimize data balancing and segment management. - -Usage: Include coordinator dynamic configurations in the coordinator section within the nodes element of the Druid manifest. - -Ensure all parameters are supported for the operator to properly configure dynamic configurations. - -
    - -Overlord Dynamic Configurations - -```yaml -spec: - nodes: - coordinators: - dynamicConfig: - millisToWaitBeforeDeleting: 900000 - mergeBytesLimit: 524288000 - mergeSegmentsLimit: 100 - maxSegmentsToMove: 5 - replicantLifetime: 15 - replicationThrottleLimit: 10 - balancerComputeThreads: 1 - killDataSourceWhitelist: [] - killPendingSegmentsSkipList: [] - maxSegmentsInNodeLoadingQueue: 100 - decommissioningNodes: [] - pauseCoordination: false - replicateAfterLoadTimeout: false - useRoundRobinSegmentAssignment: true -``` - -
    - -## nativeSpec Ingestion Configuration - -The `nativeSpec` feature in the Druid Ingestion Operator provides a flexible and robust way to define ingestion specifications directly within Kubernetes manifests using YAML format. This enhancement allows users to leverage Kubernetes-native formats, facilitating easier integration with Kubernetes tooling and practices while offering a more readable and maintainable configuration structure. - -### Key Benefits - -* **Kubernetes-Native Integration:** By using YAML, the `nativeSpec` aligns with Kubernetes standards, enabling seamless integration with Kubernetes-native tools and processes, such as kubectl, Helm, and GitOps workflows. -* **Improved Readability and Maintainability:** YAML's human-readable format makes it easier for operators and developers to understand and modify ingestion configurations without deep JSON knowledge or tools. -* **Enhanced Configuration Management:** Leveraging YAML facilitates the use of environment-specific configurations and overrides, making it easier to manage configurations across different stages of deployment (e.g., development, staging, production). - -### Usage - -Specifying nativeSpec in Kubernetes Manifests - -To use `nativeSpec`, define your ingestion specifications in YAML format under the `nativeSpec` field in the Druid Ingestion Custom Resource Definition (CRD). This field supercedes the traditional JSON `spec` field, providing a more integrated approach to configuration management. - -
    - -nativeSpec Example - -```yaml -apiVersion: druid.apache.org/v1alpha1 -kind: DruidIngestion -metadata: - labels: - app.kubernetes.io/name: druidingestion - app.kubernetes.io/instance: druidingestion-sample - name: kafka-1 -spec: - suspend: false - druidCluster: example-cluster - ingestion: - type: kafka - nativeSpec: - type: kafka - spec: - dataSchema: - dataSource: metrics-kafka-1 - timestampSpec: - column: timestamp - format: auto - dimensionsSpec: - dimensions: [] - dimensionExclusions: - - timestamp - - value - metricsSpec: - - name: count - type: count - - name: value_sum - fieldName: value - type: doubleSum - - name: value_min - fieldName: value - type: doubleMin - - name: value_max - fieldName: value - type: doubleMax - granularitySpec: - type: uniform - segmentGranularity: HOUR - queryGranularity: NONE - ioConfig: - topic: metrics - inputFormat: - type: json - consumerProperties: - bootstrap.servers: localhost:9092 - taskCount: 1 - replicas: 1 - taskDuration: PT1H - tuningConfig: - type: kafka - maxRowsPerSegment: 5000000 - -``` - -
    - -## Set Rules and Compaction in DruidIngestion - -### Rules - -Rules in Druid define automated behaviors such as data retention, load balancing, or replication. They can be configured in the Rules section of the `DruidIngestion` CRD. - -
    - -Rules Example - -```yaml -apiVersion: druid.apache.org/v1alpha1 -kind: DruidIngestion -metadata: - name: example-druid-ingestion -spec: - ingestion: - type: native-batch - rules: - - type: "loadForever" - tieredReplicants: - _default_tier: 2 - - type: "dropByPeriod" - period: "P7D" -``` - -
    - -### Compaction - -Compaction in Druid helps optimize data storage and query performance by merging smaller data segments into larger ones. The compaction configuration can be specified in the Compaction section of the DruidIngestion CRD. - -The Druid Operator ensures accurate application of compaction settings by: - -1. Retrieving Current Settings: It performs a GET request on the Druid API to fetch existing compaction settings. - -2. Comparing and Updating: If there is a discrepancy between current and desired settings specified in the Kubernetes CRD manifest, the operator updates Druid with the desired configuration. - -3. Ensuring Accuracy: This method ensures settings are correctly applied, addressing cases where Druid might return a 200 HTTP status code without saving the changes. - -
    - -Compaction Example - -```yaml -apiVersion: druid.apache.org/v1alpha1 -kind: DruidIngestion -metadata: - name: example-druid-ingestion -spec: - ingestion: - type: native-batch - compaction: - ioConfig: - type: "index_parallel" - inputSpec: - type: "dataSource" - dataSource: "my-data-source" - tuningConfig: - maxNumConcurrentSubTasks: 4 - granularitySpec: - segmentGranularity: "day" - queryGranularity: "none" - rollup: false - taskPriority: "high" - taskContext: '{"priority": 75}' -``` - -
    diff --git a/druid-operator/docs/getting_started.md b/druid-operator/docs/getting_started.md deleted file mode 100644 index 3e471baadbc3..000000000000 --- a/druid-operator/docs/getting_started.md +++ /dev/null @@ -1,101 +0,0 @@ - - -# Installation - -The Helm chart is available at the [DataInfra chart repository](https://charts.datainfra.io). - -The operator can be deployed in one of the following modes: -- namespace scope (default) -- cluster scope - -### Add the Helm repository -```shell -helm repo add datainfra https://charts.datainfra.io -helm repo update -``` - -### Cluster Scope Installation -`NOTE:` the default installation restrics the reconciliation on the default and kube-system namespaces -```bash -# Install Druid operator using Helm -helm -n druid-operator-system upgrade -i --create-namespace cluster-druid-operator datainfra/druid-operator - -# ... or generate manifest.yaml to install using other means: -helm -n druid-operator-system template --create-namespace cluster-druid-operator datainfra/druid-operator > manifest.yaml -``` - -### Custom Namespaces Installation -```bash -# Install Druid operator using Helm -kubectl create ns mynamespace -helm -n druid-operator-system upgrade -i --create-namespace --set env.WATCH_NAMESPACE="mynamespace" namespaced-druid-operator datainfra/druid-operator - -# Override the default namespace DENY_LIST -helm -n druid-operator-system upgrade -i --create-namespace --set env.DENY_LIST="kube-system" namespaced-druid-operator datainfra/druid-operator - -# ... or generate manifest.yaml to install using other means: -helm -n druid-operator-system template --set env.WATCH_NAMESPACE="" namespaced-druid-operator datainfra/druid-operator --create-namespace > manifest.yaml -``` - -### Uninstall -```bash -# To avoid destroying existing clusters, helm will not uninstall its CRD. For -# complete cleanup annotation needs to be removed first: -kubectl annotate crd druids.druid.apache.org helm.sh/resource-policy- - -# This will uninstall operator -helm -n druid-operator-system uninstall cluster-druid-operator -``` - -## Deploy a sample Druid cluster -Bellow is an example spec to deploy a tiny Druid cluster. -For full details on spec please see [Druid CRD API reference](api_specifications/druid.md) -or the [Druid API code](../apis/druid/v1alpha1/druid_types.go). - -```bash -# Deploy single node zookeeper -kubectl apply -f examples/tiny-cluster-zk.yaml - -# Deploy druid cluster spec -# NOTE: add a namespace when applying the cluster if you installed the operator with the default DENY_LIST -kubectl apply -f examples/tiny-cluster.yaml -``` - -`NOTE:` the above tiny-cluster only works on a single node kubernetes cluster (e.g. typical k8s cluster setup for dev -using kind or minikube) as it uses local disk as "deep storage". Other example specs in the `examples/` directory use distributed "deep storage" and therefore expect to be deployed into a k8s cluster with s3-compatible storage. To bootstrap your k8s cluster with s3-compatible storage, you can run `make helm-minio-install`. See the [Makefile](../Makefile) for more details. - - -## Debugging Problems - -```bash -# get druid-operator pod name -kubectl get po | grep druid-operator - -# check druid-operator pod logs -kubectl logs - -# check the druid spec -kubectl describe druids tiny-cluster - -# check if druid cluster is deployed -kubectl get svc | grep tiny -kubectl get cm | grep tiny -kubectl get sts | grep tiny -``` diff --git a/druid-operator/docs/images/druid-operator.png b/druid-operator/docs/images/druid-operator.png deleted file mode 100644 index 801fdd5d1e856cf92951051f4a2b5c52caef8110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6337735 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
    0Z`8)Z~bTsro%s^ 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

    cDC4GzUl$fdS8ntHSRvr5*ByV&1AlP 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%0DvQc09D_&Nn* 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%0AqlzHBW4rP_769htcm*^dWod@^zh z`I(oe4>|sh@0+3}M|j;wsJ;x?#ta|}uOb&Dj<5&lmM&jQuDQSBTE0$j?{~I5-8J@* zI1-~8jC;ZN^qq!BgycG6Jgj~@Cp>Fvca;sQN$O3kmSjb?f4yx`PW(~u2h$AQ$!g-B zenDT%3UNEtSyp{a*lVo$N;>2oTQ0}lmVcO>Cv%6u-o&Dw$d>?Wid=Ckn@9f~1WHF3 zk8vOo=+b9Kt5M^%!Zd~A!xrc@=u-XfI>i$rg2^!co{T7{x$5u}n7epW`o(7cEkLI= zd?{7#FyU%w==VGhodV5f4a6w@ElDs^$~2Mr)|`few$5S@{sCsf{@HY^q| zemG~~u?2B?*U^xN?)5V!9GN_Qg%Gh3+S}S60ReL4;7+3HzF0++$YqQK9c~BW<-s_L zsbFLiVKIuReoUL}48ftZhP`omqgJJV_PN2A7q@8}{~}xzw{;+hoiMG>9rtTR!J6{x zOSUqrMHJd+dACPu%bQ>X6*g;az;6mFwddGA%RxPhdL}Pf{TAL<-kw`N_!di73S%5; zx80xT@v#SbG0IJ*>)p^Zo7J7sY7uAk4bd1esjC+6*wSY(G2a z?)#5V+(rIBaOGEOo9xBH(=z`d=XHfgX9f5-LVVmS7F~x1Y8-4P!h|)QjikxH)VE(~ zW}IVsn1(_6k{v-g(uY2{8IDMUKfl|~w{1;Nq)DXg`n?_dI$9Dr<+)kZh2T{YPUzA? z-&o$`ekiLV<`E{eu`SowW{7V>6btgXvAR#9wups4&*fT<;DBy z{Mm6bPr#Ie#Fv*DlV@x>P3=0o`!Yx-@MMoBOFP_rs3*e(4uxUJFIJs%#>#$PmdV>NR8;v3Ee`y-fKIbBwWj-Osd~Z7brFL0#~UpT7si`? zJ@ATMctXMvgMM1`Z|DpeQp@Jz^e5zMFRtQapV39drR=h(cq~6+MDS`brR>0-MnCPm zZyLU-c)=JeI~2`-aZK9M;P>_J6{RHvVf*Jc5i1CFPHN&aG7YcThR>1(E>;=OFvZB) z)1(~AFgRMmSs6W9wm4%GdWF6fpRQLzuCCwr*l0sqppebJi{fMBsfEs+r-SKC!~S7n zZPFk_WgsP!Ak*o3QJ~3Y-=Dy?gYl(&`aZ$C$Ft+m!SSRiSxctlfA^s(!w9WUNGLxY zUu#Q0oUhd`t>2^_a$OyHwZw|i|Gfat<&fi>7FK+c{68gw|DfW_VXzM zzk7|ZE$ViQ$4}O;P{eU>UQk{cra2Hm$;+7~k&8vq`FV{h_7MbOR?@pKjX4lKlWBG? zRUDe)FZwUnx3h00+ma30UA14vJHvS62%iyEdP<;VInZ>fE;y2wmo`J>6;!%=!+k+bR`+#%2$?3#zp8faVJa}T4Ce$_-Gi1Tumlz0 z0NI>!nk1~8w0dRt5R`;{z@z@t_)A+yrb-Xh8+X^=G8b0XT4&yqx@EFco^b^o$HdkJip)$kmSA~X{)Q@8Dh!W$+1FMNg>9badJ|JjwG?r zpgbrU_qHZq({9r6chl=Vj0|V$XHF!)O6^nhmPMbi8uJPI*MT@3nQ(GHG2hNg2yD}n z3@aBEe9iUrNaMq7Z=I3#LVMPDU8hb%?|X_djYY!p;6lJC-*5qxiR3JM-aG2mKeC>6 zx@lCREX#T1NIg-ivQdQY(|joYB7Kx|SA-Jpn(8(?(B)TORY?I0uV$3Ni*>{3(`rXe z>rXezX>PRXnON!J2|3BJ3rj+$B@ciNX>?qnWz z?@WK`zj(H_7L5gjR-L?F@Lj@h7!1gDoL}k-jd0+2v$bYcv*0};Vj)NJ+?kgxbLxyA*b_a{v>qa+tls+Tu(B{SzCBY{O1heTyeO@Vl4Gf`TTCVYi#3Vr zGwVV82@JRI;eC>aez}$VQHwxbU1J>Z(wfJ9Q50Trl&|j2(VdNUnPhJNk55W-xU0tB zv*Er^D^%@ht@lM1!;gwZeal zwNZ3#i5EaJ@#LF$vpV7_6U?OO>g&#v@Ot7k!47pm$_1n{R+@aD%i zVInJm^>=A1-?i&qh;v>O;tQ4Jc1M0pqzD?3cy=4_J=i%;CUewW;p1AAXFdceu4_ z?0R@K+P%r-7tFct2Yrb^=cD5eQ%bGMir_)M_85|QmljGMsuM{ZV{JlX^)Wp8*=Mw9 zjle08`*}5nH~j(+?tT9u0kZ2c?`{pr;si=ko^7;zB~DtsT(6l|QPBIvtM-mB=xvX@ zR?BlRa&7f{m&uMeK1$1f#Z(P19|J~Z7}ni!)A!1Er-~GAEZt#mY-YJ9O}D;PL0mC_ zSjDc3ri+u}OEHBcB_B^)2zyJ@)KchB@)&ba!FDV++FF`V&I;rf736H)vT12(l9q2b z#qs#;7cH9XzBiprmL<^z!J2vYb}}*52>W??Gc=DT!fY_CU~Q3DlpA6+E3T`^5ABS< z^F$c(%i1AIchV0-n}~V-(OC|Q_!A0x+6>D*E}}UadOw5mC+7Tj`Es7v-vstVaNX1w zvC_4|_CCK@>vZ}-k3mKwfW2ySe#{fv!?LUonGl`G@7Q=9)*Kg5PWacETEh9Chhr!X zvpW|pMog@T4u@?`BP?KyPl5KlkyO5qSw{r=J|1l{t>^b9nh&3vG?fQc#Mz^>a~fjo z9p(rTH^Q#rqqtr!T#n+}wKs`{)HEzO&)ARiASlOZf2Q*6z8|?2&)!LrQ{56Kq=es1 z_>iy=7*$_AK`L41f-*Khf!wt>FF#rLV-3Y67okt);(%hZubp)E=Az_kt+ zWxgoMU^OIz$v%j{FbCs_$W20{@8E7V60sOSK{47bmZ6FE0Z&5eV$5A=H?|b3 z7nf9kdke^6kL-hzp5Seftr)ZCkiQ$h4BWF_GWdT7vRC?8LjRTQolMoXyqqZ@ZIl5> z|MNwRbf>#vOsmIzpL(!L8{&UVgoHv!lu(IKwV**kqH=1ZOAwhc8*ZYb&hLFd^3OtR zDlF1utl`HXMY4e=x}XZxGW9PkLF|G)yL$(eCe>W^FOuCufzSRqx<|4W(RO&m?pK?> zJ;*7>OroS(Rv?7S_Jy=GpaIwj>NwHb#aMy74~5wvxvRt{T7hK=ki5VihIAfwO%4=T z2<(XIvYQw9@dI&ejf=V)(>8y_?*2xk=1FBQBglPDhCzxYEN6wv@I`PlwUKb*LMYfF zugxhX<}hPWb@XkfI~qA2@~Nv!xY%{{q+ z(cb@#KFoBsJ^9Rz-di3o#%5WXe}lucI3UDk3A|{ZT5H!pt^f?{pE+{g=Kvf&4*l4- z35Xa_m=fjUDFfLN^lSpazD8tpE9k+SjdWt{Y6!yO=23T+xyassf zB^=G&&{`dqDI-$cG#cMY=gsf~gIpy6I^x_Y_=G+92?8h&$glT*%lEFE>$Hcs5~DW{ zvKm3Q-WG~}0*nl?%&7eOEQm@{izt~2A*aHy-UNPHR9tBAR$lL?jElVaI#iirfB}P6 zImlSgjoja@GjFY*TP+}7ruO%-=e{#FD1E|`*=*e-d0=)-V@_9eTgvwbFMUfoUyi)YczDg2uCNBFweF zNYU?&eC0I|P6FA*oKbtVs1vN7=EkG;(@Cp`bnwf!;XrpEtG-FqSOf9rIR0N;hn@=w z?0MPr*-Kx($02DF?TG=oIlp=9A(u7o5wwr)Cuz*J(h>PrB|ks!nKxw|@a(j-lfnB~ z%%Sc*5>aeyR#gAc+cqaYyX0S@_OiP7q+~4<|M|T+IXc*QwO!RBn9kJPVw*z$y0VD{JASp%Urd=*BX1R)2&^n9~2r?6AInLIG(doN!`P^ zLkzFudp}GpT>j9=F@ijw^Gs2*HUQ%9?|ELCmIXU#g;?DSl()6Oo&dc&`L@>T8;)12 z>zH#*XpH$~6fap#T3ViEHhvRn73U(JzpnSmQQOL;A^eum`>Dy?Hjuj5t8Xq>Z4KF< z)MTuo^KE;vH$?4kuHcS|At`?0hF=>kO)zZWYq4~x>A5JECF9kyFN4lVvQNpr5uHtG zF5Zd>vSCp6)V>Q;^`b@D@rP^jzPRKix4h9x(Wq9c^zSJdZgzjKXX^)lm3C?Ad6I7p zch@Sb1!hLu8eQ?fef2-~_-t$4wrGU_zohI|uE98n@VuvbV|_02rrZPzWyDcj>FlV! z+lWoEt=bYq4iqi0l8jFFklPna7z`W5osa>$*NNxsbUNP8&SyhlQ%2zdZ~1xEEo#w0 z074c%obiHH_FlV|zHs?vRiaQs;JbW}kNxIV`CDUOxbI`Gp7W%fCpV0bOzK`gb20;V zPDex5YQhb~#TCv;IORHc*AeijX(6l6^33!9j6H7$lUI{GzyBzmxDLmZ5I&6wE-j(5 zm!_8xL0;2Fc-SB=mIcw}UNRuCOoc7mWp4Yz#&^0Y3yO%QOmtxF;ut14*2b)VhcACc zc;SS}TRJnTIiGge!F6f22Nn_}S9~%a6dzuG6PGUBj^SMwC+;fszg&nuq}Y+a|I5IV zmVM4_pub`INVkw3XJ1V|1JCiDAmv8VpeAKR5gOWhLG3OKeD_p+$sb>a` zzP-0lJsVO1asszK$qTgPiGnkB^QCj*ha+Og`KH@LZ(JE`R)NEEJ$bx^mXp7h52ln~SwXVa zUD?Du{}`jd0yaW~ht6~x%v1w4$?%zKt*E0rQR;vP87)+w0WZ;Uz zA^W;z^;%E_;yIepY$e`1TDobF#pMxAX+k(Lofr|>TVuTOyQ{b`a`sp*ru9!4vs~!X zML*6wsH)qmJ?q{wfQ0CgF`1S`1l?%(?%nT}kjlDecg)49)#0KMxwZD>1*xcnrm!{x z%pWfl1!tks@91jnmE4WNJf1h8R{YLtz>f2`to0Rb=9{7lC~^Y?k=y|#tUih`rA>8z zvy$j0Rh!a8%e8!UK#bA5ZTYaV<9#20)%?#@?OMC|q@a0Qd2H(UryuNwA3}#gFQbUt z+oN0<|DgSv$=Zp+FOMuSJqj%(P-RJ9~v$35M#oNe&Yw+SbT7<&39g z?JH63*+WdfFdc^u0pDg5th7ZP&wEnwsJ=(49^s zH>>D`(i$YZ9eh#b{3HKIa=n&%Q1$_R1L1@;-o5i_S7tOs_?rMom;gbDb(jLB;qN+A zsgIu(KU2EHYE=cjuj$}_6E@PwOc9zqr(~74R3{>K5Ef1!OeZY= z#jV>@aCP_g*T7Tt>S}q0@zqQ$JS=%LoMxq;sDYrWY7>Qs*VvvX;wuu6ILUako;_u{ zcEc$wJBp2qL`i;vF_h_9biEy%4J`Q&Mjrw&dTxN>jKM@@pRPj)>59s7Y_CEt5K1wy zYoqttt~I?=LqAK8kN6rVe;@tAvo zc(Ooo=P#dk{llod-Kel}LFw9E`0n_uB8!DsNXfBY#GQ#L^K>^OwlXow8YJ(9)&@)C z{oSI z(f}a{9(ejCuA?Xa>gFme`dGC^N@6f z10WS^=lm!89??7F%maYL1ps77eNyX426U^>XT$+cK(Y@o%R&4D83f-3uT$5bmVcnT zqOI*K8Bu4AJ-E8Y0a{6!=ltO1wo~i~!C9HBHbW@PpOVSi*)4M!0L)k`XEgtzd4U&( z9si2+KI|HITa9@-`{O_p-x2IOxIKWtfzwxPGv0V1M5lq%_@6YVw)+s*X_(p^Krfql zY){Sst`>JxZc7URyMh9=af19-C>1chJ4blS7G6}KgJlVx-u}1DmS@>AIjKE zHjYHg&SpqRKWder{|9|DiCfc^FQEK+eL`$g=6js`x2dd*Nx(b%oCE&>%a`wYZkmB1 zJJ-9f(){~#16z)PMI6$xuFMZam>m2p7b~f6$MT=ts&ln8q;F(9pZZ8#l#6NqdOBt^ z&;slZyb$jq_Aj7+Q~*x?-$JVaJdm(hkGl0Ok7DhA7j@MKjTn&usPPdmHo%l?_ql-J z`28Z#69L@-=D3$VtYD9g(5TmKy{U$7a9fgU8a#(@-@5;|3I4x+9YoO>SlHO2#1DXO zlJrc2_z_hcXLECNB`Dv*G5z^15kr;iDmLT@><<(<+(=KPKKQh-c$`lf4g4#cD7pXV zGJ9s9f>*D;&Vi}$!E@wh(=I+fegG&H*~E`NRVZ;ok4nN<4RU9M|EE1u+MR-if!xu|I1$CFuV-nN2YcUtalP-Zq@f?8p{$Tk;k%Y;OFfLZ z+21EpskJLn(@du$J12~bcO0gXuK?6+;-$5a0Bpv$%t|Zq>wd|N8bPiCepjpeM1^=H zr7(4c%tkifLB1Z-*BdnGZ_&HOUh=5Bu0<5j?Rl9~Od0>3t3|^h0`2auf#>7YEiB@+ zv<5NfXbs4Wt*33U2UGCwRa+eN>ml7>j!G6*lO|8ChDN$?k5j!@%X%wIm)b?m8UY2K z(&u(tsDWW(QZ<;n;=wuzzR||Y@UEt$UUv(U?dRUsmZto)qN>)=N{Jf#afaM&FCQt= zf3aEkgl8)ndy`^&FWyY!2?gtpiRt6T0p)sPAl^7Ng2_#9{u>Xax58ke-ak4lRP1G< zPTRmxOl(mt<9EXwfQGF3Uc@Xr5DVBcs=s(*FP9YaabY|%R5Ndp83Ft4&5rVmRv$|i z0a?(BElAP^okOP)p$qQ1Pq9uSYV-B1r+4Hto8Kw@-J}e}R|A8rk_$liu56(dOdx_3 zT9%0Lr|o?JJn6J%nqxJ&mL{y8{&h2qAg$eExXL!k)D9hWDwh{vs$2Q><`YQNb)VAF zLd>{kjpK;_TEs`qZX+$3+?n1llHLqXh#vW!OuFlkoNaaaqolFjz{fa&*LFS^WxsEd zt9a@3%p&(mQLJrpK>H|~1w_FP>SgY|X`Jiruzn zF2zc?*tv@U(c5S$T#8&{OjOoe*iD`loL;i;iNwhH^zb`aecm`%I!#**Fi0(6k`Qjw zLZ%IkBMvH6C<|i7W`CPT&BYVNy0j{MjnjsS*CWiDxAik7y{M2gTuE{4U-XH>)En1_ zu}|9x4RJ>){W)W;=-T3FI#+%}0ttO+{r@~9$Al9ZDRrPO4i>rD5zvZK!jh5_ zuhSv%qJ%+BzEJi&j7(l}n<$v=->kk_K+L1C{ZT(m3oAc4kPupmji~12>xpS)E zW2%#phue_=X#$qFXt?Ste9TcH<YS2r$#*P$%5I(k7q+gmK^|8w9UgdToqZbX@ zwI44QH>-LyktG>%e7iDQ$Oz4C^S*_V7|xB4KNVl_2zSfCoqBAxOTf5CSm+e0fd0-C z=RFrFZJUX1m7{zXh_AcMDnF}xe|z1XB`UZ`RE5P%*r^A&?5o#DN7|>ZO*zO#e%~c) z@{x+=rIx+AC)_#MNs{xw_dY)&;lW^e*f^z9_tsBwS!z<(pm;eKU6`fUVQV+;7Cp)$ zKym#H$u?{V^4Mvr75m#RMi`_iN5IqHj<$$9Fdh1;K;(#oVh|^Rbq3om7gR|Sk$&ap zDq0A?45=(;_ymMemZ%@u8?~dhYw-<1dvTDDBnG>5)M<6-`j@XMBRRSkCR1088M)bChAd%PmV^{q;;RTzE;R!8_A5vLg0=x zV|9NEpMI;TYhcy4i=`Js!^+?^WJDbz_-@Tehdoz5#_0yb*wjJ3PhnZ{=57#1An>nD zfghKHHua^ko9_J}^bz<8GBhBMSYYdY^iH?}Z=M^c;7ZAmb>>Jd6)+by^gTO8%BMaV z!UzXn@YhZv+``D!A2POJ1D_aX1&K@2sFA4f3s2Z)+h~}&bq;$vsm-K3^Qv!&;IUbZ=_2y zw=>0S{>`h3)FM)z-&>8!^f=R&Q01VvK)I-LVe7Y-0%@pE>t0x+obA&FYMfc04`xcm zWzVcn|6Yzv6_I*Li1%?P)GQO8g=dUrF^2KDAqRHV1lmi3`_}B6!pTWpzNVvN%Pe4% zUQobdTmE7%DVec*9M|_NUtiV~HDQyay8GnzW_VS(2_2#^H)BnbL5z^m*JutWsW;KR zR>$I&f0>VcW5>8IKc17QpL7Qj*PA5R$mv*x~3|{UI(66S_F+qIYU4!DY{MR(XS_*6Gq4`GN4@*_dU?IwRalP`!sJxXYoF(j#N8HHT{ z(uzpy|IeAye`B}^Cp|p0zV2!D?Y=yFt6H7?0=f8f&Py~FZxLffUtS!2&NOLQg7n89KWJgvRo|F!60DEaGBi3%@>VMKRNVI0`sDWXwiH4SlM- zPEVelaVnzTo&?t21XWi7u66%t7YZNCn?s%gnPhZS5fjj&Af&*Mt?%cwZZ~|6}pC`^sxk0Q{$pK8=XZ zQRE*W4oYI_yH;HWGormtYYSN{aH<)yt}~Cc=@4!6{PqbO3MrrP_JkF+FQ5Hm?PSzX zV8_8wQD7E9GP?a+T&;Kb&)dQF=B&05xG7(gq&CyOs-?4xLO@Jk1Ou$kR(m!f8XZ*ia! z_wLW$t=az%U{h5i*EuYeEj5A}S~tJj5bOz_{3S%dR6MEM%l`o7w7XV?8JBm~Tn@nZ zUXRSp($j+>`!qqL*LrN+S|VyAZFh=@E&P*HqrGdbQc8lD06x6JL;#dTD);!p_v__k z<1!CL9YT{z%~Iz@K%fOHH5(=<`IRJsqF!&0MkI16R`@-Y0FMmZ-HM}x%xFOYcjn(h zmDfbELH>fkk*HxT_tLrTgN2#g%TTtIy{qK~TE9D~rX)p1^f*0%%t*+~!^It%Fd*$A zVlq-*|13{U6X`?xL+N~nu+;6P0KV=O7n*Fo*e$|0PDVzw*`8S2ucqf1hV&BButw$@ zGT&*`3Zq5CYxHRW>Y(!)3$tOv4e3ra*&&s2?=0wOU91bwzxj01f z8g164zPO-)n-@Gndmx8RhHEgdu6A^1+5*tzgN|7)O_k$97>nMh(qJ$kW+N@L5bG;4 z7fX?pnC#Orzj=AYlhNJ_^90G}$;zGSTh4Q!Wjefnr!k)G`W9qCLoJabs9~A}zqerKJ47ol~QJ$L6HOpJvxAfp02%_W{o9xsqI8phnzN%b3h!SJ+DPw`123n`H>zEXJA&*Em|P{pZo;piSyV#G#QI2u zz_d%iK6$J)+m#%O^@xgYrmLv@odj=}8%o)`g!89xq)@or$yrDIfr<21kVk|T2j{{? z09it-fKxtY{MZ{p<9Wpf5P4=>Jyrp_4f4%KSDW!+U^yR;@RNYg1K3iO0`@C=niK68 z>sQmiG*=aEB96&vs=?~y=Q=r6;A5`GohTch6(I`7agbbTcV0$mtPh4xMh9WHX&ay?+HDh$ztQ5*5RGw z6jX8b`>$C44O~1Rb6)vLXo!h;^V4W){ZHY9EM-acuQAq0NV?EZ8XwoD<{zw=mDPhn z^6X!MJam_=c=5YxarqMNCj?-1R{M|PBSH0}vcTWkDT6oiqj4IUMJj{c|H-m^jnQ(| zdXxyb&|2=(o*s{$l72*q>EL17J{JUa64y79DK#jQqetRsjc#&He|a{BK`=4?ig3)1 zn+T<>O2`7DbHZ;lUG2VyLy;}eBtA5|^85zGrVwlkZlV={8vY5Dv!O`kHh}Or4Sn8% zG=BW}G3mG7%A6!Na_1MmmYdopK&?JJw7sheN|CD{6X6GHb_Zf)&h4GYDv;! zOsAu%TPl&^c!Oxam%jlv<5jCG+GI89j!K0bz3`o{Om9*p-=U_)5eP+^WWK31L6|) z`yD7Q1?AslPei79n{OBgeeqRviO`M|5-1~Q2?bk=JBwbL3d(n?_l6^aC8YNy`Lj=cwl_MuR zg{K%Mk?k5TY8SdWfgYx$$jFGEPl;mg84Qxs*4phX)&I!Y*d~DK@Tx13e*_Ezjjg2`9F4 zo{>$Z1$Z*W_!fV?eH`ILxfj&37U_pQd|e|Nd*u;cT@YwM9BgS%{)+$v)Fq zWQ8Kx{E~tmC+{TJ%6YW3Ue?h)o?*}Oh41XmfpIC8AxRq4G^5IyC1}E{%44M z`1t}}yKR+4qrQ`^t)82h9S;3;zn$UMvtpM2@&df)!4-OOh{R7cqIqwoRfxe=?NPxQ zdi7S>RI~jJtv=<+Z=SQ8X=WR{Q7pByA@cL`pI`mFD9(Sv7|9}nED8;=fuuLSNPqku z^Kt_9{Y$yWL4$YntOKZs&ZLyFhSqeHdvImJg3(W-#~nZCxDRs&NmhYs#c!@p&w(Cx z7nTxNBg<)h%;Cjf^^NqzTXdsS`mI)_T5*TSqB&Gp3U}9Bkj8zyIM-+)?PxSq85QP4~auiS9n!^6UFQiTnQd`(g&{&2&eDPbr+SON_C!2Iwqe@(xNl(eqG7Ka7aqzB)#Digi8QW4)t zruV;tqG7Ltw78fCCAmb`uE+>M#BJ|I+;6eU1hm1SG&iJ{dgKiV{?zn3-$2q=?Qx6; z@p=1cMb@T}B8<;mKd*ySaNrojac!@OkqoXuc789Z0HcQp)-X5Dy?h*x9|$)VRSrc6 zbnS7rxz0(Jfcl&WTE#Pvend4qqJqJe9%sL2 zgLr=hxZnZ8Zwk=S0dX9VhGUqr{2B)cw^$~}@p@*k217AA{*_zI*Wq(FuA#D<0+DFJ|Piawq>n)$xx z@|p*qa?8mCN4C>L;jD5~$CjVfK;da188F_IM*}zU_2_0cUZPykCQtue{KozvK-e^` z|E30i2eF(fvE-5KK~)l;(~D=Q5$E71bHEAn@-+IB!@7(6)kN#f^pR+i-_6RmN?_n= zv-rc3oZcV0#BG@Ao1-Vm3Vi;7`{h5;93_FgdI>4+V$h>am1_0j zbC~~FSNng7NdL1jz3h<;A0JP+KTU2|6JQEB+`3Cm866o>{t_>C@l!Ez!YY~M>2LvI zbB&Y$@97D9;Wn<^2ll){7_w169*3IBNEqx-Ye~2`jnQa!8KWcB{YkuYrs<(9`BgG1 zGWW^=azVLI&Fq2_1Zp#yOTv@kGJnCrA&0-t#{4bjzTuK&fDVVmd0f9tQ&}f%D`@(U z8@XYSw-5y0R9x01XK?m?YI{u_h)zXD$LGpl$~UnhK_)Po$-I*mN>Y$h<*(>`eLyFu zx2}hRH3a$a=38=}jkJW0P~rQP@A36$74}O=w08Qm^85*Uer~mxO?h}6!d+jaVV~Lb zw_t8QN2J;v4~6PUx`uD;Sh<(rU^p^dOO-)IpPzmpLXYj0S9-sVKsPyP>li9~LsT5i zBEfifR^5J?8g~$|5OI zb{3>QR>n&R43R6*HVqHcGDmNurTZIEulvQ}SqY&tCbsd_2^qZ{ifu+`hmggH+X=Qn z^{2Xe)>}jYMF9!vMn% z=Tsj%p~*P{3Bmlvn4Egi9fi0iY8=S*rbIO`b%2WQ>Hb?fh5F&xND<|cT{D`ZKFV?$y!W$*?TtRuu69l=SC?pm62`3se)@g<10ftb?RVHGKri`=$Eu zcGv9BE#y4KOTSSz&o9Sx(P+$`HFcmEl%S*hH6T;%h6ceH4veAnX>rv0Ep%V((b z(njzLdh*u&=3Z$_3ane86}9Pd#rttP&qwNy@cvQ`veaFACFJjmd`8uu+I{qLY}OlX z=|f*gSF*S__3;#tTNCJ@fxe$uu~^LB>drTulkKWv`nfO8lkHCmbJ7c`?$2h;Zz^LaXzJ^Kntj)4$`d>BwDG0&26J z)lsdG1ENOB8JNb%3is3e3kXfKi{-F2(~Zr!WB>0^qj%U<`PpxbzTUjezdTq8wqrY1 zasTir2ufaQSXsu~%Ffj*PINLEo?$6Dw=g_$Ih}Lx32jz?q>+MRPt)P@gLw{*aQRUt zxUSn!9R!Ax0tXtRsAWJTz7G_Oj1Qu`GtC}~#U?7xh~8k;+B(>?eDn}b}YhMiy*m^*V<wYnh0or5Zint^bsR1g zCl-WnGTrI<8USCdb>)ZWKY$;O>_1f92ztnKP8i!mzB=Pc)z+eQ))}}j_v8jTW6R{L zH^p&hN(SPl5Yfc{q#VQL6Hq#AI&(%`^o^CiLK#&fFF;;8aWbMnU04OkR9!|Op5p~v z;Lj_$u+QsBr}B|eP&%^{g@1>51ZsD~ri22f5eZ{2&$$&YB{= zVyHP{9DZI=)V8nFo;!AB(O{?70TR1RB*wBcAS7onmmBKJPfSMsiQtFNn}$~gxsS*Tec?zP{u4eC*cESj)R4Y@QZl~y z(U|$bxt_L%MYhR=Y@{KM>qCH*=Nxc(XKVbKON*(FI4f$|lU2v!p#ip$~*%D z2Xeapb{1R6VDzbwNU29AF7zF)yT95$m4Sy2sr)(b`9W5H}=PjgRJV*Svyn0&F+!Jh=TfBe`c z{92V$AUjGD6GTkY;l28pWaduLp85vF1?A8D);MM6EI%qP+lM)eG0^(DN0)}2Np^Jd z^Xgi+^n0R$FqSn;-jMY!BRy+GMdY?x5z}+zYs;RbQ8X8a!1e+t+W5PQcP?MSdsKH_ z6n2-Xf2}u}QEN6(OO$o6g-XvpQ%VrxQEef10KoWH3*NafK?ND4|s>)_*}=3pqqrV z)*mV|xwE?k08;>F%HO8Ub3LO#^zHIidmXO&thgYg>*mMH1@B@C{3`jH2XOr~-(E{dTG)wj=>nk*uNtKOCV zd!#fZjA-9-q?L$z(i+j8#k~@bp*NM1)5%{o7=PH9l#)Net{7;b%J}WNjJM5_sUltl z4z=^zzfT}At(--_mAbnApjPr+0f^7N-ROz)peLc8)Tv7-;yD(O@ZFI{Vf2XzjES8g%g{7x?>ETc# z?lNuh{IwTCcacCWS~E)n_-rW2X8+HJg-8y>hE^eok`Q;LIf+XpvJJ{l)^|_6^P#yE zE|uF9KP9*ZjAt($eCFoTU-T$@ZE|O6GZGHSmQFNHL7T(bCSNeie=G<=lCY;TCO?fd zX+b{CZHN--_RaLX)E0%6?VR5C$X3^|peO3_I}e>6tdEx<1`dv}ma>ijF};n__OtI} zCZwXLqjj&WSRFMM*);KNo#O!B4xww+y+8~h=8kM?Sjg{x9OuX*b2T>}aJR^?j! zsDyz*f#Grll>RRCw?Chm<6g}-T%0D(9Cp350dCYk-52r~1^XgCKuA`z)R|>q%)h9Nw?;n&q? znLlH;YWg#Y8q>1k&m+3}H#*e}_I5VC` zlRHAU*vJVMgIiKmjkQei(e=HP!3eI({IQK3#g795tq2HKATLCMazQycGd5)O#dIP) zo|^Pk)vk@1Dmu@8478TN5YnB#GkpD2_RVO7mTKp^*C3QA-F z;%qPo=O#)LpP%}BeA#R`qMW@?oE>6x>bLRj*x}Q+`I`^f9kjwjKjq)19QpU2VyTsZ zf}$7qes`=jljz)BHI-GnLo)oYsbU9wK>6Nx$e}rm)XzaXt1UfcXC!%THQTPmjA+k6 z^m|r!63?=mK>8zer%o$>%_zM8aPJG$(7w^wjJ zuCll&oZOF{Hn@y0$uP=HB9+D!pNocXeNaSTx(gt2Z*otHW?LHd(NPTl)J9VXNlX}+ z>w0He$aipAAvZ1lZ9$?Y6m4o+B|A3)i#C)^AH}Y|R^Gv`Rg62ieu;)_9W>EnIlEy^ zy7N=g+arsPcEKgeK?!xs{2rE7*{uJ7IZ;xoODA)5>C(RS;tAXFgVqme!86Rq1^3CI z8n+Sw3Ke7njcmJ8L$hw}W0c)PAzN80p0Z(^!=V-vhsuHJC*Q%AY9E|f?kuxo#3A4{>OdaIIJyG@*q2GoYdiF4`x<6LEt1?nuke_b%pn??5xz4j1)pfkJ znIW)Oi1s-?;CE>HXmHV&mF#zSiAZk0&(B7T1yyxq_dv%Z+Sapk2MRbIwNzW9^&{9! zuL7gZU#^B+8HRKye)|$I*U_}4jc^s3f{PMJYBcgxr-%WK#h z85$nhS|K*4>C&M?z5!HS6PwxkpByD{&tCXDieZ=&se^kii{T&5FiRK$DqL_`C-{o$ z=vL9MZ$Rp?zWRxAUPfQ{a&q;e^&FW66}qykG2i%YN|Pc&pYG{CYDg!B&;L%b#(iiV z1Q(uum`S%j{?fs4${uWUQbPT79gvuOzuq2i=rh2MD1Vr>*`Q}{tRjMb53wY$Tu(hk zn=5HSw{$Y1IgTk0g1gOFv-iJ6|D{t9@Z#578ae8I)-NOkA{W1tCW3F*6?jt8LeeIa zlk_)&N_?x8q`QU!+uk3!ij-Ptg@id%3@7eju%|$n;*oqn&wkMM`UiS5=1X>}Z z`gmJAJ39*r6#9~07gvkZ?X4J-!%ZkJ#(jwst1zW*Um!D~TZhp2VD7EQ^tZpwHoy_6 zG%yhYno&8p8p=);47PkLJbEd|3oXp^OG{gcIgA!l>scB+t-Up7XBG8T=d;Sg^1aoO zFWmfo6pD%-g0zTy`z{AkQqWw>@fn+b5#B%xB~MO?W2z(sQT#|yCaNmbr%2(mdN8#E zx~xk3VfhCSvSs{cZo!RWFQYSz$;7~G$qA=+kRw>BJ1GCjW>yA#S$CASD(ZnXT-nm;~z428GJDLim^+2JXmb{4mPei zX+w_XTk8*>)n?jjzAR)E$fC}wR*W<^-Vke@Y=jQBl#CR-yI#V!5fZ_!WIlDD6z_~<(htAdPw(h$-+}0y+8Vl2gn+p=$o{L9I*st_>c@ zr@WC`>G&gv;6($*eg{X9RwR~y?36Gf1>8@$qvU4OEhTg8{Ni4y=R&XX4M9>>1dvTJe=`%eSqC~XJ%9Du=YvY!tDZvm1q_!a_<4$y1gfd&2`}bwLY_HI zZOM~T^p4LDWz&jD`4;CYVnQasbC!oa@=NP35**wV2yZhiN_lPOvvTa`ukKd zN=E!SUlzcd@D$id2zl>5yv%gjn39l>7B#~hh#uTFC}JW)+jg^6uttEPT?Bb0rYgGD zBcgB2nB7EyrOYq@;diO{Fq@yuBJ>BZ9c*X=RAVSY2UX6t?)X%mOEmT8>Vrz-Krz2`!A+T7!nrPwT3XsJT1!+g4TpKq~b&E!9!pOIEgH&6G4&k5OQS);JbE%Nv!17hv<9Q?}XC-AUcXg{&wa>68BXJ z1J+;B&ZX+06V<`b+f)`fgI+n@D_2Mb_0!I8&V@Gi{e=cUGvWVD;C{&$SM9@s`-`(< zTBOoP>uUZVsMDz|dox)`7Pl8V(aB5T79ZxrnSr}?qAOk)yHIEmIX4Jwte3=By=1tc zE0GRnar!|NFyuWr{?JQ+rK)Ss#A1FCsj}*$v7p*)!E~5VwFQhyrv`7kiQdfTW~)UQ zW||;M`Dj07mH>BspT|eL*->!)jLEbrGfTzyhgy636;q|>=iSVe{l~?nTh^Onb(b;U13$`ghEHO>Avv44d8>tNJz9Mui`kig@d1&iCwviQ5mu6A1bDkdJ} z#k)P1#HzavY+HHf`1V{lH5TY+jELmk+~y)EYu1$naX(*+>{o3%PYDEnm2%PV{rZZU zK+EhIw!%@)O(*<9(l+p(J7n2PZ_kVPLlmi!}eU??+<1pHipV>Bj*a?IYo0oQ56g*K1|QopxvEqCOp&u2@R6_JXVQ^nWu zhz_+LWc5~JX&k6_!4mV(oZZMw6CK9Mro#US{oFy}YcC3|JBj_BbX}kr=6fVei}YjF zDC({7YhA!VZ0dLa>=`uS4dTO0OMo_??T$`|j*0BY3?`e;1kx8egR5)YN51b z{VY=O^Y_Azfjuf?+`_}6A=uWq>_BC5<&SD6-66f05#=X}N|Db5*Dou&E(Z&~9c9^W zSZA5or1wQ2{}OaFktRn_sWq`sjej3PL4k*fJtGlt%z3XlAYRS&tY@ZdqDiL(bCVK% zynZUkS6=+Xlydla z_B!2_chOc?M&>gK1LxQe;McyV%CQ4zq{r`De32DEJJu@}ys=zYNr zSHiU14B$jIxgQJM#KV54AF7uP6UFgY>_V5zu5AJ*HV^)eJH_5zldYLgazh8m3Jaxg z;MYuP>*P!^;UD!nv^-y)TnN)4i0?1E4pGX|q6ui*wHYH^w>yY`-I z4F?CZHv2EXfc>(_Ik*~6Obqg;7K@7$1I?UC(!2qIb{%=Ijy3=cX zdc4~J)>^*rhtZpf>gVf476UQ^I3C&296d&?AFoc@%)~@e>`ASZk-e?XvbXHrihy zQ@~weQ1~d_4X%bejM@1uaGS^T?J+Fa1bsH-1-1Wq%KhU}n||AQXF%Lk>!I6e)6?}{ zNJXEBRQ!#!<&7M&_Kgb;T7GVyeAz65Mm_CS_l#t3zY$7}GqlS6E4}4% zru;Lwu?{$stzvYB413gkrC{J)2Z~1Z>A)W+%94X|2mVJ{Kb$4PH54pldKSQEA8D&pJ`h9S|?@#p8pM0e(DOm^6veNd_+2RKj zsRW>~Kw>iCrcgg-2)zZMdCTd23ts-NL8)SVyej1u^_KCso~xMQfb11TMlx4+k)*Rv4&QTeESdYT>Q5CYfu;$yV&%0@IlgrRjJY+1c||Gqu|ov zcOmYyitr_`My{-BUo#$I{`Laq^r$BLydiCsKcqKA&nz4Id(n?_OB|$F&9GLOqj_WPGIO%yA0*}l_2%peto3D% z*?sfu%l7~;<~;+2bz?w5yse!kG?+CBm^l)3N#NbgNY1@xefgf%=JR8WA3FBYee6WI z;y&WK=XYgRiZi=!6?;^~L25En73-VD;VRK;tihzzLqpoTdv3;}lAL zc+_GnS$FeWCWw2c6TvkgJEHhSjceTBbG^NT1Giz7N43)bk^BB>;{Z+QLH_zr$oT$i zH*P=1YFF~-MDxr>x|c*tkzl#eB3v309!hp*v-v(QJ1PuMRYKB2&qjK#V|Sq$C_SYM z27?&En^q7Lbbq;3-rhJ6NOlsNmnP>`gidw=rZF-LSzLV3cFf&hsq4pAR`F_-NcN2D z7)Inq-<8J9Zl@n=6*D;t=$MQMC2h-A(r2w49+6~X+>_;C+7eY;s}i|dV$?6J9ZA)hfkt1x|A{bxnW1O` zYmeI;NByj4W*^Mays@(3T(4cJ(+DUCohx@AcR;huaFi6=63;4Pq0+nUcu_?_HU?Ac zb|-KtVp3K>=SocfL{)9+!oxLS3Yc(u0DVp6!1=!-!)_b_r5mNJaQGmlJwKZoE9KQE z1r3TEBN;5uY0TGP<|2Qqe*Wq|!77ugyN_mI)Pm_SH9(&?FuRC|jd#l=lC(TAKA|I8 zr4kZ1q8pDkIsgU~y`iQpW}X3)tMl}3@=v&ZPa_?Mx=qEm0_gqbFs~5PreS1I@Z%VGpRI&SvGMWaFsQF{4x|%(CZSYT!|0lRh z2C;g_Rb`fV$F0g}t@$wVNd|81H|AVnGVL*;Bv?nX?xhYBV9BR4tZw`rHV?^RK$4=0*%H|jEGy=3S;6@iE##(OziuD9H$Aer z;v6i=N*~%6c&wpe=Ih$Plb3zdwEp=w9Y{-Svgb%wOUv~}OWJGoR`j&62k}ag_b*A$ zl8l7zIs@^Bb1WgBVR>_U$?!w1VTdnrAgJ-nQq^hN+6!(nx#6k@Xg1`haSeYU;ZR#Vsgt z58wq)nA7Di>C!Y`R8%FViS8dMB8__<4bYnEN`0w=F7AR) zmiPje$pS^k{qx^_`(+LZ1y8izl5EXVD%Dmew>6mCu`#;fayVEiufw^eyfu@BxKPk# z-qwBZz<{})I>qX5vGrD6w;cZ5Y2>}R>gQL|oxNVPnrUd9iW~r2W1SXI!p=X&{>DL6 zZS{Zb!FB;;o6!?WyPa9VAj zS)R}r{vf26M+8vziXO_)vu>oeq%Sep@sNr}mij3B~n4)4Af z#)`Mz-jkdrpxdgCb(A_u=JivNEv!IWTIMyMfsV zn47jex2cJ(F7AN*5llcVg6rKEF1XxsGL+*geQhfoRWC-6fq^g06o>KraZbdSq~ez| zR*R@%S_Jm>^WYMpe4kf)bi!=#ALq?azIe%bR_$Kdm-oz`K~p$WuF0ZX`4nWoN4w^X+0_YTU0oNWwM62^brgo#$;q%gZEX3gQI$33$V%EBvkx7hpr$!c$7 zapB`fuWZH#(;*PYkzj!IW>SIfi+tb3n&7{SFS#lwkhF{`IM^or7eD6GF;Jh`xaRx$ zCt6jBky7}0&rL~t-*!rT*UtLZ`u-BLM)aN~dvI}4@k2S+C$8K6`5!*Effjnca#^XG zo;owAG}n)FtzwG%mOWqN$5aeU5Y_CB@2zXUukj`F;(ao7I^I!=Y7F_2e`V>!`vome z_*j_nba_RpqF^TAt(~{|;*FlPkL;t5V)`*`H3hGD9`%rNm3X-Q){)S(!}&ZXbUyXl zh4(TXd;^qKKli=d?Ep|)=0B*tk!;9zwcwEjxJh_(`F(^itH@RVoqRu?5&Ua6*#M5n z{fd9^x14-9jc7lA!}k8!Ei2ZtK(>NF@yni=;&t$hAMbm7=M2t!ab<`?i*NuQ^!ivXheHJ=Tp-r7wiLO=lET6;PyEjr^eRF$!p*x zYk&jJxyU&j>2x%!Wz_H9BH$$1`DSD2%?nME++K;iqT86o;2S|P!3~hE^jSjbWsquC zsQ(v@=cg$d<;^e)vY3b?8xB&LhN2ur%q~{UB4R(8K-U*qwQ_M(LDd}kW@&ilL>JwD zBhTD+7XmCGZuYGM>|VfbDARzZs%PVB^unl$Q!ld6F8){ zdODa8*9+mo^VX%ADy6rV^TBW#l1Yj)5|FNGz2B$QT9|YO`#I!2i_P;Jb6pbehy&=Q z+874-xw=LYGt)fQ1K{QHaK;KG);>bcthC61%I-_Y&)F=nWt1U1U6Vg|O-hU9XJ;cMc6*?|{~*60(|ra@gmZ$; zE_1YKWUr+6i-P)1#liv2J4o@?clsWmhP$|&wHeE@rM}S7%aUHGE7AeFENXbcbSI6{ zkgV?4w}jkk%|l_I@ntiM_rub)KF}GqRXHRbc#{h@(FCVe$t0?at@%)iw65>l^(@)7 z#z3*x+rx2B(S zmIWoJ0!FS4Z~8R*fbEXGCgfwUo%}}rsLFwz(CafaYTse7{LK$(@v3Nq5J>BmqWy$o zkGbvvAFtTE=Km78+rJ{)H|@N>*~xme@?iJ(z5A-@OY3VGmjM0@VHWTlMv_N-=glFf zA;bsHD-S`r*)?8Yy8%Xi$9MbYKhYwkNV=7(`5ka2qmP5)1rIGzbFDs17 ztG+FX&HM{r3M(w?^Cq2)2+K1LC2iH7c$BXE?40NDcZAk~U%TQAi9NxL1St|lV05TP zB_~tD7tWj?IqxLd*JwG3rj?7d<7Z?aQQnz@VLI^%BckVD4L|4lGblicq7<0{M28lod&0BeV|pW3(`;$2S(y+&l3qNHov zF;&$?F`-0dK{7Q(75FQS27|uLLK+mT?QZKU zm26;nP-Pm^$I^C45wL(XCvz!kTo>f7DrQnsguwAbg6beS)0SQ_bZ#z}(k7NTrQ zh7i|AF##yvmjX-(M7s8ViUpk+Kn5b9^%#rT?chMTGU0Bhbl?&}_d|M`L*C z;?Firtalj{><*N@h(=0QFO7pg;R89V|_q1r(6O=E$Kb8zp`EB46y zL6&*e02^nV#>u#NjPaNk>m#wh-5MKa%QyeV#=rY$%@`2X^5Jy1mmA9ozb6CPURu(N z1Vl>s1FfI6DSbHCSNOCFmhY{lzs|3;-Wj{q*sy+zb|yG>%hEUPIT8^7gp9X|yL0r} zw!Ng`nJsubR;oAA7=n_#^gV-NISX&`<>=x_LfIqzOikemG`}NwU8sBjqiqc}wi5*p zvA1jJdSd|X02P9l%-CSEK#>A@c0QcA{*ds5V~U=Pf-EV@J=zA@e>Xdhj+TM?YPjxq z?8oFe-2~HCj=l1uZTt5_%i;TC;~Uvldh+&ln}6BZz3^W=*iY9lJKy(U3{<0eqGrdb zDte+D`b>qVr>8r4_4N~*j-k#Uu(MPMgcm@tZ)b$PQ`?fDpW}3#%AUsoiY3*KDA81|1Kp$E~ zdO2B4Y(Un&`+;A0G-l220{M2Rb=|L6`cO6&L4+Pzewh0`DZOs?Jl_w!ctg)td>*Fj zGb(8#53Q1?B0e%j2OWVi%=TNVUQAce=w7-uTxcT~ZFqySuO5rv9}S1U@cn|eZJtWW z9N>z4ZDW_sMA!UU-=9|rk&AlmW=yP-=JzSL1U-|qd7^Im=p6ZB#>ZcE7pI)=oA8iZ z&s)*Ad?*?1Pa3f+9}rv>UV~R?0oi9nG+J2{TCWa<=?mZGrpF%Ix8uJ1g1T{XCru?t zTV-_>UUQ*XKPhbU3XA*QV?Ptl_3r%WH{G*0Z$6y3LxAOxkEGIv4U0%&Lk;is%J{s| zt_6n}y;h6R`t0WyVg_Fhyph+xYm}IO_x;4XYxrARrI>x_~f+B!?h z_&DI@GrDtKxgQG`o!Tr%DncP@S;NLtE4cCB8$2{$>Bh_~yYNDPJ(aDwz1ee|?SpGK z-CE}!5J2vpJnvthY_=Q)m5zOyM53)-5$vXeOOiOr9X9orPjw^%Z<9>-yMt?VuVx!f z;+T)15}0BAi}PWNE|r?CmjTdL=&yR}^B65N-ppX@Dw*s%sPjlX7um_HY09ozkdkJQuA#d`Qo5z3 zn{)fT=ljlkp8scHu4}k%_Fnt9*0N#lmH4H1ad^lc)N9eU>$oy4^DF#XD~a5?G^VZJ zHL)zNhOxq9vczEg(UZ!n&Z>;mWvmi>_DAAp40dxS`Twe-=LZ=Bm_31>%^k%ekJW$w z?(c^gj*!VMN}rqmzI2s>6lOip8YR3Ft4qc}WOVWwxq>rO9M|X)N_Yy81F%_t8KqvL zu7)T9=PxqZ^iZIKUJs_XrizJPiK9~#VhUlSzwTX9 zQAtd_P4ge;F-dJwnxb~wzth-dcpe@uGwWX4+E(n%*2p3N>9D*(9J@w?#Yk6mf?85V zNd&Gs?)9Oh1w=d`DV1~ z_l9wPsX7T|7`_mC3`x`wKg&Fyk*@59-|crTaH*}e+g&?i7fGiY5I0l9SDy|!__ScJ zS|LLRUhFA$GjDGcR}s`1;QwHfc3TIz4TFHZ5c{LMY9fB>H->t;_AvtlI{5EQqTJ$_ z4_mYjPcDXcObyAdluD2}y~I`}@DOuoD6^kF2>)n7A7!^foJ479`rptBgU zgNW(b!mGxnS`LN08&)ecG3t`rTyEKV=Cx4_$1@RRj79kEr1E3?4Nf%to12_c%(b!v zs@m%2)hry)!*QutQm1AR*83q?eaEcnwF>R|=|G<+@G!JEZQxRyS1OuQN6YTuFwjOG zJxg6C^GQUWN=#CB$4WhON84vZd;VD)5H6S$?Q{B#*YP3Y<~EcWVJZDOw4J18x_MLJ z7)VLc#V}QzS7{j6#y9xiNUH`RpgSKW)iulgGoAI%08KE!%;DghEQr#)RfvC~l#Q8V zRTg^4fE^d4VB~r61vBSSc2dwMD>ZfknYhtWaelmOdN9!#x$1;MJ6bYFe+90h21cIx z)N@@vj8%0Mg+mzFj2!=-XDm2HsjTu#7Pql$3eV^ z<9pN%5>72tU6Yqb5yx04B>(Azm8|Qr8;qvqDP_Si$tn48{TbB>!^-S1P*k@j3&E&5 z@j?=pj+!a-J7R*&vwMcVcrR$(6RjSEn855Sb$VX!wVWnDWx5> zt-0F|z!oM4vSYOg?#SzW*2ZK&hixp}orSpk;$2DZhOcVzgvv;8!Wni`fZq*}(!qVe z#Jy?7f1!0`2g{g;eVvjZlj5$GVtpRDgm~{M`z9yX@6X?cK|NT8f%mf!l|6}^55WX% z^HKbpJ&`MtliV2Oztr{-zyut8TCk_W>WLV5jzRJU+^*~WErH)8%;@u3 zWGgNFhq;9A=#xgo-*AWi!`)wF#hzW+rF4zN*`>}B-w|D~dCNV&GkhMNUmD7LxV)Fe z2kxZCbPmXwW8$VlNsi^EF%j+2AX3U$00c1=e-iS8Sfr}FFo8b@0Knam<%PtQCJT-L z_YSftyGNA2eLc?ttBZw+XO)Q5BPhw_xbNL*y`hpCEvE&E|uFLB^8yy zL8E&I_lKJ$+VkLIm4A@s|H8#pWFP(7b^eziMwO8ug}=(5`~wiv8vtD#08(HcC(kv$ z(jLY1sW+|1y6VFyQn!FvzOYB!qR|2 z+*F~}n`K%vr@#)aZ}1hAt7-0cHP`emAZE_nc$M^R*D_+R1+el+@GlLVpiK#iF(MDeV?z!I!B1d65^k-I zL;4*VrsH}f{58){!$FV*Cp+oukaRqsqCJdb!kPvPDE0VMOzp@QD&dNWjbu{kH?|EU zfh4XOP%qLVi4EI>pT4{+=_pw(9IhvXCW6 zT116gFZjYr6=>H>vmpCdR3k*uVW5cl%4*hyPW7lQnev=tmP;CscDE!_xi3Q8eO2z{b%Md8mIrm0$}q$b@h3jS5ioCVYugOvFAqewA|O`6uYvbrJ8l^hB<#~VIPzs z7s>lZYGoxI~k$xIe3 zRB5rY9@xvnI+5a;idmuNS56KGwTqLfj>}~iCue#nn?quv4;|`4FwL$*T`;Anm*x`Y zx)KH-f=iYihnw`5O{WOq+D^8I?zpGoC#d;00-%=&%Gr;#N1C<7e>JF76ClL&I^ ziS5mTQ`_SsMF;y6_ireFFh#W_o&if#Y(S}mm!mN?^Y+xP_@(0nMYZyQom7}LCrFj9 zVNEP4&vjmw?Va-Nt)9ZkI!wb0H}>g{o?jG5S>s*x=@ylu*)8tTmv!oIW!~3&b7LY4@P(MB`uXKHlPzw2r1-Y2 z&1#1;POTb!70fQ&5rypnayJrdn3lhV)-PbE@jlEiSMtoxw+gUoo11zEHKx@cd-k^5 z9uiV4{EV5qOgOzb7v01$1spTK>klrU4SB22-S{mD2H%l>kga9COpyq?DQRK+C|NNb z@u+gUC-bT4?-ow(!C;pY^wXPLDCUtCEmKxVIb0toHI>t)^%LNINrUJ6N~;gilI#xo zRB|nz7C0+NX;|Q=a`C~e;%edOt{%Uk$GsBJN&Fv6m%?bbTUIv!gu2Z(-WU3AnjZu5 zf$K2XII|O3&%s=1p)?X)L0q|tw?J>1Dn_iNJou_};yPSbqY&{T^h}scE?c?$G+Pos zCA^()vSF3N{wNF&a{679){lKd+Fwp)3x3F6?56s0v0XDH4GqS_f>(tu_#U?qmnDVp z{$zU1i%m5yusGlTC^I!P5tGIZ?z1ld4^HFM`NK+(84}e4x14WdwL$)<|5d!IevYGi z$ufOAymW8GCn!n(@YlJGE!oiHyMgnhW?6+tN+D(=n>fF|CWCJ@`K?w-iyi!UY?Mbs z^TyWyyQo;8>aZ4%kZaMD57w!}(bia7<#M1iuU!t{K=vc3oM2O&D}?OoP*MfFrxSj_ z0hxQ-rNGT;vWuh*rb4ip$j=f26EI(vV|;{7!AW2Aw=>cLR0^xdKAtus3FR?KLRc|{ z`OSKrID8O`kd%7wOfT43?W~LTbNI^VCkgvI+X=zl9;$^u0(5cQ2Kmj}8>y74+tnmT z(VlC{4+dP#-U}C5m}I!8-i$uMOG+-Q*Z5IT4fe(R;eHd}W?PH@4qvyj5^cDAhxa;k zd_49S|kIkvcZxng~>BJ60}JJmcs z*FXF=G|u~|bQAX@cQ;*0=5)~;23yUFrjzw1JCWYo*sRd!Y)T>+9cZ5){TkE0e{^^~ z^D}?r%kwAfpZBfkq@+lvcqe1ulW3lHYpSTY@+ho17k6qG4xq;lI(4@xq{q|Hr9ip6 zE)B8E`>|UKUbM$u^95~zsC3t}jvl}yNEeQycbVD&2_Sy&tlcfRbPbxfH(t;9wNbF)D;Hp!ZRnalilD~@1?4%be3_KC-cWU|1OI2;4{|e2Rm>7Ytr~mDC~ZmXW%q0hpew>X}j=jn-2I*b}oC&F4Y09 zg>GYv>FQR?)Dnw=zDDIOs!nvtyhi3R(W0e4l9p?Tdhro1bxQe(VE`da?*K%<(j}@s zdz<{in~sg1B?ba}Z>omUH8L_#PP-lS_9qNZBQZl&cq+0ng89)^AWtyFzs?X&cl-RZ zZfRpe#1GN_B=Xt7t`ExwRVJ!NV6))DxlYMrUKV|qq*vLb`$gUc5FR`{*v1j-M%lC= zY*}~_Fm(&$B-bddwm@Ypp@j5OExtH>!5oS|YZUC%~5!*Ev! zh}g|6(BlM1%-bb1yvN(GuOJZT`&H2{5-> z6Q-MxmSvx)il5@l;OwF7J-cItC&hAU%!2w@G&I9Jm<}LDtY5&Iv6j%&pP`EI6h@p`Uxb_$sO#wP2MhTL?#*>}BS)TY#SN7>USyr~V&4g#;k-&D1~^ zLrMH9Ggz=UT_fc%{@RSJ(wq1I5_kD7Lz+)o`Ups@wrVl-r&TarL59Go(vt~bL7M;L z*H(aHQ}=r2^pDtY>OH)hRY63!`5~M+EPhUaU6lL@^rqFr5IVhie>uZ5j?Ts&W+X>$ zbxq&0s=h5*c>Q-!-Dy;>l69jr=Y&`+K0jkY1v6VWe0({%*Sdkkql}jZ`-LPxnag0Q zZz@hZ;uMrxCGeBBniS=C>6G$L5KBGHX9*3Q&q8NI z(gbQtB};+*AW}XLl&kKgQ*r=(pG12z)4Ps;zl=YBC{odKt~X1?zC)DcaQ5+k8=qAb zms#n-+577pEZGTOUy!wqTO*_y2^k@{Rk=1Qj~;2@Uv;wiS9tGR$w)rJEh4nbw|+)D zwvmdDTRPY~9NoWVCP*E@@vBdhSt_)d*C97NEr1L>W$$||JLqtil$1>U95;nQ#K&DL z;Jo5$K5Z!tit0wx;qdfcJP!%S=^MK{qdCItiw@iP{A^IgYxQuQ+V+9^>Th!Mi~Hke zv>zol0iz@f(WS+bYNvmJa5jPf@aSRD}N27GA{9s!j~z)n>Mq|Nc)hG zr0-`Nb5j{ZZbb|>Cln`06Vr-`CUH#g1TN2KJ0)~W)|k#n&(u+<(C6cAWJ47G(k^|O zEYZ{S3-?q=@{5avUXXAs#tZ?0*)%G5PyE|(`xAYUU#Yh%-!4i=CPw5aGITy~d}=b7 zDpx-db(C309D-`}W824FW*bMN+gQj_CBfj&Gb<}$bA4G1u4348=~?H-!z+<*DCSq) zG1f6U*!(GSQc>H~bg28ka;Y!W&QetN}K$#a|u-~@js`&;E|nR>ZwkKOZ<47zT4FDZs$ni z-#xrs{UEnzqQ37a>W`Lk4IdMd4qlE1YFfjI{b19xv4m#Pt&C%;qV3-?zk6UCIyCx~ z%B?`5y5->bgNg0Bf7-UVRfVsPnbUMcJW)gaRr7cQYa7BZnx!_? zWtvX*mRadlz87-8LJLd8Ys)gZ85_5j6h2RI#vLP`N1hEfxhP&m>k9h3!TFW=!LX2XGsyBJI zouz0o$f)YEwWNiH_6H8U*}57}9+&EIgTm?U=T@Jb0{d!ZOB%-BtuI&9Nx>ZoqtKk* zCFJ)6Ox!$8B?a63{WgClixx$j6M5&q3vR=U=tw9Q%l=H0)PLsZdi7|(JzRVVN*Ps= z?}5LBAJwtoy2SaeIYif{l5UeUjJ|u;d1lqp*>zC$5sO|$9rBY-@3w@eH)1lT?oeEe z3d5TG>Mp0}GBK7Ua6;c(N5@Eg!f_;I0PWq1Qf#=>?WH{hEp0O8=Xw)r0>MkvWJn@9 zVwF&Mzw#%0d3^^3cL3Xsg5`I;|9O}x*UlQ>Mj za~%Les^+~;h7Sl*gWm(=Il65UCGN*kJ3s&z-QnM8kE80Lk#aG(Pfj*uWmX`xYkPNH zj)R9+Tf9c+x>;9Ltl&~AJS5z?_N_CxK|*gozphRT>y9HnU387BC{66Ed0U`qWZ*l} zA?NGob;}T0^j8w~1lcws39s67w_zla$H&g9-QDIC+ZS{bD++dVfqmk)QL;7Idm9MZ zz2`^lzox>Vh=6M$UTDL7Jj7^V%b+gxP zyBL%AJ?&beh1Xa*8L`pk-=eqg7j7R`E0?mDFQp4thgtI zn&>WPFsE4TlZuY#C6Zp1*}EE{i!G;_b-X5xF+*}5I>uijVeU<|L*h1POUtlin&@u(x+#-8bqW|G0k9#wRB_*W=Pv_5x z?_Th6^I#S?Wv~3aV~`$B>G!1?gDrN;t52TW>a(w1_Twd_3Oo&d7hnEbVg@D3zA?)9 zRzeRK;Qp9-Kv`U{`a0(#hxXYv|Mv817b^8%7dh5 z39T4_KNHJ^tR}f-&-}PYsP%18oL0?$fh*Bz=)imKWfo5m7YeSfb@NUWZ}?O(WEjA) zMvdSn5WG&$5oG=Mj&wiapfI60H{429a7qsU3mCBiQL!oABf>2Ih*%Ispk~}H_BN)Q zI*tqei(nuBq99`-RybSSY^)F{T~%F&**DAc^A**2NXJvKwj69)7-Wf~(QI4dU<;5K zxIGxAS%A_a&L9aC=VfC5f%{cZZ~$Oe7OLfYoVcNLAA<2%P~Chgtc{q~P%#QL-24bu zsNIKPSr*|zi15T6FNWm@3Da*Jwc_0ey3$Up01`t6jOoOdlqW%WbQ7xT3WwW8SOm!c z_paqLCioO;n5U|;XV@q7_963*p7dEw$9_x=$^Q)HIa`<`LcDb9|A|yl+f=**pu+Fo zt3*9MuEoap)M78*FB6r}#v`S4S6pDZrjb28dG`hRZb6eFN~xZig(jO=AB02Iq%J~5A~D%&nFRvz7*DUpj=<^P+- z!y>iGk&YM>PkLq(g4%f!s$-Mvu7#Z73Dlwdh1JLgxxxdK76YkcFp@X^6~(kBU<^I~Mpn6cwfFW~QcnTQ1^Q6nN1}q6C&XA= zdZTVF@x2Yxj|j`WNY^=9vh*bH9?>mSMY{3|{DPf9NUQSIXhV{#0IT5B$pc-O=SLg_ z#Ih@OKrakG{r#Y>%H_+d8HZQ)`NT_o*UFIrnx#aqy;Pi|`AsZ+)ta;kqjhw2V#2vw zb(ol$-+>ijidz3=xj1r4K%Gq+asMlWrhdI9c-sm01d>!{AqkSZx}zSVVc(ui;D1M7 z1WJ?#EhJAUlEst}kL(z2)?MRmHPJf<@O!t+%7yK8SwdhjL?SBdS@EU@Q&a0fWt&H& z?_L}7io94?3wFQ~$fC@9f-2_#aXlAUkLs}Awmh_p2=$tv;<}I8SU+CS@};J3r;;g` z!vI?PvJ#g(dw*}_b9;aHy6mKNsq;Pkidkhd*T&M)`C2(@-Pwx9=9~hY0Up`iHjKr+ zA)S|(YpCy~eJtWp*N6JrH`0ll9ItRdN&_u{$U(>n>8 z86j^OvuRzQy>;zR<%K{?=a6Z+$2F+Y1B=E07jqU3(zrbfer}wDvJm?;sC>V^GeH%^ z7cYh5m1q?r$TfJB6ilk5b`t6Q1}x!yR9>L)8|gGHYCbw^vwN*30oJ&jdHfg^)~86> z;E$s2H__^8KhEv5nGQe2{Tgw2W&lP+i$L`Xd4!=A=Q!MhT~Ts{QgV*pFBFD|d)yNTF{E&B)0J?BpJvUWHK z!NgdWko!jW=swgJXtJ2W4! zXmH7YbF=U26>e=RQH{WpdYw0JV1KPRIQUf{df||QAazD+Ux#Kdf2N;coh$0MgO1idbvKn?$N{Oyd3IkE zKLGLL_7>=z%fa>c9tpzWj-*UD3b$1^a<%(p6iYjISO^l&xXH&o6(>PTRf8vIjq&P9 z(%>b0qdma4m@v01+3L#Vpbw0OpKwJk5T(|Z0l+SkBmuh)lz zyJx2jfLv@C{{y*rtzd7IHyy-rd;fWjlsbR5U09Y<;;#wZ0tw~{bGJ;<2xFtLye<5zL%sXv+72D3<3-si_dD5)>&&@~2i$oXrf_oa~dP*|nWklfJb z-yxc8@k6#9o`SK#sx{`q`TLj1(?sbj z8RIjsIXo!Sa;nsh&iDxCEcdoWIA za}bzV+zb5Hx}%Oo+Ar~3czCcW20urWbsT>aITWqc!VViE>sQ}@j{Nz`Q*QcW+l-Z= zSku{7BB|P<{Fsr*=5?Rd^&j!-eUc*7k2Jgn@RhxNtnHKvroz;RzMX`>zMbCV z|KVkWR&y7hfuFFQE_5kJL z5rznMrP}2Gq#XX=TnH%$;qvVS$*eCU1X87}`OmuW2A=JyLw*HKjU zP>4oM*RnA=41J7{2i7ijTY)%}dZ~ZHllBYN_Y}S4S62u5QQ*3EPj_^L>mlB#V2m2! z9OrZ#ixPzI(Lx{luhJOK^&kV&M=|r^w3ld}G6nQfv{*ED2|Bqf-fWcw+tQW@goT2s(zx2d!-ocDn8;Lpj`aXuIFaAiN|1r^^GoL~be)opLr7+DRNl--o0*EA6e#NMZxv z%U=cm)k-PwVOV=0c?pSO0tBNfU>jgCI_TfWd`~z_fcQ?jHy(9VMlIW}+JaNx?}z-e zYQm&7fTYB3<5;b)UNEx(m`(NdVIMaz?fWaSE}J-IwRC-Y2Ks?Km*Ipey?>`Ne+VQu zE}K9jR%};X69vwmaqz4W^RxjgMXL|&Qi$ZU1-KoYYkFU`QFYh9BU^xaDk4QcJtLk^ zOrYSer0c)6Bd-G*o|3_Cl(NT*z8YiY(`+I`bFY3mt{!e=y^wYE=152p9-8T_2LBGb zk0ik}@m;+q1r;u4)ywq>y%Mq7_9#Fp;i%e7wg7W3tmT6*YN>iieIWJ72@s*fTy-vb z0XF=f1U?sBzVv@sfDFi$gN{OOsJ!X6ifx)#t_YWnNIz)rf^IN?mG z$g>=3X$5`$&GWJ;i98&!#Botq&OGV;{wN1xxm^v2?u1JdZtg?eQz@AnBI@rsw6<#& zmyprB9>}ha(i7lZ@nkxhgk9ZtRLwwfi?#Np`X1tdv1`ec*KOp3 zl+s!COp1-k>zAsLItvOxArvt}xaa zW33c@9CZ=8-&pxX1UPTs_~_CcXr80iI}sUahR_QVS)G1%=B1e}o-Y){csfENoHqM@ zpiWh7Gk9Cp{pkbe;jK#BQa~bGrLEI$7>@O^NcZ|%a34do;BUWZWeNJ9a zbu47An|UE1$RzsQ%g+o3*qh<=FHj$=OQ!cEM*o604s1OMj1OZl>+F5YCoudTTT=Hf zBK*z&q^G!wd{|HUFpKLU!BgAcn|^RryJs`7{bfX^=#O{ZS0yQWhvkkhLmVEL%vTdv zRHB&4H(wMUzJ~C`ZQ+KarG7Z6>{oF zUAh#`&}p9y&6F_GbZWydZb@;3b?v9PN_NS`Jj2ha8U~wTWf3>&bR{w46}@c63*o<5 zs_L=#Cfv+6X_TcR7ir1vzuS&7p6cU|ibxaz*_V}cmy#Yr?l?yqVM=?3cB7gYMH|;* zt$+N3#qhbC+^3uO#l6n^$_&dX&xc=MpmGD}NH*BeoSqlF?%B??pDgr|I9r$64Sp}aA9t+1OMzh z!mV%6ch?6n?W#zW41|m8@9C+y4*%ho3SaObT~@(|n^7HMA?>8sqcdI#hT?q25Zra{ z+_>7>Lr0l7+1`KwJ1fn7xKg+d)Q{R<>p7w*K9E*SDu)Bf3fEsm|ibx$`ckfj&*1>3p@e0}IJFWV||{;#$|QRE;x(>L>nI z3z>Z4+bgKKl!-rUK-A%1m$>rEFb4+W}VcoE*`oq zpSC(yeP3MU;wlqXR?@1dYOnKNSfZ79WDkm>K7${=X`=ioDZD|BE62gQ{vr#{vPmzU zN(*|9+3;a2>!N{=kqaah9A7UYXi)qLjN(3h8x|!Z&-^G zTmR>nSvTeYum68+48u{c?``jK4!(Dh^M0@7Id8*i82hU>E9e4C43<1KrueU-W-uro zEj#}eUL`GFj_O2sTA=@%;d(339*M}_?4dp9s3Ir`ja)k3OWl%a6f1%ggI>d!a>QO` z^g0ZD8ZA4x5|2gz&iC>wwzNLQCLV$!zF<(%as5`N-fYbE)44-HXcX(2K#mWwH|uiT z9?C0(YK z!JWc>mNnVPY^LiVLtOl`rZD=eq_Xo>NKj_xTfldQrFL9O-?#YPnCqzMj3hu{20|6n z*#5rh#eTWsY~wRMzE2!R;oE2G`)AmzE7PC9F9uHnTS`Sjo!bX!j#GtgRmr_;>3(C=xhNR#dWmHSc#fahiy>kKC1I(Q5g@j$x!v4~yhm-a{x84?8k6J6YF3PZ* zH!7e7f7T}#IB`FgyT``0X|Weule0fO&a8-dzQ0MN`jKKx^Fq`*J|JvxGxQ-^a)ox> zAiID;;YYzw^PT6P` zrY+=@(LHs)@zTDu!QI8p9MnE$i#r7Hmk9|&7_t^Q++Iof<~uiMYIdF11@Wa*k=KEC zNjvV@g@`Am=XjXSdut6Fj^C804GWTynZ%)z{EafEhT&6)i6)H1d#vmV{GsGO?7NTd zG*Ce1``etx`6e9k%$nUj=F4h15+u^pLJ3BR-|ke#-Svl(N5JvONb=H0+CvB^~R-C-L$gU$hSMkzyEu)Uh!~Uu^``eBG&e-!gFC)rr_-3 z1%+JDJy0ZO_|Gs$7PWsh>f3sIUGdNeFfu#($ihtYV(`EH{QoWliRjJft;dNKeI-VB zpDqr$eE_O?8RdVLOP`v~0MF(@;mh3rMHf<_rb+j+kbqf$tktrXN;R$q@3`H`W%a0qsI_`dr_N{~U)SbBnP zz=2_8uCz@@5Uq1FRVN-4({+)uU}AvcVq%&XQ}J=@%j)j#7I;_;xA`o%!GwC2`f{(l zx_Y9ebMw&ugSyM`aKDC1bOsfL?n$a)r|UInH0K-aE1tBynlbZfsDY{CLqvO8b{34> z6!G3F;YJ_K$6EP{{i`x~oOD@^jSAw+jDa$F83YSSn|zt? z=L@{9#T1HD3TIfB7B7KneGH~31dTc)02FX9YKMPUL=bpAXT7*gI13P| zckiFf|JZ{nf6p@}S`P&-pZgPP;bkG;6QPYrTQAf4rJafYI>G@rf!3Ra!vUZ? zWNkSQD8`mOV!e8!N2>ZN$_dZ_Zs{10`c-_?7J*R6MtL`Y+vn!?y&7C->&Hbee@XM$ zy)fq`9_`iOI%VR<i%_>JvKwI>$BryR6=5l}4+6`iY(ve^D0~w0$du!=8`H+HZWw8*&CdkL_l; z=>#1<*LuR&`i(x_)v0k_98-Y$iRFeq8;8TF$Q#{1=*=@VFjsy2A1!C1zP`&Pr*h>& z4N=?t4GnXx7w=*l6k}Wey3e*&4EithoelA0`^AsE3ALVQbT}LaDWt2BWmzaAJ_`Dd zw;Q?NEipPQLt=vy)$J66J9xQH$EDvKLbzrUY(jSV1P`SB-Rld{un8NftOsTmS((Wk zOsYlp){l6j=bKmuk;r-arV;D-m%SdqE&=*^+2Tv`=g);>#rNJcN~O=)gDVD;Hh#f= zfUQ6Z5B^4BlpMR0!iY+ zvE>;?eZjtSG8eQpuC{1nyR;rO%=u%`Z~2@j-=H_EDe zdpeu}0YgzD!c5ACm2cPcEcQi2qi=6OuMvk?pTHOpx-P_An!QN&Zd~7rMOK>1dKjlG z&l(Oh*5%P%ou>}V$*50K0+Ex=#u)!TSY}@-1xv=!f4#Tu8aHWLcZ>KzU?#ks7r4j>wCow z|5{EO85Nu1v%btb3<`SoIo`T0mwM++8_=7od{ly%N78)SbjFnc8SD=?Kxut^`?=*z z>-*X157Z#!O^4fs>0f>+PIG*I@bw-EZHg)}Etw&H1 z;@6fpj|toay8b=Ure67(u^6*3UyUapiA`j38S7&-iHK~Vz2dDmEK-B};MpbF@10-< zBO4$to$U_daGU8)W;lm&OwK0T!&fP+hCrM0T-+>sscZD@?voz6AQ-vTq2&c;Q@{=e zm6C{;!=?I|zLFFPdatwG5r@Q3qDYP09e);;jD1RtUQed$;%q=->+XUtgVdS2)CL~W z6&v5xz0;z|7+p2NItzZ%PyqXh|Ib?s;RgEpl7JFn4iYGhcMTaE1#TmVe)!4dDX3(_ z_>B45kpx?7<*mDj`I#dA4$O>W!kk&4kNH)5dxgjv z$3~v2PBdbR*AhA5&CsmBTGB|MyCnQHOUDF6Os=$IjTQT~^JQ{DJW0XABmo#1q?HVq zpZ0WhpDhQ{IApUoUa*e+)w>dThyGGmAKTd_dsb7zMKeSz&{@v&Yq`Zfc0EhTZ)ts@ZY?<$Yp0-BMmyxVgN%M`Et3epg#@YvYaW`yTRm+yJT_k4QzLjpeTSiF5l z&_wt<{qIKQordne1>qjXDi11s7<+Bv6ntgwMSscR$$WPmroTc~CLV&;EJ!(m_yQk3 zZTe~Xs?6$c5YREUfxt&+7es*N)|s+5@x9b>^u8xL5$`v+ob2#brF!*oW_lZE+wIQ7 zn}0DCi5;)>jfdOs)tW|IN~f!)kCB0NE_;l1)hZ=p?{4>1*ShUXKd~+uojjE^9(7t= zc)bhCNZ%DFUc}rsC8-0Ypf!EC>!v$DV0`&)C1656iYgXp7@l9S8cgCm2BMjVXX|Kd zTo#KZvQ{Zp7!yh+jHB8+S`StyG-#liqV)+ zpY!Tnd0YjM8zBm69E0MOA)sbIl8uLQ8o$oQMsaZP2oh47f@tHO_{+w)y@_+nCM*vO zxAzSe3Lbe3I|2(kOzE27$|U*GzBfg71lCjbXED^q-QwhBm*)FPySdr!0Z@u;?RK}la$O~i#>iHkquP?K+ z4}k(pCt8uGHNnt^Z%z8jBcp@!^BF@UBenONOMWk}ZX%P74pymvVe2*$2)t5gF|?JI zuO|4(J|bnb2y{&LWqIwWA7?%M_QftIx?;LJ4hwD0<}kO@CP@~T}1F0oF|wlUe=nwu|fB%8j~ylQD8g4S4v1{!Za_OB=r3#wNmV1%N$TV z6Q~{AWwLjK0LiCM-#~mM#P`m^3BD*)P>fHO#pqQ4SY3_J$5W(1OaTv(TlN)A}HL;TG!=J(T!`D??|Jj{Qt&(jHBV?n}J^?!SD|Ccnb zhnWJ~yLOvy2?tO#eUiT$=UM+NBr*H`5BKq`Z1?d^5)}6O1QP@8G`$sCaZh>#p?L3X zoySL|g?-xYllyisbCoqh%La6{uGSyaMdP&|dYzLTqGe#JE^cE>s~h*&YD&b+gog== zGIqCbh2=%Y{Zc8M`!zVt*qKrf1#l%&Y(JP$xLQy(-!i?vuzElKT|2S()%Ai&ozi$y z6n&iO-U7P*#en*KWcNMr)o;rz;lHBx6O@zrV___~Z^>(wxt9A~?XF2e;|ZKZyJjL3 zwYI;v_d5Fkh=D4f{?~!2kbo`LD+3tn11=ZE_)7UpN$dK1&L=}EwNLKR+PZNpa0aPo zQD)8uE9tT&u*pd62V)VlznKmB%DwV45tq<7cgKjme-QM^V-@kce{y>8fI_VkdSLkT zB=??MhKUXetDTKuB`r_QN-$^BM(Q(*7RQ%nvw;o-u@hlAq-GYH{>D|q)F`DKh9j(5 z1dDX90L-%k)`c2}ZV9H%IdSzdYW-$P&AymNVyjC*TvlC10KAgBS#p=w4{SSdqc*gs z)RmNPt2J6Zbcw`{b_TcIO+$$O`pzM8tVq~AxixzE#(4L-R{2H5@zuAfl z*hNps-ep%Q=-}LHNt7yON9!#2nV*|XjsWrTO3t13o4{Lm9tNoKyzhL~$X04Mc1$lD zFTGndD6ZY4+U=Enm~7_vbrc#@@^pzjz{qxB{P2!lx;$`b5~__m6-WwV}Te zrJHo4`xC)~RXt$QVpB7_0Q1uffj@lkJIwjlY+J4&m4U2j?EYlfVdtwLZbQ}rW35Z^ z?i%+CodMe+&fai`ey^m3-jf+etqVuZ6wiTlHTOw zI?uBrf3AIvx6Ix~8dH0`My2iv^p3AM-Tpm&JgzQ-i8VQ`8SBn>9o0cA zclT{&*KSwKw2RfVMQ{Jh5)^ENRS}VLPomI2><`Ej zYZZ8TP98N>Xt?fdVqvV8hjoE|MQadlaRsy}GBS>!NH0w;@nUaD93y;27#r1AqVh-6 z@2QBBas4+i=8qo|K9D=s^`oG7!PEr%%J=ZbD$n7mb90km3iU%pY4_oPJ*Oy4V>7}z zAmrKnvAleH^VKiIdn?^GheeUnLuaby;&p`KEHDZBN?LJsP+py43L;81citF7P5wZW z3f2HhYpF|I&kS4VJ|Ed`r&-1-Kat`HLrC&WJv{dFD3SAA2#j5NU5*KPvN1>{nPaJl z{c5s@|J4;O39D5VadT!7k%WK59Y6}$2rDDQnMPWt$DBsGNkTf)!Xpne$U4KbOATB{ zE8-U%6-V3qG%nng08Vmv!uVdVEA<5%oK#dZh3mifuGZ&vW&2DHmuH>7{|5?teRqV6 zeMxyz#E>#mJsVC+;VBrA$b{_JjpAqNnd-4a#uIvbFRrIa`K;N5T0dc!f9n=9G@V)M z>;HNIBGF{u;cj{a7g@kN7JSW2$$65R?N9GOZB{@hyThZV)AJ%tqVn4b5~jQWb`q z71yW-PElmAdZgz&5VE`DmXHK(E}{*;(&+WaiHdv2ii7xJ_SPJ9 zjLNmU`lp8_2dln|Ul(Qi9c6SzlyQ2elg*>`sr z`m=sdkxoEo|5YI&S?*BQQE5o7Orc^gX2!pmilnT@R@A^RpnJt>bk4lb2MUrSej)XR z5OkzGBZ}~7wA;Br7z)np1G()*3q*(05PsBhwa(e|gU5Z85m^sM`ge8|9s}vRQ>Pok z9DmN9|@ye}zfh z@=r|3;fQSYvHtX1{(na6X;Pt>IzS_<^G)j4=BFO1r=F{iiFxW90uj0Nn+e?eKx#nW zKfX>RRs1XE6l?_JFT4RtKvo!&{UmZIZ9*>3c?_uq6Mc7)fHa0lQ~)WkjW$1{R{`I` zlv`NM9|dCz2)03Zj-OG%XRK)@O3>Oo|IJeJLqxu)3S}$uy)`tEUZq$7Kd#B~xAH*r z&@3TTIkB-kcUcY+AxTOOQ_ui6wgA$QxRm_m75xC}In)_6um))oS$K)jP}3e2fbxoP zJ*>RuJ@c7tQZfkrVvpMgb}gA!6)5B96Bd1C1ZD0#RbqDROU=_Thu{FHZdSAry1^_a znu-r)jlHOdmK<(tc<>&fq-w*>P`k4yO$mhhplmdRU#tt0s8~9Aj)Ua7%xa^Ol9!`= zwV+4O%Q}xkJu+(Y#CZ-gcH_{{ElhorPcH$^&d%h)I#J*K57I2R7J6`!HesS4{6|_{ z>vR2HE^EK9iZAZoZD!9OPyJ=Sf+7()%XUg%)xmq1>g6R<7LAkGorTEDQQbByPC^hnx~yhqXU7Ji)91uxV2JPe`C_)b zItS(Bwy1PjOiaww(h@7`)y?qmji+~wPNJ+^-F?^1ji5k;u9jz^YP^pQ1Rri!2HNJVgQ_@}Xe=+PgRTf^?X|AHD|T^8V;M zVd;H`M2eOiCUSOcEuPyE+%bphsruVDVw$MT7sD7G!8QbFRSSg@B89ykAbt*xRhDt4 zm4@$=9Z3Xyc>4w;a0K4SN+WziCaPgbbJD5+x(s$Igi2p63KSn4hCy$xvj#3r{q31a zsYOEmGy`%hy}UKHj0+6ixn}0)FEL$Rvm@Y$gKGW}tkfz+`@!!yUINx6Xs|cN^*i@~&yL?V!le{w6|VGGGD>*pG`m$)c0IkjO?= z@Idj|3tlzV&^D6#H%--Oy3Q9ZT-}nQvrf#PM=?K*({}kvE16QY)+jxpjlbzMFqjFuAqt#w;}i_^_7J$XoB-+PV8IGkgcCrI~?i@VHSb_A^(#gNsWNc8o`;F4{? z_loaV*-Fe~aSz38ZCU1u`uJp}OSO4YY;9mE&$nx9ej3NVYmYfBqB%__!2i!7^{Rj_ zezRbC5hnH24ONCDw=ONWxG`Wbo9?lFe(G|8dgq!E;(xzcw6*SfzTsON`~G|gPn^6y z%#SsHrJ7VF)iYtL)RepMAH-G(5@(Qkm|_g15CiyaeQtIA+!CAh zK1aDK3DcPflp@<=WNZ`o*gP&7pnBj?+|xJp@S%!V#2YSX+*0TGxnf@u&68##opueuOrWXbTud@;9O&G3<;(9{FNv zR_W-qb&H6BywG~dDW8DiD`gd8GD*UBYy5t0#daZis>5A#=L(8kn%D`E*|*EYDG{h$ zpszhaNJyztHf&Uk`7Jl6c(-fsvd!lx3wUlF+pJH>I%J#h1`3VM`B{Gxoxx+cesm@7UDa{R znDBstDKk@agf?Z1>eLdhpODE07|Cy zkI+QQItW>k5Nl{$V)EaYyA@)vh}V5uy=Mw`T82nCpTPvf9P7g}?=RTjhcK*78XSEj ze{}bj%=uqz#lnP}1pVrLw*=6{3JE~rtbm_DrxhvMmayXGJc7r;rH4d9mzZ7}cO%nq zPPe49IiQ>EmdG-PG^a z;|!xx?nDc-?$XK7uQo9jqIwOS>arz0}Kat2!0 z)FCx4dF!I)+S1JPec3J+zt&ps@I@}voD$=5?mo4g7iFqCE0hoRo>GPkr?)uSt00LU z>~2^nlhp7%v=st$>bZRG=+Dymb0@!WA-N<1gY8}AZYQei5p(>j@b5mL@BGxb3JL;l z%6LjT=LgEWWI*iRG>6Mh>g;OLUtz9zH3(Dimr_d;p??>g(Y`JwMM~XF$Ecyx{3Vm| z-F%PBAz7rh8w2zHg9C<&x~R!Tdh-jj9T!JQ`x*SX~MOM za{V+lKndU%gt}N%YLmQ8=472+DGZZ_b)~lzQ9;$4vzafhr-&CxBLVDdop*GW^9a|~ zX+S(Yacl9>Vu$6WFlIuL(u+8=uvh{mZPPeJ?gC3xn{*vz#;RLMP@I_)IG=#{ThZp_ zqQ5`vX^JG!-371sfYLL9<~=?*S(-pl)>f?3Tf?Hz1pKFXvn=VwHjQUfyWJwO;44cby>#4w(N!a__gu9oL_05BfFO~$d zWwfDS)`Hm!1MSWZ!>jG6I$Ow0&CX0HZ`q4(nT zByorM?%hGc>D#AE#T6h4l7JGRl^+!STLpkJ=P+;ukjRivibl?jpg-;3*bo8WQ*xjW z04~a=NZv7{pVCJZP)jaE#-f+dM@-qPC7FA7;_9J8k+U%%DfWTwxQ()1vIH4&5YQf# ztE|}`OGKYN_Byh1AH7#Iw8?PYvuuR^s`kdjfu4}C4DZbm`cPL@Xh-)=@SZ=j6)Ps` z`%e~~^!CVpwC_mhQ-9k)?1CkwK1_AV{`FIy!bt8*QLX%FQSk9>ukq{O;M|VZw(TDy zDMLclEeie~1C+Jimo{#c=G;+&oy_-bZZLtKY}8IT8cBFEh87q+SgizbmUgS92HzIo-Y{xRJ zp}$@)#=V9eZk9fbw_d0$@(S9#R2LNVJUNdYE!MFGsY=5uv=Ek*}!~AqIej% z!@w}jJut3tzVjL0S@j=Qxpnz`Pp&8q?1nd^H*N^!SRvXaPWV7XOQ-i$ogL9UzjrrI zKi!&gU?TD8-0Elm{vwFGG-xhF{(;Ko2^&f~=ez!4tW%c-*BU~5?rQD`B;O_=BMsz4 zISopHG+~-+^n^zxzMPU3Bl8MOwNUl5Pm56?N&0zbj?TtY6X?Qu3&=u|lE6X;tW!md zA+z-atdH42ytAF`&@?Cr43OJF|BgrVeoZ9lx5c{}F-cMb;=THuu!JPcj3PJcjUHAk zcBCSTFC%qO^E!aA+-))YM7^eQ?8)!cQ0TENt+pZD3rBwR*lB=uixt9R3lR@_P!N|Q z#HngbCJn;9wza$2Q= z_ssUh0OOVmm+`w{{bPiz2T|n(8sz3Z^IqLIbqnF_Ayl&SNe`K{lJ(;fhb+MLv`?&c zgkHn=acH2J6t!4?cZy_#D)r%gQj*jIB zEuNP|*WLK$ffEm-d8}2+XYTy?b#{5OtEYaE`Rf;X%TQX|U3N)##{kib!FT_YF`d?s zGF^RrxordGJvIHm#pfcp(*)UtK|5loX#`7iX`xCGYuEykLk$%FMw^%% zm+xpK3aM9RvQ=lc(?fNk8z%R8CW^5P95`UNp>P->#^%(_3^(HP!0uJ&)>PZY@)gD)DMZ+EX!|B{oV#$=4?h8IDmBe-du}t1gO=$5xp}Qg^*zV_8vf;G!Su}J zzW>U|B-+moNJL|ISzIM{#L#ST+vQ1;Lalz6V~P2lNXY?4m(VCepm6)iBadzJ$wj&r ziq8~fZSP2(x~l78qpF;zmzOwtxJ>kJil@AP@1uBF_BmoQ#lo;x#d{lAbxM`D_Qbpa zC$Ae?h4W|CLN6gqx|#m=L|CN%KDpI0R0Xm=TaQhe%_NjiB$5C<1)uS-j6NPwb&BaF zp_OdA?V;9wapV{(1696|Q^~1a*S9ZE%3ub3b!7Xn`_rHAroMe8?4&+^VYWK0^G`BS z{-rLt{SRBJx`!sKxLVa2EV4xh&M$;d4s+9{bR5}qBRBXx$~4rC(J>hr`XHkXu` zm8MBkEzSmv#YYBNQqXJMWkxMdLxV!WS?wshjrSere#^e!2<;t-_swj`(EOTsBbX5UNC0+Tr_J@A zNvO+?JJOIJqWUoLZ~0}?ytZR?uF|=K%5l2}h>&*pmPHCq!Y|(wfJU9d=3^{^*iA%* zUxZQ*;l?1eU4E3RG^XM9h+t08Q%!Fy8mY- zQehV?%DDY%`7S;{u5R$6qc|^PyB3n9`1UY~r@<3|uD3`MZH{MqN~68rWqQfgWNBs$+xs z`Fs;mD6tGRkD|l80Z;SUe@meE1-Ak~2uO$+dQ^e3rUh<&5(5M5qr@xPIDHj3H-4CU zMaO{GpRWvuJ!BI+t^AY+E&pWRxQF~ceXKRLwz7Kf|M>XUYIV6K;!q>Edo?@&`ry_* zrxt(#sC_oU9@!!1yWFzmvEvl?SN2mcW?3LC=zXZ69M@O!`!?cem`SM)9T z-&h`g^LC2y)>kKAV|khZO0O(GQCb(3PY#mbafQlsen;qHC?&Si7P-;HigYW_hk}bn z|GCv$Km#do3Lv?65=8yhWf=gHXx*rZLlFvB&CLk}q*-KI9Zfcvnkc)QMo27>bW3xH zb`h0$_HpCM^^|@hk!r_8rnec3b(R;)!r3SBYEwg;g&@gV>5a{#vy%FPhJ$n zQx!p#@qFwa4MV8n&sloxNnxEePxPk6MEh-v> z0Mf7-`TW8q7_(iuK5WOeI7s_RlIlm6Djn3KOY_-3HHz$D&E5iWA= zt0k_S4eLBBk6OR<)eB_ue=<5}Lf0Xq6uX@pHbLT_%FtLV$kn!B?iM-9!32{&o4l@v zPtMZcoie1tzg8|#i0dopc2K6;r-5H^4u;0s%NB|-R$iG+m8HIXNe~!h?+TT?tc}VG zXpc0$;u9+aw$cVa{A4-qBf8!4u6P3sA0+nOEXOaHkag!~Q5pdqlauj5#OGYmvNEKF z+{lp$6$dDhC7C)X!bb$ir4@_p1?N$o(c+uZ^7N)UVP-1wtQjMr3b*o-L0subl(Dxz zK*7UuNW7bm1rG&CTZW2~hOSP?nyu15rUAdTK_16r54@4TRKepUcYIuNkxBhwZn`fY zO+PuJFfZ{-D3#YvMZ%3j_k{x1Y!a~<7@>`ktD`@W{BS^W#ph$DFQq3M?a6Z_LG~6O z-=^hq9}bb^>1ev4J7K zXONt4ZvFvHAC0@O-0G{1X}OFbxt5pXgN{pHj)mI<(o+d1L)&ph_h`Hmk;Y!fZ+{sP z>6TxhoZ5Cg!C4T0w+riT|KC7lOsx7V%G2+PoK^q7Yt~CWVAG0cX8SgW6OTE5*Jkrvfah#q;`aRx{3&?lbHUo&xtye=^LfRzHAGe#vRzy< zQgDeh&pW~GsA1G2nCB~*#+3^LE}@4sS|f-QgDHi+Ei-2de&vHC8)DfZo`-GJd1sfPqN+^0T6+o8n!%k2qm^#mq@@wtb8 zJvVB)exB+1`B_UyoV{&+egyQlamb0v-yk$Jbd-ccQBiR$ z?j>6aCV69!KEKGK=(j;o>-|^o^0Dxy40Mxl>i@KP@eJP!*6=$t9`}A&Pf#2lh!s^) z7kTx&pM;w%tDoaEKq_-^n^ahqYb2pk^8NuYx3)jr7Vgz_?>6s!xy6v3UE9!UHjGJ3 zx?ukWGo;8G@;&$utH;T^^|cv)R`<8YCqd0&Cn6ZqIOMKU(SRf|J)4Puy{vG zASo_cUta38A-20mj*So<0u=rYJ2?IH?x(LyI}FZ{27W#?c%3d0c4*4sE@8jSisV;8BRZG# zA$L;ZGt-@OrxnAAGPNJrrk|XZslk`lVn~x(Z&#AOKfg7sIx1lAi&6LxDqyzx4excf zfP2nM3QvkAb>i>PK+0LJap2U=;ssnP`hjAMLq@fkuZ(tcK+F0TO#D>c z;vom6lDXHx0b5^u#&3=pjKa~w+fPkp{+A@lfDEWLiPx~+5^34V?yl+!GmQ9X-8m?U z(_P)el^G%N2ymz`3_C%aSgGd0xU=IuESUDiEM-G0f5KkEcBAJ3+LQmHN1RuYGXQd( z@)CVeA3~nNHoe`ed*JE({ys(aeg3YHV@pmp=(MXgYt3Et&R5&@VT(zMWetu;x3HbQ z2W5G!dVgz6e-->cw?O|Zvd$<}*5Q7YH-KMI<@*Q{))>i*({u!e+1wS7%hfJiTUEND zKQ-V3)F0q*Jp))C@U%&-Rz>RvF*H3k>jXdrUGZ%_L_3Y?!DsAS7-%*|>V;#u6p5`F z!KF6OSEhnnU*&-+M5b|r5`ysx{%hUU412f(TcB;KK0qx$_OcnAw< zcXe>*OnrT-b-O|RJ($NXGjMOI_5DsYtIF$oynB5E`QpKKW)8eRi?P;^8uJE;0)08| z{=NFvFd|uD47Ra>^{xq~<)I-DD>lbxD^i%q{0mT!AqK(p@Por3)*E}Q$cteKtv}7EABf^jrp#1XIyZua>A4XuXzJqODT9wJq{nz^g z$CUsJNxCf}2{LQj^b{pI90IK^Q&S=cG&q_-6%!7{<0MX$cNp3eokTbMy49;D77)8b3*q|7s1q$ z*WpTX1%nrGfghL7V=(@2RUgy@^*z@t0(J3?1!b4IIHfgE>ZUUt{d#@jQY~wKVR(s zKB8hrg@823#22)7(4~25G%a!WcP9o3(Og7}gYQuT+gvM^Jf4H0x)xngml!n?qut-Q znk)>DIM?lus2@uOkqp7 zv@pM@jr8f=9sZH%FEkPOMAN5StDpDnw8}HiLZUmF$Bk&S+8LIAOw78pWd9Yn^LF<|o!pxD?v|b_v=4jPLn9XtTd@p;&Rp{Gq$*ZeZryDx1zadSr(A7^GMn)Nh3_FT_QehyAmxB0JW2X+?|I&;Z zAEX{8?VmR(S1tIT?1$>;qU)u*X;JPaN4=*I%<*dJS`?NFEE#}=w zM^YJ~uG0Be4nEeC!j;SxSscMM9tlmmZ9ZmdzgMZ@uT86TYfnv1Lo%pTX&CP}Xi&K$ zU9>Bq$j6aE45rZWy;H)R{XpCM^(G8=#I!V|XVs)12bic|^reMZ&PY0n4+t)H0IKVJ zgzUqR6tLkFo+I0ss*0O-hY0hdw6lwF$se48=XGfrXp%>7cUhf8N2H#+-yXA!JWfSx z)rKw~f4q{^zE{1`$HXUutlw1zL6dSFW^b$W;B<6DSMBF5O06RIq;CF)e<^!z;%UO0 znsOFpMN3E%CSU=a+CAoOdi@5T2BHTON3I)QpJpMvwNe`Lc_v+#3`wCIhCq~RU8h9W z@;!3h@N!I)k}!=+I$FK!h+Rblu*(Dwq(L~G2g9VYsw}5WG#N`d7RdV>((~?J?d!;G z5;`47`?z+5GYRgH|10f2i9X+aj|Mm`uWr%1S$hTC4~9uHdo6nx6Ea4Y#(%L=p@}0w zb1AWKKRV))G~K<2qor{c)ccqGHpko-!u=%6+suNC~a=Z05bLk;?=r}H4+j%t;vkWqkIwvyg^8%jS?y?pL-5Hh$ zU!nrS#viSQY>E61>e?PQ@>+|Q+Jp{27$Q;Q#xf3D^rAdR+%oFgPr*v6XuKXiT;~@S zb$<$xFG6U#t~=;qW)~ex)qiw&k_`(mI=6QCqBgPOQR&UYFZeBQptI})xhhs^Yw)wJ z$)vOodBu#L5`OwNx=koR_LnAf>7#pYj>!5gecid`h=ZSpM@C)=GeG@fZLg;Zjvqueqxn?5m}}g+kx7CbEx9rr zz;*D#?p+srnq4=zSm{3%lV59C0{EcV|uv!nA3SLd(K`6F34gv4U($eMEDr!s=<3SCWYcyzy z_u5a}s1{K3a3#Z$T`@qNvUti5aR`qXA%XGIg?Lk;lOMg+oT^Q3p@^Y;{&17%U z8QnTwmBel}#O3~q>}}`?97QrP&l23cotOO6su;T|kS54{@JNK^f-mG8XITuXaJj8s_;b|@J764rk8>%yrxi;l$1CB*Oian0*sD0TG} zPPn>JM?TtS(F%Ps)-rO^hkHD*&#&T}BUP~>qfwt&1gnwWC zc$(^}opdiD)$2^$e{4LsIyy}#3N`x!m#C|}I3Xf!?zj@&Yv>3I@KqAjrULVPJlv3t zVCWzrf3J_LOi?WWG1q5U76zFI{B~)W@cyiN^oACW2KinfxSHA4s`=1Pc0BLv5jm(K zfNO!tkDL2QycQSX2JV=f3B!ia*i1@*Bs>n3cs4l;fF198cKRa$qf zFLk&`#g|)`@2vnV$dgYPnZ`fnIwY!gcVuRn0$#a9;3oP;0?)G9W#JZ49LW8Y%IDr@ZzVZ+d+rw!^!S8^ zd>IBko)P+dVv5XD<9nd!Tv=}Y+xO1*Zdnq~lz5Gu5NSZ-_s0shwKOLLoPIT#y^OEXa zvYWJq7U@13)Zwvr?^>zh1gcB;{Vn0qUeHyUc@}cvv9Eu9GydU_hrf0k^@ZQK6>VR3 zE#WbG3|AQkE=x_4H5Yme#NmjJ_M3pEz4hV;+2^#0JMwJwm{eN?!!RIsowyX{nKNh^R035N>qeLON_{;p5kLZ}WEauZk?k)`R*zf5MZAv++kMHv1( za&8IocI|$F%dV_7t^TVZ>L+P+ zsb_b?PQMm-@p6}o6xZw5|7CB zAYELR6i{FIG<^5Wzc!vKSK{q52yU%^cMArtCw114tYDN+-?dwe*Vyn?s%tC)3R=@n&vcy7n43Jeov>x4y$Dgf%EF#0>3Hf;A29k8Xd|@ zYb}3F8(5tvYU|91%<(%~jg8^3Zc?ok%r&Iz4Qj(TzurIiZJrtNH{Jw4vO0vHe(Zkx zZcx~1{b%cj!_3tBs=m`7^-9+ReryjP?XVRl5Po%K{wL1772hBr$p|kn{v}uFFloVX zn(6T~es1XJ4+7B%(PA3-i)SQA?wwdonf;+Hw8hp?MLuEM;eCct8CEb4hLiwEKG&(v zoF%QpPnw*(T&>eiiw~f1<;I11Gi?J+*;92Zh>ng{mh;FIckyZfSRfHE@H_N^w+D0M zf&x4w-bk8X<0rTh`6bcTNe=PFT&Q3a(BZDpYH91IoNNc7ut&u9UT*ErC*4K>Mv#*i z@%~l)e6*&8EseXm6pl-O{tF**_d#XDLK(Z%Yi4?WpNp_RZp^AR&1-c;^8BHeV3bJO z6dF3Kw#h3l&br0P_hKjM?6N#e{dTg$QAs6LGh!7z_0qYLVMZ_8o z?g1CLbmn%2Zfc5?*U7qj!MSrYBiZ!d0^O$|q@AA_}^VP0`bi#(XK4SP+Mzc|om4 zU~HYF0n^yA_5KkhH@rUz7)`m0QM1OaQIT|$9Txp8t8o5gb44c2E4@wRAWxpbu7M$i zVk66MOZ7O|u+Y)xn;hJ3?OHDO*Jg?OhNn*GNRm^_n0qvkKAk-81d&c6%4@;Y-SF6q z&~MZOlzA+kKR?Ri84VI2ub+5!NllGhr2cJPgPb_W;(L{4mT>=}53Dg?wW6pH8nz8D zcIIDWQ2R1G30%b~@0*uxCLbn(s{dMa2gP1E$r^knD$@0hO4ru!*|l<%Od-8#c5+@= zxS-E-y&^+N7X8S7e|+w7@!#}#j{k$bVf%M@j`OzbHiG9B#0lB$K+175U?Dn1+c5Fo zhKFNMM`U5XE<1?-;|S6LIyNGGaXGVl%1(uy69Z5G@uB2wmVD-0c|)4;=dKxo)mIMa z&7}rrXniOD7kl@QZ{HuuU09P;F)LEAfv;QI=o;ZceEb(Kd!$@umVY1J!fz2iUyD!>*BdE_YZlkkc0(jZ_MrOk1FO|QP~x$I z;xfmJ!BabkfWod|_ERFKf+CuFskXzXkRj+e^ZTR&l5>F0(~IO?C2%GF<5aiQR~-J5 z;ZJdSU&yVhHA#gmTI|-jd|*9+3VC6Hu~|0PC8UxYc|@BCIL*|+^%gMl zX~o&h@0w9C<|m?b7@BDRx3YEVVKN5Y{eKtVw`n@$kyTW5vsoS;j_>kHG5Rm3B}XJ` zqWIl&Kw-~Y<>n&BoE=wFDqM$$hue*RPx&Vuft+CB-y#dS{LO0uT`w`CIn(c6&sI0B zZY6Hwx%~G>cJQ#kLaQ}x(qV58i&2$WZ*nl)8X6cUj;1{%H>Yp+E{W7fmU?plgq|QT zL#e2ayfuo2Bq-!_eJZexmC`=>ijB&)$>>{9V$w5%ZTp%;J%7(nfa(v73$)f zkc1H@sKxsIua4+2}P39FPJKopZ~lXl`xeEMSu$R&)Tx z%G-Of#;}H?FBK$yXpXs{(ci;DAyJ4^doVe$V+Mfo5;f8|KI= z?U2{cBnb%)l!~WhpS{??3lE}*&o>>=UcpJ~qvQ`#`=~d>B4@1}r7B4`y5^&wanG%% z!9S~@eu+4Hps#&Wn6zqN%3y=byC2d(FtF1~Cp*{p*}Ia~t)P7yxFnLYb@Z;Fv&R2V z6J2!03;F2hm?^VxGQIm?R?CW6PUM=EB+|MMXum9?KBmm6ZHuy2lPQEp_{WJJx?87F@eY7Y zzt_Bz^xKWY0fu<8bTP^|)$%PnnmEdJ-_&cU)#K1=vp;4B(^OhXWX&N{%D2(P>!ju4 zFT9IB;AvRj#*V<&;44YCU+q!X*S6t(D+vxr5i>DI9CNdk63!4$mBGdnwbnx^pSE!c|NfCsaNix8(< zsBJO{4{FF9jhWAkHjXMb*)kB?b``w9=^3Xm)wLTH(#?yF{Hi?I`oQ0|D`S_wb)r@tm{d?3Yye%|}4{^fUE)L9VUU|@zvj^6|?Jd$&b)E+H?xDy@Y*`R6gtEw2!z`A7R z*Z)W)Ilvo)?E0QynBb4|Z3S zrR*n(YKwm|cA21WH1d-v-+^!~`+7@EY>ElMIZEVq>Z_kXWU_61E1r8v;Cg}Zlc<6e zNUsIjxv%0Wl?+>;1o@+ZllTNZmu$UA14>jQ$Siz?;~u0d^W#_lv)|$6R29d|;=&*9 z2GwfVOTVTq>)*5yadUR;8Y(;1HSNCk-enztx$aH@1O2AEn@E(BR|9Sy93}9_JzU(D zbI5wP^+fD5C;gHS7MPWI;x%VihuwoIP0iJ{nzL~kRi)%0hX+nSFFS!4`S1pAi(0OG zXctE2Es?60acq@Vb6 z`d$(aY6K=^*6uk*44K?dy#1MHbT*?pH^^G0KArkG=scsDiwF82bZ%aX@O$E2_%%Gz z?jB8~eM%813!(ChH$gV66MCc(&*vewDm%sSn{bHH5BtBUddsLb8)#cMxE3gG#odcL zDJ|~q?pE9_P~6>$1S?XUQXGQ2ySuwPz4`XN`<`+B_hWkPckjCSmOl6Z5`Vv!E2>v)Kqdh61dj6dQ2j*A`d z1PX`B-rv2~P7JNKuQ5e#6K1zAD1FH@)_B%mJ^#;o^gq60ToiP4^g#u_HFM+7plL?0 zW7}PVgqB^2cr59ONmDgo+uP`0nBU%r)yP&jIom&fQj2j-BTuJpT9?V6e!y-+G650NGQQ+DLN%$z!GbwcKv|#Z6o{d)IT^x7-aHb_W5xa{H3y$N%POgp zc+9|@j4*J81q~HGtH~=~hKLb^ND~e;P+IlfkiA>!YxLl>h(py+7lJ_xZe<7~Ax#a? zICK~OzKTs&uXSuCx<`ahCH-9{asIr(?Oa&Xgh>1Gw*ee?&hLGl9jZP-o!Vc+yUjS` zkv(&{{@vZ?Li^fSxx6D@H4k&ECV)yHR*>?zfq?Zqf?2Q~cB&Xacr!pD2WPt7xVwhD zfFS1iTyIzBDncpUWPhri#4)j)E@i@I8(ncQ#t7=dfycki2Xp=GPm}8u0K{++l6io=X>LbiU$TQxj(>W*5vPCT z&F2;Oq7=J)BZl$)C94U}=%xi0#5-g4fBzme#J>BQS(2rjDB%mcOvV)^5{Xm9aUg&u zA?QJzx-}JCOX<9i;u8a9bxHi%F@0z&YO?^>V{-jV)+{;JWu^IB*&vf;8k${GQW&CW zgz?Dt>ACV!ZGH+`U^cy~@90JJh~TXG(ah&M0BtC@)wK82q+E^bbo`Tt2;3^7bxgZO z)h6t>2h#g6BuAXGN&=l`N1ea-ABy%(nO_^MY^ESaGk!R3aqh5QxB^odN>%t7fdBOZ z?5BFikHhd1uWa=E&M^Gkf&Ze0&2qCP)CVZmx^N`Ix(uEidldY{t}TLa*y7cY@rF$D zR<6|{4z+6R-mf?+v2=h*SwY>Rr3_}`nm~tEp_!ZcyWB-&?GGK2Y{DDq2+t?Br_?bh zRj|CXa|t4xm(CJ(H5y)juM|}M7G1{$q{c-a^k*vnV=dH`To^#clRD&cD=_HX$s=a?Kmjs#-vyes8=B!HfrAA-+@?xSR#!_drZ5h3wUCt4hRxM@=Ni*( zFXJhsRr7SnX|n#^M&%8!`(99!KMvsR#&C@%6vm4#uj)Q1&E5UkbZa9|WnxU+G}bk8 zHv(s&wxlB3bNi43C@b2mxBF75FAMC5gh&FXl4ciV!M|DrdBBBsA+n+^xzkXl6vJZj z=Lbw>m@tYfHzyOfjqHqU?gX#@5MK~c4lW}(4XuG8m* z*V7{8LJ}Zh=)xjXwU59wHzl}YSurC!*Iy7?PX`k+b6N$H_lqHCydBomAFMdfdrw0~ zs?gHDtXJtWkfmU&o0#a`t0a%c!1Rj0<^mOxh*~UR{$&X$)Z)SWB85rG&++7uSH9r* ze?gjtjq+iG@ZBOX)Y|C1uw<+@?7Qb=0Da_UV$vC$wQY*Uu~U0VBY~6vMgO6=3UTv^ z+zBhcAbsNwxF3Iq3ms#%H-$7{D&-A~I5`d)hmuBROEK`~zT7E!e?EBTgw0biTG_)q zY5xkG)*lhQz6umIVC#H!xtWUh+og879-@EwTTgIyF~tZj7JJ>oRG@9}`Z^Jmw$JG| zRW2=h`F{?ymu*P^BRV9vhqa3UEez4eO?!W&a%37%h$Xhr3~^)@%?9ifoZu#$o^2i7 zLJL5!Hy5PH&C_gxNRxMs18YL_lpgXW$;P__%@WcCxB-aY(%yxMlQ-pwbDPekT1BJ> zB$b}S=`l4$(HNNT*^bh4QlKP-j1@_W(<@65V|}2os*+S?#FEEu@ds04w-6}k)w zQ~QKyVv&5XsK)@3NSyu(pH*CiQRn)r{bEhmt4y}`KmWV*4w_G_tS*-_^fF@4sgn$% z-OaaJMy~}G8-HZtL{C_7NVdWkF%cRciOfi;T=r4u2Y+G+LW%nY(Yx2UHPn-mfH*P! zGj5{1Y;Lf6dDKmyh=|Dk#j6es_;?krYI|T#`~ZamIr4z=L}v>Nkl3_72WScbp}Vbx zLz)(EK;IvY=~1I^p()J*@nHX!0qw6{3>EbE*!Dz|q8q|jzT`FWcA&}-VDQUx(e36B zm%cH+5gP)1%1FkJ=Ch!p{{-(lro3&RjT0O<&}l@DjiKAT=-Yt#>S7p z1&_=y%gum_^PLcL`?AYfJ%@7ddWAzFceozduvf@XQkzB{-^=}#a+3jmD+wyQDwur< z2}Gm1E=H^Zx7U?^)itQ?yI6{~DZwBdalrg-9Z6wlSvgY>L@+Ze=Z|wQyzzd!07MQ7 zdeSY0>S-2X=d_EKuMT-@7U(Ux8T5HZP%Yz8<&?hTjS-C|-Mjk$jVL)6EyFh*vl@Z2 zrc<<2ed7CQyWQH+JJz=2HqK6-%Xn|RTZ1yd3g0Pp9LlO5+0gLcCf=W&a}#-jJhq&F zJ&k+*NXcPlPj+(*M{@0F9)daokqYLQ{AQE?tnKBuIKWY^`sj?_4tP55B15R`%hS%UqwecJdP9l1YE5p z-<8%zCunOQ8YUs!lcQ3qYnw$lhRIKf8L>oNh3BHw0}8&rRk9dMAQV4GO+hQfpgbsY zd=eOzd8CDrIx#DOHfmzcF5tNiuv7>g!@mP@e!zn=F78Pl4C$BGAGJ@LPf>p|W^WVujVkW}J zVf7chK-C~%+Gj=zLHOz45=4_C3!-tICADxy1rGRPRI}%dvolE6^N&=%?9Mm@>WF%Z zMgpCWQP|*#!MO)TDgVWUo9J^|QDA+pQH_o01`V1r{+gM5$3rGDA1b5h;Szb!V1;&V zcke~@>+^yIdw+*VC3|<$Khgi&jEBVn13CoA212oR#L{KI8yXsh-d`?^f|9pOcA@$b zngXm}pyk>W6Q2D^C5j%8sZVbMd_@AU~E|EiAKf*U{_5R+;DLBLqHOtuz11Tn0 zQS;?ma!JL;F<8fT9Tg@VV+nhtT z@PEJ>N&Olo|Dn{Wj^05@JBJ`?$16F5EsP{#BaJh>X}kwYuvyIv8YiaI#n(9>%lyh&C24h@J@uyBU3N1 zKpGirEQ5hn8Jk05p6uZ6Z=XL;;A-zfS&jvYvc8_Fqei-BF4|~2J2Q~b_%{i2FCp-B z5_+7@<@VuXhT9(nq-E^w=70E!{gy&>E>~!wC|vKQxv*Psn#fHbGET;$NziZONjv!K z0m>!@KL#tjHSwc0)1hg5WnvN%bNfFW3R;a~%ym~L%)g;(PMBmk^D4sF&Z(^q&MRX}WjY4%FbbEwye!8)GR5}7q6x_IR zG4JZo=QG^0<_dj)iz+leF+DrUKyp!?UT%v0-lnZ+2Pdukr|I ze$kP#%rmMw9^qE@UXNu5AiCcqNWU?*T114QZU#HCIod;7(w&@gVPRg@%)c;*c6#CI zcjf62Yus1IW;h?d8i}Gxy&~7HIPU?(0!N@+1B~YCpK)<4tFgvQqx&ElJq!jsp~=>l z4EdA+1x0uLyjevsb-Q0*`%Jf(H`_gZZu0YNA^u^jae6_@Nw`AAXOyHUMYyQSGUk!f zJ-F$mAcYDZVR!@p7hQK^h41pQ)}q)4>Vm*Yeey>C!GIMm{Fc>Kj6w@(*}bGh6>j=Z zU|Qa3&?nEv2U_|}Qq6vK6U`LXQ3B<|^7O?M`>KnCNQb@$6hPkzS zbsygP4I~C9Y~nl6bAfvBD9jzo}xjeedZ2b+pVtySjkEru7B$_ zE_^u?eqKj$ma9QMy{apMKv9`n`wJHkm6O{ECEldbjVjM-N)8|>6P0p-EJ68;di@$2 z4(=SwWKCns?FRQaMMvFUPu#$4&|4Ofjsy{dULL;p z@kcaHMB8DuNOHUl*Q1M_hY0kmySwzrm~>Rj>OOk8;UAq3l8IquZz@api!)l}ZXjjI zR+`@T#2nKNJE`=c$^$_HKXnU&?zu^QuO6mDd#;zF-1n`5&u|*B*3^(q8)g z&r&7wzxmF*_uG=X_=~>98-pzGf3DD-3ONaKcvyOi)G93-e~;Qw$>4 z?XtB*2K|CV!W{|kuvps#KMscUfZ@&w+BC4Ng9+mX!#CaL!7G$< z10xyKB(ISVpJ4^1;ngs>NOl$?r5|408Sez^OT0i#3{AqX0yqrK$KRf2kjAG)?KWcr z={3fbt@EmA$<HQfL8v$om zQmuj(xCe<ic)YY4!ry{KI1$e1dk%0n7 zWYZP?X#8ndYd5&8S2anXx_MvM=KD!TT`Vtn4|cRn(SN6{dT37TpDJ6+qmauM!bSp) z*tN+LZQ7w3psc5mE+ZX&Yo^wW4_WaE_!rNgK4V%yZDWTM5@tLgpIQw{SFjwDhe@3& z?h->~us z;)j4M4MXloemJH>Uz0X#d%sr+x#@RMN8Q6SEDzo0h;XbD;Y*IDO@bAJo7O`a%?rsI z-R#c^ETmBmx zs#%Gipv@M!N3oh$OI(Np6IV%|3e~ENv&Ka({pQOtpAAsru)!D7f!-rGbL-o#u*9BS z23L(JHj1VXs-S|F_`1NC^O8D?9Dt1k(u_TV%N$5Z5F1lj>OkfU{zdhbR`yo#gP<)f zErELS#MO1mO?b7--lLbwGoph_nHDli~!ZlL4C@zPoD|J|*7zT3YF=&I6zJD^mCx;j7xNW#QP`x57xU+5MpT z0{RkY^koxg@BhQO{O@7-vQq{2S@ky8_xxjr6WOZtEN$6Bdg(A96_3mcQs35ARuKki zH^Sr=i5MyyoMl293o3d{koSgu?+(O)aw*Qc2t%$!s`gRLy1c(4Y4jpzZhJ2EE?p;5^?(Ff|C=T97r zh_Nwzyj0nb3Na;c`uc^Pru_xXtpni90$;!-Tsv^P(ZI_V0<|cbf$I7kFy}I+)$Eyu z$tf^M#X(kMTh6FX5-yxR7qY4t2>D0;wI3noGU^^Y`?&nk>`z+BOJ4ynsPA`QOb!Vq z|6n=cJHg+gzQFhP(K+c5Xhv_aB%;?Gk*Fp^53DJs5zZJgAHUYW-CDI%-E^^x?E zt&$u%l12wED-Y9vySuy8hkhUlpW`}9r_h5wPPErvxajWbzRg8IBk9ZX!f?aGDs^L( zk>h6JD?oTojM-=q4Wa3<#VSx5PSCcx4k#==xxlkctbxxDubkbF1GKA=b|A2HnSX4~h zp$rpJraXnk(LRpz{`)rrY=@`^J$yweZ}1IaADKR@+uCnd3#0oSck!;U+h{IEpS_hl zH<8dqm)!X3iyya4+^oH#;pg##GFzLX)+9H*K9=kLE$Ik~<31Qc6P84Q47ZsAAN&JK z&z+U#x!$8EBrOCwYsJ7?9p0+syu0#*sL;L3L7I~Il;492{u=?*mPqo^#bf?4=_0$j z&Z_e&XP_R}0y%WhPMB`@sY2y;14&_q-#j9ln=E*&FWs3Zl;Zi6?1f9zJYo$k6pN{d zua|E~)mW<5unt1FYQsJvzJ;%{Rt#(k6Zt>PtL z!MWKv0t7GP-(r}#`wKohb?|N1zYw<~3!H>Jhvk3%+K)@TG4uF~-LMKgiAAnBF-{2> zoqV)SD-h8EuIG#X=^y#(h8c({6pOi6*NW1*U>cC4m9`qJ%UP$0PFRSEkT7&q5Mik0ic zb6UYHpZd`Dn(eQ>nj{iwICa!nmnB0goViN`TXYaNiuDVm694$`Nr36~m84`p`X;m= zIHl7VRVRoB%r+(X<{tG9W2*mWIav094Y$meh|{}ikOx&Be)j2cjcTre ziuwK{5qrF56WUdq_vTL^zumFy^paZ2liaCiyaz~kXbYccneF;;4WczN-Hxtp_Iv7p z!3vZ;upNSsI?oe7GMVNB2TW7dKW0>8}T+V>*?=xDBbyW5N9+ko`PKEMmy)~5hRk_fKkF0@5 zvU=P5Hw5S?8oJub_~V8*<|7x3Kqa?dZkIdQts(SW{D}L_?DxNl=9RGH{jH zuZFC{9A~3M@A}N6_^h?QK+9rcGreODSa5hP943`OSq3+<_+EM%tPMPKT-Se(=r7lr zqvcd*c#T_9Q?z0f#oWRN%~j0LqbQFK%lV!rRKh?|=#sh3bT_dM9|zT7b)!??(TgHN zN{cE~Ivcx^d>E37U3Sfl7lAo#GL7|5s*5_5QvZc|v*v)BVmnXtTDV;_#1%$V@IjgG zW}m6EQ~WlO4(z15B5ua`zvM!)3xYw z%DNG#z9bctIrC>;ZCfHfQpCL|ihAp>c{UI&qWG~Tc9O%} z4!Z^Ez`)K`znd{mv3n7rktwFkt5$8p@`nl>ei}9oA=inH!;#E`+{NUf?IJf%cQ4!0 zRCM(@K$IEiJcFSKYG4aMv0EQt46q)YTXCpR4ca=lU&O^Ub)>9=+I8WW|*RWgrglL-pqZb zj75s!&z+IKz+4g213z(bLY~st@g(iN9SK$G_rG+Qf1bn5vIM&nC)IB!IhVhLkLIVJ z;H5++6NP(f0K;Nq_b-!iK~ZtlsASu~rrc zy|pFUF{n=myL*5C`NXBG!H9DC6A@m6=s)>}`H+oKy5cVkG9?TrIlA&0TljGi$WYat z^(=WRwB=~B*BZcFcAOBPc~*deDw7(Ni#zP2d=rh9C@-Qj){E z?!b-sNja7z+9T@c;*QBo-}=M|uuDy1DQcjQcpPQtASMk(RGEEm=bxsh?~sIM0uS_@ zNG-0Y2UlIdCu3{5It8s9S_Zk!T7s)|RNJp*hV%0+g~M7&^6nE>Y*U#uhfc4qx>JY% z3)089oSj^C*4_b^A=L{KQ_s1$LOTGn|GObA|M19UNCWw& zsF4&1v#9!XM^6JP^V@siD^T;i?&sBpe%(PR=}BH~(=BRX!V`?;Nej6@@B#T3-4pxN zRSj{-p|N#qB!e+xqScc-t+i-L7=`r_S$gaV?0g)MgrN^8=DYFL`TV4DBry{;pf(7+_o zIAfpy5&=a`y4J9^4AMWG9hc4bj$Wq4h9(}*P}Aj^IU#RN)tLHy{LS=3C{??5=0!fR zF(U}Ld$}<=G;ayJM*ba`5fYqyC{4FB2&xpkGS{p|^YH6Cvg*avs3F%u0ZsSgLJmpR z6{XYY?vzJja@VZv@RMrTkeMuTEPpWhJoeD*Xrf)NTPy>3;qH{>xoDFGtihJSwlhoP zlD{$jzg_?b023QYB5h_)Lrg~)O|n%GHNg4Hh5jZ}KUBt}!*^R*%z&XbHIjMXx`2*H zpKLmxjDxj60@N>h6mRi>=c&Z9v=&f zwFQ^0a1^=ZD*elo=ag*+bxG>KLZnvEip~}~(B6;3q#s;^x8Vr}h}Xu?&ke2Z)kQX( z#eS#d>F<5?KM_EKNSx_7R>!z|467-L&_dZ6NhNs!%N0|Hc~%`K2Am~@U+?`lUb1K0 zmQ|#NrozdX4)i@T^d!2})@ENhTcN|MkHS!7$|55DJ1rh~!erhkO7jKMIQy zW{8I^-UM0mcPO)HL z3_*lsqVeV-Y)-WF{F+i)5N1?Yf8!@8B5V!M0V-*$*(kuUohlu6*oiQ6OdRxFRVYI; z@w1Q-sGQp!15H^#zs1jo1mMVt2NiX%5K|2pv{fi0D4~RFf1GEmW0Iq%E+pRFT+}@j zor!!=Zl5~m!Z{(M{OJEMc6^NTk@jWK6duRDkAH$+stT|MxzPaJx37duFD!QK zxVmY3xlA)ygqhuU;s=cI!W9VUP58dK^SIX0mBxW?Uv}%EdAx^LmQXd^>60IWR#$iR zQ19HE!acoPo)?r)80QFL->KgtHbaj5YAZ}bgP+!S9{OCP6NPxRwC+h~9@roLfiVmR zb!d)I4w*vtEe8ur-&#z-%*E&)G2OA?fZ%qSAb!w=4xKfl_vUM~c&TV8ZqtsMPf|trpXVQy`s|-Smdf_ zRgM#1a#7RJYgO_)RMJejQ3LP#sMR0DH+LU>PFs7yL6NPx3{E0)!a(OQkWv~R*Zo3VlT=8&nDbYt z_R0lPMJ;O~ZuUl{U-R7Xcg@_#_EM1neDB#yH~QZHdSdiXSF>q*P|Y6Z+H24xs^@Jx zn0mswj+?Q*bvl|N9*&2USzFsuAvU2ieSWZk$`JTHi9fYZe9q54tYA z|Jo}~IzU*B(SIxwhJMPPN~z@nQPsKbNp5xFX4qgH4=hc1@usJgaf>#593IC~OU#JxEwQv<=1xzJk{= zGW3MU6PhNWq{Gbc+gvgb>QEYP2N}=L!4a^?`CfpAKL5b`GEVds7Z+%*jE>w;R?kp8 zWUJGx>rT&pis6Iy%66<_bBcOqO|g3+naW>eyB%;*S;F2 zZs2ZDa0Cyg_ZOD(n9!$BxZWYl0e2QQXSoUMd-&?aW3+qg`?;P`(CLxsQ_A_dC7Mi5 zjahWJV`g4?OF_)-++cUA#`Gix{KPd9uJsTXZi)_^vU@B-+H}el;4oF#%0LfD8zjfJ z>L6YeFnXxE0lDOUf*V+C3!1dlv1BDl(#c_^Bfum165uZE=rbZoQDk9r!bSviNRj$D zmdE}4S|h!(ibDPHNB?ZQY4EL47hDzeM>4C9Dudn4>gAb^h`a%?+~+GltZXuQNb7?= zA+gq?0$)RG7s3Nnr13s+g4;$%rid9V^IvcJGe#s;KxZZVeusF*jMWV#*&QDCew(Vm z=~r48xQCTKHO@mQm(9tMbIGVxQPH{7pO-d(TZkK}*%JFRy!hBOhV*^osy#KxflBFB zq9|3c%vVR7=GrQ@*Y(#2c;~{w@m73^KwPXF5pDrz`uT^c}N zG4`5;RP6X60oNhv>8F&c~dZmcMia$@L{e;Mjla8Y~fLc_)u zwI`M*X*W9;_n}}8b&Zwgf&bQ|s)2J@^>y!NX-ZImekF_mTq;qA z?qBbpIgl9^^3W#scDwbehA|?1rbTo{E~|}I{xmiVNI*_%UsjXvlIAnWDbCscf&%bg zE`N~g)8+kJwHgcbhgLN5y=Fo)7hd_Yn*!mf9ZzG9X)BJM22i#Wxg6P`cYe8wC=~y- zg$3Gm~u!j$E$`UVhDlhyJ{D_0gCb>y{q)gJDYv;tq|0wyX^^YO5 z_3)mtlQP7lyXV1Q{4KMB*8aOd@ z#PY9Y_nPdgL(x;Uye2h8iEOn~<4YTJi~rxC4jO#BSadj=QyWx#D}n^5sI;e{JWy7S2(qQdTC zCH;Np&KM>BRV|ZR#AKFR6E5pUoY_2odujb8OiHqyg8Tdv!pXE%Wz~;y8U%O)pmIBT zIMcJ$X4u=;873L$vG{;nYPjlU-!nORu!Ft5aP78+dKJ9Nk)1mpR(B>$yVoQyv`UI6 zRuOC0(NUpFuqZEHv(c11QXDkFzk~h+Z6bGITl3BH-%Yykn^;un@70(1(k>%daJk;~ zF8Z`~7ns2MlXob6LUcs`8CsF55GQ;sedGCo*Or5eY%n%1=V{8h**;cjqhyHe(Rirp zrBuOvEpNjHJc`I-&qMEkx~i#7k93)*|GqPPv2p*mai~PhHEbz;viLs>Af}|IE-fwg zsLTnoE5s0EH=ckE^;?V)`Eg!GxmaJpA0b$#7O@*DSP{1%ss{2mAQ~FZ_)EEn#fHMl z$!);BMMUViX}J3Ml=Dt(P5gCINo~H#@cSjU6;n$V#Vjhr-;QTy_{DY6;C37KQ71Z@goCCV}}rn!*fuMM|h(H;uTM?y|9H70lZe zJkr>QFAp~F=I;jVq258VM)nj!pF}Hyyzg}v&`i#v&!b<3biZ({Yu%FNn8g)*d3|(; z1{KtFR%{kHm7c|MbE1)Qb{-nK)D0tEev5t_?UlqDRj`A|E;uey5E!|XEy3xt_u)Z? zqGyW4;hxdwxo(u4X6b$Rao&2)Hy>JcRYOPqoZzXWDX+S-nQi2E%1mxNw!0f$YD~ep zbZ5^mEc_%`sQLxtXq1n3UTd*(OF+HxH14^}mG>0WEYj!BP?y|jkG*MuFgg97jvPr| zL`8Ucb%+*guQXUa{(r#c|1D6jXEXr*i;MU33-rPBdA*Y1!RPPQSklJKG+WR>RRN7j z((HlUDH;Onm9RpE8*QMS_~&qOazGNibW;2iFJ|PhC>G_=E#)RJ0{7!4DTG+&cz3BI z#1H`eQ$_l#j$DkXA1Zv8OJh_r##jeqEN)7>b48m6J4JCtCUOM>yn6z6Wc>akS-?Szhw7;1@|Cn z!pDKmYemg27Y4`!+hC~?qpDBvcF5%I<%{ro-EDkVJNSAHVVaBXBXtS?kAAilsS-VaLAQ;aW@M*_{`6t zt=hW%znZeTljp14jY_~dSp44@20`>;RlW${p~yjP-_d4FK}gF%hlof3kb9w^M6@ZF z4qD*q2W^emip`I5^jo>+Z>a(%Z?;v*9CMh z=H58c?hI(Jd1rify|pu9hR6o`z1>|8MYDT|z85vNNr*zpK*M}hEwb~mF@zCi-SVEX zRT5BPaIqcPZ|+2@h7YdhY7FNc$2cY7fSHsE9tz_w{2{uw;7<>4*n4v&v?%3A(KacP z=UaDAh{J)R1vdz9jO6dZbMNFP*eiKxxbGW)-$d3CDIRt_vtg4-84?@-n!c=eE87Uv zY>htOBLBtX#%@ck4|!tojSL=zTFtIbghN3xUZN)xT8F@gRjf;PsF$D0NGvF=j2sTw zUtFStip;Q>_}0avggScjig1%_p!h`@NJ?vKN-HQr*4LN_vT(C3sZeqRDl7rHIcvIc)+);&e21cfO^C_t8Bm51XPC`BHuY* z(MboR&6e&veHYVHor&8q3xbkNdK-%7Ly5kmcN7w!8jIVYL`YAc}1-`{4R>(N%3J=Bkv`Q}Cx58c)^7-|-(R z?{i12%4LXZ@(m`?{3bF-1x^`WYiQ1EQ@O2F&#PsA*q<*OFc8HE} zzXRNecv%F8(^%xsknhfx&EwmDT=c?0bc8#bz%wlePmkJeqA%G-enE9M_R>aqWw|_l z_XDvcd&$rPQ>X9l$L81Tkv(eirwIRdt2|5WL7D^^iew;NkUVTAyd>=<)V4!1h~YF{ z!cU@y>U@k!zt+aCy-vwj+*(UE#E|}_j}dFr{GSbZ%6Ls7;^T+T^%vl`*!HyqB)Sb67|7LH>%`4}Pf;g^&^)%nemV9C4JI1fgh}FTfJ7)XQ zChHS`(8f{!l@yB?>>Qi?jn0wFdV4y8z33mbBCG?M1xI^jLHfjkAJRCMQdU9xdN4arJEUH zBKpq+zD)*pFRR-2BZ*ylwA**o&F>be)cYM4#TJFN$!4#ie45dd>ru-lnYGrvf7Hwz zdaf!#cc2xR&RwCwb_>l(#Pf-a!#e|$cDv8>0&mm2m7~1{Cq5`}WI@AmxX?G*s7|NE&MJOV zaODbkGxVVX?85-f+x~E9;T@K}75oEotQ^Ejdw=ENi%>ux$@>gzkE~qnZkYb3VU8Hc zQ9I*|B@2l7)A);$9W4#Pc^5{@SlCbVz|}y`5c*JP2dMDB<@#zD{b2!VgrPZyY+W52 z7+D!tLQD_N64Lea2OtL#e6gH_@?IQvm?il{A2k1uiK0&)DOTk77Gt_=of3z9Lr|=^mAq~mC))|BjcclSVC(;mqt}} zK@Hx!|FZ<{akJM#u>ILt(sYt4oNFvT#TdvZNKGk+{It235(kZ(6_p18JGyFhl?Y(n z!@2#hLI^MhaIj*n8faDcPCFn;T+WQ5eW8&D-%9TXS+ z9Xb4U`8;_K>xyu!vqA_A*4QZUE%b?MM{gcK#458r;sejql>UNsDEYqPkgEd|6}v+N zzR?K;IKY5N4CSpFQ_>KO74}Ftq=@L}Nd$u%P)V~Mpa0JPat3RHR!+wpxFmj!qEYl) zuJzThj|wgkj<%L(8OL&5Y*I2v*(}vr{8x+849$hgQ~5->{7C{%Z9PHsEvt;>dOw%k z>fX9^)(VtYIv?s!2!Fn=u1+pz@?{aOJ-iK6MJ^z-a&;c-XElffuU~o^yQ5<~f6?$? zgq^Lty0a)oSn_XNi#dDyuRq*nh&H{Khwnv?F32+ke%(X+NJ{Kk#rt+j3JOB_o^0T; zwD*bfPX$gUJSWQQ9X5p0@AYbcfSLbs^T*z@T{X`?EoBQ*ZYCco5%tH(xzB7I@H;Ul z*6k9DO8yR4$^`9*#zc~E;h3blGUMDGB^+#|wlYA8Dz$_H7+wrGN_meq#u`?B7PzyY zUX_A${PGwd5{vtCD5WtwZo_*VNq24SJmb;#!pyi3XvR?cqdHs(BZzlQAY_W4M3k%b zS|u^~HvwuE8XBn;yR@5AaE(F3iIo7Xf>2FINYdV(#Ab=5Y$TjV*q1P8j8dnKq|L_L zD>3Xh(zj#jWYkP94=^> z1akHXM2Oz5h#9dj%;SnPH*~hhK?Np+nu={NcL^4-!Tlz6TPSnTfY2kE>DR#? zo%6W?)9I`4Lw~oA3u-);o&A*0_}DwXVF(|-S+*_p>}1cVG*cChoj#?x6TD-X0bv4S zSd!`*CNZCX%uFDDfaeuXA>nkTKshaWjm)CMLlYxbj+#Eq#GKI7(?!4;~N3?*=7 zB}NYfy}>nW3sDNk7y8<+W@`eNCRN6( zI`G1~Mt&ZM9(w-?Z>qr|HffXo!Ni;+g9~H3?wS+sK_0eJBUMbff>iqjCLl_JyQa0LnqI)A{_-@QgR zqA<^YGgX@P`ka#xasZ50w98kgEDlrn2?LuxI}@=b6YIgx^$Ta921+@^aUV1`g=WKBB#ZijjoS-YSS?;aqGG~Ug^NO`Qzyjz6wI0lf|PP!HlGCqvl|2|m6AA| zNw}X5-ML@?`QK);hdA9>GFIr){tOS>O{33C;jx=X-ZXXV)dbk&yDUQSn;KA$qt@H& zfy)tVV{aTZvk*R-CuYPZvQM}(6Ik3Z2QN*FpW}OqS;44xHTQ9L3+x*Ij=WznTX{!ptKduo30^f#j75D>Trm?+-;kzr)N!MFnp!tcJ07eiB!00m z1bW3j#w2%Z>G+VA7Y=mj&O0OO{Xw$$IP-5*v z(<$;T*K-Wd!SqML2Lle1wYgN!70fMG}6cX&_f)RZg zGd~BMPz}@nhpV%UiZWok^#q+F-Cd%9GzbGI-QC>?NQ3l%AR*n|Dcuc2NOzaCba%=b z-|u{9z3cp)pR;D>nSJlQuPwO{n?9j17I5rTsKM`Z9NYPsL*=$`1j} zlB9Z;G$*I6Nd=3PKEO$95r>Y$ObC!ugRgn~{ueSl=U9fGU;Y>urC%XUt#_tMF#;BPE7e@!dH~z#$`*9F9 zqm$)W%{|W>V8OxCmYnV7uL5F5!z^Z9ykB=b8Ud}KAY|9*BSS-=F-Z<4}Y&1o9{M%{0X6rtQw|% z`>g?(={Jm1U3SB#iaoooFR}RORO6?1|H~?!!{c$|uys*} zMT^fI{QJsWlpf0jij+-ja7neitwOO4;&U|dNh3MTf3qP(XCfFH^gRjIi9bN7S=mRN z`c(-XS@a%v28XaRb;e>dFN7Si49KKoduJm3)X4{C&g+|8ueHjcX`i zv$O&?rL`v-Mg%}8d~d1Ox$lYt2#4(g+LQq!T_7sRkL2sHFe(OIqoo5&@l?hifMeSX z-aZ>D)`W#~s~2EnLVT3ecp-;#RO<`1SaVZY0KhEJ4lW%y&u0*=PWTA`M{YP zuXyTIG#i2E?=?2QegK5)Y3jrzr7R$TQ zptdx*bINlp@q9_j!~-HML1go-529V%Ziy3t=YZd_yOhrpXZl4vvqJyX?nBi@B_ zP=^%`rNIu0hgG)GIN4Fbsq2q=>3wuybh16ln3$LVF0Mq`$Cc0t%@cGc91l=WT00-q z;j^)xHZO36*NA<>UIbb`eW}7-GJF+$4Qv$KlJu9Z@D(U7D9@8*sMjRcK)&Q&>2q|( zcK_-sN^q)ULXp<{YyNOSbDl8Y<4e)Ljmp!0SpPSV#$&I(-CPw71oqypl`0I^Inuk` zv*>~Fdqifn>trqU>`c*>10uP_vKU4<<>DJROyJ}gn~zADwQCNOrc#hi<#%+F^kv8* z`FqEc0csr$K?0~r(h=k)w9mfQA_2MjJVAw1k#T%b*4jriCg%0`RTc0t{1_)@wmQ|e zoxfam3!Q%jP)H~TQGNZh1#}@q*<5$%)K=X~u#)@v@s)1Tp8^Y~#uDL3O;`)qJDe5x zc|?$efk1$A&uPc4iK)2W#~2_J=#Nu$3e5+hTf95(Y3~Uq-i%>xIkB{7nc_(0l-meX zE_?-@*rj+~QicjE+^b&wE6U9B?!76AZ(yTEv(&sq4B`jmXbUtdF&9M}ls3$4w`UgM zjMG&3xnkNI&ux070F> zZ&#gPwVAU3BxDRIZwSnBnXd67e50}7%+7oNJn(#-B>tvUY^TjeOTcSl19$6SpXCw3 zNcE)IC`HOX(vkeV(x?Nl34<>2x^5H;SQhiuYEFuafILOT{?l^EjQoB=%MuCh4@%^9 zZ&!1`x^0S1bl46QAGpBP;y2ybI2WQei}Xx6h>St-FjjBe0lp;GI>_ILIyq1Mp0?a6 z1_nunf$S`8=PiwvKlg~4>mVFNjxp{`?!fyz&SLYZU#xaeq8+ZV*sX6Y%>@Eo!(#Sn zkKAc$8*81#yB|$ebpcdC+R#jtZziE>t990K{Ho`X4Ni3v?a~++_@QjKvi_&xaS@%y zbFUpd$F;uNViJL&GRENxVQk1Ec6^k@Z>UTO0?^}so?nkJ9>56}!vC4kEvTqa_y_%C zZltejxOwx)9tV5*g4%Xmr9wd=^mNvPq*b;2rS?^3wN=$fiJcODXN}qn$*Uzd@ni^gBxC)-z6TVdi zI&lL&1z(0L2n6i_r7wXzAlt2x0_4_W|I$d*^pDZM`2o(^_4wQHo<6R^jB?(Z>ehU4 zeC3*GCa|oqw~p2pjf9bg*h6BuXq_uv0Va*Fp`)$M%+_(2>vDZ1lOw{Avi>R+Az^D3 zEql7BuG?tKNY^+zr+d|wYK-pgodYe#fQ_F+yWrLObD#g+xuWk9zoMGP=WwU0Dt?#Q z^Wc>?rWk5iXk<)8MX>YOA3+}9cfqe9aTz6rZ+L1WhOkqXMG|x@i4X?YHkWcHWMRR2 zr)h&Sz^uJ6vh@|BU5SO55WTn>8!IpQo$^dbNl8gq(3H4w(g8rT-^9hvng^c@jqFX_ z`saiAKL863X>~APda^W2TjAgvlW8G7XFjzUd5~pIdGT9Ev}p+!kp*Q+R}_g_KJmlI z03o}>ld-i`dYk!*1ah|pQ8%rY8Bc(Edm8*OQS{C(BF->fHRY3_0`@~#4_&IO)T26r zfCf?|#!iU9dee?-)`J?3?Ro7o9G>)cagJ;gvzRxFm#Q!S_4nHv$XxryPw(|-WRjwc zL{j@UW%&3z<#b2P2F?~VbS#Sf>D5Bn4U6@d^6i2*HdaRiTpy(;rOG4e6Z-POgK1ua zaB36RmrPo42WgTWtDvI8+w~`{>rI*ab!1^J+acdaN~&F-XHW{nwPvx?wrbzuG37CQ zKYypXjI-i>wveNO(=){(LJ{b=4oE6Lm*t=CI6)^G&=2^f-dEDS$Q*$t4OK>3mtsjS#n6^O;_5x*!#u|&iEB$ zN)>Zbo$qr+s=r~HhnLfkM;zAeEM~{M6a*ed4CC@4p}?Vvo=qHy*^mpan>9b(?`j0MB@SXo;v6RO{j*V;U9DR?G%?CY3#@^iw8$xe|$0MBO zzVke1Lbxoj-Ma*;d8<%~=J!4=T7AHSl8m9G{_RAUe zPEZoLKHG}d?{}?C|NTD&e$G_@`Q7zUZs*4-y!IyMUGuJe97dSiD5Wl*M!Ka1#KL6O zUm*Zn(4Yv2*-I7VK}aOg{+Lj-=+JctVPK3GPCn*9P__;s2381C*BV4L1cCdK42EQ- z1jPVGvqI7B=#_}0BQb3Ug-~M|_6S~OmQE;S$M7({0%i=veO#|*ks^%-iT;6P(^nKI zHavpIfg|0Ys48j^6&=Xkctu}WVaXsfJ@&T`@=EW33j^^~EBTw~8Z!bZU}&Z-l>1m1 z_Ho%$MWh1#4(3{h6VMqGgKmo=24Vu$xZ{I5@!9)QW!~_8tTR|AYsg(Uo{P0RDL`dt zgt{5{T&u(JI6-d>JM?}&JZuNH-zN5F`WZyR>-FWMf-m`T+k0T__$}5JslVY0vP{Rv z$4(D8k^?bbr|&v_Pxu#AG%RYI71Ma+ze)$01^vnueSxsE8?vKrVNn6}H&Vx~p`^Y8{pMlhnD=>xlT9YbPG0P=g4?svj;MtFevnybTk^>6;Y-4(>7l7z- zg4|T+_3X)SvB=SEfA4g^4d1*0co}}Yzvk^^=3H9ZZiipK*2}<7ZwCYhmi0tSMB3(Tpyp8oRVQG<=H0L3GofhKEIuFRN!N0M%K{>Je z)~gcSZK!XV%LQ{>^9X1k&kSC5^moHM*#!q))SKe{9cmsmKYYxrjfQW>g~yHZY^_9= zd1u?D|Cq35{Q%PMyPuRS>~PM4RNo}49$_C@O8+8!8otG^=!YO#v6SSecy&<0KR!_I zB=WB3ePKHn(Ms1NeR$?y??&l!o%bV1hF2KDA zW$_SC72pPDM6F)`?w_VZn6y-^a1WorNvHI=5xhaZinlp&#ykvsFIm`NNpF24Xhe$WN-x%TXC z@G%+qO6Y&MWwIC2gZ&kgp5eQ!v4^x1&1$4TXqHV`sdPN!xva>v%&?4nhU0lCTvCbU z7ycaT#pa!zANrHzC);t`eu{5gFfL5CV)76RVSXiw1uPl*;LHq_>hDXUn~-+PSH zqghZrnI;as24*eS802?Knxz$p9tk^|^@`gZaby80?9%B#?Damro$(2TBiw);85vnd z5r%o8@xum>{lhmgDd^Cc#DTdJ18RtZd8I?^5>gED@@vzOw=98oO;%5v76yhsqGktz zG0e_p@qRd0F&);xkGEkSziX(b8_A;+6G^C%vLHc=;44(Xb~-(9!Rc8iCS@6O5T?|b zGCUFo_(D9QF5)6W>+jbvPVZY$G*EAZc_xz`$#VU=Qa~_1DUuvrMIFEQ?ji#&s9Zte zwwal6JIu7dl0CuY@7UPjifZF*rRLg&z6+2G>ylt95u@3HuDu^k|`<-#%dM4aGQ zg$7?82&boKnIHLoPK*z&8$IRXkO>pdS8UIiArxV%w<`PaKEF4O0Ext`XX*78$UcKr zWpT!am41wS$OvVLS;c_5#!9mSmFibKQ)QqRI1903sUcfeCf{h2XKRyMlltWZ@Kc9i zGx;_4_=5$;h|Y>0Yh@VrtA~T5vJFW7Fiq4Q6GS?N{;qGMWi|aI+CbPU+TWL$k2b zqV@-bY_T23^o~4*9asIskh+m0Y^r8p=Z%lSj9XlK!nb=jA2A|R!UBo<{f2(Nd5VWqbOc3)L^kdP`nzvh&1Dr93 zaZ`j}l-L!uib$}@k;##xpLa-NmcF-fjU4e@f;A*pQb7>3nYs?~d|#bL|Ca8_P!M}W zrsqd78F7Mk-TbyUfczd8<8ky$a?eJj!{%yvv%cI7K#QI_J?1s;twT_!f*}W$xq1&$ z2WfwmvJ%rH>bf18U|^GLx53i7wJ&ncaMJm&x-1N8tx=Q#;FRpZQB((MaePG_-CrGSH{6)+1lyg7a_y*VWw>1 zm;3RZ7iqx2UIu$NA6;wB*qM-#9ucb<5XG`H#HPL5jh#IfruG@ZQKa{d(MCi?nUNR? zH{~-Q-!J~3BO6VAFfzeC-SkP44rFA-@UI7oEd*e^ZxlT>CDp5ZS$aX9{7=qWVH6+l zS&`L@toedAYmk4T*3^_6W5x;*xYhO6i3%{RgG!$L2+Q5V%) zk*=X@b&a)*4uK9t;UKGe5LR~G`=dK_&B$6pQ+~eU)<@O&@rf#+Zl8IB^1UP9kM6fy z0t85+9N74|gqf9S?Y+tU=iA_I)@U!+n=KI6JZQT%lXUodhN*LJ&+ zGBOyMie=UYXqZf5PVHbBqYz{|z7^ zO5l%71YF4!#+^qNRyVUJ28m&J2vFu}2X|wl9u}}8B->DUY~z5r^1Sa^c87$0uJSC} z^0HT(A|pmikifWwCux39wD)u7NfE72yq)(EBdMI@d&)PlOaM*{VT7Mn*>O2#QjWKC z^^y{q638PO89scLO-U!1do6y?^M2%-&!~*)RJ)m8758Zr3qTx6&S55^Gy!ed7NoDy z|Ln}P)6*tf#^xL3`N1CSRW>-hx=L%;MQ`ou%-)NgyHFM!&3Vhn5{kLh;wW1bzv*3T zhR9_kNfD{0q2=%2GUoy97I5t{ncQ07NJzlPO&41tBv;)L#&*dyI^+A@v!=zlBbr!k z*|&_k;X(FWHI9JgFi6bwKqRVGNUO4C+{oQnF{t*+>i1E-px`C3tS#n^k}bma{$-UT z#%I~Y;%W-!C(WEn#~Y=(m#feRhp&s-nSvN1Yq7?!$*pQ{@s!AS$s*$X&d!)DA!x#Q zKMYEViTAU*gSQS?1cD{W_jvB!uW6=5dVH?w6|afJ-#sWc&3tLiz8sN{JARLR#Ye1E zi5)S?%!<4r!pf-s+ow-74FPYiq0rHS!?5wo?>8@J9YTMmWZC2c6TU1>nUig&%f^OP zc#PIqeCWg@?|{3kX}l!{$Jmc*uc;b}DJL!Sh_`L4)aICcc7ZZnw0d>qBgzM2Hx|a-&y5Yx8 z1|`}?Pqbh~SyUF`XfdFd8!&_agy9fi<4@5<6^oGgSPX)FOS z5w1WI)XCF`4jTpt2_SJ=z#LKoom5I=u5GlMT`S1Nc7hLvF@O?+`3j!RVfm*a?*N=)dcry%Q6IiKuY7?4QwhW%zQ|6>;PD?rfgcy!Ol`>mek zGG$W|+kk(2qR$F^QC;etDfR%2=N3-@FyjKR7};B0AIvgnGmj(PZ>%MyyTl$tzMd;=|Wx$5= zVEd1f6B>M|GS6Dn;&RiE9&rKyTy^mRw?n#*F zW?|gF3@mE5n*8{f0XJeQq9+5CzmGsjHM>=8%~a5io5;|)uMj@VDRX8HlCtq1O8A5Tzbglwn}0PmvfC* z+{80fVrc-H{sGZVE37&5%s(99uJ1un^er*3kMF~U;D*m^y~OlFwB8|lw=7u0?8rx? zBwgPd5dAsLvE7Dknlnc+7u^uWgyhvqF&k5(Lk>nlLW=voluSjZhoOXDq3t4#dQVSH zO~-1RD(>HKzsoVKQ*0cC&JemKdiokqm(feskiW$w>o1owGG?ExO9Xj2Xml?;oG}Xu z3;Wt0`&zNuEcLZD7^WL-V`{t&S}aFnYaTo=@0$YO>r^kLRd8CPu;|x#9OmU!IqNqVr#kyrvdV*}`goN6nn!t*iVLDvl{I?x66cp*FJ85A(h{sua^Yt_aS}kD@>5;0dJvpeSp#(N`R>Ep+0^0%_&=ydmyCXw+v1!RnwOLeH0m?_M}jI$`x0B}dtK@TuX-=J z%HCN2PsH&5y7%x$tu(f=;tISthNLvaDXzQG9>|{U^7CEjpHS1rAf!|hSe7fg;r@YlKgT?c*@k|tu@>GeUVit zF-Qa@KJgfKN^&WC6UG^p5ic|sp3j;lz><=_4+#~eXL#K#P90ZSj<e>(I+G!$Cq$uWSw%IB)2Q$!$#Q5fKw=LiemM~}icv&t50Sj?fi9;L5_ zn-<_8orclV#GfSZtM43xAi!{hj?kz2;=ibUrG`VnqjZUMx_FB8DHrdTe znFm}wG+LV;Tkvr?8@YLY~XfNx1BH>xdsPofW$kqZSoA5hO2u`w{ zy6IS%qDXfy-yzBSOUmT)JRn`Ik8zZ?Y_E~zmQ7wB-XM?89ORP+W}HG2bWU9A=g?K)gAE!) zO-itTgO%!A>c?k@`;~#Qq3K$sWs{=&JaERzWRrP?cov8oF+h8D!af^jOuSEKDU_!g z-CiMoQ)D&L<}Y0dfN4k1d1OpYC|UAh7>Cr(4f3^D3+(ynN=7ZFE%xL-VjhC`I37O# zjr7kn@-d=?*`jdfYKiU?aYc@0qQ>4EUg!_`FB7-8}Cfe^AUM8wW!?~ zf)l-hO?mxgajIGLUkuqgLvR+*y@A>sw&9zQsI}FXFb>XN=+js?Fs(lOLW)+1C`eDl zRHbA~AN?$r{pIR|Kjys6ouG8K?Xv<&1FUZ}V<*MF=|vEI)jUZbLH8*ej^;Y`dwFDa zw9K-6eU}ywTgGDf54*4nnKEAYOS8D!n$K;gG_`re*gvWF5{WRzze{#MsOYOwCP&Hs z38Npy)<*jKEkZC_%}Mki;y~(iK@v?oM7@qUSoF?boUB- zXQYc63nMURKonCcyBmM@9%o+TVQkoj$lh2|`cCH|qU$?Or1KE+(y#XSsr+Zbik7qwA3_v+H)HFf3pDXp+<7#nou7zna~f=LvG_DTOu72-bz<_8zhY7)EhWLUMOHh z(6mbJU{>y(^120%7)cAml15yYCD(9*1yk6^u=~i5a(>stAIuKwteq~3Ak=1%?Vv>~ z<@O)7+y_@ILuqBo?>(sn3Gq^kvmvfL617-Cr<8ND5|tPTE$JS=Qh#l9dfz+oKP+r* z2jVKm+U<;RuxslpN;`B`+3sakOtWP;M*<&%hqn|3nduAusHkgGpu4Eu8LNwnzxPTN z=-b?h4RG@@YVdrA>;X%i{D;Z=5^e8us5|xRhi@LDe&eozSDI^Bt-zP8IgfxTY~kc} z|9NeJqLZ!x{$*F0s!5y}!y<4(7e${y=&-~FI3$t<%e zY#&fK{F0~ebMMKdJ^9E!59^9fr~q3VO@-Y}JzW)J zrKd|PcJ_Fi3Ozzo7s1*rWw=S?5&DUw6p24N9dn+J=5%q53-)ZFk9O|{qlpu6?A-i| zn)~`UhFyRCotc$!MK~Z&D9NnfdBC@M@%`PH@^t-%FY zjkknM)=Th&!GymMf*lwGkXn+BX7W#HX!u-Jj2+IvXur9Tg_j#W^|5h zAP`X%d5!Y69;k_zyMd$6G>$ql(7)7I1PL6@*B+S40HuH-9a&k7`MSj zBluU_x|SqTl>u&g{%h6%R%<9B6t9@H{SZ_DDiVRu)0%yC+V_<-61-eQ47mwHW+np( zA+58PFexQgyZhJSV{L$C#FJi&NxtaA?6a*Q*;!m$+okRkt$VnHfzgLVioTD49JpA_ z<3XTk?$@k{S1;8dj^-G&Uo#QLN_e?EwokJJc%^$g9a%LrHVz*x)|xMi|JW{t54Bxw z8J_G#^DHlEvWKCQ6q%la&!xaC6OK-c5@^4SGuRdF);WTzo7Za>$c~yJJ~H5lJO!6P z^r0wLOCk8i3|uQQ&05%8__%P|WObO@FNU$PvtfF3W8xuy2)mDJH?Q5A8eqos=D|E# zBRtwe*P6bJv+*-}n(!JCrqX0h<~j@&`jsFea$SqPpiC`0oVd6f2kP+l-wnrqe(6M9 z-+$S{zju@zA-p#)2Hm?M*;^ z1O1VckEV)7gv&=nLB`D@wln+a-0D4S>p@J^VNXA;yu>RLn=9hI$=}x3CKC!l4b9#d z)>j7boTWVnf&T3tS<>2@QEf&9zFND9X7$p1r)dUlU1jRZtD97jsnUq+x@%&Y*%)0sb9uSbIKJip?n}nZM)Bo%;qiw{qnB{eD*F0O+{s&Q(IvF=s# zHN4Jl5|Rs7kq^Y)vEf!KSV!`tfiXgo8@?6WjH%ivMh9!xG=n4c|G*K6N_uTT1zbHZ<^73rqiqb3&ityI$SjZ^<&UY$NAnD@_4byZwl8_`;6Hic|4T$@+f?EK1-iSK#`8~ZnBlSPWcQ1 zFF#L1gK2kpGv_Z>c)S$H3s7ptIscRP{?8@tgDS{ot_(gV=5^BC50K#xULK14aAE~0 z@H(mvzR$p`yd8_zm@Ab7`L!cl=}UjUdzkNJ?I(BFvo%LskO@nfXT$j+L5Abl!ZUz- zuGNc(h0CjDs2d3T^*ddQWmPk*yFGV)N}_`HJAqP;B6FV?LvI8wHezx7oyKOrk;Xz8 zsQIk4UdIHbIa1d!=8ur+AaB;EaCH34zI`b?O`O$ ztN?*6v(EoX#WgPzn&r3kw;76dq9HzLSgu>5{e4@B0dR-P441BxxTL&C`!)=nb=1GL zh#~&rOoRW8p(2$?)kHqj5Tg~1rwvW7hKk<&lZw7BYb{|yYLnn5s3%(k{DX`@yXr8+ z#qC;3UcTV!T5;PRpy9n?9Fy7yIFVeTyI|yrUeNA?g7Tw%H~Os8mf5B))JYXktJ9P% zfIdI%k(h{}T1Bqg^oEOeP)Cwa#m+|0EdVV|b)q@HWC13s2FY!xzyHa zBqOxR0K5oF35mn`Fg4ytsl%hcG&2}fr00QXUlF3w%4*%FvN2qcvZwrWLZ2`XkbKb) zYI4jmjt163F)iA`(ytf9P zKdF55={cO04Rng)87>5)`ISZoFTDzWexZA>;dSf`m$zaTtgoyyAPqF!-&4;)E?U&C zHD5fM{qaDZcA1#8^vRcKe=#d9*Ylo#1EIAo5U5O|RH*i?u@Pg{03ih~F$o}XfrT6M z9(CTT-M#|H!$ux}hWN8od=UddU&YV5L&o6ghm1l5nMSQ?D$F-h!V?q2S6{FJ=*tT4|=O}=o8 z>9hWZRE*}rEpW33kAW_q5J3GFhcQREyLTtuYO>@q*JvZ;6C@?#r#)^~)!Mp**Vl9Prh(~cC_jpBWk4GU1>D9@KHn@P-$go3Z|Jr-&Z@cz6 z?}Vr+9>jfw2xH~z>aC3w6^ZFciY`5o^G~vE2mWO~2$`h;XiZ{I?;>BKCaSB8H*@iX z2L};!wVvYdlkO#Tby4@ohjK72jA!{!0k~=vX680B7f3f8eXhl0Mk{}$J3O$~7;kyr zFWNN@cL$+oC@CL+4u+DK;G@gC%Go79ei@l;$jYSi;MJJPr9ARv#>YG}&EP#7)oz9H z=y{~zcaY31+PfgQ;TUP^zJJ2OH587Ca@zkfo^ijwE$1?Z}p`Tb@X5kB-^&j~mqX@ar561&wW05MAjJ{%?nq?Wn z1R%V6sK2K?3`>$ru_nWUfG%YRR1JwPWn!-u3T*>Bu^Yr{b@eqP@R+raK14TeE zaIZu|2;E(-fP)pAM1taXs*Z2(W!i~0Cc#L@y~Tlelu45`UwBwhSWk@luLp|0W=A>- zI7W2KVEevM|112&X>(epe*1U@AnOo*27J$dhLsE&^I_eo1zM5Z8I{=XA2dXY;`ovd zdgt6~0%-dL@t!QRd~`aT|KKBSyYHk}4grzLqMOcu38@(91WKQc>b6G8!$&vqzO!#K z&3?)rZNmB{?&$En_H;taRR;L`=;W{w)YD`@t$QH${b?NdLD2BW#PE;|I2l~E%c*z` z`yLmc#rHKOW^#^oi)!5&tI2VZ+l9&s9r?opxw}yqxV(?wwHu6XhRyiK4hF>43}}AM zXFjRwn38|xbzqBdvKed~Sc&$kQ3sC&M9U?3Z+@1;GMw930HsTt{je zRMp+Y|NO#d)DJyB4(VK!kQ;urz~4y9=xK=GcNbgEezLZ>tB5)BM9koWvj@PGEBxt% zmv&w$NlpuISjpwFY`Ii+V;_G0DF+Wx&NyTR+^?G7EH-_!ztai2Ah}zITZt{a4nFSg zjlk%a^C&;AmXnps4hD1rJDZ))dVRbZj5GLU{?)GAO@zx4}U9ChsUM;150C^7kG2Nds=)qtjcR>THf|${?v|BhRY~SljRCeW=80-Q$ zX{URY?XTi~L*$XyvsH5yc*y$EJ?)^Nw3V0Of^?Noi*rMWTUueuF6zP&tNzTLYgkv? zL;KucN6kRL9RYEBq+=sM>}R?EmyZu<4wW(lV0KclCl|YNlW}Q8=mZ+A2i`X`>{UY$|wYahC5#tRDoRX9qbe3NgS2` zHt`_2e`D<1TNh`Q$@=bHG+1P-#_mslbM^7;epJ>}>s;XF5GFxwi7fThqw-b485dA4vmKKl}qEtUaUmFUfV ztQzqgneQi}FZ;3TVd-qo*p(Nf&jp*8P!d2vhWA z*#GRpH?fekhQ==u2E~SQ;UeK5yo3y{9+_>%SjYdnbkBi$C%X=JE)z;CT88ditAtE` z1Yp3yhnTU2uLJ1q98fCG{XJ8^4H~^dkft_b-@iwSrd>J!%Wvs`ko@f?H3ACa&>XNp zKk;FoaVrC?0Tm0`J|r{JBAiq>y41yqQ27%@-8hgDx6~qj@lZPoUZFxjR2--UNQjd^ z`oj<^ssHL@mOy>hRcMRd+1phRB86BLYu6R@RUDdAk#JknCK^N@tVmOwWTZ^kD`w0B z0N9DBE>${XTYf_qLlN}9X%P`dQ`!(%ZuztW)xnSbj9xe=;t8s=14ujsJ^?>Y`Vl&S zwca=nb1V8#E3OFRWv{NS*}wkm*atef9pM~L?lpQMU;mX=*&=h|bHIGxOP@riP?Y!` z>3){CgPQZN*J{RXZPuWYdV+uKg$l`f=e_YjDVukEE3?rkNS!-kQy^&hePM-VO9${_ zPcL9mdzf|4-#(+|L^}_lWcRC4;oxrAFyI;^WL#qkN+$?pwTNJU@qrR{KsiB!3z7?2 zwmv414N8&IW+?Um;&X33t5tdh<5jWU(IPJX(k6(`+0QWLO?*G{E7-GjFnU$tR`1{K zRId)tV931)%H$eahy>+=(GXl4-GW6zSj`P1fxedpsHbQE_TS~z$_%q}L&BMU9fG{6 zwoGti=shJr%*~GW+h4*UV&LBFZxTOQaTxRgDQTQfV@Vt+d!+a=y z6MJ3Nmw`E?+g+##_yw?T7Ucp2bR06vt{mSU$J^XB7+YD}O~%lbAN&bhW?$Jy+_U)$L~E0pcST1!x=H;jG5+zRm6 z)wrvFlB>|;QFF&DDa0~k!bJcp+6TvD>?`ue&~~y`0RLj;ao5kJE$e%p6xaNgh1H|pyP1`C`2uLa`}r2fPOg3v zo+Tj74YYhZZQjYOurzz|yDZy4r&J= z?4<lL{v(8oi4*}*4JD;r{Q-O?aTI!2hYKk%@Ur- zNM@bW3bh9AD_zLL^NNDXtWEn2_g$5~=Iu8lv{CWn|Mm{ysl(w)N^kaaomEZW?Nl2x zS@%Y=ukbAyfm`hcIbWBX#fvTY0D7gKd&cz=i=vSF&6E<0q`_Lh}!hmovm5l_Iv@44Z0rviEab9NU>-n{bm+f^}@reWcK>B6{7m|FccT zh>-4U_OaX%pY1;a!iDhW-wO$Z_Qr>h$l#gb$TB_H?lAK{Jj(wvZrE_d)1<=W({e1w z9{;@g;deW!tjn|qQT;)qnVofy)OY7OW0qHu!{61in4O^>CLeGgAB=I2%KxF2{|%Zv za_a7m#p(YS9R-dScqhFcBS{g1OzAxVllHG)K(mBo=RfpZwwL|uBu5*7g2|jhJSs!( zn))fcY>$Y)7QZoB4dImwLq=b7-AYvGk+ZUv@qJO;iuJ#mozr0K(^R$Reec^$jT>zB zgRLl{cO2(~)wlfb%Q8m{jxHq55@hyuuMWk@@T*N5?wC7@L|A`PM-Cy$7q-($(6Gkc zwOe_cz(n?Vvw+F86fs1s@1W+DttSGD&hwxC=q4F57t{+$M2ZR?e3fEa1D+sl+dY6{ zE*=bUe@JHZIx}yN0@iyLqYzC{gSwIl*E#r5* zS2RwuH3{=VhObM0QpR>Wq`X}ynW@4=k~~!$p+;;Xtr`ew#mjfk?(Ze!xZT{O&hnDV zFC%Lrn`jVq&HyIx%%$<^a58+NVS_M(7U~>7cgkhyS}%zoS;PxfMe6yO1K)m`je{Md zsmv|V&ej28dfd)bMnC`s;v1Q48dzUPR|kzdHJQ6?I8F8huSV!LJzJaw)^OdTC^-<< z2xBHJ9PmM7cE?;rvNEN=wQYurDKsxco6;sm!lCG`nMmu zpyKe}-SEt!xkX0buX);+a#Asd(fy>K-_woxdw*@vD2kLrpDlt6@<>fp)QI|IJfsua zZoCU-W{}U8_kTEle4=tCxwAqckXpkWagQ5Fr|%+RHxg$i%6N?kd=psRz|C0B>1>f6 ztz0*u@xX0fF)-6?n#GY>Wt9A5#!z3GmW6_lnHfK&1L4f_71)*!{TaMv;+;YZBR@?4_5*Rm_N!LERalU07Z{Zag2{H>94GFS^qdcC;&feuaQ)V z?g_(snKT2qFZw>ml#utR=nz63bxBCW|DqCt@qB5t6z$0MrT?#B% z;~x3D0jL`hiupBBX|YZ1K&qt}2_rC+0GwfwsnYEr4;_c<_{W1-X0NSbnev!OAIlK| zjIg=;Q;OFnN5e9*7?jK{!XOC?1)yPO2NP7lN!}$KBi|DbBIr>lC9WE^NN95V_|f6r zVW{WwE>_w(_OR5l_1vW=yoZ=`i~cd(k!&Qv?F|#W+nB}0la%sTHTMwfjQKL2!*p4c zxnu-?qiFIu@fzc<$tM!!`QzG-Qx_-eP0^VzHeE7*)7fttp=MU_W{^4lJ2Z8>&*QSs zbrhUg#HYn}*&@2&8GVu&5Zm|qkq+F|VgH$qdLHO0ha^)~a22W%Y2Xjw=@*Qh)esC4 zpFV*IQ5?hdZ)aqr)bbkIvSBm5;9zZXjycVkmDG@U z=U!#teJ;M}_wp>S%Gz;f!oL|p%P`V@gq?!$caHw7p+_bP@?iB3*n%-)1y8m<=_YB; z{rwkO`zwPQ$a$`Wn0BB!_MDo;X%k*i!Ctj3u_xMv%&~2=ZnZ-$^1;~jeFeT~UtEAu zNKgjeh7CSD(j8t8Jysi0hXK%!Eb(69PAPAmIj{`RO4GW8unv8fQlbj946pvVPK}L5 z9}MEH58ULfDKp^&TVwGln+m4m6rw0_!Y0lcSb$P+?HK8On|eB&_4f{$|7zk>`Is2@ z&)IAZ2aELDHvnQJ2bBl1T`1acXCq2yL~zlD8E14wq34#v4*?WA+3y%4&G3#}6|6Zy zEf$Mfuksc9j^G&HG$puH-gko)gJASLmSU_$i2+IIibi-x+QWmRm}3PAk%0tR3FEDr zXgyTU?o~}O8Qz(;iVDdx!O89Bu+4Tq?_a4*?@czROGSHTkYk+Lkbh7!Yz6CsR5Jvt zE)}5 z-@5*8lff8hNep1E1)Lu5vY!|tVUF6txh;724t_hfL}c^x^NgonYma7QD;`d>?j4Mk z?JXK^E5?$wC$?20v}wx76$j)Lc*T)Vy^IiQclfxIb>ClPGNxVMWABp6(jTLlePGn3 z^ZvCpdfB97IvdT(#CjWp#1u};A;{yAX#iVZP>&$8AuOrlZLIkEjgdksjY3%dwb*a7 zI2PuJ;G6?N<4)5I1Z>^D^eEmHhi`Qa^}|E>EZZM6^{L?p+9L1ApQj2AE#jwHJ7<-L zBtraLTpV5ZconUsMe}8oi8~ToY7s0JZ2Lz%hdnz=U0s67q=^S_C~^_J#8*C5oC&$K z7 zo&mr`Rdz4Ail1%R6OWo%`*GKDeCHtZ5~9U>q+$M-o@4hSr&!W9s#^$>EkpXQn2$D9 zyvxAf1EKJ{!5*W90!EbI`G&HzbXhz8Y|$Iu2SPWqL)R92(?_^xDSepv?0;CzyjkP2 zf19kSM|k^+QLpjj`j7daogBrfrk|tz0w6V#-#vN9^v;Z#%7n!!+?X>d^)fqBy2ceX z*vvDR+i{AKK?!f5wI$VKW@mD54$^yl9sE7<^N-}N09?MMSK8l}NoU`gp zz8ziaXXJ%P9g_L88r%OLuHG`L%`a}(3=-UmdvGmMTm!U7DQ<=0TA)C2x8TLCXmPg& zcX#*V?(XiB|9fWUoSAP~WMwUq^(4>!?S0?Z6+T=?XcJ=lb|XK~I0)oMT9-EtL%8+M z#5kv^|5d?p(tOr7>mK8MKPL-$(aO$O!WkiD?yv)dm?_@3E4D4v|L>TpI0IZW;+W{2 z?!#oX51j$bE4FO{dYbPEhq(m|CkecU(Yevqoq)IYMDVwOaQN*iI46j_WowIt62wGT zWggWp2{CMuDq_P5)xQQVupy}{7sbD3rgQ?mLk01Ofgs4D0ifdrnn&uu_6IeBQMEsF z@=DAs6Rn5;1@r?(jM4YMTHxOy=n^0(kh!88a)`%z`S%d4BP@?{o^x0KKUn}m<)}1) zXh2|PXLyYmVkWNF5rWbs+`xnc$k3S7EqYA!&_yB^fC)?Vi9U1%qM9Pne1zNdYl%bi zyVkYRaeUNEXva1U=gU$fR$3C#;0!Tgv)89^hn1zD&h`Wi+D`b~4-X21l2YP^@aFUw z%Uf;|$$iEId*uLU&Q4AP%Z-j^t1a%kcVhA>G`s>cvJ6PXOvOxytQNNhi%ZgNMo3ke7F0vIHB(J7nWdodKw!gMl4^^W#U+X#mH> z=!oxiGUnI8WCRLjCZ#Dacr^I^V7>}zYsY9IeE)rTv_iiEYEK~hyf~7jX(}O3$8w<( zpFrS8f4wIZSoQy^+XIQ*oE5;RHOG!Z;}I+hS{gtK-_~#IzyumTiaR);1{t#Mwr_3(0 zi23Z2EPQ|Uig&Y@nDQB0hPihfDhO6UUVX9~9^fO%Im)Uk0w+WO5s@hiW)`Uq`h5wu zo7RRu6sFW1;Z^#_a091YFzHzn&wGeqa1*o%I5mz|ZpgyaE#Tx#iV{CFZa>Pfs$TQ^ zOQi{F*3Gs#j;<4`bQU;j09d7EPBbsNE|F`H;R+`SngvYfUNwjbaWFH(-5nm0AqaC7 zu-`LZku?8Hu;?U`4oa(_pSOjbZ9?CzFV_iv%uH4S8_I0=2ojMjI5om^dW-X?c61<1 z5@qDpRhk=YYJ>Drk;c+@wGG^G_i$mk)6_aqO(QMvIn9iD8ilp_$73cZ!OJRo0f|{5 zMfPMzV#QM-qP)tRMnWwntF=0@gKyo)xTSm|LKGEw3NjC{Ywx-?(ktGJX+8WR=d6y~ zk~D^olXDCS+9;DguQH#)zC?#<`lZtdiYR8eUR_4-^&arqhLaO`mea2b@CB+jdwq>) zeMHptFgSAZTX%}Ax@%njnTpZNNFB^k6A3QH92J~)p1oKZu2CeiHi)NsIDROh{q$N3 zGm+_0`aau#YxStDyqbgRv9f+Gi#bboNo{d`Ix$;QQ%abdFT@)(_79kSundE)g7o`qIdi9-HZsf{`DncKxGR>@%qR+j-*l!G$%;F2^(ZY%@ zsbU7Jo|l72U8(9U!^1(6cz=Y1cd|IVIz7Dpr~N7ivw8SFUncFyhJzx$P`Nm=Lty#Ni|yX_NPa@QMPepgVEyG>9!eTlf}F zQ^Ehx!E&+G5NDo8;(1eCUwS2y|t#c)E7DS9UbR)zb=kIEUgCb-U-IqkSr@i0gwCz=UuRG8LY-bZrki=rO2-d@IF5|n}PI%$*K8;UvaHP<5D z=acY}d4PtEbtpH+KHbB0~>lZ-ss^m%A4H9 zzmIY7r=e`FwX#(d)Jv9M;%gS(zZO(YNP?Yg;a=X~z(4jukd3o}tom{anMtrrn z>XH00U1c_@`OkHiHv(Al^N+OYZC6$~sa1H{FLwEw-M{Q3l>Zm4qpb zlKK1V4u%ZPkdK>l{^xPR*s#==nvnzEs}R1vUO%CjN2Yw#3BMMYDbbHiw5fxBjtiBoeCHII*rZoKcL z9#WYy4v73Vy{~hO=w#s3UidbmVL0|FUqX1{EayG#ZAe0N_&*-PJo~SOvBK|}jd!}G z{9tN|d*&cfG*ADtz|I^gap%YZ|MUPsg8DsGWKSML6-YrxTBwxfA4W9ig7h-hS=kSS zx@g~hg8Mb*n2tyUPpXF5yB3aNy|%yB^?H(>QJVEgzlAwt;%6C-(<@)V4k?qub~U;e zJ6_lnQ7>CzK_Lk}%O=qnpL}!gcHhn=)+HOW3QYLOJs;e}?P^weveeBU8{F7H_Z`UF z3+9;#u&Sos&&Hj^2B@j;Fx@#nn_oS}R}UDDW~lXUl~wHZBHHY%_3rf#;n&&w|Cv>V zP%Bapa<+oF*xnw(4F<{fWDLlE%# z0!E2H$GgiI>DHuld+{KI+$vOq4Rwvm7Ra@c&gVuqa$tY#mE22$M;c@Z*z0Hf6yt+T z%a0lnco9y^?2#;&3jDF`fWnK_`|AT`Fe$0|7o|+UI(xgY#H6o(kg7R zJWnn%=B=5%l>GeBhE(0m$=}x{OXagb+K{5cs(L;U4`8AKa_R1EIKi#E6Z~8v#^eOx z%fgirHZ0m2VJz`dE?J?#{XKFfLGo#7P2YP(6)^A2?gZtib*>^axpx^hSy9z|Ff_y7 z5e%g`lr$U*f=kgxMjnMp#?*c`pYY+C_60Eco4wr>p zOfPs?q?R7Z=~ZvNz%nlSR1<@0XEY*LXvvivWK>K}91x-Hrxp}ogg-)}Uu}P+pI%sA zrpE@WyxKVIZ-5fl-cIY0I9pzBm;NOEvZ(eK8vG@l9xk16FMT za(==JCojoW6k}J-qOggkY=~5Atohfm>jZw87JCbCd405U=s$U5?kD$5JNE66;Br^J zLbNc~;>hlwr`6Kj2oPFG^L;rI-dP0cGqykX!WbWWVz$t5$0)0iE-N$v<|}N#_jy@o zn7evV6y{A9X4hd@d)vT_8{RQ}{5^wIE6qExGEO_j1E*Jq%`3ip>*Ae=q!4h z#HiphQl5FIagf|D4t<+c;IbJqtxlpNNb^QB-}MXsyWiAz@d=5I46z2K)*3)Vfz747 z6j*ERShSzY9kbl_+9S%b>_Wjo#-nz_EJUhjGrUgZ9YYYL_Q#tilb=(s4@D;DbqPs9 zUD*G_M@m`G%NsS->-VhqEPVK>855Y{Q&F4>ATzCIrP^_08ac+-VXit`E=SI7c^aj-Gx zyOp;5nE?gV7Vmz^xy1;_Kj72}M`35MFHU&PIDiGl8p2Jl}{nHcUDzB-A(@iiG5l0tqo zi`~&E;}H{b)pv$pueJaXO^1MKfRT^(ezFaHM9KT;XOoS{7QZ0IWMz16IGtTk@o$(O zt`fee-xqQR>8Se*M3|SsifX?5O)Fg6N8})oBC0xO}3}7 z+i<`$u_JH*D?Z|6q?MHsiX|&E8>2$p<$b$l%8i(qK!D6|7+vwjNvHMm9tMCq}vElC(VLoXQ2!UJQD~&;il^-sLE|ox@+B;dk4dW`M%v8jIx56 zVX_FRYvO|j^rv_*O>E3J{oUtaP6q~ntKk!5JBm&b#y(FM2Upagx7$`{p?bOu+n#snZsZ7)x0~I zv!yXxKt|iF@{80 zDYY^>vCKkKUwN1V#s#uzz2ma8?k4skVn_MZnt!jczeO?F8hP8XR});LdJF+0KSkTk zp36FAi|Y{y$d5~c!NPhaW|MMu+z7uge|Qt3@FkI6#FyA zo3qIHtYb$1@DGpW=TGr+Qq757{&Fw$+UkqEOoILF1Gu|){NoklaV&v8FyJ=iU`OZFRq*tU*6o zCY;Gz(&3zWljqT2D^2ivh|tx&Yq+*mwxd0sb~C}u?m0ZiC$X4qD(=0rGc_|~<^xGS zw0#{N7h}_ZuaTecaC%ZNH@ClbFFc{okmY+cjFmSVN_~{g}%V zTArjQ_8{BLju#8^xd^X%YhGiM$#BgO>3PjmZu34Yc9>vq9^lAy`?H!*w$zZTw$8r75dk5@;H!}{7S>}PMFP2c65h->MBupcXGaH}Z zSz6;M1O{?+-O7iEMuQ(<w#`5ovp)ne+R!If#%mgbW>op*{&N6_Xb_Hpq41ZRQ}KVyl<0nqC1U=a98`!xoJ7%c|l zbn6P`Hg!|Z8a`Rek7U2dXnn%91dKIpDkXZf-H#G!z7G ziN_gxsXf2k+x9ky(mL&ZokHQGb%$$7|UXNs@l6-CK zT#kO9zj>d(B6%TX6;9quiDv`2g%d;7)sZVbN0>L~x+;HO0~^ewyvP0x@AaHXr2xgb z;Kaw)K0uD)#;nr0Z?RCLISy!n0O|^Ph|^VK*zXw(!bWsbSD6ve2;90$2L)@%rRrB+ z8j2<4i*Yv|XEorn&^94CR}B2O~s=UyAr2Ns=xG=hwCNL$EOs=v9;DkO;Lv0Gn}ZyqnT?hA=7&+*{+#itSeVeq zyKR}v@0nUbcU@QJxL@71TF!z46JTm%=t^|Yb^jzKGQs&zEm<0Ku4;_Yu?-v zp?;m*iUpQlel^X4cGIA{j{f0ILUdNY=e)|ZS%oaf9RB!4l0jTQLTZ+Q`xt(@vbAuycPnFkC~})>Fj=1cd_2p-}SvDq~;mi-ylIq^i&NRf>i;pUYVtThdju zGa-hAwpY0BR-@B}%|3#EBtfTrGs7Ymp}@W7p4)CJh>9_5nOTDz*#2t3$IVoW^yq|7 zH&yGIW;(<@sUvaX7Vpn1Ob<6|XGiII{DJzb5GxFrDvRs3WR#C)&;(0pnPqz4x-$;4 zAIbe!ZqLANczb=?Dawsv(QkD+P;ESw5#xifiHuscrd#F^1-HgG&>(6hM{{H(fpM=DiFI8YNWzMy-tNdk7o9M;;aPk z18fQ{(V<}Xit;0(&KFF+U1k*9x<;nXn-~3qI2`XoQBvTeVca>v z%K_T_y1K7C0V(K#eXh-(9{ILZj2wU6^h>OMm>pgpaPdr->*pcv5&#`@p0w&GN8}b2 zfdsGTPnyHLng%v~2fYcbJFufn6@2WglT@qngnZ#+Q>;RAmPx^VALlg33-`Tr#{YzC z50s8^M}TSRbRREDBxsIpcTi>TyT?m8*6^!?GGAdGZEfwHV~z}F&*R3z=O=!Sgm|$B z`-gtt=K%pGseglHg)*ydTbK{)uw{6{+C#?jMflRr7GnmL&54>x`qqZaLFz{tIH~Y} z8%q10cbA7&<%5{~tM3&Q6sFde*c|spDCflbw*TIcZG*(T8pvIrFJLJ`b-^R_!hUvz z-BlowF4fbiE5!cG=7?VHAw2?Ox~OLz3|oZd&i&p79+nB@ubtSR)f}t6-jL^p*TpkiY|mQb{zXkT3Q)MOug8-_JCA0_c-o1S z;t6@c>iw4$w5S4OuEc7$Q*`Dma~6DMk4-RxGB6r_BY5#RH|;-f2hg*@}D zc|7$5mei+ACu<|q#c!MJB-Yl6^YpJ^(s0VK+2M>1;&n*{f1$&cLT^)#2%W19j{tdJ z1Zm#|s@g}2?Ovf?aLq#Od}TmmmM>q?-@$8Mk@pEZJC$SqiZGmfI}$4vS_YV7IIy|< z%rC2XtbBXj|3+kAvx`jDGt80>Pa5B>JvmA5iaH8JcyBpc)7R~Nf^>6^>Z#8k%!6lBw z>Bs&rM~jYvEeF%Vqv`tV3pC0uPOyTV&;BP6m$4}p73TcEdlEnn0_M1gk*7->}a@VuxU z^hM*qI|Qtc%9Tp3h}5ba95i%($Zp(7`*1f+>k`+Y9j;hrh{fZnW*`I1BA3om{OdgB zqCD+saj6S$Trc@I>#VPsEH|j?z@je|47T(1oh~u7Tsa&a(kN}U1VH1Bcqcz&UghLR z>k1GAyQ7FH!Vvl&@B(?&1Oao>wS#k)ZAsQ8CfGLX zc=j(G=LGOYDzQujt#bq-9~TC{g)-&*7rT!#Wr~r=Fv1EIcW)JN8}|j}BMPBk7KK;+ zqwsU>6)aa7CAd!|c$xz{4ef)qPGjNe^jh31{o>l{^QBmdmw0axi)ax*DA^o{(JmJe zAs%`VUjI|n7U{J{$Y)adGk*)t*JT4gWj^H++lh9l=L|hxj3dg3(RJJ3dw5QQuq_1W zl%Wd|eu&EhJO==GlH-|{uY<%nM+r8Wcc>imi*o?L4YL_t0lLbRPT;HG7aOm2IXK`f zGj>2h6f*>1C{yPjm1O{Z5yV6pcTK~`5%=9s`pab9S1Y}csg*mA1AUn!s_XK3d#iG# zG}Ojl=mN((8V2)hzfXRr*Bc>-Jfhzn=HIl+Ti)bPvZCQSiaMP-tJe!@f*Oy7p{l6( zL&_v23@^R#-n>iqysodEG;fyQJkC};+dU{j1dpXqu=C-+;%V>I0PhHd3+4GR^x)oV zV_N(gysBFOh)t_PoRD3YNhX?@Isq2)T(k9|tsT*nY<~QwwzK_m%N>)OwSxKD18}OF z{}|PB$ijTGq9YwiY6d9Kv91ilxCr2N^8LlFG|yzs>=}ygQhtkwlQnu;3`SV0fHQON zXz0M~`?b;=)jZ4Hgnf-rlz-B#6Xce~c-*Kmiv1>;2`8|iy?hgRYT~K8wXNTj)NspK zkoV>P%>qC*$Tr}80B_r`_EfF&YP%g~cg>qgr7LDDOS`gn%K}saY}f0Hpkz;|*-smD z`0Y^JfveJtc`r3!LxbrWL9(5$fFPC7EM=rSydvHVeo5#`g`dm4w{C@rCYnPs9(2sI2Q_KNeTvwWKq z?FD5mCRW%9ZqIN3Q!nIE*#Ghhi!q;Z(6X?YW`?uJ`P!XU)G#xqn~r%9tvN=ET#X6G zYGyd!Z#Xq-HtMAzT8bRxRVKm=~5Lh;lDa?}NiAG;HO#A5%Eyh;C(R*mEWB->&6xpSwW z3k=489)8(^9s9yMf1j2`L+o94QqG43Wg5eFd-U#>4YqFPy>&KzL))H=#q87dn&Hp; zIksDRiEXz2&6f~TRUc4R?db-C{MhOVBqwWyKGuG(Xh51)G0a;iC6@ zW5cDg{Vk$(iS&F92D^O5bJ-EhBtq<;EBiTmK$ z`7GJxMOIRRi2x@U`{{E=I;gAA`-mS3BVxAeK0O_MaGRoIBw=}3ekCzqBXaqjsoUB4cE4J~_JecH~-Gyh|nFq^zLIylJZNH!vi zXo0rQ!Cn8YWbQj@hv`r1^A^(h=+YQ&L;GPO54&dnj2l=`eG$q?MxFh*47i$Q$0Mmq z`0P_Trz!1`I=FOuMdX$^R7*qBI67r(8XoIR40w0WG6%m_s(s|A#VXB5Y(df_|1;;1 z1<-W{CPKhG;r@s4HE!!@R3(@s{E`L#eQM(5k4y28=-`)FLNqF~DAFUTA>=t(_i}k! zB423vkmUt=>`2RZ%OZvNoH&dFuy}Skg<}?+P^x{MTh>U|R3vFAw2RXalk4Z=Vg71M z;+;*xan+Bjy>k?c)aa5dd0E@|p8+NLp6+dfg`C^39(D=jV}zY zVAkqS>~;D{28%4cFC{crcCm~&9TD=_ga@`l<=gZ*!ZWOB7+zH_0iWMgY^Kt_v3)yn z{HCq@ZzFyd(@I3#_Cu{EKi-G3WXbrNTKC3gAJ1S6K;153-RFlaAxp~}SS9rc4?u4M zR4V)TjKR?Az3(h@L7m@RA_nc=p%(KW8^Q7Q=+aRwaB}v>}8P z*U=ht-ro}ke%VMJ;yUm8l-(JEi=d*r;8GopW;QmSqrtVru^aJh_g>0pJkgIblQs>s z`*rQ3-Uf7{pYrAgestc(>rf;{w_cNBi|8(wsx;kLez+=+AQ9vCKVpF~uRvR!KP=}z z9RI}my)=at2J8rZCBu^Xl-vKsa?YKCwPK{{3pNDpeH;>NpVyRb7}RY%D9VtmA|7C2 zxm{kRSRr;S_KJj9RXIjxt0Uc|8&2-;KDN)(p(bkchk2 zN3FHNJN9NcZ{ba;7&{!{g%&7sYSK=-XN&?>wU>pBZlklYjdMJ*Z*L#3lF zZk%&bPi!VV8GGCARhs&MIy687s4Vo<(I)zpCa4uq%ST)Qc(Sb+eVc!hMD-pUk>_61 z?ASoz10F^#>j&NxTBAd+&hq=D$8T?OZ>4TmSgsq38}ZzT&Y2vwXLa)KII-`?ny^jK z4QXTGJd`ra-Z^wu!#A$C_&@9-jPtL*9(GfBOuQD@ZKHFvP@T7SY2zAaCQYM)kJ>2} zks{Ep=X;I!zpx85?w8R!mFLbJh-eD{_QTMB9R6))=$5sQoEh#VVrH%Nz56Q%&g6;s$9D|VfLw8Arq$NUDZrxXZse^R*Fj)&t*(blIDh7P50`F-}8|O&V@8-h?c#H!{ zj=KZK3Y?f2fWp+qNr)Ow+CjT+X_4JII=c8nxq|9BH!0tb{(7A+BEQi zdgDbfnJH{bLl#R$!m)hROBS4VQ%UYUQh7P{r(EXi!VZ=iDyuZNuUO)sETf6Sl$gmBtDJ!^`Q}!mM0Zv`bfLXTN0&s+$2bk&B?cpUAG#( zdR_UQI&!oy?d+HhLb7~EgIhmObU&ZeuhK<}JXgp!K7YBo+#DJ%bW%-dK5f(t#-gBU z_0)8Nc<95T&RjN&JdQ8_Spo&OBDf>QJ`_swROE)jI)=y9<9St8Q!NqiS=d7nTS@gS ztP{t<4@|{Mg&BM*F2v2bY2XWW5i@`)6#t5S7~9yQM!k86YX z7h9v;csN-UF#C?fDUe7uGYqZqt<93_Cbd*}AWraGd-fMa@WGnt6Gh(;?8NP72CNxx zWaZRVjAu4QVooZI{p`5hV6O`Nw~vCfoMa(m5}Bb1Z=UMF%jqIS98jV*h3x?&bBddqpl(_S$EumE|igEzLS zg-eco(MVQ-iKfUiaAoP;Rt}C z)%-Ivyjpi66d@nWNKEh%)jIc^*lo71KYd1RdNhc;&s=GbUc6O)QJA_L82WzsO@aRh{R z_^Yef#zj*CT826caUaA%aeI2w5WLVeO27*+nGj7lvUy>dPx)c6+pFudH>7#}x6?>J zqw(1RI``uDaLu9=^i+j(o&K55U_x>!LbVC!8aAuw<^b(zV-Ik>$CXxK_^L_&ydTJXl?F+3 zpPUgrH>Q$Dy6@Y6Z#91-0l4in12rOF1-_ALTug{z;SFHMnlnD7S;P&cYHu}59aOzC z{Om}nj&I|+JKOqCcsfG+;UbeGU`*`IOK>mEvFtJaarjLawFUOv?(yaG)wt^+u`saa zx4UfZZ$wqx&$3kXe*f#ix)_U}9DAcAY{+k?Gf^4z`98jiQeW+?7{`Yi4igQUH)=2Y z$l_>HC9@eR8*zxMSmQ|dNp13fFpA^U!y!0T>SDP=5;3wu!=*0fKhz8SD0MLGYjsDjB3~x3ozv(Xp)n=;KxjUE$F=hYdAc?LL&pcw z-K#po?>*xTWJMTMx_M>v;HqQ(eW|KJSInk@Te{lswr4W|_L)xaHH227Nx_wUm&2Lc z_5!oeN-TW!`uG%q;9+#i`!Ek|R0R|RdyqM?sSX;dxUS%)>IyS{Xoz-@L-2q8`S5AC zOy35QM=Kq{2~l08b+)iKqNUR_873}7H_moE`?76LWiLUvFKR+{umJ3c_>)zB6|HBy zf>0Iu!@e`D=@iarim_v&sKBmXz%Z%-AU_MHLN?Z6r&85zNLysgK&{ATBb+7Z_@=AO zGH6LRMJqS=3Wz}^+kr=;Wwd5D(4k=@15|Ye28OH{fi@6S zbiCAHOkdqOkEmv8f)R;KcDsbrhk0F1E^51Afe9Xn{P86FJla*>5lM_cIt>Vt&1TTH z43KYs*!@E{^84<(kisoX9{gb1xVsUu(@A7dvuI&B#duPmnPxZ2d&z#pJK+YB{xDW) z(m!-TEAs`Z=`59TmisZ}ZT(US{~ruuF~xWl{dPFzy>eCY#CKopUwtmC2S{o-B6;Wq z=2x8(;2is-<|-Y(0OoAQ5!cZ@36a}Mp73HAljJMk&8y#vke%nU#^~Ry`GqZZBrX%# zX_GhT>O!zQ*|~b98#?IF)SXXq?Z**y`&)7gN9ZB^WJQVQ<}LFmf6|&Z$%FudvfNp> z@7542axih12>|B06}eq6$&5ri3KH4u6PVZ`#|MAFHs=~a4}EYl#h?xNx5MTB1rYu= zh0NWS|Aod~r69Y`7^x8k6dry6e**h8qLc~=OebC-P~pqw;BRYsMLSP6A(k#oB6*EjLYCtBY}MMg9$dS(41Xl!H%#RM(BMZYeb zDG4iJty(e)?!rXHwAUR|uMWKgRlPCPRV#V2yTYn%I>&46?aDam{_s8Wkcd?Qv#?_^ z(_dwy12Mt+ts~C(F4#8q)W4ce^$cBZ!4#acC?GMpFXg!#ayAAyN;!>$GD(8-@tCJTvXGTu$poO^V@Ew-@`*y z|3voX;+(%#h+)pmIiszH2qwUgsxt(AV?vc9WFxTmCla+RMVKbQ@>RrL(irwZ+#? zLbP@QA-6km@e=*l-~9!?vD$eDr*WWulqbXVM@##xX;Sp zwav?7CCNF5f?#~1^{RIt!fu($oHjr75B$!Jy7W@ejOcIMRQ3Jyzh>?Kd+2_X!quv= zi1j+}M7|soJ|h;lSfA9Vb>%MW2Kd8NZ84hrALXY#|mebl3_rylZKrZfT1YK-FfP{^lRqW!;0hghA>TjncEO8~g z!>rwVa_pY3;9umQF88=F*JzU4cad+M&*r{Aeu?Lax7}?gte`X;ydEJuXtvB9EM^qL zN1+i+MEhE{ur9G4Y;)q>hr(I=RuDP$9(8bV5cl#^qrNl53h#zydVCSFd?0qu`C$aiNfivRPnt0R>rt~DuLJ8rlyWq6l=I&zw)!` z%a2(9s_)E4a~7vI#3H=T-=RDl8AmbG9ix(8Jl(i}WrJRobuWM~uVdI@Qewm$4(4kY z+{(#H9Z_iEJV(%yzWXvW`d(R-lOcMVd3>tBD<1B5nz!gLDL&pGT6+yVE=fnM{&X?q zKFy~+FGtxa?AByUoBq3{A^A2?+j%{_cv%f_${2e3g|G3CR5=$p^kf9JOOZ+~gLx9^ zU*(LQx&IS!mLj0{*b$-LB5^SgSsQCuLPolj(6b4MSS?5~?;1WRb9=Y+`yA5Mq1zbc z9oup-g7f)!sCQN1DoiIY&meu${4$~&khTv}-g@5T8$8o9+Xbehoz@?#%?JFBAq=`ZO<= z(1P@@&V2s335_m$R{Vp%vR-b$_jV}j>mUL;nsda85p^o2 z16{T*U*DkHcRiLrEqO!oIcsvidQWuQCr=-qX$ClvbLK!-+t ziI4=t$t17uQp%cWrl>!6^ZHm2b<*{bBfXz~wR?5{zRe5sdu-2WeotLDCocOPzzF%b z>7q>7$>l3W_D1}|sg#aR_G=p0KGOl|Vhr%`-x}*T@%nsVyHD6|BTtuSka>$&_G=`S zSB^n3%_1v8Ssrh<;Mi|v2RnV~jj?*C~ThF&Uvg*tSnb_OP;cP5cp?n5i(6 zuM>a=7ewjP6MMOdK0Zj0WWc_#u%M5VU8i{I;4nhXgOY^sIWTiQ#0%bp!nfyL)y=-m z&QYVmAj6*suDkow<{*Y_bjUl*4kBdUN8Q#(8CjnC0fHoj#Nh(@SR-nXi=`Rz><=x1 z7^-uPJ(l+kfueu7%)-d+ukCjOI`N{!q`#iOQ_o8H{d*u{?~P$)xLHocC<7H2$SQlF zl&pi5aMt!xXI=k-#dT1FdO4Hi_>n&%EDX%`l0u@YQ7gem)+oDO(1n~}p6;CZ{J4Cz zb8w(EG-u#VKYi+}?BjV6bouIema_Kp8Z7q3$|^j9q&49jR~g}roTVFJTlQhL-+THr z(X()cwlMR7b-`iy?@k#vBdQ|3hmr$`0JpqpS38&N`C-0N7&fD?dR>je7%BD1AJSY` z-5qwz$GG4~|Gr*yizN;f7iO@?-J{4$){$^apJuqU7fWx6C70^$owpdS@;gk0GLm`= zT~}N_W8S2vf+eV*Kav@d_wrz9F(Z3hB?$c|Sa?0$tlsY_Pg^ZR}pp^f(XIUhD0$nxgOt4+*Csq>^lA21cbg z`!8YpZ9$OhrfF?>T1k}IvHfxC9tJWRwT<&m{qZkJ|HrEV0u(XB|6Jm6k81g^4*$b` zZZzH89d*VjQR702s_wrFGh7e&z{>^mjJQimQ8QS@aQjxL^EFVJtAmi{DlVJwuooJN?c zOe68)v{j>nV;Gng5B=GGBSkDyukIhk03`F`3A&kHu?g{J@OJdQLDERC!QQiwY8&jE zHzeW2*p#0vN>aeJ7l5I4IS5kf{jS4=-SRa|UF9nG7H*0B&dlVWKD0w&TLLhNr z|If(YL<5IbxNdT8Yy5psnkECCOY)MI3VS`6?sv1c?tUPAvF?O8Zn-Qwoy1ZiWT2se zkQ2=yI2K}sz!T%8Sj8Trtcgog0g79+37taw?~EN*GuD#r0^+<&P+v}v)Oe&*Aow2VYGk>x?(C%Y!lUG~HMEds;67@jNu zOmxY#?pn?sU>g()5>S}Gx$C+4KNWR~kcRa28Ao%bcU>6}gU~|!Gyjq`x1eD^h1vM) zOMYXEF4tT2x`dt|PL5|;zJP4k{&kL221VrpZrp06AZ&jZr>$WE4mZ=!&5%`B{990+ zk&MmY@kl6qj^2?z+;8?G25%Q2BourhPv^5_NbB(?0DJb`90EeMUv3k;fZ9HQZ@Es| zEu`-mq0&wwiYF!g<``Zu<~kbF4i0`o<+fkoJOkSC^&C@6lif}$0`Vn}8Nk(>fqmSK z}ghi~#l2hFa_Myni@E)P3MxcrrWwjL@~_?R%f`+`bJj`dy%z59Us`x)UY_I?Bxypz)c zz<0@vrV!CezhGiUhpw*;;-AXstx2Cu)Flx0Aep|W3p#VJ_^u#xgRW>pOvf_;oEHIQ z1#6PF6!hc$kf+KF>pDaO&>Gd4pxPZ{Qab?=M)dPcG@!-=LAV4PWbT_~u!~Q&1A`&X z3IODtKr1HLj)OI(eZIi`Iivd=2$k$dJeAWK{H^>HLH*;s7o4Z4;;)>cAO=w7SxBX96h!bE#9HdxC?*d|rp_lWIE6GF_~vsy~Qg%%j=dWLM%RE)vG5*PICo9aY$ z;Wg&H41``Lnv#tXeAMz+t+XgXc^qbF6gxnG1v&HlNC^)4FSOLGl_!tUU= ze@kfR;^v3Lqdr05Qfw0BXEGwKB6FHYr(T5pcy7Vh0!;aFT}zPx2X-S&o^n0bm&5;y zsnm+X&QT9L>%76~j~cA2b% zDqQC^AaT7-0vz-@esZ%ZSc6P%Z|HUFgVw$s)QUGrls_;z1khXxR<$^Pr#;OKc5ZId z?c}T@s8bg^(pRvkX8=)EO7ULWb2A zePPEfhq((7_}cdro1cis_CAH1QSX{Mx(&n9irV)Ag;@_Nmp7jTs5CY&cViD;1rt>| zLE`QhA~zH;SRt1kh+Ai@6;9nxzfh4Mue$J@*`{1$}+ z4eR3iWD8GAo}8;HHb+j4`KP*zb$|>Zd`r&AL4|Fel*B;ltxEuH2t3_OIDk@<5C__I zmh(m%kJ3x2K3ys^+}G)>22}pl5EBusuaHSNi$I6DEps3=K%VZhmwyJ_BL=p)#dzN0dFe3sSx=e5#(&r z+^DozNp;y{n#!RpO<&+ww7T=;{Ux_!5_=|EQ%~_0YmND>3-py%A8OjyycMRr*0l9j zf7;V}jri0D?4bbp(LqYOu23G{^ITVry(HW7?+bZ$P7!~?x%4r{Ul!4uNM*N$Swg$e z&3qIw&R;L0YQdi{#fd+a5%0Bs$N;aryvC{Zgc5?G+eCH1mEJq<*8Upmaro(r3By(J<&rH_ z?&Qi1v^@@uom_(xxUXGu6+WPV+|+S(aQP_>;;s$bsyQCD^3G&qUMzZhOv7_1w(Mi=o_BGxYhn!qnAxJ)SYNH0sYy$}y z9t-k-D9Z4!v+%?;$e!H*oBE1q?e`hy0H^1c=eg*CfF^nw)|R+?^QU_%YC7|+k6zBV zA^T*AHtv$j^Y{m3WIr-oB0kI`l*KWjAYEHl(h-Y|oo`-OUnR8uJsajE7b7^o0tV4! z&)wq0*p6qSe}lV*#CssUAyxEdEvN>#AU`?A=qbYW3rgp+=_P&}*Se-25>+s1%jHgWWK|gNF6)GFv*Ml;HKNanXh)_uu*0JDmARTuNT@mB5J^#VIwjCa{_W@|rLp}$Dv1g*GOf}PPmf2WYwkUlMJ6;f z_ru0oyYT^cJ>Y=5M2;J!9De_m0iw8Y^EfFb}4_#D@xAaa@=v~|G?i+%F*mX|bDXRKo444CsN7EtXD zcsznL^LX@Uz|U1J2OWG4U)#<;Fv&)WFFimakHR@y?bbq&43Zf;lqHKY#QHNlSD07F z(oVqms%g}$+7;2xK8MUnDoslu0%9NvrD63;3m_nawSOzuCF0D#J_OYb?1m@UH=besv-XR8pmo{GK5wmg4-N}(}_Ly3iR1fC-WbxcBN6h~EZ3?5)dg4GY&=JT_;I2sO;v{NlnT zPWOx?T?Af^3~6@FDPUn#M9>B74Qko-#rsK%{b}vN8@i}ivnYsBfl`|^2cWdkA(Fu! zCPuWe)n53KR1Y$^oCe%`l5G5QuG{aIPe!ton+|z|?H<&(+lBLBce_%EKR|8rh<6y~ zm!q@BNwxldiMK_%X>V`87&N_&6#Dr4Php1V{D+GB<;xnUPSJT=803xS-)11i&KzJ^ z<^As9wet+0`;5A2G+9Y*+hJWCkf&M3yrM?wvByi@v!1v~i=F}Xm~62(j8FmpP6XlG zJbd$!WP5C(i-~Z~SX{AF>gom1-F3+>-LQ69d^_a%_tKX|_5zJQ_+Z@V>td=bD_3_O} z@^;Lsz^QZXH_@k?O$IJWvn-TM!N;)np~9?@eUk&efv2I76b)Tu6Apcj_7NXS`}Vmn zK21lFEnAaO;;})vZ`3k<*54u0iR{c;rMO>qVRE`P8a;Nb^xh-c4FJ{HKWH4iBSo&TUA$)2?(`27RBGcn}D?@hfx-d#aSppLa)T%1y= zW!`|QOn|V2N$)iyl1(X|yV26A#yGNHzJF%eW191s249(T1gbeqfD>SQ@R8i^{R>?- zU^VmPzMX%np1|QbK?MqNTfIeh)w^+BS>1P&AR0~_FNRr)B2`pS!jR09g5}fG2krT8 z<#&AstK`WY5+g=gDW9%>RDJjHZbC&rHjrck97>3@@s*RlqE;}LW+BFX1WGK}_O7%X zh-_!|yI;o5D=HemSetSM`}pW)59yt*U`*#x2PkS^ZlRy=v6y6Y(kYvUK%bAPg21ZU z-V%nh{b+ixFhvM`nF)M3DrpUOY-~+oC*=^qse~cTLw|MGsXyD=G6)ub8~T5c#$B}h zZRv|3x0=qMGJf)Xd9$77i1jPp|H5vweKCwN(^|r;SD<4ECiq(u_P<}DoJ?ShrZs(o z&+A{$4z50%mGy&G-Xd71ORK*@vXo$(MUJ6C$K%4F<^sJsn%)}7x->s+pGlxDQwn()r4_mIl34^#Qikn;I4(SaZ zatnAsN{Q?nt^}=itbi+SBTh0ntgb%fL7oJe8Xx&JZ44ewqYm@~p%g{)t!AybC-6nHShT5F48Aw?_+97PXUZA0I~9#m>|ogmVdJ;F*Xj{o z(wP^CYyHUh1*)+FhG7p&xQ6Q~$#k;|_gDI#iYpS^ea|C&PyhCBL;A#ZRs%e)Z+C{p z+Hby603k*^*Y_vN>-;9}|CsS&z0r2%P9|jX*bA(inVF3-#`+&tZ?EPk^m!mvgiogI zO(5e`HSB@e#PKo{wAlC{XxrL(?^m2`$2snc4&?Z0u}uj+XaTp;Y_s-U=)t^KTLp-V zFn(X*VdlO+0K_sv5*>iuyhPYR`sQm{Rf7O|J{Q{z^A(LvyOaujZLP{Cl!BmaH?V-& zDX_^C%;oh3lO=!4J7j1xwRW?NA+_igqr~Sq zL%U$?)IOa6(PH+7`J%>gzPoR>xh*xB)1juYhTiC^76}8|wNm3RxA`M!g0K!nUR&F( zSfCPG*652ahtC?gG%V8@K$Wt!Ip?>h-isK@N-C|CpJjSx9W^AqoWVHjmsv3Ri80|6 zkTmaF9U~g2cun|mEYmC~qe>>=TjP~gW}??eNN+&uzPE?u!N!d@%O_uaU(y-;JF027 zB+-+l3I1d;8l}*sBm8eoMEzN(so#-Q{%>(GPElDs@ya=J+NC zL;B5xBW)ZY%`xw4Jf^w}9ZuX8jst3w?I&GvKr)L>5?j()96GsO@rLzftoK1oSgxuwjB`L?XNm}O{Y?aU?_U~1YsD;4ZOv{Orl~39 z2mn<103+jYBHq+6q5I2D4p(r8A>ZVveobu#IbvW$m|eR;)@A3e7>}tM8lw?lh6nO6 zB#tUtvG}*3%>j8cQyO%$49z}-`22xKV3ed*OyWo=xID0UC{jPWT558cri)5;B)Cjd z_RngXpFdm4@Ep3^x0%0xIFIxHpr$qsmKeG&XmPAh`9UtKlgRM0=4a8s17uYxq(0eX z(93maNNz@~EsWJ88&5h3x452dY`&Fs%@8>Z(XhH#XNoh*^|{gNZA2(F>jfW+(XhD_ zyI2&aUGa`-(rCV_UHn~ih1W+||EedU?w<{r8ySx1`Yz*5f=Kn2lYMQo#AfjY48t{B zzsm$ZE34s+bPC;C%ZOWsbpHz=shoNZ6$Y85mp=ZyoucJ=9_)7&W6P)#e?aM{Spd8V zFBksn1^h$tW9VduqG_be$Fn83+i$PcApY68Jq;UkvTj+zPK3xN=66p)$>pO_-^jyr zR5w~i0!lw4&-O(CF2g$EL+Od8-F@w`m-Ba#>YZ`BYI{S~xicYdq6elGLQ`A&6P5+{ zsq|U{Tg`By-muyJjQffnx+y_taR2n`gjLNg!!G{Q&*9mbCM(Ks_6r^T0~tby+}5)` zIgQmtjlB!a8;&)cOrls+JTiYMH{+TyASV6QJI;2}BO3}0M*gi!ZnK6iLou>LK!RNE z^l|F>HF#y`R%(T!9{_fe@x*O1iv%%nkVo&ZX$IVmqbPPdU!(lg{`(7U9R_BHw&7@mk?=mrr7AdxGQB@>sL&p0|DI4Q4#KO%xoUB&2##iwhxVv_U~ zbRBd#_Z3E?cB%TSHGd}(6K$mP*~Y6yU0UEZAyrRLRX?`WP*+}uSlSJ}Y(t2rp74>* zxH!x>0pnr6r(T8MP3Y;1-k3KS(dI)S)}OrEwPJp=Fb@p#!nROz%Gb`T_-Su@X%S`I zgCkMSN3_{r6dSEtLSqQK_40haHdF+TU{xS?0rWbX#UsAFTIyR{pac=**qthXn5m?> zJy2yok;n1p#a&5_@m+-ANj^lHCBz~9#WrOM_w#PxTk-%*+S2dp{0su+kpsE zQc2dY{mAluB_&_>@eh4KuZZ%ZY9N(!c#eS@PWpP?P(}sF%zf@;q|~gtKP4L+bmaBw zHpMR508oe!I~onm`o9=6;&0wZXVLN3VaFyi#quliB7tbU7s`!W|A;@K*HD3q$DXD0 z@&|)JmhjKf8y6RRgTs4h2xUf`XSg=Gf{5W|G3kL?xrL@s^BIC{h3w4T5&_QDre3&8 zT>pY*ni(j%cUf8iMKeu2SG+b;PcQ%1fWGQdT%FbNvNnCoubC>oGt4spPNlm^Jop3j zl}o(F9D+zxn)bvKq^^F-6*uXFzV?Z_0DYTF&t^v^z?i}Z!N2S@F*IC?OSkGE(d#}oQny;t|+xVy(+q*utF@(VAq&Y%zI`!c@xFB z0qCX}<*(@#{oKUlsdf#m)>29LUYU#yx8v)!jMToKqaLM_c^ydyRFaO)EVdEmtr(j_4cJ;IoYj`tmE~*61ngs{!~9s zr2>qpauWK9+E+!x3$}K4Ji_N+s;pmnFL&z~4%ob^nu>n#Fw0Gaq-@w$C7HGa*#-0k z5B%1peZ57=#-D<@vMss#$OaNu(w+G2m7|*QVwK^H{eDtaoPE)u#XeLx60sWK`FSEf zvRW6WV#3<+dxyqt|A;h#=Um8xpa+DY{j<&Z6lmm}4vkTkJ7rIcP-*+CB%m+@;-Ytuvld^Ecr?Z_nQB9K!tCE+D zcD@u-5-J zrDWW#fCttkGu#TUeSswWG?xo+`HHy(RIhT44+A$SU~t?(a|QhiEZT}}If-dl^_7Yg zzLR_Z^?oe~SAZ&VqJGu1Y{~cF2<4^sLQh!D3%HXSep>4-<;ph_j4Y=^Roa5z!+*_-;S>qOIX#mmB_2wS@B1BUJJC?_ zSk(O$WsAV%0QCsGbk-nEOH&ANdlXJknS!NA-Ik zvNENjGKpR{`;pG-eoEH3v73aLOGD2k2H41FN$(3L!I~WB=-iKU9%eFWwrCh)XFKf! z$$xU`Xw1rR-8>)GLx(C_ju^BJUCSS?HdY7h8&($9pUSpUQ}vqeD?}`oD18RKb{<-M zujZ{@W$vwqQY8*^wi|d~9WwiSZ7}c6l&9$`@@D$!6|MCp|62CC=8IeMgBf~~d}CH) zNqu`e9@mX4GPOHdq@G4rwHM-UYf;MHa9Z*?A1ry9?LMG!xtDoQ8C@-MXkv%pfpj0v zevZ0#GpfkhPW$y;ugnhEflixzDWWa0(tw>Y%jq|qm|&pwTAaFJ)jRyK_S#6p$cW=# z#cjfC;kDW;9-i7Q07MxgJd#j#!-7^*eLyk;s?UcPukAwt7f{dG!V={N$4KV zr~O3ZxK}dZ?B8~Gz zXS;HG=I`q6U>7o``8I21GSaE2dPUfSaeyC8to>p+O@i9oy zc593F(Mib3%S(90sZKSfR^q#25Mt=j7l)*KJ?G$E#`#m=KEF5 zH=CmPYLi7FS)G}(i=L}~TYwGXo)R{-`aJUT2G~@Nrh|wk=K`M-WhuS#K$HhZ3TQVe z{VDrm|NFVQqqqkAAOxxO|4}b*u>`dcZ$Q?l9Xb?^KfAExKwE<9%5jzG1~F_D?(8R8 za(477ucAZCxwW2XIwumiiUv!ZJA^LKv%3?5(d7c*3bBs%=y#%sT&UE@7}DX*ZLE0M zvF~m}gD04*DF^fDtr2hN)TfcF*Sz~|4&Lt|F<~_$P`uuMqJN5I8kPm>m+jT4@7}5= z(~TWunTXgRjy9b((^i>ZtIzw| zE{Df0!=o99tzG}jQ(r2%aI?V&bI=LL#Y<@LY2IzOcqq?sUBx}J!DU5e+5D{1|^_z>qy3BdmWJGNq zKW%F0E>HG?(5WtRIw1CAymA7&dl4Oyp4A+AHsft{1_W++{INDQKlkkxpS05_fHn4_hz%I`{+SR%wK40Gy(L?hE~xJ}YBKPt`- z&u1B)YJWX#l5lE1-aOpAxjX!`wCesPyj0Z?ECLjwxl?L3Qo8PuS*5$;oQI{4GbTB9 z)aeNY**^37eFlyG=;klnr|Jo){>gX)aW*F_q(*|l(mzgunisAZ$AZ!aH_GlCPw64V zPDDE?U1N03xJ*tEoNQqZP0b_Tr^sP{ZSp+?Pj_U2%KM^W!M7-S1cAH(M~`uVj+;FZ z1YgMd1-p(X8ZfyEt;%t4o3Z}O0-&vVhuRyOX>rVni+?|GENTBLCQBIcN7CfF4lfd$ zwi2W;rcw{-Z_hlvHh8B+5F8qD`r6UM#qS&HsX_f)z6UuA*iuW!cW+0yxk&rCBQex( z^hQ4-;>^gt{1!#IGw&hox|Co)&z+Mw#uKpG%GIS&=qNgjB{QhU~fiQiogi+m4g{&fn~S% zKytRdO_re*&zCYhKVo_z2j~0>;1P2+Lv_ZK{G^UzzQ^(%+TN>6r((+K>o@alnDc0e zcdv!^>V>|6alp>SsPHVxrFq0n=RH5)%^Lqs^L@QoxWc1uog7Zx#pzt zV~D7T562s*s)LBtz8Fy%+37csdCl8?1 z-L%Zv^!oY1=y8VmJ-nd(>4VA}AhUp>N4%P>d&;=rzlQujYQFpcDfy zUHEleKLLsdrkIX}dq$WUXauCAV88qaI-)WsW9_6y6@eZH;{YIKq3|TgTD0?j8+r%Y;8G#w3oA zfhYP~NrR}M=ySD=21o<1sJkwH2+#1`103d>;w!C;RV!Tu!{JXM-_1Jp+Q zQC!+jy2`OhSu}_;1^3W|cY}CHr|Q(-y8C}ASd^n$^Rs=6P8WsxbsP!Ij}3<_@`2kg z&u9{+)s0(Ul<5jo8F^pBxYc^O3P5Vz>Atu`{pVXr_3|EJs1fwy)3^*G?WOY;7i&>}DWM1)tcP z&X#v*n~-TCvY(@MT(tN($uedxk#wSkS&lh0rpOaRNYX+xW(-tYanEtlUaDE@8as|b zgk01M(=`zj?Fja2bz6Ta#F0vkCu&s?g3AUT%oJTP(iUA~cz+wLd0Yjr_;1n1P^FYA zr%JmV#APcWJMO#lAH4g_(E-Hw54Y@Kdc^cq+?e<0o!9LKqR;$C>+o3Q-D8P z_xZOmS&0Yf4oKf)Lx0%IkI6<1biqVZa27`H-y>(cIA-X>ai(5Ma8p~Qo=Fc3bD)82 ztD8V-U<;h3sh}@D>sn`lf?uvNq4-7Cl>xM^sNuSbD|Ju>%m}t$fO3v0kF!$n2dc?! z{ev6rL956{9v7Ek^vg>WcX$evkC!96U=NuxUF3%s(hdGMSG{IA(_%T@XPNF*wBbr4 z(SAfDvn<{kJ#7CX?CgUhXN)Ou^^fEvwCIMIv&P*?H6+> z8neD=XRaSC>76u6eETV(5a#vn)jTcBu%YMjw3GiotG4|HdCItwd0-i(S`g%u4cq0p z-KxLFzQH&s{h=Z|@85decbS4eNGMlv5)z!^{~(k`RXl>^veqrcJ%~!oT~BI+;z|lf zyRF=8->iE5W+8nHhLm>!q=$1OBU_Fnzxe%b|M~sPo1}ye7!GR&->2A-bm2)5B?ywI z_n)Yb)tC-oLR$zp1;*c&fvo2Tojg!rG=Ewi!BF?lF4gQPpjvzmcdckU(J~HgBhb|O zbTb<&rKyqZh?Cn{5NdYU?Yu6rDGoxe6g-8YbhxbJaLlGj+2#BZa&!J^h{U^(uUue^ z%yV~=fz(vreY9a+6d3tS>U`c3g&@+P#^_E3^VE)GA0qdY5oH#mD&WF z(#!0rpqFEG*BFRmUenIMB``XFn;=K7>BI+8X(0#LJ_dmMBsy5xKtJVA9=89;QV~*k zrF-C)J$#A)6HP>l919^@ECJ1Bqo}$0%guwBoNa7bzM_hh-lty>MIr0K_*hfX0&crp zh^D`*4FFA5bkn}cw6tb@KVoF5?rYKSzzv(w!hmqV za4urdEb1$LG z>Cepwsfy<1@wGj2+mBa=obbz8<2cllb{Gf*0*^bDI9JpGGM$pgqP?InysA4tN7dLB zue_urUVO=^_4mz2_}~FF)A%_wE#h2NVi30{VnQDWK~#`h!XFxca5;VwT4#!yvz>_h zvBvcbKDYU-eEj=SVBR%qSqeyCP55v&z2u0cc?EyZKmy%ntQEt0%$Au&4TS@9h0YVO zp?*dARe?}~z*>~EGl@!@BS{KJcn;+737Iie}}^qU9X* zod%iKoh2an@A#e9QTQ)8Z+p%@9eWp-l*9%+-jhY!?Od)0oJ9&fa19O&#QU81t1&!Z zeH4CvI3EGalT(Xix6N(w+xo{IR5T5Z90920>Q6*$m+fCHOLsn%?dd zv*fwT2Mo}0HNgI87T%-5?+V*v?Ee53wLpW_nK($}el`_y43Kcj~^J9R_}J?1fn#CGiRFaR47M;yYEr z^$r`&>{;NPp<`-&Y9}wT%_|No zf%g7!>hwq!l*Fh^RkOOGd;Ij3_Yn2N$p!M;c>9T4S~+5^{BNtw=HzQk_x@bT#D|NB z{)p!s3R*Ig?v=B5G%IhY1kmW(&r3ShKXJ12sTKLvM&-~Q?x=$_5t76DWSCjlqL=Vi z2cMPhYOwu7eOTRu6bc@^l zJ18xAEuKVN^oNip1{~1L_ZMNTzQ9TG0=6Z4_Oe&vOIRv9%BZ}KPK$BSPBB|hG`%lF+S<;eX3 z$7Y4$m}jqNc?v7ro(k;hZ;8%&cd~}S_b0?GDs(>h$=61-$bLI(QBa$+SoC{y+Z#`H zPL#m*&G|q0hjypEN~d~ms|2b{dk+Z1{zrZLIw>lCGvBqHvrC$N1%=WW;?AAlQHocQ zm_8@Hm6rR=SUo-?w@V+Q(j_dvUlA-BOMMF(LVh>FjaOLxy5mf=C*LqyD>I-+<)zFg z0VhKP6ROAPBE>HHs_^yh?$^lHf%KnZE#!ZDNKQ5qNg$s^?Y}?CQ)AEv0GoFz1Fs|k zM;(z35VN75b8L^%6?~tXP>qnetZWT1e~lq;{mJvsrsk;1*{3`RMp|N8-dv$C0Vb*7 z&~zO}38X+StmpHXk&!p~j_9Pz=n;DYMJCQqN2;#TiACOYK93~gw>o=1x5 zjfribHLZ<_Y^8Xv$VWzQd?avL_!!Qvq~3IdiWO~e!G{yf#c>L)Bm&F#q^L?D&{MaV zSK^`DC1VP7P4)$F<=jJ&pb?Ewxr<`-GY&3vSa9a)Ln3X8rN+e*$2Sy@z{^l}=e;im zB14b5xw~vVatdsU&R))xiDUtWEwbQe>JGi zR6KO%sFi7|v~RbHp!I=&eHDeN`Z3dvCjwLXe9>Av%TN~vS|MUPUHd3-%H;XIfs?I0scw#KeGKM~QQ&w*3uh`f>de_y=jZ zjf6U4e}>rtM*Yt~c@j>Omy1s%v$LBk9Yu{|k?o->z_jR3K1I;9*4+eE!qAf5F}%{9 zwWiRq)Hb;6Bp>RR3soNQu~kw0V{QpYydL!Gg>=ES|pWOP^?^};Vi*~pr1S@Joh~}L#Fq;t;Wo1PDDXi1?cLf&bX3^dRJdkpFFrFI9 zpeCrxar-16h?e;^n}4^LE;K+!BKd{@(^ag0EM~2jzIR)uYWd+OQ)#%i-spof+xzwV zK5uU|ta+!uI>s3Y!rmcn$32Q=Zex9-JXoI|}bwlzE|PSC$i{$?faX?tAC;?Oc}aE=!ie|fa}J;XkSK;CPo zev$q!?4;1a>(L#Nvb?B>>zTo$^V-BW%PO_c%;4P%f*eXz>B5c!O@HZuXPef`X4M`|nmt19c-@$KxowZ&XyX+k z87OpmwW+@{(xivHM3)b*%_L}yOt-5Jsz~Q0968Zb^=9bJlDM{O`!Z77@&ZeY!o>|x zFSJMttCA4f4e!cq<6Q|nX1BZdGlx^=E^#E>r=|<{dHiOKP~Ozy05NX%>`?cuEx68~e+#R=vfCMH9JhcMR~HGXy=O<+WO>@T7PKF? z0Dy}DG}!3lCP9K!<_O`L8zDJ0PXC=}#vsYT;k?Vid(}bZCXI{?x2iH9d27ejevE0ie0e&D32mkweXsf5ZJ+bO%s3#14a8 zr#I~bM+SkD^Z@P{Vq6{eMfK>H0|d7s0&0cZ*WH4rQZKthWS(@Sq`Ert?S7-21(KLq z%6K#C7*5gIw!LbnIbmiy`DVb{rx%rg&$2}Il>O`;qw;YE6i>ipj2^UfwrE>2PBi#Wn$#;LLX+YN5Ew2D}rP`i8Yyue_f&pg+bp`?Yh8$ag=0P;mK$rA#h3HCAc|)?lmf z*+h9Q_G{~Y{>j=QJt)RNUtGs|9^vE-H1j!mr&W*b5POQhdteZ^0Z9i4zt;%0r<)l6 z^@5;8*d^5#GZ+WWRLh|hPE@ns9lMXa0pvK-|*9A&{b3JykG#H6J5I&>4|#zF9SdRo`I zSwwe(wNBK4p}VviS}2jCYb4vVz#>%Ppybb_OtC7ToVQH#dI?e!rQ*(a&2s#ISpfQ+ zoc_`2AGWE{pvWcYNDWomK?K*-?feivT#xB%O3ivJ|CsMIX ztjJp)c5$IoNe9!P#eaiP##O17cfW>WCL7(doqykdw<#`K#9B4<{il&w)tO|VaPbH$ z^xbwFJDuqK@7H@@ztfl4W!Z0dMhkdmfl=>d$`l1(}QeUs| z#lZs=1;fL9rJu5hq>4`Yh{Z)CCG{TACPvOc=?f%`BRFS29`6YNf&P~S)1J0zjYQ5L z|7F+xMag0S-?;B4AuSCcC-y}0q4mG;8W6}_w#e+Ft}astrF$Wd6ekIeP|9#rwf|MR z7;FdEZM#=;+y44hL>=#i#1>~;>neR`hY(z|AnM75O98Pc$Dv}6)m}>U%{1Zg&QUQp zZHeHZ(&V&&Opb~ngyuCm(TyZ<(=kdE|2hsLe_hB#!(P6kCu#f;@fhMBsHE#Nr%yss zwzu}wbDn#D=!O1QhsU&O?xJ4@Q&B&Eu|v&FOeT3Pw(gK1?iS7 z%_MedD@2xue55TDvgs9QZ{)N5EoL!yn39p1y_{FS1NS}0!7_um{aW)_w%QE`S1Ozjby7;7SH*5ydHf8Tc6T4|us^GgZ3D8C@4A3{qtKjdZ|@5T5xgy>Wt@2(&~#yKLQVyrVx z3WE9~y`aigM51M4B7GB1ie`y7g()((%iEXVd~k{4hJ-Fo*ZPVqWm3`rDeo6;)Y})% z$-;A}X>Xvyx+x6Fd8lh#I>kn%;KH@%`}-LvW~dZ}7S5=Um%8LTWBu)j8hR(k@-PF zW7Z$ZFKMbLFCQj)J5^hA7@F_Ww-<*6a_)QpJaE#u*eJg~QmX+)&Q|lMtSI^CtBvs3 z%ozI%Btr`a{&t-%Pvhqmrj`~ly8WO12(vG9d97)wR9fs*U@kT#_?E6K&>!M6%i+yNpnzzeu9 zU*bJ7YFZN{9(IL^v6iz(xQq$!xJ`VTSz2%>hc}u<#=q)2W&)yGgOyT+B+2#-W$xuKphw&!@Uu)7&5;dHh!YrF?9L~1mCK1h&~&DDei}WJ90<0 z0Cr}*!0Uf8fBe}Kp;X>#DA*L#9bR>xqNxn~Rb&GEo1TEFo>(3h-zgO$m-ACntJ1(> zEgyqrYimonVTq;5>-Jw9ASNEVJ*ZDWPsFxS)j3QD3t9GvVMVOf0+8<`+q|9o;2^EGdGEWaT_!G6V zo`a)%ScR5$AnfYaJEq<$!xWWls7!IeOYKMus&f4(EsrtNCIOjT)v z#slU4vVqtrdN9f8V+BZ|OrY>#9A+BgO8lo7O|fl{&h14L-#f_#D-}vRgLYjNEy`$$OVE{ntXf%GkH2uTKWC z?8jNeg&?KQRB59H!b-rt`BU3GT{6{-2?5%BR=*bnf^C*Yvd`>FD8D5vC?006?11$| zetF$A(n1g?Z=kC*7vU;ay9itM(4}4kPg$VOoX}<<1bne^-CW{JwungGULwGkd_on3 zAjFyWp#M+VfCJqa`+U;KxDEAn3X+r`(sNAfZCGOhu=DKTJ#Do#54{pjcs5kJXapKn zqvBuQ(*7a6BR_oa=PbtKl(G7mS?$An+lx6}f}B2mpRGh_LrSi6?%z)jAC9{&g2Z{V z;nKOc*3`TBDE^2yS2w_Oc1!>I0Y4C{XXqqUdYSHW=h^*bwh$txJT!4%^!B6;*wGC9 zYeYyp|M{gP|Nq{JfJkLA^xgi(f8iGfZhzi6%!6=gbyLkP_1|(sz-kCNh!mZPNb(

    s;UiZxubtJskxNG{jD5PrFXgfsq_n@ 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ŧf@UD|v#Y^$&DL9dv5j==`+j32$ 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

    -=EFeJ^cWEGM;h;8Ulc&5 zcoiEY1fPdDFX?W+$;hjfpNsjq2^8)eUirp%q4t}>@9{=plXMdoei__wEI@yE5mJ^2 zS2YFo3Os+?8d9K#W&VAa)X7I|dwjp#DX(AzaN>?DR~S-A)BX&ucMyN)J4I|GK))m? zew;Khd4zlST?6W^sJ055bi`dKJ2F!@%XYDAoJXEJ{%Zn=`RENXXc_Cu6#G7wa55MM|VZ_cgI<1NL`G#^o8~atvy!(*KYYL!)2&(;o>yzn`KxzX{|xy!`{QGbY_$)V+#d>C-X%E| z8buXaI2bNC&*=Wy$5@Vwp*NnPVS;CYnS`z-$0VoUMA_D-5vkaohSpXXS?HmmQFMKl7urH@;lL~gS^cVF!Wec8Hpv0 zN_fFZ<3XfPLC9I?vL{59w4;O52cN@k!TrCzv5}X@Q-_SsgW}B59q|9{a@T#@_@ia? zj!P8ohdckJ2qdx}Uv-%f!>X?rLdJQpqVQ>1{~yWik?Q~Z6VT)O>Izj}^J!y@0KN|X z4JjWN!SJgojeHvY$OF2>Px{aN$i#e-$9ib|XmKCd?};YS(6Z^-Lh+E_EoPfb9;(kH zJ>^1esr`MUV6sBX>u{T>{SSnJ%1wU^}jcNk>4${8))HfA>xR6{s~yc$L!?|KXk@RRQT;$ewt^#=+jUjiMI5gxgBUQ&=_R>T9wA7+ZP;X_Fcq1vGJErij( z#DrdBD+92UsAwLZs?JNr{@?G<@b{A)AZjgiRLKxIS@@>X1JqhUR7j({LX`N+S`OU@+>Ea9x*HjERvCA*KUy8afxh1z@+Vo3 z8Aggw>%%M5e7Nn*C+h7S=j%()`Sk$r*%THs3`T;-*i zNEuT{v4ULG3-0Wg|NDcG@q%qv`k=cEoNL%)d zY2S&NQv*PELyADes*n4Oeu73QtW04ZksWLv0j1}hdNX@ewGv21eD1EjP4m+8_d#P@WKw%Dxe%uU^?eAc?N47?WH_VT_0#oG6Fh^j?GhFZ z7tdanuoYbBz>N-iIKvN|Y`dcn%<{iplKv_sIuh}pQxr(!I&y-nT7n~*F^zU3A~kH_ zhIX@bKsx7Zp%YCf_A^c&lUD$c$M7q3!sV)6cVZYKF11D1&%a5Af{eT!h`|{Lk0+++ zCw;2(h8&wY9|BPZcbe8%*V`|KdFYnldHIl$N5!Z7)8V+XQ}Q$-0#hmkqXMn^$mrmw zx+Q$?Qg&R(L!3#K#MwsBbe&g&Eo2`K^|*jXEtt|b>ohycQH|c#TJ455AR0vU?ZnrO z;b|XmG|4F)XRCefVE6ly1j~dEodqX43ynvP_Q<8fLy^bTJ=nEyp4;2^EPl-d1DtRI zh`}3G;ayO4ZPx#5Yu6(7%NbX7+$3~8?QreVP7P4`t$+&#+lG+24!OCRsrB;mJuUN| zoI7!%!hM)7bo_m~B^?PbJ`R0kXo2b%xMH_IQ(Sx<#Gn(5AkWZNCU2SS@!U}2SfgQ? z#rOyGG`V_*MYlbYvA#U3&6Oc>gb?{{_3-B~Tr}Iws9fZ1d}zMNPm?_h6BWTw_ZN7_ zmCW_y0#Ea0+bjMt896S;=VEAA@EY#MH(y)=vw&kZ*;8yYyW0`u;ru8d)m^ZWWUI)B zIb8?sw|cB&Ph@g-mBr>cfJdMi!mPGc(QjUr)s7D2C0X(8-E1*;rrh4Z`f)hp0GefD z!86HSExO@1miVK{!m?^;X3Zy(!<@m&D?m-%fNlh8V80tC`rFlTJ45gT;A!XZhsD#1 zGM6mEJ-`L&EoyN6IPbe;7O#a%_vrTLPvf&dsrQq5as8weGU7~Gj_oU7jbw=SZ})CR zz{;Y3C6o-skx(};LO)n?5_r0Ol+?AllE3T?B$l!S*F4kqV8srWNL;ccEf zb3L9o<<~2hB|XTm_DjHcyDgg$w<3+6OpEOknVjcztO$=le~@YgEmqwVx5AWx6b%@; zpI~)vW6~G9k;%wlkxJ}+Cy?=+&(k}Hi1xFz!9pF{nZ4LX@c4V7Za8Q5V(zEl4t%&P z`QJZ#ldkr@gbs_%y8~p-FdWz`;l;Le!DRtVgSvY^*N*AqpuzKdged*z3{>1+qJPVV zq7OcQL@rESS~BoD5n*zGq~t$vfqDWj<^j!I-o4x2Wm3$9PsCaMQ}A_eaxC~zV)XsM zLg(SR$a%G4Ue51z(BUWF7}%QO4)yWWC5_zY?!{7kre!cHTzq_8b-R=Pj-gcjvJir{b4d)KDO05<_8N^Sv+ z(t1^){q3?VH>O5Gx3#!(UxUKVJhgtM!?%fSv7)IG%+tIq=MWf$UJ0Y`z;;ipzm!{U z{q>=9{E}DvoRF`$3e7|_I`4bcxD+&`GU&>dIdo%S-HXAKGfso!&WXBV=n{DICF8ta zQ86d_wZ}+v7mpH=+T}fWpKoW%Rb34S*R{F`W-7v30LBd#Ga-Pxk=Ks$eh?t{YwV%i zSShz{-$(ivYHfB$aF(5aZL*mu$?iqjV?t-8#euje+cEPPAMeYPe0*z)Njg85iAwcN z@imtO`^B9RUN*E#^7k~Yxbx0;gilC^kj{eE`;1~R1!mLv_PZGG==`%@0YgJ75nSuAJJSFxOp?) z_Je12pdxE{>7B}5v$Hs)2F0tc`i0Iv9q`hdB!6@NmN0Z5Qft}Ik5rVX?0opP`0ZCk z{{ojN(RZv2k&}_ry~vMWKKrK{SN*-~#Dzu*;4k=zlSr#o!B@+{2ImdpYpJWUbIv}# zrIQky>hA%K94(y%eHok4)bzWX$eE^=~=yB_})0zK{_KQ$8&F&cCZ6mpJ z#k*N`6~gas@RRj_3i(v1yuP47dd|oXVr^%a+;w4EuKz#dK@KSZL~pr2PtU8TzFO|9 zZdwSFJcV8WtCsj95>b_DGB5v(2m8UlzYy6Fu`2b{rj^LTzF0NQ7Nag7c6I6RtREXe}D)HUh z%n()T!ZQ)?+m_|}`+Ry%K+^ZIZ9R4|?)nCYQcG~x@BpOLQnxj z=JlxHZ(w6)U|}~g02~xj;rn3Zx-qtL`p<}tq1m7wQ~k<7&IS)gM>XZJMgDtgkB=nU zmHl^Eb@C0^^3wtzUu(e&wqQm(Y6K+pmfS*t*}0+u+g(fmK6g!64I9GyI(q`%&hEgi zT3{rQJKg0eNT}3#0pI;7h_BcIez(jWQfK|`G{GvzSM6rW1&8jF7<-*$rT=PNEJn<) z&|5E?l&YNZ#Brv~Plf`8T@Di^K;w)|yo>2+?bgpqP53kL^YJ;Kpx2Db*Ux;o3qL=Z z*(5DgU@xUC`5#$CoTTcD54-85-ALo?=|hwOX4(A$Qi9C~9)#t;a7EV_Cf`uo)DTOT zw?v81YuU$c?Vxq`x091h1x%8sNhhp{yU6`LEI8yw5qctn61SGoVf8o6W1h%*8790V z)Vq14^yc`xF0R@HDL{vF?tn5h`98?oqR5&WsLZuM?tS4&=OJQT+R%45c_|OBOo%wWzA44M)$&pWJkPAD*^%^VT*q675ICC#9J5ZRGJ%vE)V0wlcn5I&*H*l~ z>*<;Kd@C)b>bW7vI{sC~iy=vNp6?J1+cgmQ>96X8#l;R6^n@eV$K_5!jgl+LNHL=> z{Qpci34^nceR#QienkK5C^Vukf}mgIarL5gwwCYRIh)=tSYV(h?okuAxpjOM6rNr* z(C^VdkNo|KtK-;N$1f;aQQ!1x$Ylr^O{0R1Hx}UWL%Zucz6DYf%RSBDAc2VKi?pNT zmW!L1Kp9Zlz5#DDrmB&=ia6ujJ~URUImy0z05;wP*xy0u}?LG4AjufgnsR%ivuiL6&YM=6b{Br_>LU32tMRL{PXITou ztB*T4|NB7Vhl~cu0_b}65o!(E(ECLv>C{>y<$QsaiCK?oKeOR-VO(*;XTUvFah}y zk@KMRIf)wmvEjg+I{?t1;A^UH0_uT+Z*eSr_C=3Of}bp2s~_C89+5<$F#k~J_*bgs zq;VN9jRmclJ~<(nBq%<9p%kq`d;t~bJCh@(xeBkC-&ZoQTT}L$jiZHKG2ZqgdSRc)il95)dMP(1zq_2M%Ly_!an5 z0CpTb1uK2&4C6HfhJ$25>tL=@>xlUUBaH#sSrrTfV1@i`F%B3+6ZvC)LGl%C5XWvH zr>ZrgqZbS>sCq?9^r(bH1cpk-(R9ZC`&)3vK;y}Zi%J!!+>&dMK|bO0YIHM>s9Tjk zeET?l+0l|N4Wg%~2hvKBkdtX36CMzK$e1f>tf<&Ll2QGNIGe&0hA>u`PrC%?piiPU z@-5^y`eO$2Q{$qkQzL?gD4h5Hb{J(pzN+1>sB5Cw&FfVdRrDR!H+2eYwz;2l{2E{E zl2TEl2Ifq(gV4jq#IEHgt;DA6(Qg7Fh+gralgY}B&rwWBA3;~WOJ-UAI8sL;IQIu^ zHmq~S8zT#-yL?C&%or3?88N_`NtJ}BDK}f3BUa0TNsD8yu5RVfLtd3Ty#A!X)ieDo zoY(XVvvQm(Dv6vxZuG$qQV>j0I7<1~cVBe4C^kU%jex*X{=#!-JPVj!5o>if`xq{` zK^ld|Wx54-a=T1OP(nwB9gj)EIeZr?ki{^O$p|U&RxCW%^q$dN<*a9)+y)C?>ACyf znZptHfqBGBZU@V`SRViVvk@>niAqN?lWQ za~h?hRAMHTVMPG+ey}4*!;EfnN}F8Ph_uW2^0F4SXh8WSH_ zaye@lA;zb1t=mDq)>T7krn%nTsiZhOMx~scl&`&S!^MnF-t6Tnuq+PRxh-F zQ>m@o&M8N zEQL%LEwfe}MdJm9w-%iAc}lyHZiIol1<)r7qe%8@2oH?fj@Ne%*vML6x#JRMVkRCT zw1fH9J3i3U#j@n3&-ije7AnLiC5yBg+c2`A0KQ{&G{54vpjxmh>*{r^!6-g+n=MjC zXN{ujOC8I!g49_p$IDV$ACVks(A;011z`_ws=20Xvm(1E9Zx0BTEr}%Y<_hWa_f}N zV!@@mq`DB9ov|?4|HLdXD<0X5NTy>MT`N=nB1QdSF`VQ~_cvkbJ2%UrW*ynyNg9!2 zJ_K7aclL&f&BbFB5)aJH@>~A;$VzUjJdE)$qtYN-H7l9gmU5OS>HX1#F1U(kb~j1z zGprEPiO*r)1?OA|BB#zGAxEKgL}W`JwP$DxG)|bmSV#I+%Q#z+$G%FWLwz3(7DYJt zy#FjUxStO(wTW%Nir=pMc8om5$1bEW70-z+Hzk%tONlTt5evQHw#XaMRT(7nEFO;} z{rK%Q|E{8BfU|RlNaWJ!r7t>LpU-*RlE5{`4W?~+MA~9T6;5ZW>PzVlk*cDz+L$pe z(lWHh>doMhv;B+t7Z8&|K+QVB`b3x(KUF&RERz4*)U zniYjv>hk&PA9#Sl6D(ALA# zuSP0{<=$v}pch?;fBPvem2gCbhRV^^b)`8sOaGV8zm!)@=g+{iDNFc&pgneo=yLv( zch@TB8vpKvleExLpjW(&oH$M`>oA6kVt5X_6_L)g)rD^aEPuGH68MrDv`jek1+3#t z6M2z8C`M20_{B;O3H%oH^Cx5{CsDTdyQ!yn)UUFdwVhOA_?*hVG*#mWSJ&t}$lc%2 zWzRh$ZaO9h4B4l4@iY-zk@C{AK?dju1}aYT;$)+|UcEE?j?kdFPLj=CuW;R%N(P6X z+1x?LoaQ*k^BX>YzjeP~q~K1^UtZ+Z(d}%zS}jh16MqMRM&+e;gGb)yin1Ewa-FTt zRi)%>9EoFN^ZP7KAjZ*KCfk1(;zx(y8g`4*PqqEgK>-N1XxtN2iPScLQRK(N<1&;? zyS_EcdaULuZ=I?UGPC0o4kh=iDTn$tw*!;Ht!1n8WX}|A08RDERvI@2U53_fw~^Uh7`4oBRCu2CLjHIlEKr ziI_=;NkI);5W@0t)yrX3R2_YC%C3OOZTsc1zZUt1bKXEdlO+smiiNs;f42O7k&AC| zHFrjO4rGIUXJ%6()S(u?W->ELxc*`f47`sslUp9Q>9_q3@&#OfEBT{$dxZJB*)>+N zr0Q|JYni3QXA=4S>yra33WaMm*(tYiG=ngtyKima}QSp&dROzRQ~ue!oa72ej+y1Z(Ji0_{kSZsw_ zgO$500EG&oG|Q1)dC)py%NO&-oW!}hiixp@EFB8I3-{Ce3CtI?*)JbG`|s0GGBMa2 z%OJmrD#;z6;%SwECji!pUxIoKP@UICnt?I^I6c&UYb1^Bq1wEOJ;gtnI?ky`1z<3b zup+SRR-t3Jdefkvgzt081vJm((0#XWi_J^CKDcKg>I~I6dlB~+&%MPx z@mnFmC$`Gw--b7}sY-e+F#9!i?zzX<}sY?Pm zoMGH$G`cbdy-=K99R(FzKf)1SNm-J3y_9H!)`s415_jFLZ%h6hdlLGz5sS@sa&+Xv zB`7Q+a?*?j_r?+EfSEINaAHSY*AxfZfwP>5$qe>k~U?PrsjF&axuU1k8a z3t|#Wu{xo)E*fekPHUmvTobkOM^&}!pdb_M4%loMlYVQga2f#&=6E>2uOdd=5RIhv0YhmZi3u9o7)v%sqvc3gm>8OsQMm$$%#AG z5xI)R%Evw&c@KU-)@a#hM17rouBsZIItxAv!mD zkZ92K4YO`1jWaVc@f z2W6JDTKlB3sw%hVNW#s~y~Z0|JA;!bJ?KT3Sxoo@;LQNI8=GC&8vD1l1|sUmssl6h zc2=-6Iw0JDS^zHg?@xVu z4r;z#)~kGjbD~g}yM@WSfaI6me{Cn3S_Wnd`2B?5q*d>U7L&uTkpx0o|8)(rC5QYv}1G!BTo=bi0dROm zeR>nsOWl+;_01T3lG05oa}aGghaBH#w!<;pkN>vV8>r99T2m8AU#bn%p}m5 zmT8-iRTN4;%j<}l@K(N(4yXyJ5xtUvy#W)`2lj73L3n+5UCFM)Pm`2x(%~yGH#t_# zz;CuIgVF#}JcoO2Tw~xXb^y~Ix7wK|UR>k@P*e)6b=aHm4++sUMh!6ReLB{U)XbzI zCm?(4zsB=p!3%Gt5>pO5u@z*5X99!}b}J{z#rnpn<^+bRq71&_MeoM?qmod1FZkLw zXN`VXQe&(DAmH}hCJIFQCSHSIhG@6Mc%ONr7RO0Hux74-0Ug7n^$;yEhDuWCArsse0DpOw0a8*a4cd8&(G2BIQJ-hW%_N3x2+ z64Sp3X7O}}{+&DY69=9Qo>GTum$Ogem~kOwb7D}unWSkf4zO$1lN8x9M)u2&bBz`2 z&IzH`3e-kj!>{v>f(iin3ZK%9`vHP#FFGf@jU*&8)pAeL-&E+tl*U*t@KoO;jp7Ht zS?wt)fnl(e*3U8flRnv@i?gLU4a?-Q?Gv0Uf6JLn)`> z7;+7?r9+yNz6k{M=WvLGaK!$(eEzjj$3l_`FSDjQg=~o4AzxKtnk#G=EcM9zm?L=T zZATC_{bx4G+s{b#2J|Q20Yr#568x078}5r{jEBH{hwGioO_}8`x#T>cRndtRSB502I9(xaeX|vQU#QezaFNGtsc@Wp1ga0HhqoON~9GX@j zO&vR4Y{YUA^sb0wgnP&W!VF};U0*7SI`h-a1<_ZQ|0_s->a&OM$e1Kj4xk4zEk+OIs! zLU!;BoRSVp%&dW>54T8Cm;uFcZ^VTyq2DWE33pz`wq=k`|LERj z9@1(VBxv-#SipuWsp5XSj1$dK(2cI{3d4nu#N8Iv>%!VqvEZVt_{E!ByY$QwlJ?bk zi{nbps<424L_!XPJt9o3Z0Sm#Ffm_(wgJ&zPEh{D(jKo0O*NA^N(SSI6riOiSJ>V;bY;^raa|WLdcdWKJV+KQYV9EbqKn;Q>xd~;6DA9*hyavLm5N_ zYu}V(PW>>D1zfg|>C4o3gK<2bs3LyQN#=W4R&uvW8_XcH6>T2*I`gryz6Vlx3Qz&rL*3Iwm8DEIlM-Bb$pBA z1ZNpeG;A*g6$^$4t91RAtD)njPaf!lj13c}F=sn0rOcf<+NllWOOXbwvIhMfGC074=-kFGO*3Y0T4gE5D{`NR6E0J-4HescbutZFY zu*v62jo4YtG4A0?BlmUdX9qIxPFIp&K7~1~)$|qbg05F@fBmPX!0fDf)%QL&R^on; z63|eGrCjBSWJ0B{Ka1FG!qfejoanXa+1OkWu9}4GBK zx1Y;AE_Xfa-EPHZI~8}_xcTX@?tQWi)u7Z$e{#-I>cn^o845>BJyK6ot!M4k#I5re6?`Bcz8}3Pd}Q^U!6u(qH9{pSk_G*o z`}0TJ%A1E@L5xW-nq1krHWFO19r#|(mz_4V9GOc zXu72ME{clKpUQ{1@XB8#2)56sob+9S zPDKC7M?VYFQHPHX3|28bRjW2Cx16Gy_AS@$N5}hVLXb$AJ?IOmgukWSD3DwJA zDz#XaCy_@HKvp&uo9#03~GMJjd5gks@3r?ZQGSi>e6AEL(z9ZDXN9K6qZOLj#@qYmOlSD&|G$#>%v=+x)sf< zVJ?3P=%R7s*LgJWYW$~M*Uwn@|8ez}QBl5O+wU-R zr*w))w{*+^(j5|#4yly1^bpdGO2eQ?NXXC~O2beh42^U*L&Ki`^Stj~YwvG!ulai4 z>$=YKIF8@(`PKpOGVVMnS52$TJ@os}?Um8Mgn2b$l;GN*s|)6K3CuZxx!wxrhfFjY zvY=Wp^m^F-<$c>8WAOO|O3*N4S?D<+3-DS$op|s0!NSkB|1LT&KB0PV8Q*PL9-BEk zF?e22hJ;*4;fhEe%N|C|ai7^=$>k=F1^vqcD>KaXSA=@y@tc|1GS!Nfa;?m^RaHDD zntAmX5hoMPZ-dkMkv=dXll z^XC;E-7f!z*f?+7tZf#O7jZ{KB3}Qn=^vEHqb(?{W^f|SY59HX!c6@>sAb&c>kz? za^n&N3F-@)j9y-X7#lh_1Uw$t8jPez>yeyEuaeYex2T&}6Ue7N@g#7URjXo z6k3ZV>s)a^yW@oZ9+S-vvu@qAmqyIFI{|ds|&7V$l+ z7j6iz2C4SQ&*APvm@~mrvDo9Y)4QG}%|hnY2B+sFk}J@mXR*!e@(0>IsdrpB-A3Oa zjCKnEJL)9%e>*}yxk;dzqTI$2<&E`Yy_IEmheYq@3hbnX1a8!uxn&iDn5B#M36J`N552#whL#Y;G&Ey31uia(dX*fvNazs-7!%yOLF9*DWWmwBvu zYK+h~=Y{qX8D+P4#IX>D;Jaur^vT*=uZWO1hP6Fetok?RuJI_Yrk9Jem5U1PwaDfV(&Zlf8TB0w26bBHr9oBpoZ%Omo!;yw+8QDPQoD;;n~{ z&CC?zL;rq8FL7D!R&W=`bY%{dP<^%!ec1QNQkNxF!i^sh4kVLUv<4XQp6ouky&Q7MCd|faH7Ak=h#g)XRJJ z_hW_s{;dp?%$@ZA+iY9e08g|is+J9R8>S*sNxZ=SI%&DG%|jP$RfFGi2vTxAFrLUR zmqfXccK!)7_C3y9OezuoOT$tve+m&P8Q{AB>f>sRCVQ4rRhLNzb$>Z! z(0HgelKxdGYVRKT$8?+cbE@ z$1ec#mU<92b#F%hD%ULjjN7{L2$iW3RF5Poe)IWHPW!^7-@n;ONXD{tyLJ7ey1sU) zDoF^mh;{O}p2YbRFTUTIr}En~6l|3L7*;qnqpe{N*`A8`B|$D$x)`sy%?&L>Hiyrz z){-09m#=0Tet%UKcVD`5Vtf+t#@x>RYWa8#sXT4+U|;vhU^g~bQC>;7r1kw~ENPezf7!&3ckU|k>>2^=kykl=1tlvIAS&os8*~fF}x5?JC45a%sM*9X034pE9nQCNlU#7>RfB;jQkeGXY6=I$Gu?dZqxeuHZ8JBFehCnkP6Z)U98-jfrO!5KsZ;>c6p^-I+I8U6XHwTNi;rNt zSBE~Y{;wBcAR5cePWS6OqUrwrK0v^5m)8ry5zJsbj8Ux5_Q7cu0#Fkd?NqLW3R)9= z^2p?uZZ{Rr4$x-vPSND;U_J#aGV*EW&Nm16IvbZtXZU0oajh1kyrlo=hx(-BjpcrrAnWPF|gqBUF5np%q=Jjba8f?}Vd3eSm z-ZD^tzdbNV=EAvNkjY7~rV-W_yh1eAwHXa@>do$nLUxYRE2vKRuk)|ymHwRiZW*LR z;H}v9QA-K-vX2ibWeYC&5JKer(jxqz@TW37%H0b)0zv{IlU7i^h7^cV#Q8ttoE8!e zsLct`l{7x5af7>-U-7PhkSQvKZ<^YJS03#x^|+)mf29qa_*0nMEy*Wz(eE*;BrJ; z9D%sW@gg!`O)p@YB9QLpb=~0w5e5U?5U$BxH>1Z$c^U|e#;>4@_rd1W?Og}Pf1W^( z+JL&U%xL7tlOk`UhTJAVUYuo5q>esq=>AjI-DAI1*STj=Jko^c3Ju&jN;xA^w|twT z7tCsF25k&;N;dAMhEws0d0Sq6zXBZi%Ff7kzg=#F?)m3vb}eY;V+1*qGx=6D>Mt zal;9`vZdF?>3f$%tl2_0F<+H*jVaJ*k6^qkpcV0@BihUKQoErKF!?5`=AHhSqTo`{ zOUKobfaIg@+?FF2x2U%3v-0kyTl*KRoJDwG=f%{_>fw+e4@c4J?zfwdcUwYblvpZs{X-x0*?k6W}ilq?F3+87L)dsIp#cTz641^ETj49yrWNjtL&y;Sy#^7>k1!&+^nCx4jBGc zblY#A+vs$joE6>Y?tR^gUh!4-8T8|D&smuGDyz9+oMv9SFi@2wSqqlRAK~bX-QWP4 ze3SQAUl+Ln7~GUQhU`*0&PsH6d}R1l7~Rn)e>OYjGG>_v6rPqyo=<8`HulWLGPAF; z!2@t(BTZ%`-{zh5x%59F7Kqkm6|t6w{smMZ%+|yJJ~ob{T-8+GB9vx z4#b`K7vix^U?rjST$f?F9Y>UQ*1qK;E?CV+XP9zBV3GKRKQTD8xi_dpSO2 zY`ft3e+yAqh8_u6ioQ)=1if7(^zYT03%dQkT_me&^WjM3c^#*pW!s)m6NTXb>2=NBY0am3Jg zn5^w4!IfaJRnu^hw)mwPd)IPo?A!OC>FqBiBb$8U&ig^5mO+CLkI80$!j4s_Qf?A} z()AtUM%uj>ns-`wIXC9kCVYKm!hA)4d+uM5o$5#mqgE3+wP^dr7(}5~GMsbJv*lW1 zTPyCo+wW5Sb9(bo&)JK{eJgw22OCf(6X(oW)1j^1;B-;_S4?Z9`pJOThpvix_6TXg zW!^s=AqkzQUTGLBKprM0@tn@#l)nu`*uj$3BaRX}O|t8~t;F+oh^qwIg|H>9BqSI3 z`<->%zGO=n!p;R8)Tn)tyzD(PYV#dRD?A#)EPWH51hlfOCb+d&yZeBLBA&`%JYTe` z%QG)DjX056v^(@00gtxszZEy0Ioh`+m%vDQAu_l2eg3baux`GiGK(4SR6(nAXMMv= zlbAl%tyQR>!M?eCa0c6eVCqjhaB<${y?0JTEG0u~W7XsS<*Tp*dp^*=@4;e=?s}Q_9J~(+t&kSWgsVQ|euUF*Q#}ehBl{5Eone*82yi#YZ zFSA?Vqidwy-XDkLMfYi8$H_TrR8vPPC4x5iire+o`Z-1Iga_m|9~uh=)eXJ*MXBCWIxUD`=zH?!1TvH_L7dZHAon`B37)U3j- zfjJb_5}~DH8bAr07ws(>_@3@qTQ#%lxFAD_jw>jQrt z2=jNe;HE{MHSQOL5dMNN;Lq_PuvC#9c> zp_-cMm=47&ArCErX_w;z+jW>&VGj^i#T!m*V5!VB=_5|#*PN4^rhjfuJ+lYngaU)= z5BQ;Y=b03(?K+)ajYmX8Qk^iL4HxRJ3GPRVz_*)Y={7UM;5xxG*`~UInL(Wi(4F+d zb5H+58SkQ_shKc8eKhB8mF2oIbUxo2B(uI{myM zeMFaN6R|9L=hG;)K~fWM2fbHPStv~pPkw4Rt>$!aePGLZY$BWq61)Pi8?`uw&p>(Pr{7wu z$gjVGAO-K<)iSI@q=)j~k7I=9qyco+N%%-^ztPMnkBzy}GWnck)qDqTM4g)*?1|uP ziuz7qUGVytXMeLDLeT>{_lg&pO=OGtl6YjEuMW*xTJ|MYz*pVK$}81Dq4O!kM8wTV z7?-$NXGnV>xwh0=g6O`hd!YGw^Iwqh|1SI=(>dNF#AcBHm1+a1c&=J(lcf3-G%siS zTMf=bPr>EEKmW7Sfm*Pzc(EOn?jC;8bc}bPRl!ez0ssT~7VT~os8E_W119@+Y?~m5 z0>!vSMauZkmv81sIQV!@GDvaMgorqd3BuJ*`3F;)i$=?TcFgIZZMQSu*pp=^N4JW7 zZ&)Q?5{;v&W+`lG3lR0c8mpWb64*>+xgUFUDa@4y@1E6QGQzYeqUcQYt+AgyRTus8 zVdxgGL+z>lldLE(!yOY6e{lYpB_?~^lWrdMVjPk*AQfJpYRo8 zZG81hS4D*z|X#n}eul>(9P*9(O-p)plbh%#$a zJBlYN5ARn$eIdU$8&3HXJHqy44z53(0PMQhrAV6(10K7k35~xxNXb*(#2s@~eR}_*2=vKhVUdD6)e`|ydW8J*bx_gc-G}*$7InfPD zd&&Iz&j6kbiEOw(aTwj5*l>`@VWyldL1vs+|eroz)FQ*n`U{_Mka7K#M-J;59o$w*M@8lYu0 zXRY~^*mF2;qA?JCd-k#|>^?T^sx&!Sr3y-+h|XX$NpqAs5tx=bVy4Fgm&WpQZWdY* z#Jseg2o3_jJHQVZwU`VUxa1MHOQdk`g-G`41f{$-+-5{sjQ`LJDr)|f&xY$=#ic?q zp6a93dM^Cmc)Y3~65*PpaGdG2iV1ld@;kJ!*`Okp5guA77M=vOC}eh)o;H~)BI)3M z!XP3rmxwV+1p>OUiQBjcJESkRkwxrUNkI|U(tY6Mks-bZ}Y4D>IS`RkGU-I z3~+`b`BF2`+t;N?pZ)+yUJ=Cet=29DE(fkAU41G|h;dY`s!Fj-1rmSt>mf4X_0Ff}*@Ti3W^CSVL@dd#w2CLv8tnRN10Pc0lr2_n!`XU7p!K zf6j+t>V>d5Gc)=0Ra4))56VoQ^EG0C8>g0LDpULf#CE^cyzNW?h|lYaK3zc4rH?ur z!u9EdYV9hJWUbNp#jLr&!~T7FX+@XFhwrSF=Mg8AEF}WdU#kSL)D^<9r`ILU*{Iy{ z?=%bG+H86ycaSX2b|aeLt=Td!!oJ7?n>%5d-j2i&G^3;(Jr$pop^et!sR!N3lfL`= z3H2jLgB8aE%@{(+L1ExFPe;BO#VK*F`*!%pDfx1~XT}ftaI(Fc!}^Tjd6vXzpCn@S zJh};L-{^Wq^D)4BEXR16sg_PCt%OKSo{2L*Jla-1t32h-N1u7kkpvRxXz3K4d#sN> z0Z~%t9NuVheFpM_T~CzX;@=K*O#rG_Fk~V?4yj^dl40q$^Syz{{8uxzSIV3!UP}@Y zWJ_UN)Hza&z9o}ECVc-|CRi;@kCcJdqQx9TsREAps{{ z1)nGRP{b$3N_~)rYwh1tI_HVL_vXRwJKC!y9F_b%dcP@QS@5HJautBRy^WAq-iHcW zI2_Wzfaok@4CXI9y#P>v*el-!kA4E!c^4*Wf-?AT=d1rcVg6rj`4#?MK857@xY7Z- z<3MQTWVr*iOw6TU5%Uw=q0K{+e<$WSIp9O6pgnl`R4}QH-*XV+FS|~k>h)5+TQ$rh zmEmR8V#O$lb1CT-X1YvMeX_+}F0e0yEp!m{?!nxhCly& z*NLOUen6-JYr8mVpPferYf8piilMKMu_0O*_qhu~o)H81&jb;;``5`})OlfTEh3;8 ziS5soajFXPn9lOOp5pNPiS~^jd=(6VPfoeJi|15i)p0oE@SYu+>}SLSrKHy$TQ9 zttascYZ#f+oxLs(KSK7hvB8ZK8*xdA+NNH%d6hh8!Jo4*ZK{r!5O_V)^&h&Vw;WDK zGfv<{9cG5k(+ds_-*BzJ3-}K*mZTQUKH6o7HBKY^Er)vvz z;x@jk(aSD=i)X_{z1#U>{Z$V)W3DcxvkroLf>^f`YApQ|emRJLUU8ot9_-l%qqSa1 zu5_6oIjrx0)MDy_9H!3_=-&5!93I)7!{O0u)xuTf0gS*?iC!WXvj1Aw%*V(zzfHG1 z|2Q`PYWb!(=e9;UrS=cVJ1O|$bnMf87Qband@w4Z;Pw2z$KLCOBNt3*G1mitZ`-iT zEPZWaa)PeY+wUWa-^2i{sxu(65xmZv9o5CcMD5`MaL*)fA| zd#5t751Jyvd#9<2Q(x4z2Q9~JR0Qwfx=92cX35{q=2_R6yFY$kdmPD=nbEoGQg84* zc-`-Cd`&#Sw1~MN=@_lCe;Ap}l;YwdZw@Rk8h)SdSWrGT*WugL+M{4{_pQ|CZMQLh#qC{a zI$3qmzN&l2CO?0{+J6%Y3^|$Au_yRjV_1%xeo+1})-fyDcNa|aj2|eDT{{5fL7w+T z5q||{gQuSFi57n>SdI??{>Y^jHHS}E*#B@o)xR>|m)rwLxh|z#9K|kY{T0jPpMB!1 z+4<+Ye{G31BmNy_>E_p0O4CU3&7h}aqh88)!Uqo&u&s6WrCN^Goyo35;lAeBefd;Arf zY0;KQVmHPE2HqB@kH_y4zQ!(vb2a7ctVmsDXDY;B?!o``b4GHC=2VNefcXJ@Mj#q{Hmx)ff;X{6-%0OWcTL>5zM5Fx@zH zFv1;RqzV%N3WmSGNeMqap5I3$%9sC)|Bcy5Ou_(d9e?A1132)D=DN737r-M*v<$B5 zI+LEa0B3?C3z^Sef)Q5+xZcvN9Hxqo%)vnsa(BnyeD_+;l+}-fsqnE1oVID7_Z^Z!q7mpOAmZ5-Lx`= zz-25IY8ZdxX+}#MtZ&0K&s91mFZAb#G;|D8b}^fomf+W)AaDinU8Vct9Bk_c)2=Xz z*21t+eL^1h)pcST=@x&Q4>Pbl#|_I1%Q(}uqp?%12_4bjuc#fZ@fvOI3e&Kzd+eZF zp)xlRI;!v?*_enW5*lbBWLY&Vs4qgiz!ip0$8{CL=R5AMxxQr#STpd5=a=PhdQ1N5 z#=J?X;dporK0N3C8Qqb%o(Nu2xn@<`NhJlLB))(<(3O-!L$-p~bM_6J*n&jA;P($w z;F8+Uh(nmHxcL6l`y>p!`wS-OOZ|%0UpKUU(CWZy?Z1m&S(87Obocu}EuHMZO2=g17{U`Dh~4~qSCvi^86;X5 z5KXfcum8{DALN4{bQHMk6)0sB5#o=QpO0YQ|1&K;PATg#S^wv*y9+}r&)!RI{wTC8 zfXo(iCYn#bH=Z(jx>T+qI;_ELIF`l#u*bWpk%syr zpxCrrx|H+yHbwjmAjNlpl59LyFvSmB0LJdIY?|S0ZOKZ(NDc)o)t*3)6^8Mc5fTZY zYYQy-nE=A+QPf3ed9TGk-|+w(h(;6w6Ih_wHLU;gpH1m;6OK(BsXO4bX{Nn*+7BNh z$fODX@k4tTbeWr2Y2{iV`51JI#x*+QGQNklUnATb+ObKd88IAfk|4*=H*rc?@K4Kf zK28`;i+B=Z^j*n}*~w2_n1+kner5JVyQj~TTBp`5jfv{mg>cnZ%OW8ZQ|cW$a@H`T z8^(0bP*t4-&Exr}rChQ95@Jb_hO8Kfc2+1iE9JpSx0vsX=bRJ|VKi`*`X)&j_jyoQ z`E*rcARdbbM?1+iez%lCh$@Vw+nNv{5X2gMI>*rpsBi0Q;8h9jc5Da14+1JqyIZVM zGCmP(L!CjRIZO-Ud(AMiU_AD{s1vmN8~Ng#j*jZdCdGU|(%{%k!KgY_c;E}PDx9u= zrQ}>4O3)pp2*-jkoWDdBm0I2rN%z0j3A^|pevt~QNl?fi4~DQ`2xF&^cg0C1&W3cq z!J@!dXn}tVcj*PhbR=RGk;hAz{u%fr3_mou$tlSHzg_?#*J-8`4?N!@$#7vpMw%L# z9xSA4Uvj9H9D^FabEbb9KYuo6n0^X5pnja5TqrI8>>g95B(G@mVHNR-NjW3y)+m>F zAngO?B3XqDmNdmnMuzOyM|H}<>w~h9ae(IYuxrvpO+EU}+~uBC?J%=UU2j7FCkWnv zaDlzm$Rv`>#qs~*nKR}c%J=_BLz~*S~u{Ktl4X z?PRoS4bh#3AP3zI_o1uj`|_y#Oc5Lj+rzR5M#wEwSg08YIgrACIV0)}!ZvwX%pJP6 z$G%6|8mB|ki#r+EU~IQai1}Ze^FqG#=m)K z)T+!I%9L+i##c<|FB)c^ibJ%7St&@#bLj))v||;9u}U2tl%V``R3B&=h8T-j5kLn6 z5S9DDvMu|L)EFay|ir_|0wpbK<>_p zIc>$a)Q4g-46+(Hf{U;F8Nl>59t zf(>89Qd(X@(d8B@mx>Laq>+78T>75lLB%L{be=vB{=p;=*Tsy$pyHlkP2I9;{gOt8 zw&ot`IQM(`^a$<#-o?C6+yQwi7uaUpj;n4`S#}@xKtFCXIuarKOkF;;By`Oj}(&;s*KIBAIhR-qeREBmpah_Wigg9=3lDwve%_Lz7? zd$!j&1*Wo-EQboc#9iL*i?EJrWocT{K8e@13ykUCC{cXS@_mZa=AZ>kC)}qyUE5~f z(v%hS^@tvQC-q17pq5JJ)WwcPIvSQ-;bYkY4jN$o$|XO^VLwne67)1Q5vKG(0&y)LOaDTYjT z$+Xmt$aNWWYP<2H7Le3L~_x@<;&lw&zJAot@Zy zwEF+pvj1m>)&N?3A_+=5P4a8|Eq^nStP-j^O6u=oe?_p)|0_IZqauwImk`!~qxZHl z!t`UDr%BlE_myu$(I)byT%CE2sYh63yg2T2`A741)qnwZ!i_-uZS_L~KF2xNbew2c zrw_^FQBk3c^V2rZu<{2~fx# zfv#=tOTIfet3iF*D{H&|&lVjxi4H3(;KJA)lNR{wz=zDY8J32D$K2hPfd}=U-LIYe z_MX=^_$y5}+e~e0DR7>75etz5>@3@71p;**d26CYyP9yseUR%fD={B2e(h&UIPfn< z99l9-*>xnzUsThv%CbUzYNzMPRhgt+S*Tz89bH+o)Yn|mcm!wjIrWA;G@FMJW1 z7o-?V_QB%wQT;5nqUaS1+I8P&Aa_0L*I`T8YUR{laDM4~<~oycL;M-_`pi@2HeuKW zRU_XhaJo;^m2~d)&!BcoJXvbsSio6CZfrg#`e<ctun5L znkLvE6}gGf)pf4_{=HYA zbyZ`258IhhLdE{xeMBWn6z}c)ovZhsFzz*>vWP!{;>q;c6Ll-_=>dh!-?b1 zdL@$OdFH!|Nc18ES)oifAMWmoz5~5zx*Rv@oD+DM%-~tvUUWfi2LqlUj1O%`#k+R8 zw$`%*b>$$_jrPCZ?ewfAilQE%{qYS|*hdX$1tkCG^^!g$*!AVLmTiD z=k07!E+9v&DSl`$pf+wBf=W7(BU8Svy5@j){j#@Iu+4#2$uG1RvtHd7I7^`%xj zgx5y7(+K*tOTy7UR3ZOL?Sr!aD5i*gkfjXKTm^Qzp$%$B&twjeK+MWe>U60H{n|dN zvO&j)bhsJ5<2SRP9+zMD^u*}AS?jk3c{?_2Zk}ZIq*eSh4``GE?phL~Y|w zD0(DWpC9ZXG9he|k7pQA2a9N;E;E{I6$Z<`;!po(g_5fYhmKiN$~-4*#b5D7(so&Q zF3%A*0&rB7K1Cb{U6DM&!ETv*k*@IXl1ZEzzByZP6M0+kcq;fV&yAGytd{g>UwJPOf6BtJKzS_#m?>-E#5UuAUt&{bINbAqZ{WL4ylpN*gu^Zm!E*Flj6QA z1hAXKYs?`9p^5frOQctq=`xM)KtIV(;sO7_a8gH7Vc ztd>_$?KDhF9qixAHx|@5eeO?8GYU6uyRKaLmj7`7KmqIuTki(cEiKPEnRVD5tU8+b_k-4@E5Z@QeD%hycn3>n& zX%|M`GGK7}SBY6&(-zxGN|Q zuLw0}!3rVm=DG-aICR4$gklDVDuu@I$C136D4dw^*ve5lK7HHaHxEmHOGj2n;!|C& z{9qr@nzfvaF=QxMv_Tl-3Z2}0-cy~(>{UIoi8Ymqq;6%2*wLwV{AMc<(o=%bLEOvP z0w=fh6r_-jb0>L1OD_dfBw%-qq)g)nw`>EGS)JNVCvY%zX7p)TfC z<-LEj{~KW6k6};Z$_4K8r)>9yBa60ik*}@tYpayV9C~x_vA_z48~2y?ACy&7qj~Y>*NE zoN~9E!amiXNa*DxxB3s4IHj?dB*0h#C>EIY)g6}8CNM>lubJ|mU7r>P#=BBf6kg-h zm&Ez_rdIbWmoydTFCiR?7WE(4L}Z#l4n+G(<6BhVm&c6LYD9XxbObjTtn5>`3icCE zc3DeI6^!dzgPMcSq8J!6^*;t5*k@Qe2y*_THe=K5!*$}oIc`21B??zo^sm6vgWlN+ z$*zw|t5k8vVETqh*=zUb>we`q<;-GkPgLN<>eb6(%lRe-7kpHsgRPm*tz zjgw+<;+CvV^O&kHOpYIu#_mu(MYmfYKnc?g&x}kPEf9nn+~|JQATs4@#l=eTfRro7 zuG(Yd0`Kvjksr&TS*_uTu5)$;!H>5GUXLhu)Mu9aftc2<$mu7xzpA3{*h5sR-|WA5 zc#d5Kc?jbdelWG{z9^-MaD|xwu~u>nSTX0YL&$(ux6T%*NGaf^p3%513w74%HIi{! zlVFIw34#YG>%a>d{(!Zq!4Zr%F7UxC#A1Z}EQudIgs1B%n%>lju;B{a2 z5qL%3m-K*5wpkvCa_DO~uLPllBWw*K94y_!=lf*qv8Lf-THJu&W3f-JR+@NO{@pmMlG!?O-gij4#Tq3d8V>{n4 zm4KJ7aJ)ZB65dh*JqI_xvLujNa!+FHaKTA##^{Nz4HSBY0i7qBBaS>vr)#Rcl!Z-{ zat{diA%&^8@nT&;eXDXPAd+*HDeO($raD}_!Av9$<16;T8)iisei*~49}?Fcw95Hz z@%?XNGlLvh&8{QfT)*s_BdXs;Hop=Y`QCrLC=&kY66ZoXP6k~S4&(`qXx9wOwZBX? z9|2)}`&l}g}B81CFm2de%cPq z?`X9{ZZs?Gcw*ZUk4HV(RJSMf%43db)@l}SGpD7DP<99?Dt2VwHGFPDro;N6?40cr ztqU#)(`KJXPsMr#4UiSvxfJTB)JFkoDGX(hVkE-lPLDzqK=hT z`&Gzp#^T=BZ#|aC?Wraw35SBKR)}O!HrO5B{40ZCmp;C6_(txI()Z&9d8@1foP15k z(zBaB5j_o`yg{SD4*DSZHSgW#R8%VTF&31375DPDAb$+DzHGC2b|puHP3^%A4_7<9 z9xn-QM%?Q-5xsbSrZ%p-4r20R3w=D4c7sf6zIU?8@Z+&MQxz1n$STs1R98tY6CL!! z$B<&v7W)ax855tvNGSJUocpRu--$BKIyuDclE&@Bcx;`U`QEcg?OMpx(ad;x!>PqV z^)tMIY@l?3!@^#5it*php4m9Mr=`&$}hMJ1aC(|gs><#{iO*V zA8e~N_JIvj#b^G3eODjcyRMX$YX)?Bz>{eI@RQOvi0tD)iUZ9nZ6fNOqe?24erOFc znhLEkThRz#1vcL;P^6DP_b?k;IyH9@@BjuPkXdj6lgU{(m!ID}zU9ErUR~p^Qle=J z+qKiN5|V#xEw%}4d3Ph0D#vx(ZwYofN4v4)bn-k_&<)okpzTx8dYM$rfwlJ_i4O!| zu`epj=tUJ+5ETl>X|dqMo)DyTCy-{sU~yk+o3%Pk%RnB=9J!dF`QFpxNGGu}q$v%c zCNxIjXIAHySK*pbg?~4(1hRQ6f6w7@jLtaV{~*1{GqgUVF?{{OkH2JG(S6f?=*9?> zhoz;ZL-Yf#9ZYnC#jvCJ=JJ0}5wrp6|NSvZ(X^TEynlZb+F2fowskjs;4{i6wGIm^ z=yWN!Bc0%VcGeF42zvPUq zr@@0qXr4MwL;)vpOk$g>XY8reA6YJ(#$mrmix*I>bjoyr<)pU1L2Ugx`p(*pwwj< zS?S%=(IWGEa|D3bca)`ZR2fs}%hXwaZI;YnsN;0|hbau=!MEu50Oz3G3*59(cJ!}U zdeAS(0{n1pyZPX}!|d_CRnJYv7WZ{OISCZBlEyRS&tc+vJWI{6U)lI1(9!mt3sd8l zW-~W2%u^pK@SbRLPNLV?okp$M*~r6ALP}_S*xLtD!w`xR%~_N?%cJt_d^E0A zNt(GtWWVkV37$$?XNk$TLbq!Bu3+Fws&Q72Ht5uT@vSwB4-<57R+B=75Ll16!1&8P%Jp>YQdCWn1VFy&8f?r6kX1v8`TabPw$UP@uL5w zWOU3|_)aq$F>iE(XSDCzi+9OHyp%$N=J)?=P$=*H5T-FLA;MfcI48Wfv**`> zThi^=(Ny2~W^&hDbwq^$jZ+g-$S0`jNAZ~o+v$Q9oN8%wUc0J(S=*nNJ7+5818eRc z)#aGk2I8a_Ge1lS#q~eQpaZq3-6V`m zI*S~9RV3HZ!{J3)eT9n%gZZ8 zKj8TT1X{X-Uai-CpULZ|!D!c&+cEU*eO2J6bT<=vZ!+)qNF&qw8y?8xmve_^aVKP~ z%x^4pggrCliD&zBeUQMQW17&}mDzBX^?JdgH!k8KDM7MWOR6eqcHyw=vfGfGM%Zss+4pyp$-Im~ZCuaUu*KdAwmz0TlZK znGiF{3f^=fislK%Z^`$u3bj|2D}jaJnBU2j?O02R;=)p?jOoiPZa{zymTANGN@9zx zEo12g{d+lJ$=9ba#%g_Wn)8puDy3J)vLuga)|ZbczJg~KrZjM`uP=ZGU7u9d=@|cC zrsDk~pv!A!@o{5aDNwo5I`XER7=TN-{iXBmxVz+lPa~~QgUqi`0&uxM!hPQf9YOR~ z!^H&Zzf&@p(k&@p08dPQYGUG%c}7pqoEJ{*`EBBSKG(@Qhkn|D2&cF{cQI+oArT%) zp40O84M8UUf=(knye|$`6rT2R9|3>w(2bUpy0y4W}*X~Aqs z0j+HK$>WKJs_i!3rav}KxauSaUoJD~?c7_PPY$VkB2@q!8a%8Dl2m(*c6K?8?RrMP z?UJy)(Z@g+gro?GlR)C!M9(lX8BwBAlS zJb>DUFK-)WFcjr-_B#RNM`wB?vUjEzhizv%GB?}bcpFWa-mmcP8#)%)>dM2rQI@SH zJ|cfij2JoWCiZ}jqjBMi+hvDl4X#S3bK z%@@w^oiljHVZQT4U0H->Sndmn|Fc1IcM31!xOO7G<7JxAolRBxa7)(jQ{lc~{M6Ic zzl$49u>B-D8GaL&JkE*8aGN(Y-xah~zh<;10d~s#KUBR{SX*t>wHw^sHMqML3jvB1 zEwlxSI}|NiJh;0T_fp*5in|tqQ{3J4&%3|<{ny@SDtt||bfyN+ z7be(#8i<{@FIaE4hI0>-WA0RaC67 zd|o+axpV~dt zZ|>nD&c$YEYk5kgNYZElvtzNkecP60Y;5$}KVM&FzY>KkvYfw|hSq6S`aPn=->Je4U%K|8c=}=OiIE#}io{xGv}m+v)u$5}#DPJyxCE zRQbK+%>5_}{2yP49(+LZDXgpH7KX%GvTr-FkbM4!(~Fgg1jA-2!8@VP4Zew^!G*f`(kz@0vP3VUUy?GQb9WWdJ$h&#B00>KIN)uyCTC5JnQGm9C9T(A! z2;oK7{K!@`>4^;Q8LtKtL_Op=j0`yPe!f>ZOaLh2+oKvW{2&VN15m*j)3y)!pyJ#J zhATSv1R2G{DF2LoU~Qotz6-1t{IOTunrjq*J|&s(IbIVs6dNigA@LC^iS9kX!v}A0 zCZyBoGF%QqD5Cr?_;XkxVe=Yf(4gh>Ys+q07XetNnoi;-89>cX07g;3&4CZ!mneHn z3CrBA*)$btcKZ{7Xw-1)UqjPz*t5w74f0TdC+>9a}ECNXL313)EZ zqinzgO~$7TctoR7*jQ|a_EZb*3RH+g;{+XXsZ-QQpm87dxZE=Khy7;^LbZJSmp0PZ00xk5Y z7B=`_C7bdu#9{*uVLlpesUGCywb2;F&`85W^M-U0b=GbTOLuJ;u)clS?Df+MPuzhv4%gg*Ihd73Tc>MKyLzj1)F_P|hIAKjGsdZb z>uljrZn4zJh5oM>fFrDuBa?!R)z|E#&JWFhwotR&-PYr9hHf|f!SW>3+kh;t!Xc1M z@(If&{07J#g(2c-Pd4KRv`>Yv;nfn|>IMaSXRkBE$;5w-*Qe#0N=Jer05ASB`E<+S zmzbbPKgNRi<;!27jKH6o*8y=X!}Js;Oe9jPC>1(&+O#TWD>nl^&SNf)<%${K8w4QpGp8sewWxy4$OUwkAQ zsGmmHB!moM6SKj^M_OFk@7T_YhMF~KmxE_{{Lf4<82^KjT6J5g50htvnlVVmG6nwi z@))WU)z$Rp&I*Shg0TjteD9N9cQeuYQ9wi7b2wVKhY47v;^UGACNM)SD?L|p3r*}x*XjSvEFt~aF;gFW8seUh09x-S>B6jTmJep|C|Y;vyC}FKPQSU z#WJY^kCbgDL>A1<>X5loOB&dN;z?JP-3gZ}lRT-vy_if{yp-fzsD!ioiTDG2w z-M|)26?*lqg9ES4NoI8=)sx;Ssfhb_8>=uLDvf%7jK`LcWeKgYA1F}TIb7LIvEwS| za12J4_V7CBtl|g9shn)hcR1&apB}o1xIMrF9FF+O^l*L|Iv?GVk35+w_v&WYjt(H} z)}$^DgnAGO7;|2Etx_h)9Pq1n3S~(6`XPVG96f67x7Z&oh?TIYl6>aTlKf2Cdt`9e zO7{2kEqSr88J6*NkWA>%t}n za=_Ja=os?jSjgkJo1TRA*3C;LbvcsLzZZChCil^>m&;0r#T#J*)2@~yuEB|OB~8=B zm!k(^UH3amu~V5)sLTHnx|eH%m45_qI*0FcKAj#x;w2{21O?JL^#r$@v7k0NS3KfIji(Db znh=Su+ndM}nD32a`e>6aIy!oOdfFJvl~ahPdi=5J=3TbR@AiwZre&|SSL35K53%d} z#GGd{B=FD24x=J^nZ+Lfp3~MQ9hsx%I^!`hT;=sW8lX{8g>#5qbJMijYTJMuvwY@> zY?Y7xckn{nSjsWz+ob)kn#KuHo6OatcT&;OSjjM@_7}?i<-s7o{y|#mfkvY4TQ_6V z-dBe;qsDMAiDl*rQ^i;tn=f#ma5L&oCx(yjuEu{_+>z9(Rhy1I=o#2}D z)@qB6oon^w();#BGvh$$d}p{74*?LKc`n8lwR0dpF1n|pee~=*xZ_w(3g~FLlbDQe zJ%=pjn_D=$WjZPo*aDqkCyYCYB#hlT*xuxcAzIjL*lE|0vH-DNVgWTEoa*)%W_t~EC6%STE7s?+v1 z5ip0Zwf)_gd->Rr$ezzg<*Pk1`^!pjPE+bzzrTHF8Uiror{Qch4De{@e9Lu4|7oFV zv=5K9n2>}21A4cj9_9kv!{Fu&dQNG}@Xo>@`U>DtA%iv~%{S*@tr;PC;PSlG5P3sQ zLYu0W-t^QPgflmO*T%6f^>6|s@y;*qB7ue;WxN_LW0iKf1?|5g2FAuDO(y8E~m`j4wIX9;XB(ts{>=>fUn zo1#h~)Y0vS*Jv@yI3g;-!?>vKCd~RV$vJ0~42c))%-el>oVL`Hq^8c3lUx5pRi_M5 z6qQU-4n zAU#~N{@mbzk9h@)yC^iDYYL$XwTcl^L^n#nG)16`RqzC%lwzIlwT_m2M_G>{rQ}?*%V6 zALW-|mM9zH*Jnw)*LIKO@i&U~G%BGAy_ONK)_e9_ZcD$B*MmZW3a^Rwk&p(f6oDLl zs>Pn_F1gEGE4WHZBTn~atIFbYOMSqQ=5-{6c-dohb?$nbO~Qlx4J5hfXIi;ITq+-uIZDL zu)qjIe+m5qsS9l@?YBATR$F$iey>5`k;mTAKBImwAdpUpY&+kv<5S=@}cl_){x+vdJHW=S)dJ~b(6MCZnwv&c0a@yNPRDiFhF zssC%81@-3c(c^a<=fEs3cpi3NhL|k~X^z2lK-?{n@WtKp&q+zYpIG~cVbn3`zdtC? z&CGp5bsk79khJgE!~T9XNerOOf%t(A`tFwRy53%-wM!#aLge(`VCR=a!B`Ky=%&3) z)^_lxiyw2@2wct-`-LiPc-8Mthvo@VRRjbDl)b|LEu!B)CRb_I>+;m@*@@(aDG8uOi`*iH4)vw(eM(ai^zf*w6wHUTyA}iTc<4#SQ`Q1x@ z+S6q9${z*1sQoV(HEwg@QFPg1y+MeNZ!_21GRMd5+Wr4#oBe*{H*dv=QPwBDJ=acx zp58s7MseH(oU45n`uqLAbXvCy8tRu;7*xh(A`e&!b_moXt2i3IUkh}75P-k)|jFa|(Z(d7?oPijAmF7YsWsbF3pUjH#EI~1WNlFrt2fsZ6#MgHRBi`BW)GtN^oe?05%9@A5kO}E12QX6})pE z(+1v#LIyiu8mbzaI(G#dH_v{jMJs3EPHM-ww1p@e)gn*vD91BOw%D z3x?tvLaBptS;*;+u=I`f2SIL@obl>h_l~H=QJHbD{;C z@QbN+!nnau!I>|8^02=%LgV=`^GT;Xb&aX2WJf-&Jhew*mf!2ctRNH8&3m~qv0CF( z9cI>{BpPy70JC%7)hJYAm-+{0Yf=E^g*Vv7{F&b~6bGEmyWH!YUs9hQfitqC=uHO_ zMv^8B!h;~VBDF<4So!-)0}LuYZsILjp7f*N29YumQ=pppPi!ce`=;&wWi<-CN{sPVd&~^VoOCL=G8; zJ7>`ezAXr-`gf#V#rp%N_5Ta~vpCFS=A|L##k-mAn9>R2-s0<4ei(rIPB|oksvDtQ#EX^>j<-Gclcet= z+@?KT(n&_ly*)$EZmdD-P*?h8kPs zxK2%cZT409l|hJWp3;qun1nq<=I)-`%>z@yR5>bIBzpWm@_LuN?ojrNmF-zr=aw^> z1G=j3UY5>t61*%QHB5s5uEth~4eR6HX}7~N{g1M?qye7jNs(N}2&S$F>~68I8qy$~ zry!uIezD2Bab{lW^cM;*>0O`?_CePzcDdMLAx(cdtC{YuH2z}-d5DC7ZLa zf9w>Q!~Qd(57R`yeE$Sz4FQySAojH%oEPB=^IFuy_sq(E<~`~rr=2h69Hwz0mKB44 zH7(Js;e~B{tc%9?5co;F-?>stwT-d20_()~o+;_x4^h9Iww!e3&#WKN{|m`o_Et}acI9ijc!)X8KPO8%D&VbVNCT1XA@ zWf%Evtdkx&i4z0XXi|hzuHwh7bzK?aI<}J9V)R}p)q`OT4F=LS$bC^b&VQFx!GBll zBkP&p9H&jtMuG6xL}^OomK<6K6%n|gI3n!mT@QWytyB#ao?d`5e%gxP={b-l*kP}AH}=O26Y^#x(Ax~AHBKYxEZRS{kk zgfX!tUk=nFD@1L=Ux+P9O10%uU5mKpHx*m%*!)zhHH=t2Fp_$!>0y?(ctX`{!~aKt{(qfKU5fBF3ze=9z3o-4hri1L zD(u&!eNo$ke)xu6E)1bCud{s`I$}r-&!lk5miExGKbl=WbFw$)y?2DU&qkaZ$el$d zXi1ZO>dW2eC`9*Jbnn*BW;kB|Bw#+JYl zkLNiZ%cZ8yWFH*Ap)%~It=C)Wqb1{RH|>-iQq8_X^;4m#cQh_v_^rh%$Qo{AI7nJp zaIV8$EizhA&VntdR+o!5v%Bo3rUFkVVj}EUy)==(9j}>}jZy{LNc&b^-om`lZZ`Hg z)h(lSnSU^o#0Zu`^-_x0N>p4AOiTQhZkKjQZEVx4MMk{>MY;j!5cC+VjFZ|Doi<^n z9md`k(!;VQl`b2nTn%s`f=}XngJu=N-*}k=gk@yUamYqPz4-~;yZ1u-G#*za+1~m3 zelItQHgxI*hIrL1G_A=`swn-PXZKqttu|FEjfzN+s?&$W8*E$DIfDCx7%wwQ7nQCxJ8oSJ0w-@9 z2(X0Othtv>?>cO6>FSy~js&sS^oqSV5K5pK>yNu13}4pIZF5uXR!ti(@L?h__;jBWM~c{tR6hJMwVKZx)58u%owdcB>Pw^|v3?wGuWr6MbQzI@5@ zcC@V?U3Rdk*=vrp&eGYlt$Q0?^MD+E{)FL`wdSm<>PcIOf@*}1CnZJLPI&OEi-wI8 za`NG0wK~EK9zqbc^$Zc>d!(BH7Gz#9yn-}MA()2t<=S`ROzf%rY;4hTgye1g=|{)9 zI1WzSn6Q_{I4puTzjl;$QW8n&1~tA!Po?xk_w(yPq?9t0 zFB^$jc*+@_p)>jJ@mJNT`^3xdPdFc-#NZPn@(W+Fj6dYf7Xuk%KfY!V+?(xeFaYNp z_V$<9fh)9}x{+p=%JBi4*rhhdfklVTH4^2s|F*=6>`j}7bt))Vjhf}52Ao5QuEJ(6 zwYTiQWkc*!9c`gDqMld({(=xd$e;A|=rqJ?4A3Jk+gqTcBsU6PUQJ0jBZ*Q48IKjh zKChyGp3ZIp*f=HnV>GKZnJhtFQ&A5+tE?m7=zqoEWwhxwGyCnjRU!X>$rSi0|-j+YoShPjzYBzAgf zp3J$Ke2|h#`v;T$qyT8RN{>_GHFcw?f^9Yfe7asO;}e{CoekHaW{>*;KPz`*piJ?# zAL6GqTcbKmd;8a`2XV%JHbi8-&%XW2#ldkrI1gDL&6dyTWkLWEZRJ2Q>HZP`R>xh@ zuG^{$#ip&v(&}PX&Bqavva6lp%Ysa|HyZ$cb}JkjVwL)A-^4J1eGRGkv*5nP0)Wfb zS#>Oye^q?MP2IX_3H8GZk<*?Uf%d_QO;u_Ks3vyyb;+}!o!lD-_@r<(I;{dsTeT-x z?TsbHhl8-uM>SwNjA-$B7bnn_V&6|buYpxEzGBj(dtfEE4lr5U9PzZCZR$X~1Oac^ z)cnQjyx{vrp)HbP|JH+b^E8L}y|*?>gW0)L^Z>!(7Gfr5D!EaEQT&U?bgI{De;Cur;`%C5&SS|7s0ctsW5WJTz8?k83cJ$?olCh& zT9VQ9oee#Rep5bLHU9!A&7`NKkpP>|O-=5i4&BwR>*YHd_P(fM^XRe&+JoCRQxV`S ztngV#$$`9n0ZDdB2wAaz*pfU&j8YbjNe=iX& z&}u)ujSf=Bi}B(o8XDZM)kqck8KFlahw24~N3ruTQ7R^3<>CdR{MB zwdOrzqvY=`#13qKcZs`fJN8m{|OJD0w1Ac4Y z;&_Mk1b?VM^j9f*pj88xk@>no_Tob8xyMnkkp=28xhHLf7s9Q-V5lK+0IZ8XKy@Eg z_#x=Sqg$qtxlfNycjVe8rY-12L;FR3Ac_i23jEh0Ut*y`&CT!p1Rr3zf@}pmcU^SQ zY~`v~z0etCcg(hm#aXzR2FLO6)FnW`M0JC_2({I4HT9XCBSLEm``z7UfeFdILfz z@CR;f`-F{zV7q+;jNq=Bb!bIRy~8|9s_l6#;N*d z_taiNL?N*lL_|l0*E+b~3kw2{c62X{W(|$`taME+h~ir$Gtl*ioaO3CFtE zZKSIlwz~;_fPgD-_u*1hcE8vZ%XqVa5~TS8j)qrVqn(uD0+5!eP+-Rtyd+gB?v@g*+p4B|z zK|2|PJJ*-@g1xFH4+8!4EU>BAW(T6;za>CTbE&}S*QtdthQKc#Ul$(ai(G0q{0(V^ z?AGiWwf%Yw^dc~|${%wo7$jRkCQpEO15qf*RXTjwS{IOn9y=oU_V<)m)nyrF`J*G5 zT?j;+VYz@gifT2Mfm>Met-Za=KI_>1@!-WG+r9ouhu~|izvm?y17k!YMGH;$kYcza6oY=-0kYc%9$+Y$FX@= z8IO*OdfDC3b0sprF;$jxRIh(mEpQ#V^7~Xr3VC2Is_LGPyoRak1%6P?`GiT~1)+Ee zQ}hbUV^ol2>);yX#hplkq*_ROGOzX7z<-Z{#=?}|6ksqA9W&sq(RPNO@l)|j;+F2H zE!^Q!@yXzTk@s=KzJz7_PjXt`NbO?cgua+nuQLWWNKCbmbhY1&u}QZmb+=wku@%3- z9XiagQR%r^*KsTYH3)tgq_J6q=dX!}eHwyh2WClEO-U_~$=x~blCRUGJpVpQ+8gX1 z9Qq9Bcl{RyTT_Jfcojvyg!2_U3tej1HRcBhBsCVQVMSuYh5S~if}|3>$vh{cMiiu= zzusJ1qgG!6q6CpWX>-`mW7z67n*?Y2uDT*03V7Wf`=d>?%1v)gbq+p)bKpw4C1w zy6s*T+=z$h)7azdj-vlCjg6?#oalpUdL!m!v-FASHdDRAiS~O&=qm(ZnslqrXAM|S z_tqfPAzzlMT>O_Xbt*gvUR<7AAy zlCj^1l$+j$#o?5m^xb;>6rTZFJZ}YZRB! z0tOk;KpEX*cj%>dl$2D%zNFhEiSVrUI~&Cp{TzqB2Xu-2iZ~*ck?a5U0yqR@Uc;lg z0CXPK5Pmtp>hnWmqi2W2$qiV|;|vP7)tw?)UB;GsW~}X={cgw!3O~bO|4Q%1J(BM)VxXG8d-(-%++DcN{YfhzUY@#c+j*P1GNZilGZ$#plUr_tmiRM0J zWMW8L?%8=X<)<2%69~_=6y?x%QTj-~O(#PikjQ8jNL}<_oUU1}Z9B9hI@0TOG4m(I ztM~FX@2P10A_a-+JPx}W8-{a;ITN_E+_R_aVN1aG&45P3X$(L-+(nkUt?;r^+VO?9 z&x?C#a_9LU3^Fk5n_cS5?egTd!e=clOF)s(lsUB8xc02`i5$%OYXAM1?hlkY>*?vg zSIHqo8fO3hd+}CS5mzjBO&zA2MCXD`mL$|Ruo+tcNg3{HC9S;G^p({!+83U4A~VpH-& z4YK#c{Af4u{lGDlOD2T*;m39x9DBoPh#;NKIx(4qqS-#Qvuk?qirH;qox+a@ZcWJh zYsc^)-DG%sFN1JpH-Im-lP1A%ioUm4=z4_57^m5Z>PYxzh^ubEvVqzX=v7JSac)Z{ z+9LJ4OewQl2k--M^sW`25UH<3*4ZF3GNPzMP;I_Thsm@g+@+prqjd=_T0`Tf1NeuV zfsA2JwDZY+5w`0`)TYjRmzzT1c90S>kNB(vGW+S=l z2B>}!u%%pS>iX8Mvk{T8zyw(O&5Ol^vgl}te#!rGWUB^_7YC;8?GLx(r?bK;L1JRy zRv%XVUZff+_&-EMMn3-CTU61N4T(8Q_*+FZ)O?_?!C&7El^FPB@YUAEpO;%V4dBjv zJhOl(R9jj!zP*`9VU`Yz`F!3*bv=%=gsvi0`T3=N;#@1YGmI+$8n zE`GP-T*GzuZQqg~qf>K?w7>Mx^i zlfVZ9tqRJUezoCW(+y-#&VN5^4Yzw-)t+LkyXd*xsuhK|Ei;E>k|l2+n$8aMH;7=h z-i{zQDfK>@AoOrlsnR4>xvm>9@L6d$2?)C@xa-znrl$?@+ufzPgX8NRKnFj6 zI@&^>8eAFl0ILQ2%<5_ef3dP=SdjWx(LPP{ZvIvBEG*3%1gnIqe&fBRHVD!e>fo+* zlZ6L1+Jk2 zdNVTWDg4XplkvycsHJ!eP+LdK`7!g5XJ~AMKx6#}XXmm-X1jZiNl!ly_%+UL%`JU` z6s(7C>uf^Pp5kqiFy-|0xrOKNw`R6ESzQ=_IY^NE>DCm>_0p~)T%D{%6!2;AY7tnC z;}#vD>3l6dWQ`AhM#G(_4zfBVhW?sYJ;Cwqzh-VLfhmL27{ zKeFIZPM}ls4(?{{YKX{bD;ll*`e)0+a2|@E1>~jSCPWb3TPQv;!>7>5i4;X*hF~W- z*J~)T{Q%dCq1Tm#gXd^gOItGJ4NyYc5L@I|V9T=m%R>EKPIV1hrE1wfosH2T^xN_V-rb14KL(x&ySi4o11~lhC&$meRLSX<{^4XKL}{;S{re!5)4%m}g(Mi3S7Ub~ zE2F_@^7EJ?nDJaKG}+C~4gK1c^5;(byV3uhz#ZpxEYpp8dr*Lx-!b)~|Na$L^eV{+ zvR~NS_`5PgM`UjPaS9K`g;Flllak7?bkO)*9jf0&dp=+h)f*6)!{sT1-9t-o|2^*I zMi`y`@bHv(Yg$)QZ}RgL28B=zvZG2)V*JXdS%zeyqM4;7zrfYBN10+KA~BFdT9xADFj_1M14W36WsZgnP8!>~ z2B42Wcf`{pgpE7YgIoc}F7b4HHo|%3kgDs@so42=G)&osQ; z{4vWvKRNlsciJYl8>9+bg-op9`9M!~l~@TZ{(7lj2OAnQs_}5ZL8Der1%atrsbq_n zMMgCA+tnqrx2)S9P}CCm^WkGaq1#(k^QIFkXH^`lX7R{&_?G$J+@MQ+&1)dec8JHq zaFh-(B|MR76y)VIW}`&3{|jaEn!Ltu=n*kHrSoJId&LwdF=Kf1NZ%oRg9aFwYaN%7 zi_%zI*70|xu+H`9OV2PO<`z4J@IrbZ<82PW($uuz;a(0duUxPp^;UE~W9ZnZ0}D1I zI!t7W?Dqba3Pc`$7CTL;t>t@|fnf{Fv?>zbo+sa~|9rSXLh~HTJ`BXLaK0~At4XCQ zRyE~6Ls52of42hTBuaq(`T;pU8aK9A|2wztB6VDXHO$RpeIv`QMnV!4nphGhS|btT zumNM}j%e#|I4n0-b2r;Vq=fDnYh;AC>K5KTCSk37+@teJOo<`br*vaPlOvl zh}x;0=$d=KhICSDI{F+V(Rm?k?G=$`#8h=kq&|n_>ORV5-!>H%vJg!DLGFtPSV!y3 z$Kdjre(_NM9PBUNYJa&UQclp(kA7eAl3$q z6U<4qoIvi>t-6nXR9V^H`FeHWcJmB5Q_bc1w2vTq)Or%T&d5zmp>m#?`X%ow5WYLQ z6M^sqOTE>o=*2sc!~4bdXv_KM12^dpFXOM+qHmQHa3`&;*>gawEDWoUr1v&jO&3od#|AXc{jQTa>1=h0ysNh zmanMs`9F4JhWCF+Fza2cF#p_0>LItB?lHtALUiHL+54&E_Q$J-=22K&Jdh&+)-ssQWij=Bf*c7oa54ew zIVH$`si2bnf^wf{qae_7JfZh?Y1G^0t&GGl$#r#=sm8UcNEaii8k6 z+&&1FT+V;{cBefH^#x`kdHoUXKMlHNMtZ4MwdO_^(QViMNkL&gxF%?<_69SLI(UE6 zto65N&jhSSEs8DG(~=*@f`*d+@DX`a)OuYL=munkN%j7UREEvv2ka*rBpabs)pD?2 zGM2DmYKhPL9%FleDF|hp<~}^~F&b=vL&MulXR4ltU?iXVy41-*0HK(>Iv|?Du;n&|m0qK_BDw_c6=-$}_KW8spyx+Q;Su%?X0{rgmScId z-l}^G0HGRrI#IzF{MopOYA4jSc`vweksv;%T|StLy=@rxAo%yDe2Y=%kcTc<21;oJ zhMaiYgg5xF)hzJaKayRF{bjxbkMaM`6~cKKunnIek{rmszxB42@a&VM{egADGL?9f z=M^-XZ5POu1Ix13z6GK2+21=_vvVZrV@s}7JuC*`Hy|OwwC=x+4lyd<7eOxJBC>Ls zcHVoG*;v)lb*h++l`nm#bvcf{7mFx2P3Nvw>nPzxDmN-RXZsyEJVkr(-5IdVv{vD& zEoATZIPb2UXo880Vz^bNq!wv(TF6a}8`n|4KF^m{h<97^n`BLNH|pPY%tifq!pXtn zC`#6&g{st8?``^Y!}ChN1O7<`w4dD#4vD~{I^I840$yLTE$8*?8>kL5*mOMl6E%F07)*wBO_o>sJS6p z*65s{Oo@zd&7)(vgv4H`cfp$T^iy(azUz|?eX09sIH1F=z4&x#4;w&xZ8%G>J-rm@hj?BN~A&?6mZo)iX4+UN45 zl3t0ElSR~`f2fCB7!k{6J5mIrse`-~vMe7XxPh0^f}H_a(I+1DZJa#L!L0)uz2vby zYflsDsVD%(A<(>YBaZb~muuB%&Uttqv=r2-* zualMcIOTYT$IAW-&~PXcdb!#}OZnuKtoA+ZVds6arFQz*-8n#VLF-);X-iw<*@F5w zyhhNPgwO?fnA{D(YY^U-vX!_}o=4|{ErgQc_QW3XT313EVhxPcYScQ@N&~)5eX4aaJuSjU}GYP36=)e66An&o0`mbWiHa^lhmv;SYnd zE6!e~rlIB@kCZ+*|2%Mve%mRD|B2}5gw`v@i0qQi_U(c0L>{JNedqjKh6sFO`c0u- zR;kXun4O0nRTpQd>^pQVNEpOJFxA0fP1c5t-y#a8#^bEl0l0T^R5I;6M=RS-f5IhQ zuD2v4f>q)FTN}sy@5Ol)J6xyQt^`rP2O4Bp&6@Awu|}LL(Xg{dU-2|H%Xj!N2tl1Q7p6Lw*LalS{~k@dND zBd0{Y6;!do)Mvq2Hy=|AgDzNS#?YkiE&tX23(hpli>3%dWYZ`U3#q!r1RRhzuYZWopP?ob?_2}y z>$P+ZQNOTr5g;Uc+xJ{K9rMZ$wmQ7}?w0E~y&>RW18^^GA+4sxuEU25S7!IO5`5mu z31wsCJ;k3tr!dB?bWO>}m(EjhjL5KXvhp1bb9E!Zp=A61^S!){c(?bhDIJ&?3hY=H z$n%(hB-oU(BdzMjWaG9jsTAgtn0|+q36GTN#qF?~%BdvjR(i_~oKA6O1!Gz0=Q%fK zSs3{9wmNP{perp3O(!MtaUYQ+TII~`Z>?!frQ2~%jMc$Y)Ge} z!Ns@J>r;i9i~1C->;8lu*GniXFWC_D$D*9)D<3;$)eF@V0KLypHk_GpzD6&rtJll2d96n zeu5G{rwPoFwoO9ilx_F`R;zcjY<+2Ifd@dfW3JW&WcJI98`wHI;6m*u+Fbqgb`%1$ zh1&Qv+5@-BtHb3OV&(6LEiOPE$nOtFvwXOHoLEOgCv5k`#{blZ;!WP7VK$b82>;D# zzO5B&0fjh#7>S(T3tZ$On>8@czh|w_YwD?0XyVx9k7nwe&YoHhbr)Nbbz9ObEUHj3 z`rWJzfDSK^gnfb^S^d17pv097>z3_zISZk1NRYvPRdyswY*SwIW^w=OBW%=#R@Ik7 zkQI$nN)<3^{=5l*5WEC&#$nCU8b=DGNdyT}u|W*UFffC(C&Ya{yu8{DN-ibz?AVW~ zCE<%h#!Wsf3{D2VNlEDD=$}~d%RghkFmzD?2j)M%#*Efsi=TsM#n*M7VR2Bb5$3y8 z5wvE8^L1qQemt)XlCb|d^xmowA+fe=?K;i=kZn(`j}RryjUonHp>n7l-v_$E7Bsta zurU->MvA#@^4+a%ediQcsu!>0SgX% zRX&Hq{Ve+HJr!00UUyy&Y``WL80wJZ-JJG+a3#CpXP!(5{izX#zxH&qz zKF3ifrgE3kJb4&IQwEaG9I<`Z^N(+VGZoT~Uxz8*KvK*pyq9w-?b*0t?J1(wJsref z(xUywPP6mK&g$XQmt>KkR4~z71&R>`zU6v;K8ns}1&X(7iX~O3B?g#yIWJG6eD}mXR&X)j5B?OI=hXx0Ssf;FksGZUor`iLVx&t|? zWuP9~5ApMxGAJR$WUoACWv~hZ_;NnOLE&cO>%(Jd$|C`4J)htezjdGDpEzHB zb1RIDeBkp!lp@vQMG-^mMd#-hi$FmZZ%|oI37St>MQQNxL3OI%7lM`Cq(K;ERkky87W%Fx4 zQqi8m?Cj!i(;og?=$qOyT*F&?7(LHXZChn0%Y7Ei;i6=Cyf@o;B*$*2OM7^44$>}u zWIp!Thu^}66SEf6#my@%YXbdsR7zR~S@~fF)kpfQpX7XWut5;|J&G8we^RQS%Vin~ z_l*b;UiGi7LE~l^@jE@Jc=Ss!cnMuVHg(R=@gM}g-~X9^fK>g5t}VcaCT(ognWWvo zNBSCm-|mr^zpd*q!&rXIt}q2uWL)%3?7>IK=Dl6ZTG*bKhni!`O=fE9$_5eJfTWd; zaL@F0wEMw2t>(aBFi!Z{aqAtY2X7w;-3a97Yo^b4#|vQg0(vnxMJ&3wAd&UuwjOIj zFa898ewCk^OTH{M6)J;B+NvfqlzT1^x}L0-|S)U!4)&}>dl zUG{Kh{J;7`JYY`=gq|ts*C~)#_*eHweDT!GiTCia2<osj-a&O%AK~9cNC5$XxKk5MIvmTb-hHwrtY~Qr!;cA10w0qRKjIVnKmZl; z(!8b^jIOuWLtbw;hPBt@!sc!NdUuxAUsUbe86SB1brd)lT9R;WFIB&T&2jOUJeG=Kl2MMli`pzx%5BX11m8KMcOz*__+J?*K%AX$0ds zTO9g}Ikk8AS*x6)g`AoRSSOfrIvXYbVopyPp!b zY6SNIlh{(YiuufWKX3i1?`gczjknXGzi{<%!w_%7gDy!S2@fb1GL`OJwZhH;umwJrsVTESY#6m>U5ayLpHKc%XsW_hbHUhdv3^qY8885tu|A(u$aEt1X zzkMg@5F`X7h7OTdx{(qP6cCVZlx~TEp{2XKL6Me*LApUe7#gHuVCarJ-`{!8IrrXw zV4i2s-p}5j^j(k5UvrX{-|prrFj!gnYGyve~`C7g&=SFcvv!Sp7nB@)*^pu1({w}jqo!S2I7ZoXy+Rp63nlEty{dbvv%5*=Cj}Z~MiB@2#sUn_wn{B6K zq@6Je3V2$C2R`1cI@MMW7r!X8N?_}*h1Mqi8W;5aj_u;^W6eO84@b;sgl z~0MU>09LCujz;m^F4YK6b^*Gof#|Ar_DZy^foRl9Ze@;OL(-zOT;D}vXiP+5adHlcaO?D6zjOIS|rA=HE5HrQ8} z;<<5;(D8M`Kk>ML*2kG5&B~o zcM`6|w~_!VdL5*f61Fhhd8#}R*gs2CReHIZ^ZZuZLkT%I+wIxQ#gH%WZ0`bE&J3KROl*qy2SC3Zn~ZQ_X(WPud%VvEz0tkcn( zM2Y?2xJVjw&}IO7On!0;pbuSD!^Nohz45C%4QDg$OC{B{Sk0YY&VniI`&r$KuM}ln zcmWX!6v^Bf0zYdRwmDKzm_BB-R?9DfQLU-9_HcA7@0@HVYmPJLqCB z`|Im*e}@)7bRps(SL34H!@?2er%$&vBmg|Yzvlz1H3$42vf%+K@%t%bV0%YWy$cZi ztN8F4Lr8|JveX2Z3m(T0BZ|)mW`1w)Im1 z+BVV4i#+(ac?J98A&b-aM*`J<2Mi=&x6jMH~pK$uoHH3Dcm4;qoQS{nB$(# zU-C5x5a7gphJemo+yc|O_Z_lr{3?s)Z=OV8tV5wTBfGPOgK%oC9f;<}s$JA2+J zd>5ux(GvnU3i2FLPT>15B6r`IEcjM(eTMReexHn>o+%r71(`DPJ~m{R#AeP$5YRF3 zdw=K(xb9)QNVyCLTk3riSp2#koj#0oe}^CGZE@7&&A~;RWqWDvn%Ve&*oIe#vSgWI#=bm2lESHU>t+1EWd?Sg zF!4(Z2zw&YM;2+*naS^P7I#JUchbe3fniT7$6hV{jYpSoYR6>FzuXKuA$&z8#XL&B zrZ{Xwwk8DQ8mzImMZK~$x(rV-QsT<{K;OIWLA=YY+*w#jv(gANZwyy`)LpTe^Q`9J zRvBuym-uT03tUi|2Tl$dOgN^XxVi(ke^G%Bw>5hktd{<&uj6m+E zs5^?&SMlgTLCqtgZPY!Qsskqb{W=;g*+-sy-nZM`Bw`k|L6N$n<@y^7N>3rRx4Kjn zn#iC7SIWHO0t+5s(x*?DFB9B}-gLk#^D05%QU#Vm{R_c$i}NKdHU9Mzy((@3cc%g;DlJ zj_GB1t&N|UOBWmP0`j8I|L~B{w}g0#A^j4o(5J*<)lkPr@n8SH#NvRl-HunU8!7$8 z`aVoSb0kxe$uNOsL&U?O*Cisi`682&j*AA?zLbzK6ZEQsA?dPQpF@$sO&y0*!Atl9 z_M@9F2R3%XgG=?~<9SO8Y3E}hMw52H0y(>{lTgp`du6QE4|=SY0So2iS(r@(-+d}5 zLGW*LQP2RMB^=J7VS*6Jk2qw%8ayeFtZuBp_df&6a4Rd{34y>k0w74_Mp#}-foeV#tE6e*dYtK?|E!UZ*xCIL` z#4)jSSiBZnbkvZ)hUFz(#M4trW|VK^6g2k*ns?`C$XPuP4P|O~xL0UizsMbUz@}p+ zTJ)?kfc{P9OCE|M!q#D^*wv4=8(`JY2l?{>xHRM)kPLZo9tLPpM&qm{XEGw`#S&+f z9AImryvm150^|d|-3*fD01%7x%_y&YV*N(@teh74>$bbf&3+!Beh`N5RNm50`D&nL zBU)&4EzF<$)W^|cVma%42}N!5*;TWU#${)XzrLXlfAj+}!=s=3F=M*tz5B^wE9$L^ zO5}Ctx@+!jo9_)QC`;(-sO^=-&yEh6Phu?=yDLV??+X=%%J>$%0-OY;pGhoNnD9n{eyb7P>os|bp{wKd&0x}ZypS>t zwA=@ssVqp`K4XS*hs{lRs~efTN)yG<^2J;^JZEuKQvRI2$cqvcITf=WF0WHh5?bDA zcj&oU%aaKj8K!9632@i7CwbX?cQUM2?Y43+$wgu8k{(4P*|XS@Agz2067v?WJ5YV@ zhup6_6xpE{@^9-6E1=UYmt9wlYbbt=W3u%zdTi`))!uXDDYk~M>B>*H2CmNz4(=T^ zO0lCD;``O=W^P&Z+ATKHDV<6;y)c!J7cJ^wukzdmXR2x!XJ=mBJmAm0?-o4DXx$Gr zcHDAaD(Ul<%|X~haY%ss6jtd|XYliU@}>7IWa_LDYaO9s-w}C5kl;cy54xY_!jo^b68%+_-vhjA-yc*<#c5v4FTB_sqf*e zgIr-c=N-(~`>q)w>^-Kn6yU(coZy%jhK(VQm4UhA=g%tATjZAco1e!tDnw2ThU-!%U|xLF zGp26BRw~W35p|javua!L?yKgJ;(N2szoteJs}$%Vz)gS*==cdZV)VL(38>efH%@is zXhLfXCyX;ph*gl4pXHE2rg3dPh{b}KYtO=_yZ2j1T2qrRi`9EWTJUE7+!=g=I zvDEdTx&`T=M0-fx3ksQdUjElu6T`T#{~H%Pa53jqPbw#}rbm*8*P$_%I;c7L>UV!P zUniAvDGXvY8ZjKgEOmFKYe=F&UMnA1O%ze+1V|WEJ_1Lr1^%>=AbE4$6ob*D@nQR9 zv-YYu)#5f^Zu8N=DZqE_YMrz*=m$G8Y&&#SB4cFK=X;v!>zY(%J(7R`aV9$@-PB!`cQ zXC{saLqWen!p%6K0fDFU-ig9Lj5}mCZ~>H8BypCzab{Rib!!OKm>@lkCGaI?!A#B9 ztPzZVI{vX0@~O1tutY5p8Y|r8wZFlasronU|KCwnnGB^S`$xw(oqZe7kqiT12n4&N*4|IH=SOjY) zw&2t^4)l^OjpI0_0_pGFao$Z~dYc&?xgP(T(45I4!U+-IWm^Y1kp-=qULK97>Da*? zpJ-jiiMg)oGvUQ6EO-8x(9V6wX~T|n+;Gojv6@(V6MNNpg?U9f(1pGDo2?)61ntA` zb=~DDA`&L#!FcawP}QCt_wQwRkacL2RD=epJVH9IQ02Q#5kh1Ij#}44wX+%S&kol% zF7t1v#vD56^$AafxQ|eQnytVg;Q?8{pqRU-kNKz6w_Nu8r31e`$MR`AN~LocCZZ*c z-9OECIIfr?D?~O{gL)=QavP zMNr~{ii*{oe7c2!0P}|@uElXbD2pfuD11cj&w&j)6`=4m^(}g=NNp2VpG5rcrTmuT z@};|_M1JM&f3#=b;uNU+L@EAW3~;notEvYuM~f#l(5c!jp8Z~*?@{5 zj5KsA@R$YtaeqQ*hwMVvE?bOCTq1KZijE%8{(M#dBIc%7@>_e?9Qmj1R-A7gdm%3o zICqq}kkPM4Yi5Fqo0zN74K>#JM7mzw+rAfM7bLlG+gw_+IJ0x2v`a+G?1Rhl8)IRL z64S3|PyJKRW1!QKDY70UK3$SOt(maP(jB=L(3p6-X6exT?JTCqW1`0=7HMLhXjpk8 z{+u(LrJYAqR;ojxp@09E{ zv%@ou{vGy51j+H(mvb|d*jHKYgQm1@TKVP#gqP%M@@w!p%Er^asRSeIX5?abBZ*3W z_;H_>H}qh`wEPu$(qz$4m%zD=02#PMZAnFsg5jH3OMjby5CYrSH|%vey&4q0>Qj|} zOt=?zr*oSXxwJ_osZrIZJqJ%8*PwYj9PG^0QlV{%H1&%6RAG879#b ztLSE3>GN3&KVAR)NIAE=0c;5OnL|iJnocxV|38K2*b0>$mzW4&-zPbcsrP5a5Zo+>3yBo(ZxKd#=*_) z(KS$Sc(O3ywU+j57{baEb;pdromSgkS%ChfSs-rXNc8{o>5EIwTd+vU&Oft~-FO@8{Z%TH>Rm2);OMurwHR8TECMP7AM=VbLZyjS=x8{L5=tVGJ z7RJtJ8g?VIRou7It%tgar0hxnx{MQVTyplFXWWjGI|Ac@G9Yur+c zAND_!xZX_68GiMX8+wf(-8{WDrhmO?T(7xe9Jd{1kiW}yH!Lf%nM7*F$mg}|@8_L9 zZO{ISSbQ}>UVGFE%B%i)3^QLcud>96Xzd*>){K&JkQ@1-qB&DZgObeWFadOR*#hIa zK1`m~sdwy9FmYSru|fYo5LK~X8uK5??P059Nu{Ju*BIme@@`T=f;bi2Jb{TQD8xW< zv>zLQ19J(BWu=$Iv!$k_y#PK$8#cI9?d~&n_lFw@Uh1D9%wy$m2P_#4L<8G^|M+we zkeTo<3M!xCb1wmJPqY~~Xq@A}ydWvKTijcf=HdR6ecP0Y;XzwDbLUmVW4t0HRY3jm zV?F%ST3KOC!jH<97vPDHCRRor198gHA3o*4?vY)e0RQy0GXa#T?bBSFK?}uJ7CKVd zRaIz83cbN#Qo6#C8vi=RbJ44Dj=H6_rI^20((K?@gIhXZY6|%fq8vAGCRyi+MxwKJ zlwHcXW6JQrAnga;oN9<&COn|kXC|Cr=^aM4rJAQwfr@w-%@?sM+A9~=Af@wxCmfXy z{Ba|%ic(D-ucbHIHzg*Q(%H;CcH-I+W`JHd2R{MEq)P09Rc%5)r>!vl=*%EXE`hnM z_qQhQ1q(aRZY*5-ZNC>yc+cL>Fg^tocC-Cb_Hu`u%_S3McUH)IEC#vbEfi?KeH%f# z^rJFqtij?iEavG{Y`(dC#1H+E9DIMKQ8j4=Y3%?EuxYW0E27_!-u0)HjawZ79d47r zoZOWBCC!Y#JfUr~5gtAsHjF&Lyb9Ug_=RSd*wP_~?4k+qg;l$rjqb&?o{l84CY3Wq}KkFaw}v4mWq z3CVQ6cGeGC37x^V*g80psgcy39o^#j5KHZ)+VaZfBPxUIB?L#_vh)`!0iU_^+0oZ+ ztZ#8XW(;O4T#BRk$)aLj4(1Xar`H}cXtVLhP2<3ltS245P376|wf!KxOy}9y01uV; zPxXJ`B&;Qz7P4wz-@m@nsL$n+i)!hU?5xKbiNBaTDmr0KTk)Gj593k(k3Oe~=#tD& zl8@Kpj)lqN+K(&T0sf*DNzs`_QULlz?^MqJ$*0CDOB)aU*UEf?_Lm54g2D9+`Kig2 zo%vNx!XS@?73#0y=b=H*u?3$ncEDn~)B|E%G@{A#EH%32@))wTkl56Az9M>Z_cJ>~m7n~Oyc^b#yh7K*JIlj9Ho*}gC zU#=n~?5txI6BXS+vtTK)2ko&V?OR{G_6Ao5kect3+bA z1A=Gcp9n?9i$zg`_wP;J+J3b!(Fl`Me(OL7|HihvrF=Ru!aDrNy!hScUx7iES)b71 z<5$=7v+&QIrj^vMk@|7<{@M0iCu3qiM)Bj(Tiw8ITab|NCxHQAa!id}BEPSvqe8=x zJnb(jMw)fG+c(Uv4=?@bw|yU5PZo0@cCre`p@*(rqaqDR;kcU8oq%Lfj4{XN0}nm; zp+veQ^ae)VgJ?~2q>dTLSPy*xVn%#H*9&7)KEI8TZ7=ihqp}{@EzQljE~o1Z&=T-x z0Js{OCjuMi%#|-0yym7XKu;=DX{Q_Qai!%}h6CIdymhevL!;`ufqsAwo2V%sEQ8v& zRrcV~mwWgft#(=X>=_OVSVOfQ6aEwy6Mh{xfQuZ^2FX(2?6=>SJ3)auz(i}X=Z27| zLZ5v%Jvm~;j~JY~u&yIrkI${xe)iM3ui*^q-q6+J;=Kd*3l72Ga0Gsj#nLOvdjJh3 zCn2LAk-?$`E*bmHN7f#<(0gD*6JQlWkEqp+C@8D&1`{=D# zvG&I@i&N*(_CugI-)L~k`W)bYMEY{^{>nGbc|tp7X$4MWjQa>PcYak_1R6aB6k$!0 zNW0&ifS_J#hIYBKVpI1M6b5)!=hvYZKa-?6f!##kk^YJ4OAYgY4Pv~BV`^}?!{@;^ zGM9s=J2cw_XJ{Lr_hx#^-fjF>EN4ZM{y)j%!TS*vAMOyG?7^MVo9&z0DIF=Gd}Eq^ zu9;6xmuSr|zB2Zf-nQB;*<0FMh7+EF@xHFmzS<1 zQqxBDyJkgfPw2H{!Cwln=wtqC%r|X(k$em(ui_*c-kBe1`&DhLhP0I~h(F$)Zla%M z{+1C;w$97{I|wkz!+1_jO<1243!aT5nA4Alh#;s>^0yjEizhYw&tJKtR*^O>W?pK) z-pb^6SQNgV%6&+RO6xK27>k?(E;}ax-h#|X;BpksD@v{Vr zm>s6OCUls?0*!3UJbha2h~xhquUl5*o5_nYe;0Tlu8uiwyU2Lu={c;!4PR_aUGYJ+ zhkWIyh`iur{tmKYxSqz=kl7l@v@mj8d28dIflu;zw|gXgPLDLij~BaR!;_vohgwS0TJXr8zi9E__LJ2qp-LE@z(kA=wkImp=?$fc~0j(%* zS9LM9Wj~aJ2-0UI@hOvHhRS4&YwMBa7DSJ!}s~`Wt`ok@iz8=qE_@boX4?wPby7kzf znzjd*1Q3UWKZfA|BskW<*BSKH!rv_*=G7WRq~MV+@8yYgbb{9SmD~j87A{O-LFMefwL98zEAS zzfshok5d*AMHUky*{@SHWL}(NPY#*V!(*f%I-_egRW#)Iby^FNMOEL3yRrq zGiQp|v{B=b&Z*JhnNdH(AU4J8Nu7g{WrWZj+dZsot1zhVttQ@@tXzy?*#-Oklj5wH zeT`l5-tD(SQ@NGcAob)u6 zn0K&0Ey$1kjr?pl(cO0wu6gs0xOk%A(mbZUNo)vnign@ejvGNt)DvFTn`2MuT|Nrq zm-t40b2bWC)dk)Kr@@9#0!ZxJBLcDx(3SJ%x4x-hlSC?^(=vd-O2$7_jpdnu$Cwtc z2Emi6Z8qOG=wCeE@zUD<)409U4C6am*)g^8FR;I(ykLPGEvB@CzCz=qwz8m95<^(N zZx{9y>x8bhl%Y6CS%M_x%nI$0h`!E}Cs0Po|FGH&)P9LWW45@kbqrYy9aqrAtewdt zqCO2?=-LYxu@13o25nu6viJ@Dt)Cj?%1z>t|Vx zQp%G{_Kiy$_&x_LuPfN@WY5O79nm8K3H3FX4%hImIgwc4*oh%s0jTe=Ce_3r>i5cA z@#DZEg>fw#!S$4tpf_HTUO;H>y!RgA5K)f zB0~y4LQ0_|PottQ2|yGGx6taU|U@U$ZNum4fN5p3`6IBX-_$wc?7d8&o_|B3Ao zuXlPz_nMw%_1Art@(2L?iEVcwKD|#50|cWb9;5+V#L9JM{oaH?Qgs23u?KbZlP%h? zW@ShIRV7r*bb)W~RDWZDD%0P3ow_#lsqv;A@qF&DDn#UjSEOrU*P(d_?)~V+KbkFC zsLTb!3Wgq^-^C<4@y{m~f_~I&kfiRqw%+luaULy1s}beKsqq=I2t`&6lw6hKBSliO zV6~J!v5oaJLCHG#ZPCE7m!f)q9OqNv-zx98P@m(^K_)o2RxH)e#fMzyT;(Xj${c&{ zdX|44sUk(t*MZ415aE1$NBmWnXG41X^AHIW@Bd~2ggpFyqq-EzjINjWchl*~R?L3p zQ`g6j`iS-wp%~KGjE&tPk?n}?bD^Q&abop{&Myio_IZf;1!{BpMNbKB$ z-T0`UwA$_Ow-8?qysuTnK^Cn@Bpi_od<8733Rxt_Oxoi9b5D_3Vc_}ykKg-CgM7oz z%hjPncPD}P+;ODn;MWx1b@w^pD68>gsCo;XT#lrOUyXr~3l(XDEVDISVC`94F4>TN z2~P$^pMRLkw=19dg{I==^j5oAd?&IaMVHcmkeic&forz@ROi!`4CbkE zv&KqYlclo$$6Ov6@SBm^j?yTDR|*bZA$+Q6{9ilY3|SC=$Q4!%)(uKOoL?8zv^)N4_bd%Sy<%3Gknrgc^TOU;mFfSQfYp> zAnL8rM199*4pFQZcW7ds3{xMd>1$n1nTMPi&7S-l&z2~av;q9$@WNZEa&eD^(VeVT7X0@1=6Z^;9~C!0gu)cRhO6-KE=CObm+^-m5Q{TDWl;|t3K zwbvpS)JVa(e+$q9{JIV%b;;{YlT-Np{S<$bhmw@oXxg%uTv5G&#ak5HLPcxhJ8_w3 z59cAeo}(+^Ofgj3DZe;Qw&vD%581k;kM5#gPtiaJ$BSoF0+@M@jT;o6L#uoTV3(-R z=vfD9>^sly+YR@JhjeR8jlX%oxW)5|_GpO@y7LT^hRmd%g96uo5le1|>@8vUz=XDk zgAe7jODrMUqu`Sjyf`|BY-b%VKNR=7qlZO zU&*TA>{EZ>h8bm2)O-n7TDOXyKM*C*cm~g_nK~s& zGTPj;i1X<`bCylaf<@1uW_C<$7fLdgPz5Q|fQ`-b1JVk%i^+sqi)bsCHXjmUU#zR; zL|6^51oTMTUCfVuyG;(r<$ilnou5c;>16+JJ#Ig1S!EW^RO?YZpnG^nn~mm+ zpLIsezR75aP<>2O@(Z9``DSf!yKcL2fm4yx_W7h#?s|0y{+qirpmO)u_ycYkxs+VM zlq6F^K#@Yz6W9Xj#oNd8wJ$>U-Evq2=?OYxk|ZyN_6Aug=&m(RPEP`xkM_C?#)Fu~ z!?>hl`~_7b(ZItN0iTU+v%2E`oNIkyzRFYMAKU z>si3(vrrnsm|%clUybdTc=5bfH0|$b{%z&-ZuGU>z7^P!cz);2n zZ_FKD`yCoT7bonab_>dwem{_lm66KrqnYwjPjuBPRgOqX_MPaiMf2X!@Wu&e)icm5 z{D-?NFM^3U74GJqMNmn|_4R7d`N^WIe**rvRO8CT@GvJq*_n>|-G@UsiY{^W9^EK6 zfLM-=cOD`SZA2&D(!`NF`zK1!wT^80%DCc;C zyEO3Mj;|qYG|Sky?9poAI{Me83zuzB9o3;pci+pz@4BV>AFXV$o$V@0W-zq&QvS|77ur!sB*b(lVcM zw#~%#&GWAyhtPjms0U--r4ycRJ{k&+VUnqh2N5Q*lx?^CWv>wfoRR>Fp(;7;l3$Gk zk0ksGFX()bc#}blk|l7W+tzrr<>^LH@kK!VqDA7u+yRrwHrA& zLH~@ zqGhEG$HxSBdi4OUkW;>Ms;es8osO=7D^H(wJ{OQ;0=f-9+qH2>sjF&zM|W-RLiH4tj|C8Tjmu9hOn}>jM@xUb zqGJam56>GI!mKRJjl!Nw1RMlKo~Y)io!H_i_0*-Q-+3g6LaW6$$_D!eXuWO{lH8*_ zCS9Mw0;9*JcX~e-6vM96gf~qz%2i{!gMdvN^S6sejZc@fY|UP%FVh|7DYn$z=eVr+=i+3JdqUsen%0fUfzWlccLPmSnK0$ z-hL8>oBD_Ss_oH4^p23`jZ&%Cd6Q!Pr_{~cjqul8CZuPyvI<`T&bqnMuVh246WP@h zgljKZIue!C3M#u4%$}ue7|;0bT;nmzUOxH(*A`225}Id?QFomlGt=cKr;*$V(P-rV z>JrXlo4&9t`!bg(MyZ4s5_g1|D;o;4yor#7;=ZcMk(~f;k=^451ilu@>2Wi`tLP;j zNcZCaByNYnI;OjGo|2)(^tGYAQ3K#Drb)pggGv6p#2H;Su1pe{LEkcQpeZm7=pmbn z*4NoDCa9>Qso7BQ$Bx;{_U%A?3&&1kN%|DlyF}zzPAZ|sM+QYi9WgS@t4qPc{1S0V zcJn+a)PDFuwe<>nV0xPg0c*E2jYrf|4j8P#M=WtJ3eG2(Hi}m};|yi0(!@;4xeYC& z&4$eZq&fNY{Fq)>IX_@VIsI+@ckGzU?BB+*pM%GM$WU*Xn}G*pNyCY#;RV*QMqJQ5 z4kRhmy6|$oKMo#bu*2pZ4UGaWPe{yb?}U!0V&rtE+3;W_ZC>Mf68z-IW}D$}p+MsV z24MhlywS*|`MVBH)v02;ybWDpj^D-#J-@ISissqk8WW}SH&$>` z)H|T(1M}Q1;g0_}1+%p7adS{N(!uwM?IP6QMECWeNa7}3sN%bd_kG(75b}!NuWpiZ zyu7}0GsMu6rkl<>?bP(rH15*Qeruzz`Qmp+-6dY!fh;BFZ+SXbt~3B8X1u0;K?b|( z1Kas@c`Oz(nUYNq+Z>5lxXw{Mkx~DOrWAEtU8SZQ(?;g0-5uAAKKfDrDqLqWPQJVj zX64VV?-jL-4mKI9|8W}ONEYa-sdLZ0(hTsLG9rk|HZqr{tRa+aD(^Z^%Zz(0J23O1 z6x$am`2k=e7j`_~uj!{FC0WGM(H;zWw0rb z-L7F9n8EJ(;4>!9|JdOg!{twJj@Ttm!l&)Mm>8!th-nbnpJKJ0{#7#9oz8Sa4STd~ zDd&B$bZVYwav{F4F~yclN|eX7lBU}qMZFSo&x3Jp5d$;jGrH(YBkEmTmkO4?y%4v= zC;LduxLQxFl=(F}a6q<(cj+=-;uI3-HDzo8yGMn@OWdDLZPiA*H6Jg!ZmuqQsNAJZ zbo>B#&OmqOzGPCW46yYp>v#YBmx5GSDHm(Z7S-G00z!fS)Q{+^kLoL)JA z>_N~W3!)Tp6;FOc5gGE`KbY`I_UUVn5cGGJt!a!1A^NM4PfGK$l`>DKe|+8?g+FJ# zH>u-Gc~LXrg%8zXm$(?oKkdof-`i6~wnTUwGnrFt+q}fdCc0+z20pj1Re%CW{<8Ev zt2H0M%C@3AzXy5$J5lp0F+!4nI5?d?1ymuVAr*;&H6mvW)K{zzbfVFar!BmMxnV5> zY#uXzRAi=?uP->x@sEXU7A}p#YgYS@VnBv6*wAgo^XRXF?oexkt@kV1CUVuKHJ&)7>9k!Crm?hd);2{blov{&9*^>xKFXT==*VE+i7Z$=yDo15sU>%rB6{ zYTSOysXnA}xru$eB66)+C+avR6gf}KRo$RFJ+G4x63BU(S8{JsJTA$J$)JP+pisuQ zMChU^PEuA?USjVP_WwKi{y&v`t1F5iU!U_J$XzGFK!?)!My;KFTtdP>c7e`R{mc{+ z5p`NxL#z&pK=JrYxx*JCJpdM{*KmE6m+1y^{L0}Fyz#ciStZ-c4`(@P<7_+g(hj}q zeM>YR9@Hk=oHMr({8?&H`^`n?f$xz{_tTw_vK#vR&)1pawJ}eoX7^tBKUgJ*sa6^` z4=%ZF>R`}2t!qMn@XD*lStkd`}8&+)Qt&v(9Dq_q~{_i0TTVFhZc9fa(Ts$){@q zwN#9~GuGup;?npF`$HD{Ewbt2avMuR@_3Q0#dbD9YjSapR&vC^Js>?x5|G#N=o>Rd z>g%q>c@ekFCIOUT{L_WY0k7?`c;knQm>pqB{!`79Q$-X~XI$DToOW|lx!Wh%<#uUy znD(-F%>)xOce&g7GAWn*OQ9eAt==vmL1&{W^H4(IW(>v*W;Xj|gwcVAf;{m)a6tXrgm| zjqyeFSWW_zx&2qiIDCxabgZ#8Ip~Wjs0%W>Tjm_60-F|X_A zhfh;m8_#)J^I}G}zZWk}{#j=EwZP^zEO>T~zA3z^wH9FSbN8#-;i~^?)CwTXo~NSm z?mxVX>RSv&Ga@X9M#MkcJMLpXy%;~m+`-dwnXVU{t8USFVS7?kR^kU+0=I>W{~?8? zBXUlDhjRlTRIB`FBs)iH_vp&eM(b8@?>*3>&G&um#^&X~YP`e;;j-W9v$3Q04#ZTi zWh@4E-aH=yv+smNGOo<@`4--idY}(z6xSx&pce(|--yUg>=Gi%lXztMU^1D9i_{J4vq&-m^~@4Q-yFqHg5C7Lh)C3Gv(*Hk*|vtIt~2!%(O z1l}_M3!&TQIDgzcQMlGLbKJ)>BB|r8%&kE#p%ptnpJA@XfdFhegk$p;$*(v~j;^#v z@xEEa_6UIV=}GW$Sj0{5#z=R=5xFnhg#<*s_aS>tN>@<)%$G?s&Gu=TbpyaZCj?2F zq7a*|32B5in?k^lkStl>AUk1l(RaG!w6xOSv8mt!S`SA^SC>VdnAh5U=;N6G%~WpS zxvPJAqVy-wqkZ)Uy0#1={{QvHYtRE_3OT0yhet*4qL(Qq#`@o_-_O$@X~r4zuJ#3< z1>yMatPNwT)$OlO*E;v(EMU1=2zK!rW;T$Ibmi-Ssdgn_2#0k`9pz~7sxjDPNy{}( z9T8yW^U-CsQ3gK|S$nyVr!d>|bfA;!xt1P7=aE53H0^hFah1xy$O4CoiGcn$(Z~mqI;>A$0 z_~vQ`AO_R-mudaQPks;2#7_N0bj{aUt5<)exg2XiYDiv)!X-7%4q0Y*wxh(KhlYt0 zJ%8b!!pNNf+)wEX{3jzoL0X&!nP6_5@3IePabsyl_X{fo#gwJ9@@ zw3GbOqfw~&NtM2`MuZf{ux5|8Igv;Qb%NbOIZF!n{ty~V!|@tpJQBa%_TUa3;S3^@ zkfrlo^_zQyfi2d$;6wM9%S``ajb)Dd1mq=Raj^)(dn<0Q|B# zqL~S$F5H_O$2s;IQ&lrwaU@naI)q9Jil}n*q*35900i~}B_=&JpV-%MpI_jv3_rOL zJ`47!KJG{b?;e|W!&pezUFO7$9O@ftVunY(FMy1{mI%aKC}gd>eajO&WMZUTf$~%L z^`^nN!Y->n748)5@jaqMru0wTR;Iix)MJ*O$ojOb=p?14(W}9!zlaYNI63uw!G@8s z51|j(mf+_)hHn9X91uQz%b5TNBdMkeo-&vpu}SF?rBjw9^F?ESo9Y{NUmhCwsGUfn z?-e|K2=il=$wtlVnY=^bRhA@W@g9kcmRsiezmxZW-|^=TJ|qG3r+}p3J$rkhMmV39 znDG9dHRKyFfzC!FRptkSjgX-|fgPS|hd>LAVFQ+CyS(4{YkyNckb?uEsi_w~b$10D zF#&TFJ<-_NXT9X!!G8Qz+;A~3=h2_KEV%R%=Yg`fDpG$bO4}(l5HOZZT;_GuC0zLn zY-tzzN5$}FEyLd}=fVAw`5_S+sn;U$m(9py*AJDUVp1%Ix?vF6i0dwD@zx;gRHh!` zXn0D6kzcu3G|gnSbbF^dulbnWVdgU_WHx_4bKZl9Mj?Tb-^Wh%XNPTD)dJJ{RyfvV zBaSwy=CHCpOJ(Mv8hlM^xP*S!#@2j1T5F1atyL>Rx+h+9ST{FSdrw^4-fmc;p38kl zZJbtw{D0A$??6&$Mru^8sw$4%hWsB9LMuV>f4##Vp#KFDvOVSpdoseuCD2I29HGXV zgEWCzwNf5Fb5{bpGRUDUPD|N^iv?qJsz`?fUyk?<=1e^O@Tr_~HXd>W9XLjN^-S;w z_bEc_mpRNzCQQt4LAv)}a~UdycfdKX7}VxgLkVGm7V9qi8;_aT7c z+#n}ExYj&}*u&p~oE@pe?9#+N<}5!LzGujlK#6;WyxwH*vAm9RKSa)bsKlL=l!nPd zuZ7l$WU!GUy^_tHye$gxM6N?=W}Ub*bPW{J3OG*KG{CsZPJN06UnZ6@4cm{3){4!S^kZO2GMR5aYDxvW1#B?vs$!IgL8_ptCPg+NJFrQE+ z;=2{%K8kDpPT`|2CXS{wiS;r&Fo&4g*B-_J1*fptCIa%Akfq3VK6|c9Z8oo+P_c1KwgN54{eigi}#2=EC zz&tY}mE)ze*UV=^C==22YH8C`LFE+<8x&0`Mucpqv2&-bZSN^DG;&A%G6 zyMtj&XJF$eQZXy5sH-zP7}0&SOoNR8H9Dm5L0YVV594acBepA6Hulf!nVj*|59mC% zo(>;x=)A-XE%ahEU{F$To=pz&rq@ViCwra@Quc8jn{R@c-*QzLMM zh2qHtdmBrROw-uR20^-{V`vzdq0aTcpYz=7oOv}buC->ZYpwak z{_g$R-@T8gf^NzCdv4EHSz1`3_P6jJT$!Jr6OO=JrzqTACOJtCvpNP}TQbJ&v^yqg zdg+ZRCaG>|Uu!7WxuP##{? zDTJjpeOVr2`8M=dQR8YErkp~pY{m2}bav;wZdR!F7CQ1`Qru0L-v`$8#g}vdkV<0u z-uM(Y9NS?QT)`Y~Xo)&ASbZK5`{A2aQB!{?`8|?)G`jn8B=oOH0NxJ|f0OWELhTi6 zH4~o&+p_=2)t#qURWk={$DxvYCQn)FK0i)Kz^Y2e>pCXM4VvL@mf4i|YJO2sM?43c`zUzLO_zR(n%wuOlefckwwJ4Sn&0IK z5o*pBLX|Yk7csg%P(d#XqyJcfZbTpIv|A7aH-!tSH18}I9Z2f1dohAFe(YLWevJGB6?$Vu;dfP zG^+QBHN9_S5LyVoB2nT0>jelc6{`}GzCE3==MHqYa|fV)l7trP^YtQf-sQ(a6NX4J zL^t8|FuHt{?47AErR7!GrX6<$40yK4N6h-y@_){bJ{0~!66?k;XNW$kN2ey1aSi;ftlag z_=P4}B!8nsV^*E)Jj^(NAD!%W3I0qKoZxOftgK=mH`=pvT42Qw_&EZ$jl0vhYC81d zOv~iByXE-I9)$AGO+4~v@2>~EMweQ*AB<|u_eRqRNS|H({6Av({~scFd!@cczj_@d zbJ|NGYzHR`$Td;-n6GOc!#`BNdgbjhs9f{pIMU(sL2AB|#i$rTPdt2-_4sqg58yI$ zLl982d7}ew^4=<2=;qjo78V70=zXOQPy-}~@YWfzyaLT3{WB~F1i^dJ)UCBsckQ?VJVaaC0M^@}U3t^iVzq+jN2XV3KoTy=CAXP3X zH~6QMjjPsEw}{=L4kn3swn-+*0yAa=6ZSRU>o8H)t#RhJ-{rfl5T;+UOByE zOSD3XrAdW@m2Ci1Q_~f{^{P6^2L&MC_Haioh@(8nW5GH`cTd4%k28FR`u)%ChpJ_G z__eP2s$I~EU2Nwq4!LkRKK>H}LI%(orb`tsQOpbg7z`IYs%wYek;-td-W<*AqV!6e zn~m-})&d$|r0|I2EpHSrq~eF^#DDjPuNM`sh^^fjqDw0ZL!t@-`uDbzbBljkzLNW! zBdlLu%{w^D743KbU1C^EVukGR{Ht!+2agBm>iAJGr?4ZH^5SP#)i*BSi3RK&yWb8% z2b*_P7JA*EUq)%V(xpU_K1BMq#9f&^kZz?YlK=#ToNT9XN6f5hh85nY`5MGu8@akI zK+Ipxhw}F+OtyCaYZ+9S*JU7V7vHgP^3UX8&lrp;c+{U`R|MWr5LAsR&`QGi01B^H zzZt<4531ED*tjCo21qpx4@oYWCbY{GY?xilyzoPeaTwJrG}cA<2jPZnSE^=M1&dLS<2CuyH-r4 zXJ*3sXW@yk*LT$y39DJ8V< z6djCA-4~ji%hj*(a7kvK*!Qo0G5K9BKW=kV<=q+H^~$WgV$H6vS^yTP{{^4U%=QsY z&dI?fx|VK+6En(>{>}h0xH4>(_gpU6u)M*@Zba%04c4;7GENok72#yMK=$*s*@b_) zV^Tq)_m9re`5FRRjRDpdDSQ=)2Q5DdXIv15L)nVraCjfST5WCH3(SKHREjwvF1DYh zQ*80U#2=h;za~?N+(T|qgItbA(?7YX&m&EmB}Ffey}dgCv4d(*?oDOyrRWOvmUPLD z+%~-qqOJcP$>QWH1F`b3w$G)+TG2>rB$a{YKb6Q9U(t?%4-0fZQC3=Ayd_0OBD5bK z0CX9ak-8q$nD=8N^g}U*{mYBmR1m(G0ul)EZx#BlJSs6=Fe1AiRO2jN?9`B!z>ki< z<_^SPvXY*VT9$tPNs)u(j-R{@#}HHp?l^t)n;7eR>7YX6#oAsTF?}x% ze4Mn@g@S=PLjRc*fwN}YPr@!oE5Zp9+_bf1;t(RIr175S(Dq>a&dKO&MTOe>a4&-O zMm|vQO{t=Afi%Nxxk9N@$h+W;zwBxK_LzKb?=2t$w5kpo-@?I6>Bhu*2yU3aKw$pN1gn^@@ zltQ0Ob(Kd76uF|`wHC?pXx<^;ZF2^7PCSuVBG5d5GbVRAt?vbNdeFXuw;j~*k;zjJthTr8{yEfIvmeSx-24)7p2#o!GSK3s*|(E$p_9G#qc#okWuGb4B%Znj zeQg=eiXyKDB1S3A?G>NKC9f&1hQWS)yH)6w7K8v)srlN)f>!i>9fSAuBjK9}Q(?)= z9&Z`4tL??(L7*Lm$M}}Ns@lN7fStWOnNiy4MIs#s+shLl)%zhn8aY*XL$~rSp zJyz&@hubZM;9$<(xjzn7haB_LO%jM=U_Dd}q7F|Eii}kgkX;uik*33qLoRC2Kr;Q~ z2uA}o15h$JdRB_ug(;EN&tt>rr1UuN!1J z4+W%Zy-qrJ6OO@HRpx@~e>sp`f0e(lJ6tIqmM`E?Khd|3wd%E`TDYQoZen0yZ9U)h zc<)Ww{IPOd$<<{KsvdlO!Vh`HXVfs3T1@)v+uax?D7P}X@`_{4)F8)0q4M>q5Q&yy zigd&CT62M<){2F9mVO}19hEQW$ET7yC47Fg^lO;!sz~EQSZ~Tv5(0^43nM6w;E-KG zIZABYlaImo=NA4CYMig~p8OU2+t3gHr)Wk6m6@=y1bk~B@F978IrQ{#j9#c*_>-z~ zN-9Y_MHOFJ7Vn~i2*Gc~6>^y#p??BCk=wk5=B&Ms+IdNgCNDtFGuD)m!knNGlQq85 z&{oM-&XmJ%Si>#G@5Y9#H5E?i>5TJz_c6L(oKu41PDPcdYK0{o_XBM-UowT{be#M; zzmp3-rE5k&8p+}6%zWY1SbxaZHhLC4x-Be&g$&Wcm(+1UF(?O0VzB{uV(kHnF9S?C zh20iJO+7jHgUP=9FbIL7w*Ip-da$EC?fQ_* z9^;NVHb+u{q&jgTP>+nE4tKUA6dBvBXsQp zCUtxY5OcrRZcccx!MS;j79jEdb{soQ8c~+{Ue0lhq4lWk06j8yvFw-bU7?juxILad z^+xqyMfJM0?}Q9KTu9pA5KwM&5c*AZq)0(%(c35gv4YydHstzK7wI!Bv2M+w|{ zD<7hXhf^`}2tC}@|=_r!yej#n>>jWqQFx(fDD!=DW z+2)6pCUCI}xydG)uHJZ?Jb<{AZfrTbJ}k%<#gCyBwxwz&mpk@pqFI0gHwLAthep?|H*&8O)<7-lc?QSON4@_88NEFhcpJbZy27!rN z$@o%kDH|FQ>Zhn6@-e4zhZRyZPIn2eoKrqUnT&VcrAj&y+XN}sQ3W$0eKxDCr^@9{ zT+wtG{iXf{*Biz4Wjt^HtN3#03N1N(ItYj+l;5E~doc4V-JQ6Occ#~zp8GPaFD3saCKUS1#cZ?XcCg$B}v zfAFCxdtwzpt_&6cn2@m}cUoODKHFIc@gEZ`q*Fq|f1MembKHy?3+K%5O?f~2l=W3*!hUn(m zIex*?RiYj|YTnD3jL|EBN&x(ZXe6h3vNzUi9JQ0rD!Q{8`0e%(^04d37<+u8b%=^) z;$@o-z3OwXD??~klin&L@r!E&ujVNK?y<|$1x1ejUL`=iOHd$GvcrHnKy129iups0 z<5@q9k?_g}EBlaH38detT{&Gy?RAvC(?dKxh`mQ!2VY%sP7uG0(Fr?Wlld)fq3kEorRm|))8sysHF2%7mpm{HL%eU7bE&f=dXd zFNE796&e=QzV5JKeCxJ+p59-344L~DlPwuMI;Aad0f-IqL;nE6?peCq&&<3kUfQ_s ztq6mIR(1;MQn^--#Hu5qirv`ZB|Jq z;TiSmk;J>sMOYSQyg~QK&!c*qi|p3P9M37I%GI_VU)GJr$>gkkiE7 z+OBc0LQh)4t55di5`Q|Q<*skvKb`2CgE|Hm4HvK)BVud0KP))Tq#w@%x>EnEk1JDq zfg`;V`X@qNv3!>BJA*IRsnxRD9e^jE(0;SZa9dVwKFdtK>A0}yaXB6;`Ql%Yf>y1} zoeydm^6-{D^~8uM|VS2=^FycgTsyVrvOToN(npWZjN67Z|Oy_Lwz zRvmi;U=+09JlU*Cg;0XWc+np+HUzZ`7oR00o9iB_@IPr?zFPJ#-kSjgBwp_w%i^Q; z8-Z9KUnG2&c%i(b8V(yxabei4nh-7t0G#ScI_JuR;oi{J|T*hxvC9zm)Ju2II% zC1{{qFv3>n6`u9WuyCrT!n3{`l&~MBLJHKkZ<9^pxplX*C6(4ur)&qrIR2#^#ay!{0dr#B`O1%C1YFLaGoCh;`OUPDZi^ zwP|mZk>^ok147ZExMwYczT>M*jyGrFDVdm3Y`vHG`9syxy$HBN`~$4v@+Vc zXSZ-kt(tS`={ynkakcYLn~@JB{W?31rk!QR{-~SesCTnF%H-s7n6>_gfwtv^_Zv%j zLERZkLoF=PnSQ2GY1<2IDDQ}X-~oOLulK9s)~<#xFX8x(T8lcPwQ_MsW_l}ZnJ&}$ zo%A>_^yEYvFr>5~VfL)!GGV_M87D1`%-IPlw@|ytyaRs?3knzcS;Une=0xjm=GWS? z*`qtccYW-59AS3-`Z|A}{^pd(cS%Fy9$g#}KKkmr-v7o#u-d+#aaJBQ2{JqF1M}~iTUETyy>5Cqz@N9NV~7enq(&d9Efj;BKJjfxkn`}z zBW371@TC1|S{rI;D9}XAR7bk@rm;4Z^NB$c~Y8d6w}ozfrN-ob}52tW1S3 zM$ptjVLjjeWt;SDZ;?SIlbzU)&=h%7Ndk=gX^@kRF~GPCAR}dBhoIdAQ6i zL!bnWNITHKw6!XNabAA)aA8}+;PpG^X9UceTJUR-KD!{7A#5UK*F;ItwdQ9}*+ox{oUL)~AIxIY$fPjNtKV`U=V^sT z49eobbzRBB>96F(J=oUenV8Nabc&?rKx1sWOyf(hk=N2-~NVJgZYKZ}v+G|F9zdU^M@J zD9UR>5jS`BscFM={y6InoLjxJ`X?79_ICeYvU*p%zMSnA0Bv6 zV@q;Ez{i;bs)M#4Hj7*>0g1lNIKCP|mk6<+ZIz16i+=RB#ehl?-*Iy5-LOHTPdxJ1 zeQq+U{{<%g-OX>(+z<5R9up!LFTOPZD=v2bj?~Qv_j`?r*b)e&X7R8m`howzLr~?Y zWkWm{;Lk%z@;sq0X7OKi-}lp>E&Hzys&&hCjdPf})_)AZfz7@5HjHW9vRx#&lMQ#% z7wfNjP4U{h?N#7afjY&LzedK!T=XZCMpcgl7Xud$H7BBd?Ju%Q0+fD_Re$}Bb5Tof zZ#DKW+xIYVzNd-6X^ZY-U=&FhA`vUYd^{OB$w^Ue-Si>s(`i#7)@Z`8wB_VeU7g1X zDZXQ1iF?+MtMlVrs*JUu$WF6N0_##tzoz{1oqbCTA3c^)mfU^w6Eoz?CQn|%klGT% z*)E%_k5GzEho_u|v<5mwU6e7(QR)3u-xK-IKZSL&Uts83m3V$1{&H3zD%#Yrgh*Gr znz7b%@+|%FLq*_Gu;J?;4{h?EGHhW_m5X3#qw8z1vnXuWDeF zvhRN8bty7cV!SX=&A#@x+u82+evY?4LT;mi3pfu)j71X+2mBnIN^ z-(iHho|>1S;%X7oh7~*bnXkpU8N!Zp2e%1dP0r@^>f*xIx7splV+iy*{FZyGyKS47 zz#0>dj8tjj#suk5>lhS2!mwLJ#}wbjO}#5IiC%?j7Ymwl zuP0m#jRXGKQ17e$(RDT4#U#AUG#M~Ih>Y8(GyM8>T<$syak|RF6&$P6$0zF;1>0SM zNH#S!4c~>f8#|0jt;(GJkM-NK@#%l6#Q%s7HyUAYxY$E5y&CCvplPr}QmL+o<;L#+ zIg33klIxi8c(Ta7VUT%W_k;+B)+|>0^2M#CG!&2B4`T_Ao{==7*(}Ax0&~o+F{ru znS|)mW&c0*K9$wxP3lO=9R^gwhZ6%0Wgj;9pS4aEeNkmT&Fx z4`)COlRIT6Mrb^jEgqn}g=69l2@No?;WE9qz7WyU;S$Odx>k6*%QW~SH;k@HznUV= zH+GT}I+4^>>d(&YJx2sSr^MQcZ2LkE_b_YGc`bLN*`G|qf;*l&rLFm&J?{f_6=bUF zO1jti>oCkg=(y&x0Do!dC{Za%X&l!M^j@JSujs?NIE+Y3>+CAqDr+P3O1f5k)e~s` z``dOf^e@|jGr9XLuJth)&FRA_GMJfbo6zDEoGP5F|B*IZY=ABpaS=N27fHN{Y#d8lWP(nI zc>;8bvinseGaCpOzKmNs)y~U+i4xJ~-;G$%+m^S!N?1v~PJ)um<9(#H)elxMLl5WS zaAG`XG2|BXtmn2)4ni|`HW%5w;R+Ckf|}POa=f*%pPvMmD9b542VSsP9*=B^;!EfWP0_eWD%%ad-!wLO8UQiO z#gM)G5QKSKYI@8;;TzYKto72U`qAtPVN2{C4kPiN_m?iLW-MC4knL&Q&XRL5S#fxE ziGBjOwJn%uS=n?TtPBV&VdsB3hR3yfje@1(Ue(LrF!Q!$01uGeJc*Qr>9*ez|Lp$Le;2ldI5-fwm*y zk-z()$t3&QNK91KSUdUlVlzE`R^}m7^5qLah)9ujp}T>#1ou6z^S?IREv=2g*m;8_ zAM2~Ow~`6F|0Dnh$pZd{In^1FlCp`S-?H_nxv%Vne`Jfj*^vC!f0wBLuNMF-{cj7% zg|ap3wnfvrACBMoMiX9H-pfwA;xnbiX;bKjs2>;_3_7A6ENr6V#rwrjFF;MLaS-$9 zzZ@f;pho*4P$J>=n^@xc_?Ke-k~ikRQ@Gm5F$lcneoNS!cXcLrQd-z+cFl#Ob*}{z zo?bBN$1}21ve%Cbx+K%GU5ypFb;(NIj7e{)+oes%m^$fxm{`~;0B+I;h+iT~;v+}V z5xWzH18r=m+kN1izYR3c4mP&j)eme&-5mQb#9;cbn1(c+k2QR1HH`u~G0U2l#Vzmv zxG^R7u-r?cBq7vT?S9!iifqXDK1|Acn%BbwRijwwkv5z0zL)R%Xc3K=H&CT5LYr*@wB@k>ea2TYFXE+U(V?ck8faYd`~lL2Gi}=dt>_tVt-O3 z$ybU&F(o!S_C)#gp)s97*rfx1;PlAY#f_#g6i(4UD;~cMBemioVKvKZXgFjzP%Ff^i zMGhx9b!d(^BPtUHeaA3Eg&a^xb>I*J#*f*C#UPVpFaz$Af^JrrxGfKo!Cb78(1orEbqWw3&H=g`@bU)T+Yhr4{vYCS=eqSycz1+~A$=YzA!aol=dV!9h5mWc zb~c}1{S>%~{y)3w|5wKdWy4RgB3cah+xwiI=MgvP&nocMuLNSCoycducu~<3!0WRD4Ww4kikrLQu0G{Rf@?l6>#DwFaqM3`v>84=) za=#Do82rxA$@)HDLJ+U%Y$TUhUdSi5%fxR}Wa>4>U)R@SiS;b>9nOL>6(5Zkx>X&d zCa=I#)8gE7TRdy_K&W3TA5ol;RGCog?%ZZG_uEJ!{*``(H5&ax_=*)!Bq=Cp{c$)e zBiDsyqG4Rcc|cr4*Yg$Kmu~=rVhx0Y@s01vW79}&IkUwP-#={75>H0AR0OzOT-;|^ z>!%g7|HJ3(V{*Cy;Bx*nnkn$>;J?2z=z?Z16mmmmaF7Dc!FzAiuXp>DcK;QT4FV-&-*975D2JD zHZ-EzqZoe<+q6k1HP4AK^sl_(Q@?1IBBY3G_9eCAL?R6OxiO!<7od!LSO zN>J5~w7ND!n;=jZgmXO<_`+(#wQ=hZQow2q7%E+l+og zE7}DFg1m0#WjAA2{Lh^nq^*Zlv(L`q-tGsOir860c`sIJf)w!+%7>mKY3oL|`}qfl zhf{kfUTgBZ2U}S)f`>Ozwohg4t==9ZL{r{v?SZO#w~1&e=1cNyQZ3B7s^o^0YxhSz zJZh3_c(^HPMe7xZhU19&lu#_l0>Q_i5*3a|b9&xCQB2^Qv99iQmsI=WSRy(O40GS5 zDA_+tGjC}q)kZ4(i{ksSg7x$HxM=G3qH8@3lZgtKSOY#TI$XlV(-<2-*j{PVSVqax;F^M?j>%DHj1@5&K2 zkWl&clSb9cCc3a6Xw_2&N6^0xqoR&hnqA%?gEXtTd6u(#jMTV&ysxgokgzMsKha?8 z-|Dr%*xTm`&6?b7+gT44>-hURZG^4dm(=Zufu7%<^l4G$+dH(a?Q}so!iDC7hIikU zv?gWIyDkWpT}aoLWC57$J{_wOQCC-T>Q@=!nGC||Z&2aZwZjul^&7>&!;q_AcHYFA zOS3+=*M%(iF=zj9NWKcf4*6<3^g^xT=+e%-tR*xgc6hK}QyzmUC zyL`PIqb#V^S!Dg%*grd55xf*DL0m<-y(3-7c_ZO^#IPUcSnt%HXJLpFoeC@BEBOM> zj{8IIWL{`)p->!oJ_d$SGaKleG5Su`RY>#hovw>7-p7e7^} zSGCsh?JrC}QVg8;R)K=JmCohvms7MNoT-4HXBUB_sIVIf{FoN3JwNxJE zVQj7&+6P{KsKQVP^qi?om<}ym$PC9D`%v-`4u}zz&$cEj-y#w@cWLtc+m$krilpE9 zVbup@y(YfyKO%JKN=%Gc9g72^$bedf^^WbfR)?;7aM$JFWuPkJ=qPO?N%FO2ppbgW zlJmFkcK_Kd3jOB|qloBPKB6Sg7QWTe?OeOb`B0}$0((DWXp2S^QH_@LF=%b&!8&y$ zCnTlXyj5v?<$e5cy)&h{Z|3@ z$R1Cx88g;(4uh$|JeJQZrOE_$5!7#L~I+o`fiLEik{dm^(ojYJ^Pe|^x^%O1(v#oZ1MXgTIsefELc zCne*$?m3w%(^fjEIL&!_C`4+Y>y$0dx3(duYv8!3}_=SPHgNjc{nT z2Ofbvm;q|WUIvf8X6E+7!h%mK+m5R07fv1-EZ!}g+Rn!utEjL5^NIx@oV};y6>~LF8g;9WwD)f643y zqN=J!f|;`oFub&lvu|CuHBD8!tDAq5NW;H(KR`vbFT%^cNvrFlpC4(it+0asfot2$M4+hRafPfXZ5{92XB z0l|Kr7JQiJZ}v89Ern_#y!;C+vS}tQ2r#B_8W;}?jL913shK2+F%we+h^uW?b5PeM ztn$!AH-+;zCZ+kLl!q#0c9>jz4>%;mU%pLtv4COL7{1S_WLgI|dp;d^WK2DgfAc}@ z7JAZyJ1U)Vjr%$J7O+jD0Tcb@)iPK1vac}&|Fp{qeX)o0R(Grom-Sbh-o)#)TaiM2 zt)!P%Ce+nV#mkDx6I=*fzgg@HLmf_JDyp}pg$`QM%^r25Abo53PxnFyYuHY1QW+Uj zz#w_{N8<*S8#cq#a^ud!fszNq0ia+4BW-FyvgJqeaa!sF-?Bt>Vu8QQF!*~69IhC- zImlO&va=Gh2uuFc9f zea?9!azji;;lpzo!l!FEH(+uOYF7%AY)UVc+*0iDuuaATD|C}GN8IpgE`R>k_QEuX zfXu(AxfQbUvci;2E(XsJ7xGbTAG5nEC7hO7U~?bCz}kNjihkK`!7Rs20@6*XAZ02W z-wxc|j09DUI*zgo|EFr$meoEm2K zFEwmRfxjy8?C;Qv@X%HP7yM#O`Xecq-Sa(wk~3Ms^>BhqTae9F`{Xry84hvUfc)Jw z=zt>su^rs5kXzH3rLQZ8<6zJZ{W+M#xSsTBT?CO*h$N=Maf`$bwUwrln;qWBn5?8n z371^q`Y~d1L>Dh)P}Z~pfnurSoUM|xxv{9nX(!VnU>cV^0Cu(`k?%hXf@%;sysmB+ zV?SS*6wfVp$W%haM+&-sDEONjGj(5C=EAQn6#Ce2h65cuE(+tX3zaTtyARC!J57w| zM2fAdLn!@X>rvK2GG^h{2x)x3wBtii&y11bAQZrj{&sfWgv~c@r2~;PAUM9;T`r8> za!~X;Z@sk_$6Tw_29~8<@{0cXjx+^uJ{Y|MEAbDLmHeC9it3w&F3gC*m*d67}hp2ouI=~ehSABF!(RP6Z^P7!^CYy@X(YS|`aZQJ*H9sYjF(>cvg@a` zJbnc4l_2e7@vXi-Hb1D7-WJB*-SA-Hn#mo``s9yb1BpRFnn&N5eUY1*$OcVBBa%vX z2IH-oxYjH~;D_T!F#;9IYaYTcYpzJ0f1A(;j;(jqNLoX7%p+>|g2Z>IpT7D6dTT7iJ|n&35S%y> zM9wJP+(Tt-#Ml>Y^S#8o>xzm1*Kui1&dQTMSYn35c0KezO(VavDCFA53d-h6>vgp! z-zDOmrM48~S$ad)=-sDGBXYwZN?K@@@-&3{00Q+qcq7QQE%QQ4DRHHltdy`}=HYr4`T)GfUfZNkBv{rRJY6XvY+N?ATu zqbT;B1Q|KV6RKPfRt>a3M zSt=ufFt05MR%Naxc!~|j3!@+JA>kKb$WsV&gG0uQTV4`zRM>Yj*w%vC^B2|BVEaJ` z+wtI-uNk^V^|x2*!fB$ObW87vP?-7F=5}7t{P*uFcBg!@X~xVAGY*nz>5IePCR~hb zEuS7#H@@lz^)CA_SiO3-&WiblUcC9ri6D|AJAnb#HqKlALuo_=EKY*sY%*i(b(rB< z(v1`L_Vp{Q9)py(mhP5VbNV1xZ7jmg`EU7cb}Nj=@LTEHp*h~uLPiu`QzT9-P_NI5DxqQopWmNyQ0dUiR$iux$4C;J!xpS%x6;#>D2XYgw9u#zv63L_{eaO>ww zL{=4shWR#E0*>Kdo7z9#7?U1km6ow>6S&|{D)G+(Ll1R;T!|j6S#&hoarD>gFsDz* zho+CmgO)c4y5MQds}9}(izXaBDIcQR^7fIo$Y#}|9pI*BH*4|xN)m9&Zo%1-MaRu9 z6XDq(ZsG#%*5=T?OMYu#cjZo0*19z;k5l(2p9)*+xXXXF3kqt#eOqC%mHt^HVq@?k z0_bQl52?QafQ-{D-xCA$L`039Um|nre>2DI{Qd+%smT6GUuC_t${MOu`>v-$zQw*s zd;=$H{1R4=F`Hoh=aIo|bNig?cIJa)B4x(UT=Qx6qw(3|m}%(j)8%DJ;b5=)O{$Af z@vyb=6$&0rMI~?jVa-;l%{kr;kPb(R=4S0XLsvQkM|!lo;&}aVe0Zo{S%6Zbfx#Ai zQ3Bt?ePlK(Z8i3sa9<>-E^a^nHUy0dho782nxLWe-F&_T)VH>R?YHAJSE`Nw)CF4$ zmXu**cOtP)cGrznKv^V3b+6U=f(lwsb|H0hzRl!L#|S~7ZYlYg1NJ36j8y==@aHf4 zvIU|Qdfsz@x`-LamSWT4*0Hz8Vwrj-NYRQJZsDz-|HEG>>rB*yq3$c%LWVvF!@v*z z_Gjpu?FVSdI4fH}Cc%*~*$ulKb(qPFQ;6=*=>)gObLN{^8?p^A=ZOP8VU9SO8Ryqu z&8gU1&CPaQVO%93GSG5!T+bB6pCCu{1=8e~WM^+Petl~{?rP8WC>ggt{^ig2gj)~< zI1nVb_$VNH$NBgb*sIvxIZcR&%KbY^X9A7>sC&+Nt_vFI3ptj1Re|89?qbJPvt0G- zE$D5`2a>h!Uqtl*ocz+x&!|}Sq?vUnOTU>J%}C?~a1AWY{%PH%vUi#xUo}AhKf3J* zjOzWmmD+OuGh#gC0`81o>XmJAk%j-M9ULjGSeAi%9O-!4WzHC}WekXSCdzdb7_`s6 zv0QUsak3ECv4W{q9jfVtz+|xZr8wrqTm!Sl9~r=~ABAn@K^s_P%(hbr(xu2tI@R@( zU-Fn6Ua3=JYY~k@oREFYFg^wb>bh5jQV|v-hI&mA<@KJ{umJqjVJe`SBbiyHW1dWq z1oq9WY)D>hcHcuxp{HP7fpe4^SDxhdLWHtpiaAm5OiL_^A>woAf6k0Bbm=&0-m8O;hkQtLS;80}J4sIB@m{j5)om{IY;^C&#E&$jp3kobuq z*z2@P7}@Fh0bi=F$i(>caV?TO;&Gk=E2P5DFTghr#$w&1S?~^BKCV)9+X#KDwV%#c zGT6Be`~BXx;_hm76>I*j#EOh|^O6@KOGk@#f5O(_Yp7t5Dddwtj`u^tL{IS4mc52JuSW$6Nya}B! zb^@xVL%4l+tASCqImdr7#e$Ii!7~7Mc@Z!+3UmcCKSW+VXt{T9yt38!%$&(Zp4A06EpY#34rWgOn zCGF6P+Z(R^U@Swv&EDCGU%+s-Ea};g@x~fp{s7P}LelO%st)Ej+T&;j5kHr_;>|#v@!WmZvbdDBo6;&b&=t0rlfa~O3%&B5mn#7>vrIn0WjrzY8} z4CnruUr1pJkB(Ep(oU%{?>GluUm>(TV>o9A+{`;Znf;MPc@SjShkk+7+)Xz>Rr7ms z)jB~aUPOEOT~|FmK2eSX+bIqGE%OH+d!>BogoY)JP;nQuY@FdUXcCJo9TqW1zS!0O zAX^#QmMmPsi1TE(cK4IO?TNifajMqg!!Lc7ax8+dE@I&bq>s;rGd5t+f8hQHYawjET6{vY{7PlKylX+59VZ9r0x*arcJ&r}!>#WQ<_LyeZv#F_dGk#gX z!dF@KkwUH?Nq@Oop85ObNfH>c+24M7{{n+y>BxgF!_3mzk`?t@YS-*_fr*M%=&-Dr z+2SaQ(}0n1H7o*iu9x}tFD2HVYLD^F&9UFAg#xnNH%@EZPJ5VrZS1b{Xm)P;&4uas zCg4*l3`Xx&G#mm)Oh*5uf0^FMK%PVl+ST4>qx{psno) zQknlrVkNTGXMfO5b5`^61qbhP#jdg&q%RS|c=1~zT(6}YF2coCr8syXs2gh&&=b{r ztRFq^m6(M;Vx%&UTwW~Vdg;_Pn@?Vi4C2jiUmrG#0FmXJF0P5 zoGbG533+ti`JLPOV5OW7Y0IU?S7>Jk6$PrlDyD}PWKAc{1$jvR+mX*EFB+9;4O7j7 zjjuwzIa#Jy412{AgaoM*1N$ZY~SIn z2T(F>Kkyh_tuM9W_?>S|X-oVmZ(#(j`Y69xB3z8QZ)f&FnsYz@4b~OPUQn1yS^oX1 z<1`8n`Q*or*Rkf6V-2>9f)$9grOOe6RbgFL>M-)cOa6jV$C*=5s)T-*!0XMizZmir zQh2jGB!cw+q3W%o;tI5F+rr)5HE8ev!7T(2Zo%E%-Q7I|O>lRI0urQfLU0f6ZiU{p z_j%{u_I|6?XSG#p&N)W!Y9ZaA$xinS-b!QTlURVM#AyG~kHr~w!`IYlFL2SqeHNkQ zj|*(*K&ERRmOZL;5CrQAj<0V93Fw5<9!qZC1SO&q3GpZVo zY7tkcbTbzlUKz&f1np)HN!6s+jE(vI9Kt`1MO1LpnFPBt`MtUDi7E}ql0iikp@roG zl5YKd`!nVw{h}cewbnjz2j}^?*zsQ^;RQ)J;Vd858ml|$J%f-O_GHcg6$%8>2!8`V zflcC};?CTPfIfDiNm9U*n^dj(m4yhnH2VMjLu2>4iS&bD8SU5ay~m-FeYX50j@|E! z_H=%D*RcVfrzwjT2&Yy6B^`WH#ZFaVn80*p?OVl@zhwlh z=5xScpO++J8SE@3cCVk!>*x8XHytRSQ-M|FR^nHSCOQgNZ*h~slZsVchM+YqbYh51 zSQX5_w?UL<%m|!;Hz+ zulZk3l)&^d%q0TC2I%0V&=|45|9tFubwBy#N~_({9W7@+7U|zPFo=I<@(k{c$!#xV#Vmf&peDXcY$1ALxQpWe zC)c#CFY5=KpDb~k%rXhwXX@>&1Eig;EmPfrrV~rJRVgt0mDL6obccq_Qp{*uy!wyI zCGJjQ%_F1#O;swco8f-XfY+i)m4mQN>Z;o-^s20^AhYFj65m}hMn?&$>*k7LY`jL} z-lE?{&eB_ei_opAj{3NtT5dwG3t?FS_~o-u7*&*rS->Nzq;pT`!8bSeWeYC>Ax=X7 z5fyR`iQrr`$!YP&LIB#K7_|LViy=86YT?SDUijhu?vUCKlaCg`^BK@6(K8nKyNW6J zjNr&XC|B(1EEZG4o2aGFp_y)77<|bqQ=)o~K{u)bPo+7zg!h0YDD%HD6OVrpSLANH zHjK|FR*l2672K2^bU_>0$xp^**>DSiQ@oXQ<3d(0MiPj%!r)S@UiXYQTfi7y?^TNG^umH(5v=a z2t}F9-3bzyr(#n5U(~nT9Fi`_;RKXbSKpnD8>y=tuhOHOO6C_ncwO-tzd&4ncTz_qa zAw&z~Sn;B`uTt`OI7Y_65tYkmtiN+Mn6u}Qf+lTPz|p1|M7I0DU$Q@(O@0GvX)lOBe;S>l|a3n_flkfe^<;H4UvY+pn0HdIlWSfy<7N=Ot z+Tkb{@L{@9G9{*`AoMfu2`Om_YpGsAH`|N`Be&}s;Rwe;O5+R@*0+w5y5>4jLfzL6 z*;`UJH6h`t;MJ{UMGBt2&U+);HWl+31_4B8Ik1VE;ZCdGIdwt6rORj5_U2;6SKocf z>~7T!r{6!Jqg;(TFAgO;vWc^a(ZP9hMS{iMrEB8HTdr?6A}N_eO#Xb1sKLEocpP0Z zwv(5YHxhQ1*w$QsD`}59cu6Dhb361t3?l z=FBKL2`|m)--P2)KaNxl09~1hqmfz4Dd?)bEf78i#)jI;!J}6buhNWZ&yNK5K4-sw zS9&Y5tbDhs9_Y1{(fE*o9Q@IQF2z*gc3Nn&ct@2sXoA8LlTh?F@5C=$TFXQDK7P9{ zg9?~}<8$$MG3tN{`36oU8_j2_Zid->?=6&UPLt3NS0mSYv_N%Y&WxeEN!$zhtMN zYjHKLa%9qPz7(U}1r91cSid{jf5CH&_Hx+(G?pE~LiJ1I8Ys3g9|@fh>S+UCZGTEX z)uAUS^aLP8QB)=>|DCGobaYaUtDR%q+^tOc7FUVLe6C(&?~wiz=)@0)94M0d^pNl= zR_(-ctw@J)k!ddjY~lpt1iLW6UdJV{>@|J7e8i&ZW+o-(FJ0^bEaGC=)I_O=cgDJ| z&JW=hYMV-A75s9RWW4zVULkRTuqYHibEaa9L!uJIWL zvR9vMUz-SnlP=9@Yj?2kd;lXi%!89l*~r?LEyJ2et(~f*pSMWvU1i2CBVl`AbE;t7 z)2-m5DFnD?VCHd-V>}2pa(Z>}C3&KxwCU8JJHTiQNhk5(0_0cJPP(B^K;uCwWgY419mR- zCghX>2S1VsYWdRs-vij8{Z5 znB5ytzi9b44eiB)3R8?$9j;mpUMck>GO9?&bAMf4K|4`-r5SeGo@(a;!d=2$_jn@e zSpLF!5{!d30(1*byf|Cz=e1H#;r-*Nwzr~}dUabH*B587gXo!w@}8PoT1f72JjtQ` z*DP)UX;jO(jX`fo|3lV*b&`>Z0zzzWE{_=$7jL2PdjOdX7(nvS$@mlv{V%2QApcab zP6m+9xh@7ZF;pXRS;RJD9brHJn?9zC-!5$IhslolyPOs&-&fo+fo1t8j2;t)tefN8 zXU?dJZ%RBPCM{2enij-jQFhwm7-c23;6Hu4&h=6O#?SDt`h9{zg@gT6j34pJS&?QT z4Qv;Q82gz|Tj2~L{C+ff(nAe2?YnTeG&~q8oMksODDtH$J>I-A#Xd=JtOgQH`Gfjf z)x&UNeAUg3jcV(AVR%)k$|*3ppOMCaZc45C1I0atz%TuzusF=E_92Pj1MLYe_y%G#xa;fo#q<7QsOYfIvk}S@9?$V74+#3NM zgxVL;OZe-1{tbV1d_Geo;dQ?^IA-Rmoo#eHxpan;|HS`SiVyb0KPaB7MSclka*{l=xTlF@?-K6?6C|G};#| zLEma>5Mhbh{5(}i1K|3+Hea8OKX`kn=VM;&6|D14qfP(#Bxz;Qrmlpf(!&29NpZ#y6V|tEq?wpzq zl{PKeZW!%uZ>)9gs~RDKPr$h+fouB_9-dp*t+TYg1fEi#vl-wfPH7N*|LBrB-g5}B zhn+G)=2{F3TM+~Ok%UB;It@Li#mHtx4Ji=Bzy2JalY2>wz%)iQyHbN7 zFuRiS%KoIOmbHaf8UbPN_g5p(Af+;V*HF|bZ`4~cVO!m0P}1AyFnq*OrAf-T9&%{|67};D53o896L>3y0+0mCFXmrquH55b1$-Xy?G&ZoY-4hm4 z`!(csAV&7I2UXjBL^h~Ovp`=|TfdH^4Qp~k&nMD0`XwX*^>rZef%@rjH9pKR?~K|p zHP^m(c#&neQ!QDjb0-Ww=c!>qJCiK02ny?@A1A`hjtTd1i4KT@s&V{zT#+?c==L@T zOND&8-eTe(j_>F$9?%Gqx2-&X(0lmKnD=1UwBKo5a#Y~Padrq>O6xQo~=A|#Q z5G}jUXhI-P-YBs{+eaGvr8ZFft{rSW$T~z7L_^lg=RP@md|MrHw$y*-JVEC zhJ%S@t9R(carM(c@96W~#7w`_OQu$%%2pJ>In(21_sa=yBsy1p9MMLQ(W~8&#t5Cnx>qTvF+H@v zviT|-DOj5x(zU7kH5}bQLM(M}E$|y`#GjsG@XvyA99R0w$Cvxv@D8`#I^`QS$RNsRl{x#GZ80)3J0!(|y5(*WF>H(BqEX_HIod*dFPAyJ2A?eK+4_dOw z8Uaw~d6^7U@!;F7IJH*yiVwScqrA$(CjJG*v=(B^?&=*|?c2pW1qhjwo!gkuL7FH? zBtQ(SMnomNnP85Yh2XqssJI}@N38wh2lGyRm3mziNo@*nZG=e|50`XCj);#q$!9n; zqf;~fh9&x3pERM_&(?k>2=}eyJWUz>pnplD4F6_ZK^Te9s^;ZEB#Xm{oy@7b0Xn5@ z5<971FZ3ph(C0T@Zcp(}p1?G~-8OjB$->5KjXtHHB z>xG0^AK5TMKZSW3j;LFahIBP z7nvH)l7;EbyGHpG{>J545YYTX04U$?cDBKqb`)Th%a!R&jpO+xp67-b%r+s~4I-SV za|+rShM3p(vmPKDNP-_48`aE?!fu?ykGLyL_*s{$V}} zOEx^Pp1+B&-jAI+{jq*EPT;x*C*y;${Rz>NbvakvqR~zUyo5$Qxu}cm`K>O^G?p8R zcwU1AEae_J`vFlu%E7Yt_E3E^sQ0#E*gPwNpU=2oxflBR^>LvWbx`Ax_cmd%7l0D% zMcR>2dD7pWs%_y@d!5ifp0G6cVR_{Jbjlr(3Ka0;0SjE8!{M-4$M|6NE2l6A;@`VV zeAFd-;2=d)EpJqK(dj`D>)OVvW$~w9iUl9zhW}E=*o((J z$&o28Lk_(8JcUb(=&4?}sopp*IKg9NDr%;t{L0-|vCqzFN;~^JR-;y2-zqA{1%Qwg zrO*j=*uqx@*9)aTVn(@0T`~nr!v?|pwI&JmnE}#-&3NOCz@FuLiDzEKkG}Jl?wAL| z-=;7^?29#ZGseYzl@y#)r^?08YmgMzyOX7W`B@*Uymts++e2Q^HqchK<8mr%jMtuw zTOb*)UlHIR9MiXMJcWSY=zkL)q3;yT7k*$y_+(|o(3ed^h%BV z8{Dk+40!+`PB#C>`)ewnfvzyBru+5A`@5B~6{?{3ey=->|Jq61B5FKO?^_cKy-sL; zIFU_z*yG!A;31nZT$numpq4axuhE})gCpVrozBkB@u|f)z#u5z^nGTu&zKT*qX-y$ zy%b|h#x5`riEEt4H$RDMD6S0xxJ5R0j(lKr0o)JvS2ksN^H1=TLW?{n#ZzB4bGC-- z6V*iNH;Rp11_}1ab^z(qHRb;I>&Y~hvtdC~wl06`v%w_ z!|AD-zRtloRB?YwD{XCeOmW7u^=C~c5(Q|+N;?*AYhfx zo+Nzb<<@23`Pe}2(Z{PMTCVh2d6K`6@3%Tgjf_mldGL#5wd$j1C&}8;39b%$rCu-y z2u5(*tL5OQ|3YC>Xd-Sdr~>0ax1>^HB~H1$-P_VL@ym$uca*elo|sJnt?NKH9JQMG;6ljsHRdvhs0qEP#)O{D)2qQ-L zJ+HDTv>3gb#QZF;Ad6#zot^7qYW3NX z%T*{sg-gv}nh6J-@sE?pHa4-Fu^^==Mf;5BRL|e8G5d}|PZh}5Q#~Q9p8KEdF~ANU z5>flPemVMHb{ts!{OLtlB6@dA$HpXGU*K8hRy883VNlKU8JrjpPvm)2raC{5j3CUc z5j%}Wa^62C%RapX00zO7G^`xfs+>7+U`5p>w-UG>j)VceW2exFo+GyQ z!Y=@wjowI+TQSRevA7p$%b-jANb3#lKBmfWDPkNuXrWWF!Ch4D&)1~O+3mtoD6urp z!q;fNY4QU}Yx}ctyT>DAn-+G8AoLXrVRV1Q1nMp*oXy>>>akThij=9kq{RC09 zmemi{Pd9`>`T1bt;QR6)2Q{rVi}}W1_S>+QtGBaF5h*zfG$&7-W#a*?ti?@$S39cT z?h_wXp_QCRTyt{^;}t)?DaJE*9knm1XJ!CBGvmWG*3bPc4BM3DlhlSENhkK(F=)?lon_LJ^q0^W9i3t}d+)AId{XqO_T8i( zKlOh~IpQU=xR}OmV&p+O$iO%@clvBJuU{bg$+dBbsI_`JEfX=NC1iB(22vS06djkI z_BX2L2lvZ%7|}@H{iphwjn^~RCC4MI@yFqFMO!}cue#W^xz?^1+Vi~MZt+K*l%EDQ z1A~%s9sEVz!=YZhCo7|mkCXTPI;&Dlf+R)X49vN+nNUeS zr#(hmUbFdFKMS+Y^pG|8)97ii00|=@GbgGc z&sSi+!&FrxKzss!tg?p$%cn)3dWy$MB~*Qt@CW}Cr3UYKqQ`ZXlkrYhl$9itqAD=JS^(;{-f0NMRq;5v7 zr5cxz&eE%d^W80M6Enb zYttEA@X=S({OPjfFVd5~Wg3}XSg0&kLJt+eA4Jd>lRx$t!VN;0Yu~DS;#=hxHqUP#w@0JYGoGo!%CbXZAV(#@wG zz<0wl(!vLsgI_x)-3i}L%GfV>it0G~BSS?1N5yO0;JIY-<7xf6O8_guEII<$96p?bZD+PirB!>C{})Eu@091T*}JXa<_l{TWFQi^mf&@tN7 zOB=bDy@tU4qFGV~z&q`j>g1l2I3k_+zG~KH0B_8!6h`QK3Ha%0qo@MIQM`ZP9l$-F z2>KtLi#}gSUBmoYKCb2Pdvm7}c#QtN3v_h(g4Th0&(2X*5Qm6>4+C}7#6AK@;>2xI zRN<^+pOWN*b^WUIHQRquGU_RDgi%z(r)95QX9DDz{(d7>bzqh#fQJZ^A$oNo<$CZ> z=DWyXhgObO8Ri>-no6>N{TvZ&Z5GANACR_svevaLHBDji2fjPRJI1V@rqifngvfx6 zhvh`=vcCN z5Zn8(bAF-sOmdc|0c8$!^4G{uV7m&rfl@5g7_N~b*v6$9@wK(K%E5{1Gh?rVMUy&) zkFHLT zi|!C8hH71m_GTCGtL?Ruzr3J%TeZQO*UnW-(D(=Ob#{tVJ>Cp?wZz7n(rJmR4=v5# zU*_9HKW=Y&nd3U|4T|nBOzWywjk`>HNOWr=mWJxeWcm0Ih4z+C>Bd(Ky!}CLofS{Q zizQ#Y(heBnvm|w{qtMy4_<1wR+`G{U#~1V;SPlDlftXS0m%JkbsU$fmI=MCrj?xfE{3^(v{{HTTD(6M|zpEAwIY8f<;{@*LzL`<@No9ZA)gu`q z3sQt(%ryYr!BU5rTN+7na4F!DL4#5W1Dv@cCXzShTno@F`(`KYgY7)r9@5~}K8w+c}a-$Tw zTtHUSzNDV=Eq#*jD8u5O`%71YMhM{_%Nn~IrpzhNx2tK%1TmMJob*W~+Z^Q&n8du< zZs%dw$K7YLXB0U0_T&mWsX9$l3-AL{AkJ)%vsr zl~K3Hqz@*dhThtt!qHulLX#-jj+OIRZt16nNcWHV0Tn&!yq@(dK_pUPu#~^rmXI&J zedu18o{gC79U=rT)Y9gP$1O}WMe)pbks-Kt5fQhNjcJm^D%S+}tz{0Am>O+wGD8v< ztS(+SKd%KHGkT@vUvp3M&y~O0aDMiN{;k$!m~?(z?YNo_MJO%YkYmg<--HiXCu2^J z40l|}wRIKd-uD&l{`3}r@iajGQyJ{>%j2K|c2fWT84Qw-ka-tUa$;3Db^sC_BsH#$ zjhpC#P(5!VnKA~6xgVBr|7_K271<-U(Fgnz*Et)+y^Th{&+1FFS5&qHraqPC_ryD4 zJs^e%QTQJeBFAwA#l-Y_dwQd!Mm6FLh~Rt zjj)GCff0h<&Y^-pr6~TCl)K1U&&V#`ab^bDK={+T8iq zABmf?m_D`WPUyOsOhZ3Sa_BFvnIlUkAwP%IFK! zO?ZT}T9Q^%=aJni>`(+Q&Vfvc8O-;HBqG?ZA7cli+b&Q+$YSJP;gc}jO4=-U#J6ib z_r%LWDp5}4SH#wkVmXB0^dfqvqP_!SbaYu~z}CfYYJGostbu=VNHN&uM(#B1jz`n_ zhmn`w*J7aPX@0n1H1>rt-x>__5y+an2<9=nQ;Ed}HhnR8rD+X+!F=j7JcMnTp<5dc zK4~8+60s81ow6;`4-~LN6_Knxc?Z6&-p4`ces`*T^xKugUcfHA0V;k50w0v289Gfx z))G9o)4z$+@W(Ig?=RnLJXB--Dt8u{mqBi=waf6a;Bd?1ZN>_gPpLqgt$2Of?4P+F zBtks9<#wZ~4_YTg^}4qi7jngd3PEyTU;q#719dbcuLr;DoTXWu5x+V*&q5g!y89dn zm2o2O9sA->HJ!Ttw@m#6saoWb>?)?C;0$`;f;?Y-p<5u@5M=`c<31OAP7WYP87|XX z*AU4dN@aNr3$Le6uCt;~vN(1F8O@3DI#UJ)Go0qpCoX+3jrc2P)>wwFF_#jR(by%LTen@}KtLj2-a3i7J8sM}tm`S{Vy%E@`DzTLsJ z#;oAd$Nv?^g?pZP0`C0$nKAik#VS9gjEFt`#dB3P&}H4n#t%2^Z%Ee(EzFt^OHq@gHD#CS1$j$IlEJ{222&+gZVe&|W;9Q7@cdWWZJ4hz9kzgYCxCVYAK4{H*$dA?voz@WAVA(tVx)e&*Oq!{6F#Lf1jW zfxbk))0V7mM17IDyEPXXf#W{7-Hx{PR2i|?MG(dIDL|M@E29k3f4zL#03Mc^BWHZ# z+@6=S%E-plSNV7Wi*H$WFW)s5AD>V@5z9ROZ9p{Y{HKfF0!gCJR&G>$ zy)t__y(nR;+y?W((g&L$^B$f8+X6{0*2lO!(?oygK!3`;Ja1_T|NQF@z1m+CvRW^a zd&nEVHO+_EWkcDt%N=HpWJ(wRgE{S-Y=0)qlTzkRAggeS@9`Lv`d~S{5u+SF$#Em` zBNzMvFBExtd8*_)G!$rU&-mdDLgUV$`M@Uni3u$I9^I&5kJYe$1GvaS8(@RK%RZho zO^p)I;{;N^(g8~9K%Tc;l=>7J+3H7q!r2dKthY`TOTGX15B&ctv;rp)KRNNru66Q41*gg_{=Mbf<-Q47)Pl?P>`XBy`6G4o0kR1jAV~v}%?(*HL zUp~U4#?&$sS$5@6QQ$>tYG;ipoKv)lA*!-taOW%3^;Su?q-!OOUrRR?D#unM{atU4Ohr-RijabnFzlW1`|1eWQ0`9i?;l(6KU12`XT$GwdnzqUK{6qroec(6YUEB6L zgXN3#^@lq0 z4BB#Ok}=jcrdd2mW94`Wdp`Tl({oQO7T7I(2T8O1f?|P5{D<}(oFIBN`{awb3@WPh zXGLu2P9A&FId75P)1{&JCXk2E2)KVLad-bDQ2wKJcoJz;bHRX`&4I0PmrzeOARzCa zkq7gmrlp~`yI_=H{(hD5RR6a2Sfg@miK%fCKBhHyq1wvX91gDDdv04b_|Tm>tp_CbzH8sKZ{_MC3LDNlI(ZjB~_FZ5y*E#UNM_Zt* zZ1o@SjIUCMxP9gy!5GTl-Q6Q8v?M6F`Vftu5sglcvun?I`JWw%Y>V)%K&xxgPx5oH z9hDG_e~Y?Ve*)< z#92Vl<*I89`gMKC_-3R^$L*g>yaB%g8XKcbJHkso3MtYWEBuE;j6WZqO=rhpbmxOw zE{J*Ix|7x6I`jwcuIZ922AEG@9k?5O9&OJpK;sQlkhI@4a|oN;_c+O@I=USK z;q(Zo1bnf-(+kd#Mp+a!LNaQp@xQza7OZhkr}rY$s*Kr2Y|KofJJsNqEf*g6W{+)1 z{wwRGU7CO?bu<5~gFIY2YI2-*M#FhmXN!m?Nd*K2t0~We3Y7lD0!oIXP+=fiO|;{U zrf{9_m>1?pxZ9q#r26V0n_G)P_UW5BRthPsfZ(n_6(d3}{vDrKG1xCKmM?;{n4Dy6$&AvS1YCAo`tz-^8?&HdM60 z<46A{5~Z)sP_=*-rr3@#R84FV%2@3_n$GNc{Jc`cf}62>DBd3xM>N6_*sAQ?SrGVW zL&D{%AvoRj;<++bjmD9Rbl$7X{JIimGH5tvmnr%WQEZfYco2Ue-SQ|1#c z=kxf;AMl8YL5Mq#cR+%g5V+dW$)IPsm@O#ga?G=Ij*CX3r+zJ{bZ_X(GQ`To;$;2b z6^gslJb{Fjy)Ul*WGfX=$C11Lou4LKD}l5Z^Sc}|?i;K72;yIckhtyp){w?U)P+~8 z6~Yro^3ZZ{Sk;!obH{Sfoxl(kg3T(y%|lNpS%R4Q92rQZkm-86@+yP=Z+WODK19yf zbCqzYDq!%uLITxX{NmjWY|4g=pFv_s(BmCr2GL`<=+6ZgP=i*jS?@lAA#!cmi?;Q9 z*A`aL^0vCcR<iTdM9Q?8^DSC3d|MjwF;XRd31gm-~U0 zcH?P?_y!^TJsf_4<(v|vxOrK2#@TXwxVnv^E!-(s;0lgJ@5|wytvR;S4&#YKG^v&X zQ5~DvB=&9XcEiSF?|Lz?hoaa?16`T7v|?9XXMVDcMmh}?{l{I_MkGtM<fmRjBsR)N$vGH)63K{03-X1EOm&an<{~*{TQ=_fo!*uYZX6*PXfOM-KV&(= z0l`W%f;*Foz}xcdgN$f|onT?uIyq%|%S$apr7fhGOZ#{YG*yhh^4)-pYW~TCIA=}=1WM=2A8eVet-`Qt4ycRL;o}+L)^C>`3 z@I}N=evmJ{)3dFzZ6ou0i=Bm#46iGyy$C>JnaOM5Y1O%6elkz(h1Q3AoJ=;DVNkm) zs1})@)U*Nh`W{Arzgno6FWh0qIBl_)_vuP8HqF+Qrw^Ex)7+J~IsB~lR*}YwWKctY zi|WUm_w{)n4)L;ti3WsY@#ajA==dFH>J_sw${+&GjE#;9d)z@eu(T2IO-KxJ2-c`% zFi*bh703P?WNvOcAhr0CZn0Nc8yZaFjdQOk+lff)48$Bu3O)clgc7SZN43uFM2gfK zfxkYNgG3fb4s9dFY07+l_d=!0{NiX`s+?i4ZfkNs_X5yHh9P~tWe;#5*!ZyH%M==w z_oAur_GgD-aAr>j`LOQ#oulNmWs2fL=vpvy<9K(wwx}Qa?l)J6vk-p51_#Z^F_Iv^ zcTO&FYRx|Jc!f4H-R8$);V@^mh2(7}Y?v6zbz;5CXKm)Ne7Zb?71b4VD?MrYjoEk) z-5(=@EZCOiy2k3?M2US8C2uDRB+z{n_kPajf}1fO2lFOzxlCc}C;7p0_r2DaVT05c z0AB+=XRCQ$)}b%uAttQQOA%@dP6L)dude+M;+nks`!lSzgWy4#&*$eEC18#d_(yzzV6 z92CYyz@bp(M)g-rdnp)ga3HPvJnqfk{cC&cL|AqbbzE{r0ATX+D?deO8yUu4E%}H0 zcusRBvp*r3)?zDGYv|PW`M~UW1lpI-c%9>bdiD&r(pMOPfX9m2h56A*pn3IPuSFhH zKrJ#_u4sqpWuN%0ot#vsoOVZvW(W(7m2On&i zqM%wyRMZ8t4QyC?w+%&8xB$^7wJp(wra!7%<+TPS(5Lg=YBIH;V`ZGXY#L;$@PBG_}8L58<4>vkInLxbUWN?=|vh zBjv7CQS&~FamVnxzZJHU!y-f#=C|h7Cw$x30Ge*-;hqD1A*IxiSt7$^9xQ=Rfd_x2 z9y|IBP@~UQb&vdRQvu`{vfOzs-|19PCffx@g~-sa2(;b*=zq6%Po5ItRASg8gMXb& zU1)+~Njo!fvwkRmn>g<#9z=}Lt?s{z2nP~m`)-}uv~949Q3-0i3Iu_3KbS~%xm*X_ z0s%py7yfzSJHG)O(G{z;-!}*r9K9RME z{U4XC8gDQDxem@&xb|HR=bY0smp|_1IF(Kb-mN=(ym)Ej10e)m>b*t06=D>NtC*>$72du z#1}FS&|mj*1zfKHg4J0kP<=XFYAU;^Wfc=M;v@MWJ46xC{Jyp(!$ibamff!XTo^m& zmzJb-eY15mmUy|yU+o8S%VOzi(*47+p0TkqI>p?+XT>wG)6~{Q8IQ9Ww z2=kQZ56)SPsBXiamY%~qR+74Cdv5P~VV~PM2IZZ^Y@Xd41$Mc7pLzB(>64$*iu!(P z_UdtU5zlaL#e*Z!CCS<|f+0qxNg-!eu&QOf2h7`dc_eO*Atx~#0KC>Y7GQYov#f^P z%!=w{EuObenx2Hx$16|q8FVI9FQRc`Rnyf5goLtO(kyBmypO$&5s+3k*r)MD9P_QR zf&st84V6NEx8+l-51k5e>`)FoLJ)c;%wM5O*2fk-O+g7y^cq`%c>6mLSww{I15Wt@qU*=r>RP-^;@PbJGN+f;JYd`!T^1 zGM^)vYnZ!&Tk~qAY*2t0;eanEVtJp3vM0 z!0kGcLJsq=Gip{8w4>|E%$k{*$yZTxj$A$KVq>V!AfWM#=#1~9yR(<-M&iUrtl{=a zN+4xiRZ1$Yxw%y~t8wS)ikyr={!CMCy<((?k%}`z&z=YK1YBxTyIaCAtZ*%x&FH%Q zMHFg&ok!?UMsc6Pe6Pq2t-O#-{RXqaj;(u{2dQWKB>!HEz>F?xYMzbSJ8mDw+b*r~ zH6t=jbz$0gsI0?9Y1ZD)h`zU8^D(}h=WPwK1$L`xC6(i=#cd<`p-{7u@9h+CF0Q!Q zWp^`6qL3&K^LwYvxe2O~e^HdV4KdeB%RTq&b`L~5(b)nOtmzhLSLo&V?bcr$tME0G ztMaq9P^#gMVaDLJAf9dKo5+%KhSUkU)?}n@S6x~@H$M)q4w}-;FBilp)J8>+(21#& z#GuW<_K!5DLf6pNI1?n^g;kqcyN0SHHmB7_(IPGQw$7N&ZqPOQbpFPZCj(#~7Gh^> z2}s&qs$?b78S^(f+>nqDB{ySlX$>AfC`hz@g>#Spjg(z9SU@|5{7YvBqy4K#WgT0L z^B6*tH0hDFYiAJ6(@BfpkXx+sn$3P*LajCC=~bO{rfQboZ)B}3)KP7kM| zDq6C5+-*P0sn@bx&nvl^K9aGZ9}ca5?znFgWlBspJE`nMg)gl3Fe1ZR&k18SYGWT& zxT*~?SA)cK+nq!1M|L*A(D@ZL4Sm~oVpNnpneoH5`&DLj%JyYHEO1Eg-j)nPpP8<7 z7`{iHayXlt*p1_h(x=S#)+x)Qe1`(`SL!aGu{O9UKRl}F!mV+Iwa!8Ec7H^jr%Xl! z7gy~*9>3Bji9AN%XXQBXsR3J|7^Yrg!^m4D@pmm06;!-GCA5MT( zmE&Itr^sHe@KOYi8r2y+L===4w8)HVrYDEKe?hcGQ3N>M_Tma|S7arPm921`9zLkA zy7Nua@=vqh$!|PVj_X&;1X@p@dgp8a-T zI6r*{k%wZ9sm%_6s*9giJc%-Cn4=guU?;n;U9yI&WQf z5Ix;hWJZCplu8KY^^y5+2kEcN-_`ZAaxq=-kBN`XB^n@)WN@f8G4m`2eT&su@KUa2j0}I8YtpO!=KQNKP`_oqIwgBxSD+(h;^}IhpmnN$=zb$2)$8FF&)Nchni6)X&ocDX6W zP9joF+l~Oi)8vzN{Hhrlkq6}MHAz*}3_#A73$9*$#eJPusiw^D6~Bo8g=1^_aiQ@X zbMHU*UEapV;X2d;g%IZZBgpX%h7iUsFmU)t_^!zz7{6a-M&bu-;uQ~Q)YXYh$40z7 zLv;@I30t0j-+o3m+ylWLXaLzQ)Lz}Uy_xV?KtknJJzKCTvM_%AtwfNU`+9P`6rGN* z%3S)g{Am-#Sb?AVGOU*#L&H1G?)Rt@aykle14gjIA~m-xZ16HCcg^(nOn`ecA3-<+ zOxMZA(xxiN_O9P4Kq?L8(cvN=gH};+JV84}r;WzO2t|C@?M~MUaz6D@-7x#IQ9rO^ zTdHxEAq8$=HMjh6Fjv6M{N~_~C6hlkbkgq)s1AqTmzw0y|A@e-lNM{}NejH!gB}#k z)^fZnmckN}OcXi$*c1cn8!Phi@Y_}3p%AWwC8K+xMvvd;dZJgMr=k;^;&boS@_V1- zbEnbSu2KjfoSGQU@l+6V8%MeN6XmwEAVcwPKcQ#ZzFsuQ9K{^sO*-lx`4G?ROrxv7{Ylf#xf9rgod(%|GX%+evo8d3 z#(A7;Sk}-me^u0?vYUJRoxs_{hWz<@55~s{$KbEJX%Cyu(HYYq9c&OE84cejappp{t9cB(mNrEa{~KR0O!<#knB4k; zRyw4VeNDS(EAS2`DA=xugY)-N03 zRtB>`G&eou(PC6W14u*!^kGR3LVJQwgW@xb4j}rMXz^LqK~hYGgrp{a%6nN@qTzFg zB&;`dP97V|pRb?65x0z(60<}^)t5A~KMr#agNl4cBJ<5*ZN5wqWi+dCc(iB1O2_DN zBP0Mt(zbS@W3}!j6_Y;K);BK-7A9|epZ3DlJGUDIQf@ZI{-Cryqx~)gAGxlU39wdG z3PHW7Te7(^#i}W^LsmHratXK2xlsZWNt}O%Q0Lg+&jOBCQf< z$S)7&!XT(9!}jCFaPQM{r=5^i^vs40`o3VXS^?$&ejX|eaS9rePd1497Mnk93jsvY z@NSE8;UA+}tZ~Ymn*KMZy%mDri}z9+Bso~26%COU-qH;S%D6v6Gdegf&HWR879700 zb~OHlncO^?0kP;P6rJt2~XztY< z7BX+Ad44+>Z3ig9xESW0HXeBX_yhzpP_Z4fSh6|XQvDyU-ZH4oH+<7hkmArH#R=}k zrC4y+;>EQ=bsxYMbR1?BAt{qpw){{Ds9NMal;eBk9dJ^}NNZE7Kmoi??X zAE8zt60vto<&sTz|9boUd2J^60C{?*{`^OM4SN6oV(d5l83N=rWEn5U`1`M?;eES= z)7M4w2vX;L0pR*-U({tR|=Xx36K3KEPT(&$&UrFcPDTk&l?#nF}E|+Dws4+}rElP8|&P zdX)*?{tqMmoE`KxotH^1bm8*56S?*iQM0ivk~h4n?K*oAoONjrG+KFu80+BC`Jzwx zA=TbGdz^|jm_}q=T{(fcRHBQIvtK3=-OtPYHDeC{^I>=E^*#<}l87zaXG%(i8A*q{ z0E8kMpP`jL&Xy4I{13!mu#)~2?+kDT z1dpKkNtJD{0yZ|Ax)Nl4v;?pDqZX z`*@t=Hj&scAuUo@o#i~hVfnXOZJfE+ z>Le=P-0tSZ$4O})sdE&KqSxq&{NHwYsdnCe49j1xR9%e1axXbkpO<&wK$+7<^wKoP zzfSo&K)ecRmgv+w^6Fah3C7-Vqg^9Fr$kxdU-s^gLNV-Pf{y%MQo!Ub4S8YIEsJPe zX!B>Ui-ZaCd4>CZdJN)m?j_ufMso^%!P%PM(JbZVf>DGE=V`vbvL~n`m@Mwxv%#-b zv(%jTd2|{&;pg}ir$5>Pw!_T;IiP^zz?+6i4t-4w18SWuaRE&H8>;h0fR4QQFq|0F zMI4^9V~~R_ZV<^lVYOE-cLU>V`P;6?OLAX12nj(@gT`YVuI*Shp**u+nzyFur|u?^ z?@>Zb)fSJH+c7MPCK5yX5AcG_d$g0#KxfI(J?wyA)oN=W+jQd;{JE+kKSy4abJ1#TcIA3Q7G;2`1`TA8>FSQGf&vo!10D>4Nb=KBj=%rvQUyN3JqqtwY_R);Z}E?2iHQ#p z?~vHgtH=!WC#|2QlQ+}$)$%6bq2v>^>39upLc>xc)DQ0CHlj2n1UIu{^5`+u4X;Bc zT`6m2w)(^f9>LDtt>vu9to{f$)pmy1bwYHhN+SICss&X2V2be7d|5J|*Dl(1t*W1yJUSJI{k97f3j zLfnaDsdc-*BC~p?Gt%Wlvgflk?A2Q7qfz4?YwHcvSZOTgmYI!30k`9u&3dD zfOw?HS{EM)dR8KSQldFp6_`2jo!&wGXs;^tMkj1?62ZJ%BJZO{&T`4#$fLZ*&5kp0{*~U34lNv_5T}Se8q1*P?w?w&G3BL~m zF12=zC)51vny&Fgia{J_O#|V3luupr$$r0#6T;r7Ek;0F-9dqaPG@saF^)-j-I&PT zZ`ZOh(f+&w8=+RbrG1>OAdh2sV#R>*QKO$M&HGM?^hLqDyx6=wzi>?DvK?CWqq)Y2 zu6Wm`upB?x@n+D)`0X^_&fsqt1|eY8Wsq`v#i^5@yT?xCl;Swt7?sq4?T?oSbVJT4 zeryS^-g96g+EIUhp>ps)W#<3WJNl2{K8R1Pm!4znx+*^NgCXuYX;kW&&|4C^N>NQG z9!Wvxn(QZ}Ex|P`Mi(*Qr9K|G3vnjjxI2e)*dz^Fl3=TjzY0=VOJ`e1SQT>3@n*Dy zZzr%6C0c^cKMmuZH}dQ7GsZ_#oYUWy?}X0?KEV8M{!l12z1u2k$*&gB3VJj@&)R4Y zVV=aTHBPZS85vaVHBydd5Es8^jIRTR&aPTVfs!LsSL{zaw$l)e_g#j;hvtnH^e^bE zl{POPg$xTdB~2WuH*dFh=k%ie;F2hgY$px#V|2SmL%~LZO(-s1Q?r-<3tueza&(Ffp&VBr&kd>li#~8`eAO z=CwVGED;m=yJbvMF+U)BcXEM*TwbxG<7k|na$Uoh-%~V>wJ8VH0n|K?Y`@K z8IlTdZTSveVQ0J;k1?Zq9z9Gd<@M&mA5bMB3%h-4eZbr+ zP14CHIq|n8V68p=*XSlGmP!FEO%XW`&D2lG-_X~8EqqtnPg!6rynzkoNZZVq39PTTJo^d#YqlKE+zM>O zq2Q8Pdwe+DhuDL`M|cBHZtNMz`LQjzGV?1xCCLoPwo{VT5Z&`T`7`)}db{NHqGgSz z3b|R;;w1s+D!tZeXSZ*>m?z~s8;E-{p_gOQMpRZ`yU)qsBjD2bSv7j!{)T35rqEYW zWDN`N$NPD2%4}L3HHu?dg(+MoJeq^ zhavBV1T9|y4D{JGRXe&=fp~hE-tjBX%S4IqEN`CJSKK6-NnaM+`XxRutk5F`B;%2r zf@)Rg33hDvc4{NaXICTNU*3<#|9IXZin=7H3YLQZ!{pH|HaKrlaBNiAZQsk|BSGH6 zW4dc>af;j`j=Ut(Mc6Y0?E@WAZssVQcFIdMt!|kS7Eo_daViMlJ8D;hu+cPt~Y2}b4NGD|lG-lPO zyb}YY`vJxuFSJh`uj7wF`?Clmv`QW8GU64I9gV_S0?n||{GiX*nJOWfjme;eRjkdh z=n@4lKPTt zfx5WtMLx+FMDH%6VnGg@8>AO}IP1#Fu3*Ku^rU#07iwo|8a-K1vzJm+Wo(Fu8GQM~ zK@%AESUv%DIt*C@`*yz&VLZy46-(sbPW`)>6c^;o``?02o@4+~6)51=e90{3gSp`vvt-Cqt0MFJJ!qr5SDz3Ab^KH!s~oiGU0QI5bwza|MDd~F2$gxQ^a zB=J4`?NG|0geqP#`oV3ke?ESC9mg3Ixrc8L8`GyeOG!bOY^xRsv><@-Ek5bj`8cxb ztKm8yA+v|%6di~jZ+#AapXh=Zyx@#%)iR*GYY0xo)Qpj5QlflR>S>gYF5zgV^SI7g&4lSho9{J@$$Yd- zSczquTJht}P17-bk=9kL>W&1eE&dt3X+w7*O2&0}%|r{%T7zU*WJF6DvJEQ1V1`J`-ff@%QtbgxHQV?yk6ZKgfco=;mhxaXXiKypW8P)@OzB&v03#jamRM}fa}ZC&F|21Fv7*6D7ZZ*|#nKVwX+GQPGqTu?dO7xo_RL+blawjN;< z8PPS2QSpMG_?`-KJzx#y+2HrIbmEA6?*FP5qM!~pGn2#ne7J=;pb5+>{KEYA5xSoQ zVhPSRS#Zo}gW*)yO9R~cuhXx^Z)ZAJx^!@jn%8cSqyr<=(ZFL)`jaBJ*(IOcI2WRW zZ?E<-Ke7BQ0g4ImW%Y7ag%DCwd#O2XIYP+9Rn*8pZe0c$+8>9n-z9w5gsLxKn*@YW zhl?8Gh3i|Mm1Pd4z_{hC%s~K_%Oqr)s`_ojN!(ew`L6sIy*5ka1C5^b`-i-CQIu3f zGk)+PNPSQsla5$hZ@Yi>EQX$>@H)N@5N!Q!F7zWrlu&Bqw6=!cxtMAU*{`OuOwmuW zpVvJXFmHR*|KUpAT6wikIj1P2>x35yf}!L(aZ&QSNYWvoWLif&qVH{7OR8xcJD8 zy{!5VA?@cus8p#X@yZz+L=r}R z0jCT?S*y6s565(+E=%FmF&ciMH%=;2)C5i5Fc8`&@c;<$1t^1FVd5kvJm0GdD$3rR zXtq9GpY+)b$l!Bf{H6c=E#HyefyZ-8Da0C~&9tQfry!fB8wHOh-D0-)r4}jAuw0C^ z+2-vdA0|EyU5&8>fwoTV1+-JWb(pgbJ2Dxm*@oy*d8j{-zsEVQMU;`1<3-fco^K0t zo)!Q@vHOuF#(T9em(mnGYE33h| zz$oD1xZYujr>v$%&=+GuW7ejpi*8D6hbu)v9YT2jPq~sIGRGxBMy1|=D31^&LJc`i z`SWG6H!XMev+H64k~CNKn>wqfGQ|2>#G$q9=<7k5>y&v!@r@Scm)N*`y+sP2gOED& zi04Y}-)bn>vXf$|Qwb*$wm)dtxBs916_4%62o4#b2Vzismcw&4rHdbNkn}JYzZ$^58mEBgt*N5NaL8;k!Uuj*IZNx7VF1NfF zxqZe(?tz6<2R};Tb=N9oC5r zAkbch{;E$_3hHOdm{KTK8zHNUujO{A0*5JXsfhqYdkt76Uk1so*l!0W^n;nX&^T;K z7PzR^(JzU~ak|&Pax7#=iHgyZm}_e7Az8}nCC$5qe{umG{Xv^rC&er=`zwcN*jIu< ze{I$*`&kGcu;||dTc`dRphlX3hDK3obh@Yx6>R;j);?Y&B;)Cq1?dZKBV{a7;s#Sr z^OLy%Z#=ulh|WVDSw;JA#uE=%+~Q8<<&E5e;&{GTAg9Ovj6>p+&ASb}{8J~FRX3$> z@l%7w(~rXvE-CY!81B7SdeDi?_+={-gFXH*Az8{j!wV)nB8+s#h)U{;)Cy#C1?`M6 zdF82(h2~_CgZxrEX^^czA#^qeps(P2Mezun?)19Ef3;)Lyx5?C&XyVa{Y$p!9&iisvL{3U^YY&l2>FGi* zRZ_Mdo6{R*d#gR8>n%~-aMGct(&DggqWjqQuo;R6)<=|k?Hb`sdCZ+_j)FqwJt!^C zkGFkD6FaU}#o>PX>PgVUg+{`Tp7>kp12P*+Wy~nmrpLX`0~0*s^Sj}c+{)_eH2+C) zQz*l8B>%*EjrhaS5DfVkGniip%}V8#5d?U12C&4C?A^n&`BceJu)(mGB();te3B9$ z@Q~}ZwTX(grH&_RCZ`7UxK7wli;5LDXjF35t4`5d^Vefs(y&rC@k{oa-A-4g;r=BR zl`P>-=9Eu-1ea0;I`u6TJP}-kiA$CmLDemh@Asl%ji#8v4MET~4mLlE&Sa#(6#aO)tF;IBX`Mx`!fG=Q%=Jy}7u8W8SLV(MF!lAbao ziNH}^oJrGu66-!$;h&(@tw|d&?~TDTxT>+>T`fcq;En@t12zZsOj8lYz@_03@R!Cp z-5r%5(pusN?>2OTV*KL~+csCSoZ(7HI>cW^iXbVKWuF7Exb4WSdXPX=>VPoAA z?7WK|%i^!dEkA1Sf7^4%df)OAPVA$4(yFDF7>aN;|CjQq^Oqp^+-%!7bn4Kd>Nr;- z)%ajOKb;MUfx4Bb=Dgv)=Nj(&1Xa0&nI2Ce!C~mvPFTE@t0hezTLrf20L>l|Bqb zU14`z0FU@Nto<@`$jczqX=hd2V=VWP>Nv-yd?!CR_ZkjG6`pu~XA02G{&gyDlk`8vnSMLalER!h@}T#0)O>Otrv^=o0u6hTXKx zN=Pa5oGC;-AJ^zvt2r+O6LPs#Tw?p5gv$T*;r6#;5HFpp^Ie`LVyJOkTiOV6*xeiq z4nD3%fNq4`wz3klQP3ynuoKD(KAc|&D|*{SdgW|wB+bDS7mV@2#E_Q$}Iuk9%=W_3Yp~S-=`^3YY(MZG) zwPJ=#h*9%G!O>U<-bXNtYPr}D z+qNT|Y)N`b2WXWAMP42ecPllrbOycD+^Gza*&3QFX1h~rr%q75!u)hYU}ivB6BMDN zEPHBENW5pKS-p7xTCo~#r(ijrW|bBg=fAUjrE93a$iZ1vtZ4Q8;IO$;wEHSm(}Zff z3aE;lm!`O4TNt|yMFXXUw2Ru=kEd>9MPcU$0JC77<)vS|Q_uTbTs9Eu_m z|8#%bcQ{44cGxYX5m^0Nj$9L)nP4di4eXr!$p+ktQ5>D$OHqQ)V&2FB5?Yzmlj$%&{B1U8&mYD~NRRG~uUkn;e1JRfwD`SyiH zv$0hNYMekP7V$^nCJ&Xepav4iAy4IBj3&g}^KgOv%42*+Ux!&NLR;C~+_!T96L2n_SWPs& zI(v^7|5zUEQR1$%ptVT{JUcIYnqo!naR;JzJ{GBx9T*h5nN%kd*b{*Nei?lmU3t$D zqJ+EX{MU3nt@b48aMWr2Lq5dVC(8YlAhyZ^05D4g=~eMl(5$EdH8}FHG+IN4-EF_b?oX1GCX0{g!|bSQjj;3dur@H}AWvB*Y0_-G1C zK&O1(aZ7x)!z*t!h2Y#tMK?s6DbTS!66R|>Lh2oo9+!7d<*t_klb0`_h6G<_ect^V zc<~VhDw|hqOt*vQ51hjFRn7*3^hPhT4S@FZnIw!*F!Ios&xHF%Q|v_2WW~RV7K4;F z?S&9mhaoalW_}BAe#IM(ZOZkj*dp0>rkP@S6exoiRh*`wy&+l?hL5S=tI_9vU-SxzG8gnon4S3xshOT~<_rX3*as&IoYR*^7M94b7?EmPlDfG=gf3TS{gg zVN}M+W!nN8apQt$SnvZ;xDA^`l(e85fVcvBsTEYeYRE=Uql`Pz94I<8V}@atQ1({i zL|j2ff1f6Ticy}@zcPjdY-F&KG+06&crtvuACJV5yrc54ffUUn$cLkyjQf1_P!eoS zrBGu``W>eR&mf~ZX0|LDKzsG(B2ejd`9)OV6nL*>?m3%Et(H`I8D)R54q~7@Zzsae z_N8>z6Sd3+lFN~MAw1d=_6;@K@@1;-VLbnOMTf`#A^b0W$ zh5vD7gTxzY@a|Xp%hB_>!~_x@xUUi}%h_tUxNMg}FSqhSN434LalVYbQ;9>`lIB}bYs`VeZ1rRP+TRZ>nwOF?k9-PIY!Iv zM)Y<`wi9>u*x!JwQBPK-bCumk+9k74oUNVVxf-v zdce~?IVs$wtO)@i)r%88U{0P=BKJR|aXs<2+=dTQB@QQl;d{Y3+c)<5%i#Cti=g|{ zXbm)}v*Rqpp&miBy|*jP5Wn~!c2)r{!)x?haTNU6B@Zndpa7pu6(+4jN=Li8kwiiU z1)!$Sq3noX3fHON^A&;sCXu6CH}A*kh?&&)wF`F_om_!TcTb3bWOB$4{059`$G14Y z#=EALv48$S{qqOR`sXe=UOZ`eSy*VhhAX2Be$;XGNQ}j;YdCmy?}wvU9<|LOzlieWoNF^v}cLzwSPB_p3~_ z4=!bNSU!Gs-6N_2gtqI|MCNbN{3Pe$vVV^TDp{s9JFiu_%PlLKTePx3Hc6T$^ikA# zTZNL2VQW-D(YjI9406@^*5IgKu=^&(u)RwrU~oBB%`HLIZ7E6&_Q<$za13&Jd+7F4 zDf-&bH2=f&t3?z1W=#klbrTthjbwm@s7(z)3GMRofedWC;yv9vH@C1QXrc_~=0ysB3T85%gv+Ako68U^=3L)kmTuM2zzeYTOF zF9c22;YmxVcDlZs0ez9f0mF+J3Xkp+ zN&>>}$X}i=WT5@Aeyvg!K4SDJV_xiIRsk2(=4_w71#f z+V%X9VXxrM@Q;7xe=c&*Zuqti4t!IZ;2%HMqy946O7-wXcKz>F*^9`3a$^nzdf>mv zOscq0r~r-xATkwUClHaBqEwv8DZA^UUJVa3F(Y@tR*>*u&}NH?rvI4qpm3yu^q!?F z%*KuCK$-a!>rh5>8cr5d-FZEN#`uIVd3<;wn@mLnZ8pEeOyCia4_DF$yS^n2Nd!_* zf6NL~OkzsD&maB+U`arJ@*LI)wu90ePe?2NWRTPX(juhf0E~6X$8S~^_<#IWY5d0U zHZg#26(x4a!om8d1HoGe&{1CfEW$2~*q?Jo4le#uMyvCFmY4EH59`-bfHLgE(#OU<_7ZzSrCKp_kc?4F)`LGI zv5jy4y#S&Oh5!D`s6Lis7le$+D|rmUE2_;#)BIhl)w;)vgWk$mRUinLbrsc!C&@## zI~!Z_H_6bj8}#F>TnfA+6!C53Cb;F5|E)%s3rANjQkFN2ETn@u2%lOF9k-wf5(z^% zf&w7$mPhvzfLdOxAE_2&K1jlJ=sgX*?XPIQ`o+%hZv@R^b6TG1KIc$fY>se%O)ehb z#-$FD@Yw`sovo}BbA9V{D9!sE!NNU4JL^KLEQH*OZS9BB z*>+}XIiQdv*&l!C93|^FNFpR>8B5higFsj^LISu-tFKfbvE%>fcvw(UhFeG7h-PB* zEEcNaY-aKBi2NT1549|pOV*{8ctiN0ZZR=fNk-YsomcQJ--K2z4U`Wmb*u+<@A%hJqEgam-5(i@MrH@q znVn|#`SigTsq1fmhg0fDc^*waq~5+Wpl>^AtsvEXd4AeH{tf#gE)yPCSOc}d`dqlj zyufgbN9fuM%b>g8SUxN>9oP-Kj=Lmz>J_(qU@2Yxp_{(a&C_IeCCN;qcut&t^3SDx zm|(6}FbGj(ynSSGl~==bSG~RNC@7H3%NAXtF9ec2URKmt^+@9(`m+v+&vBKxqSOBK zJ0VCyFV`ys(UQ($;huSc>p;>d3JMn&9i7y>o#V37JRVqNZu85t>pmjqkiO~?A z&7tFJzNA($Le5CSVW8R1SKkl$8SUvTmy%f_?~sHXJc1~z4qU3gb6zP+W*WtcqviC9 z0de}`TNW}s&JrKi6I+Y*rzHWZ?$01d8&c^@o%=%hhtQ#K89{GnK3q*RFz_H!uB2|` z{KxddfzN))T=o{CM|lmh^GRyCTTAic0;sc{vVoS44+#2+e096#va2gS@e4%TR(2D| zj}&1TjyDhu0f!xFKk>D0M0;g2UCyGx=j;CYCK3nGYg>iE^7U?6H&QaHEwngSy&#Vc zQ`AC;#7D8OcZ<;J`{QrqTUSDEs{+Nc(Z6hUX1p`N>0gmSnN!f0XWym&auF?u)ye-3 ztC%bqRT46DB8$mjt>-uHmPexGEf3T&7dwjMBdPUp?!jNa2XF)&SkKr)=OM2)(2Syw z_x4fa-;XJu$-g@CX9ds=rDX#5tS7af)aVOtR6&$s^ORR2;P)+g#&wfx+u3pT z&Kj1fk7AU8!B!)}R9(L)By{TbpICw+Cc9D5(%i4SW)UgiHM#lA#s!{H?;>3JKA_*@ zZLippO+Hh>h3ntnyauo~oLKWS-_=>Y_p<(cZ~|Wr*hh-%NZdNLHq4P}!FLK$F%d6U zOVGEnW*p6HdR+j+9br8hGD9qPyl|&$NnygbQI&qaejS1?#MfJf>fa+Gqt8A-Z4P}I z{6y`YZJ+0!Bfb2eu`}Ip;{q@H8Og|b(+j-JM6>VYt1GwT9#z+{jyk60T>GlqlsHIq9gBQ%tE>s&Lp`JdON1*>XssFDJw>L_FE^(Op)NS>*_rhg~ zFeNpz7V|SCqgW#X*PqQ`7QD&l++oY|vgCfzU5=mr!KKS_nn>^T$?*7e) z>NW*rwQ?fYb=>G~kxYlbac3xf)quDrC`agdB4bu42g6k-qhiO=j*3OtOi&`Art>=M zPTlvUF@4p!w+Po?+sv4yQN7AiZX9o}U2q&j*Vd@tImrBukvKJA<>KW^G?8B%z*?0Q z1(uZ)xFr1>-JtZDjn2&YgIxtSh-h1|f3VaNN$R61c{kE%+jj9OsuQ{=ChQ`7c_=Y^ z6d6ySW+S>ec6z^QaveUDWW>08H$o%_Y;3 z1;i*zkvOr(B9Y_ips228X^1gT_k+TL z1beSxr*Ng$^sZ`X29>rrrot&VCH1Ycc|hJ+u87|C5)(qB{tGccR1`RJOCU`9j=kdg zw}!7X&*)Ec?2ihG&+-oMW|CH@YbO1SIXbp1KKB2ndOt6eSZ83kX2V zqF4>b=L(r`F)@$0Dj4TEjuM{Ix#(xs673z|=9B^ylg&-ckl{^RSP0DPJ6gw<8Q-tD zTid(tLH;$59Or_2`x+Hg>V5AJoZ+-G4>NeFMc2=+#9+CNQeQm$-imeMY=WY*$q9f? z1kjCx&mPC#PLoOinqxWq?-hWoN}X>U!xUbH?q5a1Tz`p`NMjiFM=+5M#`w22jr1hx zFZiiV!Q2i7_Gh4-htV~}F+tdD92F!3{W1Ann1%U^%T7-qw_#C>q}3)R-Oo>|#<{PR zQwWKE`GNscXoY-yEr~O!_%K@=g=^h3M%q`sdbe-7Z%0 zqU!4IJzgRBUbMg_NKfYZjc)-ED;Kf0_g;tkj=#kBDkUb?Q_QRu@SL|NZ%VtXcb|c; z(d&>W1!TYc=$=Oi-Q$a987A%KvN zc;b%^XGN1Y&}U9QzZt9?=_>{c!5>tXoQ>@B@TA{;8dZEUdr6`ba^391a7B!XGnHpx zd_ul?Ptv+biT`VYQvOR5PV~c1QIlxx$l-rw@zF3eB!iTYe)*nu=qdcT;*hgvW$5g} znfn9#q(oa|Z<|nlU{&v{DUPm>uH=U%%)W>MW&dsr$QKSFGDa7oW@BaMlAza9)=On! zPuY1ZF#p9ior1gihKh7KJ|| zda6SaYkvnqpxB2x>av3*#1v&+9OYfiQP^i?Rg>I%7RjF>Awn8Ocmkqh-}->?xwKyx zGo5y+3}X38@!aNgm8k)Xs+$YfYi?d{oiLQ^>kmn*6GGxyl8w{r>(Qv z=8In*D97A_VpG!7NB5=+xBnx(nRGmm8Qaj6pe#-I6dWOM_%wpL3$YIYKZ~StZfMBOc?hh) z-WhU4P>BlrD+~^fOHkaG;3sdO$*YTsjmLOjJ|7RdZ77xw{jB<(sHJwFdlcAZD`Y-K zBIG@GifBq9;{+K7|5nBEIA7U}Pe+XDjMczbd~O+}%laE2oUnHV!dk18KIpW*Vi{8pSn9s=Sr4VMPtDS36h!500HRfrhyxlN z`8iR=uB$9vR^lG5wYe4Xbb^uu1%H?LBL)@k?Vh$7-gZe`(AqgR3hBp5zd7D*m}lsY zuk$(rCwp{*2`$tTwG>J&#SGlYmnpkgHGVadh{Vk^EVNFq$;-}RmCYofaK}FscmSMm zhm-J#2z|cb*75@44ht{?a5I}7`qPLH$t>eQJwH!BIp%|^N5WkwHH>9n?P=gQ&&&%x zas`Pk_$>+Gck_toK4~qT_h8jB01h<1kRBom-^GI(n=O5bigOVgopYEUz$Ar8k@iWTYiw(*B*M6PQ6MuOJ1g% zOlKeZbgK0s@Qge4?j_^NQoL6QH_)foAgO$>vEQfEAD^lYWcQ{r^+{kP!U`odK}s!7=suM< zV=@rwhp}I(A8_ic*Nz&c&dgECKs-KyAKSmyc~AQuR{j3AYI=S8KWc&(Mhrkq+r@+k zDs}GP_k#cfrNm^1(f?T8FO?{Sy7vge>I|XA57JsL#SnU`hCAGCRhR zR5Ge@7v97(A*)hP9@eYUF0>@jox&)Z>MXr=wFeN&KHd2;L{~qTFUhmhdZ<#r^Pi_k zlsik~M0sc4G>Lk2FwkfetvH4a8d(a7F{Y6i11>NC^%Po}?ue;lI2F_B6$dIcu=O+x zLws*tqru;(Md-_C^Z@dY-%ynA53=-BC3Kt3uw1Q4B{DO^D`6!{NA!i{FpWN5IK$8?szbv= zRYKuwK4o*Wp$K|&NcDzSt%yS(8ZLff=ik82BLRnuRc^;D6$K*qO@~k~#^WrUWeIhQ zpqAxjgA0?5+>Z@g(}>B+OZXoFz9D49J{-)hE_j)IDzisN4IDT{wo8x! zdsW||J1_TypU;eCo+H{{BwYlcDrDau2`fVgohmQl5g|-Wq{!qKrLKmVFH`EDPbnM= zLDGmll1|`9C0qBMCMUiH8Ux?IL2_mt%RHBh!fRp`fEk76o+|$8F=Oo3(ZmRD}{jfLgH9{36vl0GYRh^N4dT`|CCqj zg?3c@msuqKHtvn|Iksxy2UW56x{r8_Y`po?qS(4AcY(BEIWFy=u(@$-HmHY`RWc zCxqM~lh48^o!X#WjN1(RVAX%4XQkEp(aqlv6Uwk+#sygrE6-EJ{}o$CMIiUxMBDb; zi%EoxLW)u4I|Ct-LVw=#mD}G7&g5I+{Fq0yS*X6sP*Gd`IOpK%hS4 z6nM>>dH;Cfde!lv=gsL0i`=-N@iAEdwphP->pb`< z_5%`rZpFTd<(|e;z-b3+f@S-0{dSt`jV!TZb%>I`v-{k%Mq*+DUV})1fRZR_E2pcC zQKdKdy%*+NTZaay$+g&x(OpVM(Hx@8jl3VMioa_+jeR{`)`Ik7R0I7xNbwwB7F0jS&8Nk~=vZ=|d`>5Io!ktDhq>H(zo>Z!zE1eyjXQM-0Br z7k&Jrb-dFi4b*B) zH=r$Y=_5Jb`}Lsftc0k@?2C)-G*aG}m#ALW67l<=F@2u3zzrim)`xfL&z9Mh)|D6F zmoAUnH)1PiKn)_%(F^I_ZJ)Pt6uoQ1zZd$_8#oAvA0{j=VFiOfEcO2=5u(BqsM<@B+i}y;#N;i7)nqicZ^gW%3|A zve%?Sn$`DuM_;X3zj>$;HO0Nqt-*cZuu2_JSljbBkz1sUy*CUS=BAx2 zZ{~vK1SW%sMk4>@&{-)$)A7>Ez2~>Ws;bm>h_rQ++laO^$TM|xnR+ORcFMgCv*eY) zKGj#M41jtqHDSe1<58HI$ZQ>(*DE5n*}(bjNNkwTUkIOg3itAz$^|T5!ud(CiraEx za+KGV?zhPm9y$yU_T8OQgQ;WT(BV9d*34R74Xvwn5@yf)dMdVQl3N}R4!5fb!qTnA z-v|FRXmy`VJg>igZ3=A=KW)DVNqZPI_DUuHlEXeXI->Gy{CkboG=P1^OQwS`<(Gn` zn{pf6S^60lJ8p9kOs+k8gts#^hB$2JNO=)z3t}|Lofd}#grj9klhl96d_Ya4@$JZr z_gzvtr{+x6$B}y(0h#CqR`BB>kI>oBF;Bp13i+quSG{PYEqd6FTxWA>^XS^2d+&8Q ziSImv6-q@Dsie#4OSSB2EB<8@>T`BdBf-kWlG_xi+(j3hu6Pm|E`YTH${%4_xI%HY z#AdIpmJtDZcH$hDm%ITCH$VBxcmG?~f1IcF9dWtizLsR<6dGn=D!-MGIJ_;!^}` zckW4=$a5*H0?7O9r&&zDVJ;CW*j-BIx?^9jJbFuO$zQ7jG7q&XYGk&em#Q?^N+nxw zhWESnTAr>~wh;;bl)H5C(J}k^N zUOQ2oF9ufI^}2R;WBijRMvL&JAW-L>N{pBj7b_C=tbSpw&H1*Q+wkZ+o*<3Kcg|J; z$t#Lh9sev`V}`>|mmG}~UGpJWK|TVJ+723Y#;qP{_X8z-mwaHBAV@Yj9e~*$?1_X0 z{L3r!Pdo}>vh5Av-IrFj*>+0tSZDORj#E&p9{M)D`=`YGg^MKVTo0Ha@aMa`X{XwV zk4(y+BL2%!b(zoe-yP};6||I-|9!5V@2f!tVBR*@fsqmf6dOsg7M2}osh7JFR}5rc zIkIZbQyK$K^c|1DdAn7$6Ib#AO3G>}FcnK&2T0R5JyA&X<<`}5tu1A=Yr7kEjSTtZ z;A#FLvH&5=@w`P>(rxK`5~^F)TC@3oQRe(J9U`mY_cA6ZZg?6VeFC)af_&@`RE%sd z{D0v=I*F@n$Q?m<^7m2W-TJlWWw3^{K+2`S1(WF-ey5kF&NX(gHKG1TL2})ZX4kV~sev^@_b<0qPT}=N=wJ%q3nEeY#{d>|}EbGAu>uZCiy=qJY5_pAb z(ye@7biOUMf%xlAyx+ujI~2QF<)yoA`c1ba{tQX@kFA36mu6!U*#z69ek*r=fxPzh zO!$Zq#sH9s@8iN%zO|jx##FHV#61$kF`?clg-6aHVipC{C3f6<01Qdt1mOcHVHRT{ z;}(l!=2;#YiSABFTmmB~4h5J(m{K9s5R{FXhvc!6d_HPnMIA9=6sbBT)N9yM-Hp*Et%Bm}!fxG$MuK|? zk^sRWNFcbo26wkWaQAL#AV6?;clY2L+#v+_;O?$xegCfg*RFH7F1q>xy5^emozHj% z&T(Z81Jyk!`w1yyV__L63D_r}&dYNnJK9|&NNb`&$^Y5jlI^ME+MVe7l=)x-QXNc- zV5#Oc8xcW@p0ciNmTdUw$Tov7K5%UVzhNY#8dFxQ!`yNPNr{mq-zgG$T$nIhZgQNe zkdoko>9i25C#jT_R3_RdLKxSeukFjgjO{;wf5PXWq$pptNa13Nu}bE(13D_n0IxeM zm!jX2*O4rp1)G&Qro2Isf+M+7#j5nvrokBBhFmI|QRz6+|;B z%o#$pEcguUQGn{?VS~pbS|HoY23>RSe8!l(-19o)ttp9gxKGd=nKTyL)@=Rt>T#bf zhMABTC8(jmdyYW#*+eYmY?lOGFG1`IVClp!&`|S2zs(vKcgt-iq;EiXSUYn*m(mfy zyVI-1xE2LjS$SrdjV7<5klDt)gPnZ;ODJdq(@#@3>(i?#aZyjL!-};1USiKQ6TvYD z65B)+Zlk{={K>^hs3T{~ZI2tD+yi%o;K^>VRFsQW37}1C2_a-`RpA zi0FQ%I5y578fTQkpu0f*kDo$h9V$Fviq7FVjH&*s;Y$@rH2@ zn`FcOh(STdS@xAUH8uP_jrzskq<`i6ZAM|5g|(+8H*ooJ^*a#ywQUhY=FB?uljBwCuGNAA9XJyM&?yrE1GG&Kdu=_Vg1>h z>4-JUn)OtiQ3G(AF8&&K`OF%F4Y6;W9B^n98M?AJ>R2FeaVTw z2Su9RzFZXmz$vL3KGF+oGbsGgyrJy4Q4J0LPQYT4%*foitX2!(@CsZTdJD;;ROJ0X zyRD~NYF6lj3z*yp%Zlsf{78m}$8E`>HqA8eZ}p2suHI7M}!DUp448GSSya-Z2K#TqG&Qx<{zZv zk;n<`L27q=GF5^Om~+ueWt(n(_$pm+aSmZN5TiE_q9%fu;%p@}!jHntZt!f+UqP8| zPu*y2xdjqluKOP?Ubk5;Hd;?pl`kFn$UNpNN@`V{cE|pwV00X)Cdb_PN4njxWEbWm zRr`tUR>T-TQ8JhB0@Y7cyEFL~n@-tVk}R41;45^foJ@m~k3((jwt*m(7w zQ8Z3bvL<`^tY5-gm3fjw(`d}md|AE*{RQhx|3xuok1!*C7~Dh*G9a4fHRbDb+Z@ps z4W7bbob%)Uf(~u*gS=_)myvlkcmw@%M&_dxHD#uDe5u|9$L6aFT0HisyHg5c3d zbXfC#5OYlN_-}oG{_B>8#JAdPra@1ae-*zaF*UGePa#s>s-_oMYhE&cXLUgN8i@?+ zPY;S+sA+F@E~uy+2SHznz+H!ztqBQ3rkeWS#+wA64;VdtPW1jmt>e&O3|&9$)kQnv zkwL{8M%fdmR|Qv$@dqK`RLs6G-e6(L{@2I)Xn{u})(mc#?uoXqh$X2~t^JvQRC@*!$vj z3ZC7E5*+R63vQ*z0ii1oM7#uIZZiX#cl zTWB<)yyDnOyUx5*fpoF}8WqIzzN@Mgl^k#5{`~C8c)`Pgg{L^@H=!lyrj^yLlSBb0 z|9tx7eRF;Oy^E$yn9Ge*fq?YLJKCZux|h@qE5f zYV(U)_nN)H=9m9hcc+?!X_bTZ1io;A`pt9%ny&aU^Aag{#5jHuPb^lzAWUgSlES1KFj z`U0fM#Sm>{rw+xR<+b|YZ%p6DR9V}xaxu%J3lXg$4ss;((oY9rjXZoNQGEb!&}h?f zzatvs&}z&7J^DYbsfwBw9nX9R3zy$#xP1)2_hN#hCm`Nnp}r{G!^i*fIJKM)E^2d* z*R&+IR6tj%+D>&=9WY0{EWq{+m5<@^c|#H*GCPUbA@b@mPFm;7OwSNowB{j3Bkfqca(PMy@$^?1kd|WUs-q5&X6D9TF`AlrFP- zOV9c~kjx1oCLbEy)lK9x3mIm5o(eR6wS;>gh|>aLaN2%>E8aN(a(WE}j9Vvw$ahFl zaN)OjO-i?4DHbmI>n#KfF$iov?ufqhi zIEIkRhI!9v>=7!qm#nP3Mb!Bb353EZ$od}SNhj){pFf?xG>tdX zDzWlhOwUi3+?NQky3N|HX@7A<5ybM{WK`>AN+G*p*14PfZ%#t>u+_@aQu94#`C*jZ z={Nu@l_R%GPE)MU*2a@=lIZ>U5y#?hS%JyT=;AuxiU000{x_2Qe;(G?nEW=QgjSD~ z?~!&WR|TklsRL(|4~lfVKhm+Bpo2uW+qSV}5*;*S38tkhllr_LSfq z?cB>5pT{34MI(@OtPKTgb8(j>S!M z-f8WOy()F+Jj6imw{u^WlM7aaP;H(2JN5^ezMk0ZrbF&u0E-IB7^6+hg-?A@QFL!9 zDE@At$Z*85s1G&NGkvj1?lk^b>X`Y^cKN&0-K4;U)aB*nRA;FU)5XjH&d=&wB#zj$ zwNKQ267RJzVAr6}PWb#baxo8ubQ9@MG8e=fg79xBvzPrhH1-Aahv#+qEiNMF1fxxT zy(bl&Mn=!GUan|)wxY$t9XEW>s2$Xgf&}4YnT}NGCpvwSGxFVia^qoc#zv<~kHAcj7% zdq^0|!Uhn}mR}9q?}UO@D9M(h;0Odxr|`DOPTLRKx%8qsZr;s* zLi~pDzDcSp-kO23m@m|2CbS2WHfdi z?(7d!pPl)6MXU$>Hk`uw&+%kDd%{Z^RLt^@#ff#bvJN7i>2sM{3P4g1Vf7|OVq8E& z3Uwsh!9sJ7&J-qySCp!#cy?Y{&^j&wD~g|p(E2NxRn<*|*9dPvU-VCrx=262%5}|0 z413PoX^3rF&F@p|S;>aw0t*D;8KBQBl&B`-@pquW!PujFcI}jCO2p6Wp;oKL3Ja1nYJhWqW@eESJ=UnA#w9 zF$hm(ftBCx3$Vtje*0Q6-4jp8l7KR&Z*4UEW!wxf$lJcGnETL`F$%txQbt6K)fS@e zSvwipE`0`#CTf7!)sh{T>FFp#y2{f6@(MbKezfP#b;GaU%S11Gkl}a8V)~?8m>HIR zVmb*qxi=j|%2P!=`vb3}e1kRL5k_f#Yur~_9~8J{+T#c%o=!CyIX^FQ{?nRB)NasV zlVUT#wK*@^XcuG~52SH^P@R$aCD=7An5$@OTS}jPgRo})Pe=zlzU$QY)!P$*#Lbp$ z8wo%jm2ZD5z*rvO81zh~w}`qhd;#4p$PPzY?7B#$eja$Hd=v!1%4N zCN^ny&g3OQx$r{$v^YD4b-khWU4XC z;WjM!?K0u6XB%?j1VS65VmZaDv#6fW{&V>OqJheAVrU`~n_aSVzj1$~il8E^-TaQ4 z0KKX7(QDTE06Bx>+4yNVGJiRq82kZJ-J^(q(?{`+BpjPHF(7m&anFGf^KAs?RW5_n z)0pd-g*$vR*B42zU;|nXlJ!ss6efWA6T~&vq*KGqO#b1Ay<+eWG z2gyv;%MsFl8jK4KMWz4rDb{}jH--H%%jp$*JDjL%%S6e!tTcZ2T(Un9_v>OKjAht$ zPB9)sDml#tKUIj{pWmNIqP}k)2dou7e@HvkN}$W=EDYkk zzZj`9>&m8JyYCOVXzXk^$}WR+N!2@I?73vl7grz3!(T2!CFW9kYNtMyl$K(Mh90j~ z>Zn?p-3%}?Cv-j^+e-?4=R0l-({sJ{0INyto;Ep`E^}~SC=;scP7sYSx zy`qxrc%|QCKAdbSX>RXf^mm$u=+&z<>au?x`x%qz_tdcb@{*LVkI6kLl52?!#qyLS zqI@(o=2Bca_7M|~bz|2D%AE&8#qya^f>qC()%IvVhl>h858wEzzRQFb7aY>Ey5P=> z9R>+f;sJU_pMI`T?wnK7TsUPGS&>+=F461GHsQ&Dk0$l`g%>71==j`jcO&+{{K;N8 zd{_@-D=;V|8ueLl)z>^i_P|4p$d4@)3xkQ~n92e^bF;oKqNSwTwCDVx^9QgRer4AwK!*V65`$2E4bKnf#1g{reE#1Hka)erdnj6Uy zx&`c_C^Rmjr$}QWr!mBK9GMer6^#ec}7;xOpWZozSAF0~6z5@C&U}DiHx;Y^D zGXo;5tuGhCf`jt8-2N559Dn|g9J@h+-AaphnN8~XG*|xbG8q;DH4VLBpNrfHTE$9D zZ&8IVQGIKwmn7~eKl<{;Z`-sn2PyK-VQVT!mLV54nM=r9sfcPUvnfI z*qw*(xpQyy*RS~4-(PEil+NOJ8qTWVO30UuI@K+4#8!ama_ggC<1MUqy{XUo@d9i949bye)TpR}k+%WxW@#pq#<-1o*rEd?)AUke3N|YJoDEPZ< zVP;$gC^j-~sf@om_YW3rob}#~J~rzY$o&{~QnKB9k9EI7E4$VkRor0?namnSaa3uA zwm*u*GA&fE@YJ&Ky0M_)JDI6#zc`P#G6{oZMw+2ItJ8p{-FynVuTS+!x2rm-;qA%h>-Z%sA)`*=OvJB4ZgK zb(ViLj3%{4{qDf3WE5L9SE!pSX!MH*W>#cH`xUIl<(mfro0ZIDi z!i;cZR2=2KEg%Oa7iITf&k;&dCIhX3Z#zG?UHTT- z7S*qtW3PXK>{6sAEp$qFk3Z}gC`U~ z_;lh!U?I*9^moK9{tC2yP6WashM0cWdvS;e>`>PQ+KK+m8UdIz#aYE-ru~X~iW&UA zdArDM&7bJC?T+QR`|d(Lx6(<=eo@Fju!Z9U{`zRInapA21K*a|av$+g=tMPF;O?Ud ztu@o8ldz`MZLb~0I@g4F5qvcUUMIsK z2ZAidZ$jIpjgEO_x1#_)Ts+3|*rw@k6L9w~r}~w@>hov|-Whqv8(AKW_wt({>+@;X-W}hjsjZuz z;~n26!X6F6_CVs9&|sJ&^>M~KqRSs+6o#{UbE#D|HI*Ti%>%1MTuvr-M7nRbPQa!E zbD$&4Xv~IKgawo3@FC=v@HKXXtonamDX>4yLXIWfHPAISXM1w7j*pnAkNs=4JAJdQ z+~qDWzbsV-d1cWzb<(D}%D&b_npRa7o*6$0S{E~N{)K+tG+x_cMD4DdWHd2-`ekqb zGfFh`4uwoF!uz8tZi{}kYo&3;3}C`OM{*1GRjD?g;?1r73r#sK7on)Rqux4+wJ06z zoeDxKF{tf5TA908Qp*#D(YPdYggA0=jaUQayeLIkC-RZ+h3wKvdph9mflK@=ak8My zskO-tY!3oQ_`?uutP!1I*Doi#mlpGU)>xZveGUz)xSedsN0(3sx04Z_zzMni{U8!M zI@h~ywZlIJVf^eqZC6KA5(kgBNhclk>CF$mM;XXX8h!QEbMy{gIk%Di_$ItMv{!{|RsFW-B??-rj^PDsI{&KYyB6y^(U^#S}-L z#>paG2?vGJw9Y`&?~Ok+aSE-$n&DimDT(%5-PbT+-v*T@qB8AeHQKHd)shm1Iy)X@ znVTO^%nTuXpKTYv@Z7BjfS07R=FghgX#`la1}SoisQmHP;6EtD+*}{drNO7I0Q5*+ z!?H>!f%(Y=&NP=2&%Fy785YUV%TPy}>}FfUSY#-> zinliwJ71XXN^7JumynIOe00805v)l+|K)y@(@(Jpah_2PjBD+OjhUwJkN0YIPKzh*F2@{LI#=WM*$KDPzqN8 z#@J^-bFye#pRgsKUUR!>%>q=29sQ3 zb!W+f%mw4{WgDDr<%jdI1tDtWGPT!|3tu2)?+-S9HYVIeE!xwLt7$@YXQezK#0?Ou zdS@Sh!e~PVwU`k3P+4D9yYZOG#&tyRJQWdU@*7C4}Kb-x7ahlHKxD3;Uj ztP%1_&(}3GY7BN*WZCB516ufzlh)H!jauT??1?6KaxYF3mI(T{9wYfOY{&nC$DUPu z4AX{vvN~v({C*)!;Y!Pq|343}k|@z5Y&P?(ml@GzZ@BMeU@;p`3WIg!W!7&%zKA%8 z?RcAZ38utxLKYWkjIdOsY!$;7QXT`6;bCgpq6~b(hQRQWdHe&!ZpkM?({Y46)uRpOTi9!G0CVDkf^R1IoYTmrm)FBJUF$ERxgQLmh~yqO8vZ z(;u3sC7D3`5$-d{j@m?E`!AAnG~sYEuJ!_zp5AKg<0M4*fzR{F!}IaDarC&mS_Nd$ zwFDZ4oA}#b7vtNzY_-ZdDJmQfq&mWWm2o}fd_rn3EEF|+`4rPO^>xa$4(U>N%vZCk z@Ok-C&@Q&+Kz_kSH>U05XHTDDjq1yaS>-g-9BGjxUiy6l+6-QCXT?Mo?1gH#xMj$0 z-^GEhV!d|rm5k3rhj(P$H6t6wo&9f%w0vgMl=zuXi5z8`L#66vX3s74wUB$Kd*C*7 zYsqs>7W`$-S8NIB`1)!iP^KRlJvU#epIDxng+-{r#+Fu)ujt7}$UIsKVi?e4*8gm% zaKExjA9d5~NI29xLL=>}UtnftPGbaRdO#sp_Dj`Ao+AcP@>m+*3@v{9Xr1`euk?n5 zW-6UvDnpKcHt-4HB~Q@xr+_L$Ljwy~z_L(|UsI$#2!Y*^H3 zSh3?<0er zW@A_%1EfMh8wjK*KWke!2ZsV#x~~^K5=+@)Fxw9ciZ5y6(B30Lcf3H=S6tsoVvd$! z;BGGspT5EedG=cYB&2Mme(lME+4&2)m!K2M9yiokp|7{(H@qZohu6Y045(vub!b-} zxDfS%5nv0M8b?DHr{Z4r%u_kuapjCYo_ ztNC2VR)L|55Wbjne-IVc+>hseBn{#vK9c6JDK9HXz9YVL9*4+pa zIB1$SQFrLEF?NG$#QoBa?n^7IvAe{DBe{P`0-ei}60ASOepT_}jUNSFgi>u)P*+bA z1AE`MC>tS-Y_S3wrC1>QvT_9fc{?OiIY&XCf9sWCG z>cx>l&Z(1RWn@b99v;bK8j72=ULX_bo;#Xq#;lKVnNFgOb<){v-;huc#Y zFp@2e8td?cEz2XB0}KVfI`dc<7rN;5=iK28)3C_t%Y-2zf>VvD)lx3}fegsp+&nFy z1>Pnm3&X~BWlj)Mt*}{IgeY>dp7Lj(Te_wq%{PC#r30dd|i9_#d zNaVV6TGL!PQ-p#kBfc|)%SY<-f`PD>ClAWoQsT`xDfOw^0l@Xj#>SrRV0@KcNKl?@ zR`O~-D^(}`T=;brHOqX=wmjb4GSN+2TVb#I2CdxXD%o(@ZONV`gV)VPwDj7OTiAg{ zw4rk65^Hgf%}2_%-7NJ|qY&?1=)|~o00$|uH0I4Rah>l2#OCrd2yPc&xEbkbRQoUZ zS)&u}{U224%3P4u#5-_{rb_(U0iuGI0!U(nvD9P^ztb8HCaL-7Z^y!Jwd?#YH@Bx; zAHDlG)`z~13tY+sjwzMCvTbT&vYs<#^b49uVSb90|J@P!2;!2*0AMiLmr3!~bLBA{ zDN^IE0xH=eT^)E!l&4#{^-gp~YLV0}!B_@BouJD5a!3xB;Cd9$5c4GOPf0d*zphNR za^Nc1M7WWw7<(l{91$QEtt5lH6SW>NgeCOp7TA*FaJ%gR;#eCd2yQ7y$`Y8Lb?)qm zit!@HAFZo2n=BT;In!*2ZatL7C+_J0Z2SGA0E?A$xch<IC%Z%`SwpN)1mBBGBRJiTPYd1I*9J!t}$DnP* z$}z|MRp4U+HGw)Mb|IT$t5npCN8QLi+z-fpQP3_}P7L7UL`IfWoLnv-LY z82Oq(nZ}SiaG0P-(obx22THUcPv-*_VHNOW@K<=TSKv$ zT6AFPjYv5fWJ!eR0c0K%wU$I_ZVQ1&7xmwcpc3hpo8RGnMsOOVqw#1TAWE5DrPorc z|CO!#d8c}_y_T17ljF)vlvk88SRO2>j;Hc#8$izcG%me1fD?-h@&`I-e`Ess5q<;P z3ApgIBQ6!VDQ*Em%E$&j3njFF$9YFUrXh~-%Ijikt#D$$3nN6Mv|mxP<*9bT3UDsq z_`J!6Q@yZbVC&Qw2_PdNLfmyc?36(=dKf#Vbl{4Jru1Y~-F7)2Ici9Kr*RKb3YUGR z3~X>{=rin%;1(ywqj=Wa={T!>$WLigTlfO*{fEQt4b!LuoYtca1ZLW-D2`BpbCJlV zWN17zxSj~PXTwv=dmc)bpWqWi;0?o~$qqn7M<|9{aTe*&@*c&zhyo8zvT!D}Ghmuk zvIcUWamu{%3wiZA*EDP#p>~lR!O&()t>d9s_m5r1R(aL5g3-tmVA6m@RCG*%Z=|T7 z+@Op>E8D;+49%_tBzr_TfsZ_)ENw+f8sJ?QWH~5=2}wKXkn=??()3W9UL9dS>ZrB|t>0ElLVZdq@yOQYkKeywSWEmPRYp?$S3b&f$ZfZhM|M;%90Lkz z+7bRozLx>do7?rJH1Dd%eiBT0W=NqpKg?ZC;{5Yuz>nu_&Gp%Y7MiVgmE6uVE=X>% z)mv9%c%RLBbbDk<#alcv@HPE$WkKu#XQ&jvS>oTM9Fjy7vmz6|>o-zc+5UmQZ5Ql5m?jW|6>M*q1 z-qluA=4$5oo*Du{avUhz?VZCY+-AfDhPqS}S?zS4NPK3ol33SeaY5EoBR6ZrivT?T z;V~Cx_h9Bv15;;}kg^($n&-VztgW%^vwxP%gNe|$<{clO-UyD<#6;T1jXz#jZC4B2 zqCeeo`vyP5ktGQ%H%2i+l3&hT^+6Pf=Q$*Lgu6+X%P`sd46I}z!)~flV{ui&8;FHh z;Jrs(tLD9_Lst5w#6POp;9uQQ3^R5HJTwN6%{AkcAb+_mX_`f!;ZfhgZ*<^>miTn| zK4=)fcw>#o!nqEju1Smh-aY;Pg`zYA=!0iFhk@ZU6#7_ZJ!Sh&;IKB+$CCA6T-S2@ zQ5Lrq^bZ?eJD~z>cF*+Foa1ZeFWPzYK$#^n`n%{)xnrizLI33MCWT(i$b;G~>Y5PQ#tf^hJia!Sc;WtTGfqNF?K^(&(>lPnRF=!^Oew>P z5~7*TELNiW?5mnKP(5GncLPt6dyaDeSJQi-G04aLu%g!J*^6f{J7B9gFVgCnSv)NK z%yjKOwUZGc7K-&sPVk-dA-El$l}LH3|Beq;bPIh*01{|E>Fv|=x{JPf(Yyd)&Mw2q zu&?-e3-j}Iy6=5F@&(i8fjkXT0})A}tsBRT#YsxFshdBM5F=2!HE}LwyE4!~;hSZj z{mA3CMoXFC$$%L4OL3=5{kw3M`et-VxjG`w1NqN+$*qY?qra0ebV8xe*uVrO&9zgR z+nE88eiG*@ayKg4QVifmuBPNv1bsVf)~d2T88oYC0E3_H+f|YhI4nJ<5S!xSXsG+5 zjKbq4*)~2Xul0ELV6nEAjiNEk?Y1{0_L8#NMeFs2roTZN4fTgtmdmoE)7IXfi{0JK zxP9N())1^L=W(73APuSllEsT-`??uDFMBmjP&eHkUw`EN>Yt(NQQdFbELb}E(|`7! zYZ%8cRP4x9BG(~ldc!nE$?jChyp>~6-S496aA3&Bimn&}( zTjWhA{dw-)c0OzsT1ydrwz$E7D(*3`86RRi_^(ohO4e%^3;j3z$aQ2q%B;f1cLeXO z>>hr8mx=b6mBo?-q=V?KBwB&unI9jGDu^$mj>V7!(Y?kw7OCg_@vMq5S+ znA;@6vFm#q& z<2Zam0`AMin9v=fxLwku#<6SbIeYw2^7|&Ft;H`XpEA+y4PrCACwxifW5L4+^C4~A zI%+<70zF955-&7Ls>qO;tz;Sx%&pzt?SFrTJe9*^mifp&&5YXzrQjfns4E2Qm|9|5 zaCgoIHOC$ndFKCHwtZalO#F{?=|Z*SEO%Le;B-L)8s5^=*~So0AhE`ztGx$L{^F36 z@Iqgp()OH@Ox)6T(wnnh_w>1Bi8)HA*>9GpxOacg{(z4Z4!xC#Q!Af{f9U}x4$hL% z)`t2dpqE-5kgqVP^Hqha$}BGarh?6=qL|dEztOE(TGbSE=Y7&gyS<%c$SKi^A3M_l z_1<5sZ=IgCiQU=Zb)HB)V6e2Zdx#=NN=8UB@G1e4@q#qFMC~F--{jEpb0V=->f&!0 zlQ0Y5Mq@ZcF&$-q7kI@wdnyYYLufhkqfR8zYgv5OF6`NtQnk?Fo0H$rT%+?dF^Txj z#9L!KzMIOVo4)$~pdZdbTq;#|2B2AzFSu`3Y2xbSD;d|kCAa&=9+MB#3Pz%xOi9*t z<}s=%jXF=j;)&1Il94?7nzcDLw!;(Kt*ne_k#bjj^=kH$ov$Fztv^!R!;H-Kah*6b zQkIq_K+Oc;n#ZYvXVz6`j@5hUwGtv}uR6(%`=8D`;i!h)8c?Obt1 zoNPO5p#YDG;o?50?;de1#xn0T!u0LwPaI%^Jo?zqiKqSaHE(+6i_ESc+#INt*Lg=C zO#dvu=3TVhD*foj16U@o1|#{7vA6Exu+p-YLQDK@b=rSvU&tO7n431FyPVh!xgNF5 zbUc0_2YjeyTU+0x?RHV~+&QbU=h?g#eUk^L?7>>!e1buxX@8lQj_^3wakLn!$J=sg z==YTEoQ(6F`ux6tXU44NsHpW*3!uTnoVPS>?dz&B54@k*jwhKsP<^^nQk{&w6Ks8&AR`6Q1FrQEfQ!l zwz3-6$Z6{x(L2736x+-KG0m6*)R=Oc7=>s5blWC5<3v1GO|vf!)-m0^f*S#RCPkVo zIF_1|@Bjjn;-S;-p>ZM}i?=eb$h&6~Ui7)aSSXj8JnZ0_hc5x%!x@WoWN z`JDd!1fp9YJE!Qeow@zE=d#8G|4iwg>9b%jE2q=d!jDJ34{uOnPjCef&M(g$-pe?E zVK6@b&3d7Fe6s4K@{2eSuO_)({(=~AK*h4 zn5Lmy>#ddrCtNfPYXFH#aI8mj!*heE!fG5_QbjNCy!8S}D;Ro=DKLK&N8(~Kn!bs9 zK0eQfFaHZBfHs#B{K)zP^BiUf#~Xn(f2$tit`H{D2dNu3G%CUO2Wj5kM>NvOF%$_x8XsEzJsfWB z7iE4Sv+;e{FB%%Lfl(fkWBw|2~aM(!Ui z_&o<6q)odQI?=4|pu(WgB-)?+2tpuKtH`c@ihvn{wlR!M;k3RC8*8j+619|)Q8P*t zY?GYXk%HnZKAy>AvmY!(bVvvXX;v99k&Qn|10j>`_;cEK3xDh~e2PXNAFNY+9xH0+ zlH0dqWs*i_R4e17UN}_UmK~-3fmb&p`4lpJ|4Gn)Vu(R0N~daE^JzW$HF8n`E9TuL z#-Cfae3wpa;LY^g%)dfAq*U`ymoNq=ym4M^vhBz*Pq#<_fR zd&q@jtgk3ARY(oM%E36TikNZA&cP8QmRYv&f?qIeNf^u8Sd}YP-;i%!Rm9|zGL(i3 znA%fBAHr9hcO$_eJ># zimwMI9ShG6h;J-bb<87s<`P$EOsgps!kK#cWIz%(zy6je`65-K{|;+k(_l zgy4oZ{f(J@Kw1y9Y(iD<-Q62be61=B8}|T|@COFMphpdI#zO}5>=|qIw?~Z~97X}q z7&w;xBVp~@P6UTEPch`&QtgFJD(QgCCivl-dekF?w?w;n#X^UzZw07@;3epkson_J5i5@1DJjNbJz7<6FIzE9p{accqDq|oijY$%qd1r zgA;!bZI-$^b7=oPmnSSAdj8S-b~Dh_{l-eOIWcM@4_1*b!QGlY;^^=ljI%mzW+2a| zsLZK3F#N9O83F3|JWx+);H8a<76!CPi%hjzG!7<}lu8|4@712ZcriJPlh3)&s)DTe z1nec$Sk0bBDcQOt`=Q~m=biBFDT@STXbx}+>4r)0+1<8(T%`=gar%MB}q0*Z(%nChX zC1Z4%t5NPJZb`+8!C~E@idczqI7T&@Nql`PFPvi6vQN`|+^{tICX#389o%%ZO$kkW zT)tdwF^x?NsQlrG>N_|N4i)eEDfMow4$KlF%WEFZ`4g@AQ5ZEm>WBH)CdDq)3}OHq z>9-P-(-)dVFazk7voFFChqFTifD+W05HYavm$KgBeo>af%V`jgbH39G?|t776qR6p zQ4DGNYL&PrnGL?$E59=7J;}&H^k*097bmhx>YOCA6Kvst_Cp{8%W)X&{t6?1oFc@2 zzxqlWs~)164!v0zg4%V9AP>Q{o-k+=5nV(@2_?1~dWaZ!{6i!jjiGn88e_cO z?%8@gX;ozA-6M}n7TP~)-9D#R-I@VDt||B^@AJ5{HY`J%F&#^q6|KJ_MK%&kijGYs5H?MH~ZNWQ=DE$c4FzwVAV?s_gS z_?|A@pSh~zp>*HtHN!oz3`mUgljtPL^%lvN5UIdV`;M> zDsMk&MTh%3>w<84g0YfXnLD(+;PKx4MyY;2f)n6#=Zwxu13u-pWW~7P)ca-uP#@gZ zT@q#zz5gi(8Az-xoF{`}-svz1D?hiNOkC{;v^xlNVZktArh1PEUgfN;SXbOUkigRZ z{Sg1g6!)FAnWo740pfq1aA?_8g00=`a10J`n$bAV)k(P{UB96idmt~2Vk*?x0ejc< zs}TN8BQ;b5;n$|lktCJY5nhR+-1WpGxvsa#_VrPM9+Cc$XAux=;ghk&o|jt5jciBW zBF9JO3(=yQnWz57+YNi;Fxce%5i^tqf^wRwQcd@WJb{P2m}>|k7-T^0Edmi9;qrz= zg|15YF{z(U`~D1A-@o3&b8;B->lTT|+Ei{b_lTIc4%vm{@7Bt*VL8lf*M9!G_MqfD za^d=sWp4Lh=KKdTx`fAx6g;fYyOQ&|E(Fc}$9aP>7Mf%pG(g zTy>Z;&I^e!jmz-vCEXe6BQ~=C=F2?Zc%`z%M}e>@MFfx8W^`@F(E_x$!C?|i3&Y^>cTo70d-o7;ziL!5s3 zw@aS95GD5i%L42Uj`su&soHlkxdK%~h=h9B0!8yQkd-!m9?!)uczDy2@D{b}NZuGX z{oi`J+v_B2cK2%RS4uj8xnLBQ`Iunj30|wnYsK^LAo<7@W8@qUDV#vOGxuahG7ln8 zw%4O=T^kCrmqSC*-?*V&-}w%s#kRJ{>(qA8M*nFNm;NE?h zsmx#%!Cd}EsQPR7x2A!Nfr_5qr#PCgY?D*@_FaaXMh)fe5svxr82O42tu0taq<^TS zAGSWZGZg-ar~&l2d(r&I;)WCgCF?Z|)7#n^e*E_BV#zczB!1iQ^+9t1@x5qPvTssV zp0}NJ)L(ytVI6uQFR77Klov@=SGqbh{f#&TKbJpH`q#?0O%XfTdF2&-$j>pDFI z8ouPtEoPz!#TG~8bDHf++Pv2nHqO-jJ(=Uo4hjU`chmUdIsif0i{>A-UUTN*9F?3ZU(Ta^2Z1Gyg3q?2S&ze~t&PLG0e^dUq~u?& zX~?QQ|FaAI=tR;#Fw)?$?_(PO`A%Bl_dl3?N0SFH^D_W(<*0rOzW?+z4q3(m;&8EMCKd$CUVe#0nK?~ZNwNZo7WBm5`FR>BP zzd;`O9dAO;o$aJft9Nr=w0!?3Go+>_Erqktp-MYsM%I^jk6PqFV`eWb1?jVOfjZC_ zlU8aWI0xAKA8*`8*VrG|3D$6p63sP_BYOE}QWFS8?wYI^r|BE{M98dfewK3FCA|KY zjAqFH^OEm%pdDKC?ue2%{N#S4v*EA3l1^(wYVgCDz!UshL8)T<|!Ch-B8`*42R+qj&Jh!cXNY!O#FU;hSi^xs#I`w18>bousKCJTiSj^*yj^G7?di9TJ=3q5^ z%Ph*;Li0${r?kZGbjOM1W@kdr?U^}hF8{ciGj<#!Sf4(ZjNO10<)Z_pVAoh+9r%sm z>6myZFCqla>6wHW{!JzZp&9=b+Ir35BwO6lJRGQkAdSWhb-pS;4A8d(lp7{e%W*xa zj`Kf$vG~`~wEJ}W^az6kZ~JvVNj%&hQ~s^&l(K84q&s>)N0;mc=Io{2Ot7W2Xc6Mgacr&=)l_`VQC61QNQ_%|pGZ|%G|67aE+Wjg^DQkL_>8jk# z$!Db&*AH~hoTqdc*BrH0GYtQMMPK!_7G;Kq84+I4J;#RwvnMX< zK`IiVEz`0yi+V(D5rdn)-qOsSM{K7|_m$`8k85#0x;tsl{o@r?%veSVV9B2#TLhbh z8jCIl6Z>9+1qV5!5=O$1UlZ1eu|6bYnWL+ub{N;dpZC17P39tujjB^uBF+0U?Nks8 zl-$MDs+F}AVR$Pi}Def8w zP)c!kElzPL?(T&`ad(#@!C{{FoB95kjoHg4ITD`S_gdF=p3k39Y{OqrkbZ*Jxh7C< z_kPmTgiw$cHtE!RCm*8j^O&#ecNHynKEO<}c6YZ^p8!)8`0MU&#yi8(D!hXl@7Owu z{xy(LI0xeM@!vWbZiWC}gwv)#RjIuQi=B5LayG69*1|?Yku@MQ=GFnX(9xO0!CsL^fY zxfzZ1IH|>iphPECOwY&myUGZ;5gqW*!M?Oyl#MpQ%RrMDAksD545>=bR5`AjU{GR< zH-e;WwzvV7ACoZEbFE_0h*Zp~xrO%=7XQ#Z6wXr{82Gi^Pw zyvd+6N#JW^{)vn_`(s5+-~Ll^*b0A|^S#86#{tlzIXY@CBAAMCwEXTobMc0+4aJM$ zoWg|5tHUNFCPZxT?*3}RXJBtLO*6*u8}E$4)oUx6cZk8{aR4oFd3nIE)n!`wCFz9r zDdQ!E?%Xjj=|Zjd{`x2+98O`tnfN09%I98f`qlS@E+7PKAO9Zc&M7BdTl6pV;h;TN zze!rJ-fogiGQei5F5+0k`!)Ed)<#B$wWewYhW6Kqh~4lqFa)3PpvFgxzbDgNv@NRYw|fm`($d}@z$j31{LCT zV*LxOk4}M7u5GBXl|&Ea2_3Tm9oan`%dU~fZlnugH`m8AD__jXQSnlBQ26a{s6T8$ ztJqlh-z zkF264XfvsYvuf&PU51DXQmTM!Ay7Ba3y@{!H$8mm^tp8z&xZzJx$szfNU%BtZ2DlU zzz}=St%aQ^c|B1+S|d+15j8}@zD>aQMgPo|e0a0*77-siHqoD{uxCC`VqlT+iA!~! zG{xYg>n#{3JM2mDu>ZTL_ALDaPq(#E%hwFUxUn|k&)-qL9-j3Oj@daeg{nbGEFn@e zM))vSt$)1?i2QxgQ$2yC56@rDN>m6cLHTf=8E?&fYc>Du(&YGXqYP0`^N>KFMUZTW z0gt%zgRGbF)Lztuay-|9^g2swFsZ8}k-xkUP zE`bhOPKT07{6V$cfNOEx8&i<|?K9G#x9lA0B$Q@eif63jlV&QT_m7zGe~br4L1>54 zT6ML1ELu&BooY+jBcrRi>M9|6R2;_ItP@SJs1`mj6~g5&({43B{sm)nEgljw^FDwe zb)Q}X4*TNS^$tNmnA7i5XWxuq9(VNb#&)>_(I8Qdl3$5gSvEnx#BlTPMUIc!GB2WZ zPQF-a7d3Mn%JAC;*Kp?m;}+!dtO0=wn?k&qpv}!;+12OKkKeFB9A^+7{C$OHG5Pva{hkt1NKcU;4Vx;P6 z9P!6$k>}g33KU&k-PEti4yKY*{@JQ=lv?@-FT!*ty&qogCIZrNHsr~%JAD2h~yLL^p+u(Gzx^@LBl~EeeYlODlqg5Mj|RM4u?BCq5c*Ek+L!2$IAY+ zng)p&dG90zqQ3h+*g{?>cV-7 zEjU8F;S%czr~5I7>|Qsc`{Sp9Vl5k5rC4kP12tnVPFyViJvcHpg>lf(HR=v^(gB4a zO`dD*ooD4cfVN?@m(8k3D@Gs!7}2myW(nBds1Y=Zf`_zV!JKgQ@`wHIKF1#n#Nu=$7%k&EP(j>$q&$y?*bX-&S|2q zDL&hel1`B``l`nMcZHe2l;i^7%a0TelG6tJ-XtefwyHdfIOnk$*U1)%oJ+VETw!&+ zxl`_0Zl3z6#~h3!-WJupX~>pqG)(|g4B{3d3#w5=ifTqgpKAQXe=z$axE#3886S7F zuHmw5qjtsPREAbwc!o$dQ8SEzp$Mt+^a|NuU9#E1qyK$;I~9$qUwC&Bu>~ZGa$Hp= z8C}nUIamcEuI0w&Tar_0FP1g6tw5=R2GDxU;{^?sMMv>`+F(Cho9iz&`fa*KelJi# z)*s?(L83OmE#MXkf9nd8-Y}0pqSbeJfM1O9&dHx~7+MS*RgKo{WdVU?cWx8xRU&&N z6tns@D%Z$N;GPBvJ9hTKNn;u63Q`CArg2+_gGxcM?ZORVyo7U%d_msU&kIzWaDX{$ zVd!3e3=FV#$;fqtkJf{Cf}FRuOI5|Hc?ok%p3jSqC-z0}14aLVv-EuD?=?;0!YuCR z1^agqCf`_L*!2^(*1w4qq0L2l44^7NfU50F6X4={=XoCEw1K`O$|4x8-_cUf4Bt&T zU*HV!V51a+IJ3$2fi~Rt4uTQH_0XFFHFHb5Fxgl`8&M%9vA#(4}b;R#`iPFb;$oG2TVq-t+*;h9=-86yU-uQyv4vDicl;euQ zN$&^v?j^iLAf4Te{{p`(5LGwt`z})!!2|0D{qDMoZiUNjVsLO^nK%VD{5jADa*;2Z zBGj4I8+RlaLKMjSnxBH$;+QA)^dD|z%dPEHmM>YC<6mOh4B(n?#>a51Nr<@OAl9lT zkv--EeoPtOHo zHOPsx$e1wM+-ASGH3kVSP#I40`Mp2pzEA}{_Cja={vDe9A+>Y<)_i+lS|vd^+g~4B z{KfC!FxY>~v06MA@F{+C<>Br*{kNtDW2eCF;;S^p*43E3QHYzExYuDy7*%0Hig%S{ zagw^%%nBDeVscA=-b9b*`ix9vPMh{3KxH&xDOSShOEDqi8i=l!(8B*Fe-!|#lkj{k zaBn>UmQ*ft6^$r!Ru=NE#VRgiGDI>`E7IFKo%c!0f;RCMW*X-hn_cJ2k>1LM^Fckm zsh+bY1nW_I+PUl=Jr~A6Ynt+sqV6?h)pp5#=Qq#=@u6;bm1j%J;qly!s1#l~}>cz0ny}5mWSu?R%3X^ylMgIX?GOyH|B- z!6hC8-H;4dcyCoZ!<_hq{5G!~xm&D3z-E}Fiz`xJh5%yN+VDWSS&j;Z4r$W1(R?5(K^zyq*K@rs?!)rCr24!LH6&sYJ5_WS*PSfk(^!?l!g#Pe z;N0A7-BA53(o+w=_54koc{lH9V2xiNHE&>-h{H5S{#FN=t~j*=J4wm^etRs&uF^GB zd6E52Zy(lnCMHBv$mx#&PY&nn_1@tk6Pfynusucxxj%FvpU$}4O7tFLo-T7x-unPz zcj?zn=|JhwPV{rEfEgffOE;R zf85#~rK?4b#tUtR!guGRoI3(#^CZ>NbH)Mf*Giwk@3x~wBfcEsZ)I%aw8BM>qh6Pp zbey;Qbub64HL30L@eWg+H4pZQpXfGVhs<-VrPqX#i~0OA0RE0g^Wj${%587`_!zDF z+H0tskx%~aZsOOSR?K79yf>@uYltBco+a=y!=%#E9&va$-kP-%72ew0Poq0DR~5B> zqdJ>=Bno?NV)oJ%(_i!roxGkD(^_;_0mG~b{q4a6sasmjK!21M$1x}Ob^B5`f45_| z*kG11F{3S^@p!S$t%^SGpr<1o+m7dwD(Jf~W2E)_XMiR+$&=K>%$K=9$TJ0Y~!Ux?B zreu7s59yC)HHVLJQicxeBP@<)}P$9!r7dArti57KW?EJ(a2X;4`84JgWVTK*$`@W-(g z+CuKO4zBR8+a`+x8Yhp~0O5sqhywG7;iKek_G~l%`V#eEqJi$k)=>Rc=ZS2mWtnt~ zoi_7Ab5vZjYeWaZ@G#*p^CI2ouH|rUMMhyRoyMx)CA;9(7*9bu@qR#wy{HRWn*U(d zRIv_@-UBe*%3(|Rw|By!jEikf`Y+r%+w0RJKRh8)DQ@-CJ9(%^)Ufl8ugR;;G zbqzd;)TeI|#~pLC>H`lPs$}m>Qrpf)co?XN$w+>uJ&gnUv%0YU7sw|EhrngtC;tWW zDvC(T-WTe|`3CbDLU3+f^`{EW@-g1?4R{C^imvy3cV}{;Vv1Le$>VVGP+u5PJ;Ljs z*&b({14WjN_y=OKk2~n*IbV)Q^>ELnv*RxKwZb|jSJ{p<7x)$TkaI4! zfm1o`R6I|OPg65h5MBIbpq^$efO)F0N`4}cU6rhhBBRiiDWE>yXEW!`wABG`xe6ce zobb(L)hf~OFg{6}ef3<;ne0w7BFuh~EBku5=-qr7wplM6&M4KRJ1C#@nhviNah1LCJONPJ&byf@P0!@9( z&hz{=mWgs8#&kY>9%ttP38-2mo`25629LcqT>Vu#JR~|+j36L-2E6ZO$5dh!JSDux zCaxIR(Y($#dLu!b?6=Qp<0jy?hX;(J5uPff>M3TO7s+TrpUfKZpTVX}RTE*E=a%^c zU#iG<4$qGxr)TDcO$ocgtAEs~&0QYX*Sp7Okc}JF1OyxREGmUm#j^O#Si#m)S}wY4 zFh)Gjoe7Dn4!NJ0a~J7Z{Y0qd`kpCnte<;r1%ICL9`XC^ya0}tj5F=eZN`{;B#)5B z!mEmaqF1+#T^|}(JU(4ck?)n5FNd0nYe*J`CM9=uY9ORD@%dbR_U`&nZI0>gj#XPz zJEF-Ph9QDiV77(AL_}Ed$9n36m^0a%Io4lcQiNolni$wqgu5ThKyQc&64s7n$0Yl8 z-pIWvl{oR@quN#sR%kvcO~e&w;;1fpZ{yb`ghlO)#eE$()T4s^6k2*`+T5=;O2{+_ z4dk)3uxb#R4|%8y)ErkP4_bVGN-!HDb%IE~;M4O+8-T15vf+#_K0Z1c*CHK)y0&b) zhW=ivN`SRo7ash0k<$4tfPq*>#`GZ;rZnDNSimJe67?CKhVD&`00J8+_7zEN9>k=O z`d0~J#;TF~u;!~+OwL~)C6gt-9iqkhtb35t1y0C-X?kNSU8N-OOc%Slw%5Wh=s|x` zs%f!4%L!Dd#`1Wmw@{8@X_b_Tz!B1`bvZ)qJ2hA*#+^f^<-Hce3Q>cc^BM-cOlm@ zmS8&y-D=y8V`z|=E~nbM$_Y-p`FLygCrc$0g3mNvO0!{A8&r6jW--yhV3av+;?6#u zr$M5E4~NJ}WM#HXNaXng;i|-*s{WzIUHoiSI@s#(j2?bTl;IDH1~?w(#VSdj3P@P>akO$H z394cwezzlj+#I{pGw*(69Ldu~r&B$#U;eI3h^6@9*|yhsLu1Bw1|Z(A_7^m`0SoZ2 zfTts4m%nOqX*^q%w6a6Sz&dvLAK}alN|7l)%Q=FZ5+8DR2&i1-vOpmL)57KP`C;^p z@3AR$QWw4OYr^3)Jd;siENxhFk)g2pZy@TTdmxJYv>;(o{xD9CGH%6VNx7hiA(avN zopjecDD9ZXF7;T%uL<*DNhdm;TgFNRo(eV*B160PgB=Ew|1$@o5GL(?lHm$8kl5G{ z@on#m*uF#jkuNP8<$!l;s6ZzR7i)!3gPxFe`-o!jY`teT`==hS=Uh&DaTK-eE0lyU zm3WNzP3Ury11HaVLTXL!Tu5Bu3vrv$FC2o`nhTYRDb$r|uy!Xg<6ocSycwv^>Ap{% zK0KXSmPrP0p8_fP)|`OVE)>|j*@HKZV`DFTS>xGjH%)!ICV#uX`^oLeOeZ$jl2LDv zfUb~2)T8`yBT<76aXx$^8Q~q0JaQy@#%t?Q@du^Z%1?|-SzdV)>BCk2|1g@5dN6iQ zt#f!|*D*NTKK^d75OzP*Txe+0)pndW=^E->fO_(%8v9)*k!@EzME3+6NR0RSF$7wQ z$ydSAGO4kDmU3-r0`vrkp+qs%L}3=ymH?(i&@_!5NM71S8mE!~~_YfV!! z)<@L*F*?NXf3pC{iQrhKFKy_JQnD}>KQ7yQ=^U^aNHQ|$`T)9+Q=>M-qax>?v+Fba zU9ocB5bA#%kVsVs`mh@+Iu4mMDM#Ov*zp++v6i`bgXM&^5)>JAJ2+s8Y_{2iapwvxoGKASdcZd zn_yBqT65muRZK@qmw=DQwqUgmhY8J-sa*Beyuq3`ghH}--uBO*raHWdv1OV7pzv|x2~JSfPUussL9pp! zf*@yp@U*MbKT@*f9;uhU2A5>WK_SQ60PbL{G52zBf`2c@KTCM@84-eV)=CQ(jZ%md zUk4#}K3WaG(jYgF5ryNLeTu_c>b-QVPihl(wNm^M-`7uM=oXjhy_*(z_FLo*?%NLL z9($x(wLSrOR5ibsN%Q_*&;dA2j=!_n ztyMB!dt^86OaAOC3Fe#Ai%6hj2T^E@8zdk=(6rhl$^0wT%#&BjgIzB`mh?!2>V z(KNSNy;{VJXi#wI37Vmp=Se+xc|btg{na!8nj>3*f8|Yw;S8P%>sy34H*F5gqxjLl zaUPl7Mv|8L(!PpSxboC6ZAKG-w|w8&TT}Uzgc&|RoitjG1mnmaiq??8vCLi50v-iM zPvfk49hL>aUMl&zIJPfkXPqf{h>#J}6k`s>?{c3id~Z%KTAjBnuFf~qjf^?nm6f@D zdr>t0dJIx{zH8`ERwOXcZ8QyDzWb|j(ZyPoYJ0Qns=DCV`Bc#O{ubXk<8arCl{oYdbA22cwi_55*2a9pQ@v?N9N^u?^pKhkwtfH1*W(Ag6gMf0)P5?ciD7J;MAK}$8kl}TzgKtl){v6dT&;JRT)&X z?aXG2$$d)5TOUs2104y3gxL*S{yG$6Kj8$#Za(@6LKok8+x{lkm~;Vl{f@#` zqPDI9?5nSK20xR3a~~AOn)4++?eb35MXudDK8}!bWhfBe9q}BPx$CB!^30?vwq~+8 z_AMSri~WXOWR~wmd0bk>^z}()+|vHJUBEH{&93th_OWQwEY_$5 z`}?#1!nyxvB=bKnUewTVZ*q0Hab-FrH+>06?-I!Pw28gcYam0?4kO=?P$NZLbtti* zENx81h7Dk|J5oVkcdQJ|cdQ)ZGOldHp{_g540@nuK?Rc^te!fqp{_2AqXYi|R#@IO zPpC!tk-20K8Q<)n{QKm>Z^|EgB;E0;DJ^q&l*QksB~`vyp#Tj`j;0IWIIXn^w?iFT!G3pj^<|HCL}Mfg-9^^~wr3heA1s^XXhTFp z$*R}To2*R##nRe%;^WTdsFgh(?rWSm`9_W`%rU$sbIF<^_i5FnfX6K==BV9jM3n^m z=r-y5=y|&9ajk*XH^#!8Zr$W@LWky;dQz%yYi6pxmw7FgsQHd$1w7XU;>zxf8Hu~M zEIUtNF-QFi*vt!hG;6+WfLO+~H}c+VMHBJPYF{ zFeb#U(OvHJfr`}Kss_eBFMk-ds+*feJF3Kxe=lMQ2RXhM=DeYcf(elRE=L{O^iO}Nk7@ai|{sI;k0K1D2$ zoY-})gXX{9jBglLgyyaF!?M+ZK()b#@Jmb`dY0nsdZC-(*PxOM{@d4|PS9*AL6)Ho zG>p!n>Q{N(`(*C`JDHGuGoP zxs?q#LFOg&Z1E!fRR`E5B*la$rNd8kJCLzxBw+%jdg{orNex^0Y7z#uaQ@bFskrK4 z2yNHXFonlJ?c=B8v)Bv!9jF@kHb%Sa!p&vY@wIj4&|Qf=*64zh>1^8>I zA!q7h8dFDu^K6-;V~Qe~vVj~Q;O!~LO_KZJf$ zx6i)XZh41Liy?M1*mUOajDn11R5L?md^C7JQHxkEa(oE+rOz~vS%6Wv)m;YblZXHU zQa$L?-Kk?Q#F_l~5Z~09^;gt02;14jRZz+<6ISB)ku(JMhE}IOsDv5lG(!}-W7U8? zQD#?3r|o1+Fu_D+AX82{9$OdMCJ3P<3Y1B~^!HGD4C}%L9DPM8!0#73ri+r>oNb_sH46h5Q-E|Uo6CB9> zUvIaHGSKQaBzYkzkf3Kb`1R%(khF;Ag3z5}MUGS!;n8b^L^>Pue2ePdpoGjmXJDyE z3L)97ZLHgTTq&iwpdM={rmYSCxo;LTCvo{IR7hAN_HW~2iv$N=>;}`vN<#_^>jiAk z(v22{48vK+Wy4tdQyM0Tkfzw(XR8bxd;4Z2>c6skrp#y%hqYI29$M{YB9BofuOM1v zLB!w6N%!{{x*VQ~uq@6yZ=l&>%A`VBD(pZg7z-nGeVmz#!ToY)KD4F(+ z74r#~oYvvYTMv-kn0*t|#F@MSeIUUq)z&o?ILD`iO!NmXY8FO#E&OmT4WuN>W-lT~p`=>|?Y9Q+N)GmxoH!)&v}?R(t%xfYZ+^ERQms#0Z*Y?P_?_Z|=N#V3;Tk zgqMtXn(7@24gDT_=dW2#WexjXKj4p8<*F4?BU!)S{=UDrVPZ_t2%(8m&3$+;;2a?d z%8hPd6a3{LA?kCB$$g8gQX%!vXBo|;KhGsY^A=sn&mTe~g|%?s%xw;u*=m#~=5s;) zjEKClQpSdskuKgVpf(uw-Bq%@XtFMFQAt>P<3&aH@h+j_^(18;`+ltF zrlke#*;*>)P*v4pN}c8pjNew1b-{a|S?5^0a$cf?rOGV`schd}k~F`a9Ty<8*bta>c!|3oHEq2`1@z|UYlzPUT=x8eS6JC?Fz~D*6+oZA z$@{Y0gs?b&+nLD5_}E|`_F#_WpWw%=roN3O;L7fS*~IqTuBt=$Jgk3-Z0P>7x!jdT z_gjwJ_Gb;V4CwPx%6ohGeo;|wPuaVS%etyblm?Uxe2DlCW#-a?uTbLa44%xYv`a77 zI-(}KK>}>?N2fRc82?`i%Co0D4E>M9uTy}N#D`d<&M|C9SM~oOP~3nii#iK5Ug86$ z5FT7WcWbLDe*o3l~E;~ys`w{Mk1XwRpxvApWwQ6@`qQfctm08 zej=d0o)2x$4{I+ReqHiQz**Z8aP_0KpebiBydt z@U0AtvN5VaI&l(|cOFOk^vBD}1f|1DO6wr!t7g1}AvFr?wz2iE@ANr?onM;xnKevb2it-P*hbUp!?h%WT=e!BCBp}^K-8XW*rqCgE9s~MdA zl<~3~NiehOb1q5JMY`bU>V4OXv-4|O#nzRi`rI(!Uj*o*#O7Ot{_+G=;-yhwx0#WY zC_fiXu@ki9m=b<$=Y3o=xU63oOB>$|6&e@$!Rogor{0XCJ|<*J@m9x~%Tz+{iXsSe zL*pDTt|21e;gg`n)#rm~hr3rfdbC5s->AR+AP?KV6;wcvPD|412C0Gl;kE*G82c_1e;jSUY~fWd5)K0W6|CUXi!K%1T-=nIV5_FuU+ zf49TGxAn+^;pATz)k84vOmxu+`c?YrSIlh#QEH2};MN1EeP6vV0_hh9VV|8|1au36 zKHv{ut)iJ^fn2{M+9DX5M1o4^izylyy*Wcl&2#c#tmuvAID}}M#qgnw_$sz$dz)NG2c}(@C;ifblXO#S%61E5msV? zE=;^ck=e z%n0Rqbn$>JTwbJWi839Z!!Cj^Q#oMr^>;y93SKaz+Ney?@N3 zn&1KjWj9@_G+!^f?gY*mCEznCyHqh5=9lCA&p74?fvo>Be=bsRIW++E+1bSIiQ;}x zY&j+TSjiaqKM`kZT00I`nE>3Z#^^o%Lgb6ge{aJAbw`~iZ9*{r9do2{i_J3grFDq+#Xgyq#yZSg*ti`m-0Ku}HL za?0EDWuTvRdJA82Y$WXt1!l>jB*rSyZE*7*4vCK)52*ZRNE0Hrx!W~2Est&IF$7GJ zSyv0L1Ev0$wp=xP;+KFK1qiY*_-6S(1BiJ*dP;sZbzyv*ibv$h%+9-)$w|Z>-`(z$ z#?yyPWJt%@g3fGmIY|i5`ie85clBR}&dhbO#q*eH!oW2Otep*Avgba`4OYS<0QPnu z$2kM99|ruULFERWM*gk`g+)vwymJP$Kq1C$X<_g9J4L_j_8wU-gNbr0Fb9TmqvU`M zR~>|37T2rhHD)`r!}8!Ll^OvFFIFmB=!4aJ&I}u#c+Wg*oOXO()p1WpIsPn9t)Bd7 zZob)W@nnAGd)&wQ7^gah>`?$CY9}elWs*Jxpumd(89{EJtNmGSv_Nq|-yEOA(l{4d zqsy+slo4x;*Fyj{YBzFe+4YYMgZ~xqfw}BF-HiU{geNj^3QY4ArtDMxEqKf&xYLDL z$i^slf7<5y=x3TENMu&Vp7T(cV#F;mnSZk&=h6MU5J0{}j}acl@C0ILj~YGiq^JXA zoKTf)He>TOn#J|*;GG5A%DDHtsGUqTV*d^O>lM~TUxsLbat<~|sS3&T>TbOiE8Q;p-7n z7ygUOkXzTXZ!fT89v(|Qg|OpSwHVvqM4xCs&%X0xf*Wj~EM@!)`#1Ve!C=pW9reea z;`T;bagpU{fz5$>^G<2;_AIW*vOlFnZD=&9CA><^uytfhqi85(x;W!DZG}ncdh&X1 z)M+>K#r0M?Up9*SBlac?kOCSBW-hUd$J`3bRCV6%k|hj1U;Qne%GY3QKByVo{xfI9 z(}>LQ0MvOJlRLA~{>jw{5A|qS$Zi$tYyKvTpmxZWnTsvu#ICS@e}6@YxB>Rc>7yKI zru!W;%|mdMdVTz5|J8jcyK29z^KVHjvHkW#9wV;w75+UO4D(gYq)V3Kf3gie_g8z9pWLF*C8GOtu!>3!E`OoiW zR}Qa#ie`sEO_v3W)txi&|Bo%>PxRJt)K$gXc=bt zOwy(FGwFnikrH`qSf=WDR-{i+GWi0vgQS>{x79XBOZx6b+!0}loXjcTT(5sgWkr+) z+x(!Kg#^|>15yEEK)Tc!jag+A2C zt4JnbE{F{|`aG=MYy+@_`n%JAdo^Y+zOsL6%;he#o;!Rg*!8ZVg})-?bAGTxS&>qR zJv__<*|IY1VLl;Qqy;6cN9>c+T&)Nnt)Nlz_DMt3)NWWHv!&rS$6fTbe@}_Bm&sXCc1_Sive(yW(mtwNp5andPY5gZvr=zI#8b@^?VQUwXn^ zZt>(uO)RblFcG_uKtuZX$8~}(LvKQ*JL)iEDjciEx0|hvl9U$+5tK;N7QBCeFyd?n zvuRdJ(V9yCwC#EA>@=)BFG8uD`{FJh6jEdsGu&CF#a=$AMT$G(*w`ug(LRZ@zbkvm zUV#j;^N+_;cv4x|MR`-PgF*ZY>4+ttJ&dycYBeNa8}f`lx{5v^_@Xz2pZ&SR{xf&$ zk>(ln>#P$qH+n&khHMV0>q7_a_{dmn%e}Jt=L42%&D?YtyYNj_96aQDsz%D0^;`5R z5vt|gy{yfbp~O?E!vd(01{um=izN*!5hL{v?Gwr!Eek74bR`g6Vqk$or(n(mZ&tfC zbG8VR0)dnzDu(NJ4Bx;lPjCPuyTEB4CnCuV zUrL537>eVX2-0GCRNv{o9~4LJrBLIyK&NXMh3OA-+S?%;H0(KdmxKDy*ruzMS<2`+ zIp@aWR#6XjW*)H_~C&ATe(SSj|Z72C%8NdiU=bru^Vw z$U6SY$v9Rr)%R-@(*9!9z4{Zv(pR>c4YObzE4s-SJ?R`gYZAn#!`uINH89w05uJXN&C5FNXyM)e3kLt!6uznqgb+j ztADILxB5Y10)bh= zvX19`26%g3TM!|)9;=VQTG+-i^&AtBRt2hy@YLBFI-Z`TMDbxu!g6C<`O3m3~k z#iSSj!f*LSjLNYl^sDPbDE7*GO6VinR`pvQGFFyxcYy^pc2Goe1|s6$XD4%`F;~V+ zp$fYVM0s!`FN6mv>oY{yTikjs$#Q)~LSQO!dr7=wEd{)6|6(gv(( z#gW@9T~|thnsKJ!J%}CIHBSSb*&|BLJ-t)zAdIp=h@erFoH4MhSwbwhH`tIOBF5QJ zQXTo~r_yVVdn4^ieRg~mv0*wdbH{q-+_>hjAjfYx?3n(SfdYiEvhbRXha-^255@pSx zOICic^{H5l4-zpM2Jg=zm+}!(ztVbd;4|Wir_@u_442EUZ!R6~LV!ByKTsmMRR3u? z`^q|Pv%@5&vYloK`*QAf;|Gs*M1*5Z++C)pg=;aHSEqXe4roXv_6bTpp6*^hm?p!uC*N`Bml z&nYl*i)X6K49~U(w~;mOF|cOt{XVE?etDqt~8iw^}Ct^!-(MYb@t zPmb(3MjmO8J4rg*;UwL1k{hy{MRx*P_%eZrO=4}@Pup1{6T7Js)2iZzs{wlyX~4Pr zVq>{EzHTSEcFCbtFr{4EKgaoBKerE%_lHGrCVv9fsQ~1L2k|X3E`k@5zyW>&<7klO zsD=Dm2Lsqo)I9uix!h$z3BQqo*o> zeH;j~yN(fiUesXyR!24e3($SaM^9HQcK|6e6%|x7+v{??U|FF9!jk;ebc%B_xQM~q z4M-i(A$-9Qxw-~yr=3$|pb*xfe1Ab{k>I$p20nchxt?1(cjQXzac z1pn~Z!{~fe|DatS%WplAyz%rf>OLXH8sNQ+ck{G2k)jNscU15hhDdkk{(L}3->&%N zm~^I7nHVh9)zEs{G71XG050FnRQ^l>Uh81*?TgWI{d*>G&-brMK+(!K=y&US>mvnm zoaId>VxcPBVD}yN)CWe8V_-$!$%H|KsAOZ)ERfIfg?*dUk$5ErqKAT;Hx`>}4ztOE zf*a$4-xGt0seRY+(PHfi#$Zv@oJ7mA!HtF+%e){2&B##g)udkI7HqH6&mL!XQKmf3-{1$%=kh+U0pVtZQhZh;P>BPvs@}E0bOfX=6INRNxYf08QP(Gg{ zutP|egq#3=Gw8$N=sMNC#MGF$uN2FNvyiz27zTyJ#ST+Vb%$qQFUtQ4(ePjXKa;O+&ag2Q`T|C9pyWGy`WDrxq9ykF4P6YFyH{;Qc zd2)lQL0=c6Jli=}or14Um-Q;2M~%0K`|kezw;MO{Ure6JU=$r0DQIia$4+}Uyqp0C zMmZy0T%Zg=xgu@y$e!r`Le90~rw`W=oF6DJ{+-<1W30I9sXEJ`%sWov0bH;>D~gST znz_2?$rsd@G_O(Nn-xaZxr&65bW##QuWCWtj+f_$Dd8{T)5JvPa>e=7k++uRaPX88wa3u(SMnV^~8Y6!5o6tcRlZqpteG|P-jt`rHrTMji z<3g?FZlsdm?i}zCZ;d8?v&Lq`R{ZoYX4v676c3S>@(Q4wrv^Z#y!!tQj*e16=}!38 z+LXZyLzcaFVc)27Vp+FVfNZ5jBOWa#)8z)xMNF6wDnsVlL(rbWc@PkLHIB^f=#V@h z=xVXDSnqO9pE86qPbAm61;DWM_21C+h7Hn@I{#GUXr{aC#94)Urg^{@;)jh65hctN zN%Ey~^n5jnl-@oWy#rcAf=;=1tt%etU!VK?m9H~1U@wa?1@HoM=bFb$AQyE_NO+-O zXvp21YMXyNT(A|5Z{|s0e}8mTmBEn(r?Xlst*qo5c9{^rPJFZvV7>@fVDr9wr^ zmk18-wbO^iNPx!v7J%ZD+@2+Os$$xHqAm*aIFlhtvpD_(aN1HPQr`f6#~+Ew$$*~H z(0bK1wP)#&Xe#D4;=g`@U+W0A_+%%w8n-I*VSNvwSXfxx@m{}XZr280W(DZP+9pnI z{-jDfm&%hYAitSUSQr(#{N)AzzsP#auqfMr4ReNWL_m~oq`O-hq@-c!?rsJK5D{sR zk`4g@N$KwH?(Xh}eco^P+dX#oAHRoVo_X%;zOM7M+t<-!RBpabe0nKuOf%t?DpwL3 z?@Hv=)FiCigJ*4J!d?vd_qJ8U?r6#pn>j{V)|BNXknIfZiaAF37p zaoQ%~%$n+K6A0=mczJb$HxIYGx5B3*E6tpqmwxvbG^?-ayXRrfr@p5{DV&xgX}+VU zXGAlchk$g*8$cXi+}W1(|D`BoIJ4ZC&9{y~_GVz3-Ol_dOY#`OQnzwwCH{6Kw*d)q zPHu;KL$dmP_W{kqm>`8yH;t@!CD>8y@_w5zUQG0ZR$3$_3k(amG)f$}|HTP@p{)?s zYKo~s@%d490{dP&j(DPI%r^7$u%tLkWrwcR3)VA)Cw3r6@bTjm9D@u4qv=K_%3ihp z+)=|}X*}*Z@_FutiIC9u`i&BzTZ2(mZF%G0a~wB6)D`5&X##&De0eMT|NODGstC7* zw4BDbo8lPmu{;fv?}v{ZJO>IxG}W}0P0VYfqy;-d`@+zA_AQ#YUAYrCMk~nIwZ2dq zUi89W=pT!KU?@1Q^JoxzLTD{+gOZ+c)eOyLE{44keXA#CF*yUNtUYK^>WZ^(vxw^` zv`|Pv&@#5EC3AoQV=5lPp*5LCw&t_tdrz(wQJi0@)F;JKhH{bJc^}N<_NCog)jP$Q zkEUK-wSG}fNkT5WU$5p8`T=)!hQ+uB(dNqNV!E{jtsSt0>Al!l3$B>#?KW{gN z0TD{bq^v3JSvSb1&aWHoetX4N5ZzxYOgB6dH1p{3N7m@G7SwQxM~S1FEr}GG?2j)B~ntB7P>X97WkG zGC~Qq7cI{k=ADU#`)?tETL$lgKLsx`)uC|u1o}QHSI3K^bNk;K-0ocr&VFRMJ%YZ< zp|^5gxF7uW3{JK)mB_8IwgJeu*lXYT>%p)@_x=aJo&5r{0e5kxmFW@UfW*&DS8+Ty z`F_oPyoTTN%)c)^&V_JzI^?KKy%tXCI*6DY>Tl=w-}YtMD?~uoQuS|sIEgSp?SA@L z+sGz81!0(~cjJm=&mEl0*cbsrT-s_Vt1-cJp+dXmrG$kR)v|J< zy8ZN}iBTj!hF;z~i2a&{&Qf13yIfKA9UMp>)yNI@}de#YUduhhnA4}7Y%`<<1evk^t z552S*4AlO0#{|QpKsQsMNXXB}8VnO@xM#dMF5B*o@0--Z)z`wym8+6Et|}IPAW~{< z1HG?YO#z1)yQ42tqyta6#ldxs(!nXdUP@QvnZAw$Kh#Va^+&tW9euzhzHIcTG z+RC3jSZ$&`q?W+1LGBu$-2MYb9{XjRSOdLj1s^3NU!5drWZVe!6a5wzSii>+>70ul zF8|9MoiDTFoq-ukgFVZHaTP6mMu;KajbcoIMvAPyeU%%L3bTG=dwP*vd93cE z&=Az!JWDMuopkCk_ETqSsDgtv&zxp5d9jUux1FyxNZKrP;Hyu|Nb>VS={D|9`#=$NSrB1$ItKbw)Iu` zF6%42uoE{b50zo(y*sR z%q*XS@H(LufHGWX11ayO zy66M7_eNH?(@01*AcF6N(71-u)%Mmip*{Z*zY7dO6=z>x>4hCrVmkg#Spx+1U!f#-ZW2To-!^XTZasVDR$rCA!U zkQBd!>xPMHS?rVkCe|U@qbo#;$Upe6g+098RdX^%>0cgkeXZY=rQ_rYhlJPYb%|?! z#92H#322LH+oflP)6TFs0(|Mm4>b{7vfqU6Jqc7Gw=S4o^#*+mSHB)LXc^q@pS-rZ z2K62e(M)Ut>Ul-D4ta}w3gFx-($ica{_k$pNP1Ywx}^669I(}^5kU(Jqo}8%bG~+5wp>_wBx%d%>&xKVwxl9% zkoMCd-?A;g;04atMJ225mEKoAy?o`y{;OcK%D~d-i%p(|sa3WAeYbegqEXS*q*WF= z{~DP1f*14!fb2TtuT29wqo>w|-l022S6X7*gg`p#j;t7hyu^kp!de)1 zN0i_R-@c0W$AIQdtbLRwYAl2THpCO;p&mpdjWO*0Bv9s_?avZWVa)fwDySIcni6$5 zgWqHj3GjYNYZWi60OP@`1d0oRY#nLQ1G z%k(GUCfni33m$#D1nCYDRB&(9*aUI-AZpOU#27FBc*0n$RmKxDSGXH+*M&PlqOa+s z4<|BKl!<0<@|;5@!iONb<+DR33j+`5UzT=w;LZ_35f_*^{~|g(*wRT$|6`nNX#5oQUl_I5vgLI&R4S&iHkYr z!e#z8Cw%BH==KV8v8G4*&)puC_xdpJcG99_Cc-nw3niFrND+ikqC-WeltSqUcN}3= zk~GND__?N}kd5qsWq26hPRJIHkC#0Mz<}sUU!5>(82Zx}Ks?iz_>F@goUZv#`;Ou? zb_*BVgNr>RvT>H9#?ZPo=AnX5OiYctTpwW$2aH&Wsf zbJ8#s5p8NwI6jy?T;7^(3HXM7YbyxpF0S?}h7?>#Zk59e{^o}D;G7!o<67y$&Tk<2)10TIb! z*p$2hEJd6IUFnwa<5`Z!VF@%d8S|b{4s#*2_v(C~0gcjXj4;QiTR#!%+b!K2y47DM z88F%MUK28X5biXx-Fv8e;9dFUoa#;*zf>a2Ys4cP5}-X1+^?!9g<3xKb#No^v6rJ? zp^)KZvf7+h1AwOJ)$IkUdDn9pD)JTkM6`$A=K3V%j1ob_`iue-2n5F6YEYwbDFn%cddH{vB>At zdK-ttgCa-WxuUdwZoum5=n z*Ys3hR&F%UX~%cbH{sd<%k`d?YyRjtko#cKbt<|o(PR?Rl9FLO#=FzDn>vPrs6Z?B zb>vU4^afcMIJPeE6ZAiI^}7EY-qvY&idCp~!7-T3wYkF*T4Na4GUsHrA6KyO-n}VLor2?zPS6DQHMY6ekD%HS~Pm;jNrpYv*w6 zkJD_EFI|6vV@u#P-Q3Mo&{d0%Nay-9T@?lon)%Fgh1=ZWS$_303Ty)8^2d3eft^&L zYA#&k-jCP4?z@zu(K#8Iy(-APS@T)(28k?Fa2E-T+iPLC!=9K6Uf4h-#}Mrez_woj`sJJ~ z^^%Dt5PIa#X&-gJc3KzQ!CT7SD9j|dv(#S}<-B?f-*M2mXBMcCHV>>!R7#P~-}-9iFgIgd!QuqLM~ z7W7Q2ckGKDh#m5*fcH0Bc|Aw*87MQgzTA%n2K3AaHZM(|g`Hz^zr%HRCII-e>qhBGyqRbAa9_Bd;IId<-qbM|j}nr%EC zIL-9R(SSsr_T6PfNUQ#Bu3grAd6>7nX#BvraFsyW)g`6a5|dG#qNa6@a*{>ve#36Z zcM&a+I%jD)gXelGKv4MF<>#_;1_Z6hewa6DH+Rl=_;+bX*esxe9_q7x>y}IO0L!JL z=ZHmQ1#`o;-JQ>C3#n7AX3MULE@EAapGhr0UM=ABN-AAVo=25VKYL~NJsAaWtnHzp zb@QHs&8y!d%t{`)@9~|=TPv@+Cmm(ARAH|Tcl-F?;`@xXuM=?GW<&WA8QoKdrVRgI zSKPV)jUgatG4mN*xO%UKlth2pN_5KN0-vRYznPk#M~F_`dL(h*vV=7AxzT4Z~1Mv zoZy})qkEHxBuNSGrNMsH_EiPXNIYxQ?T+ zeP5)fAo|X_5O<%mNgy^{%jgb$%O@xJ-!FNb(m`gMp9aB)iVlYF3#~`#vL=uW7LR^f zWI?xzN1!j>^>!OHucYCZnPcHiO@1G^ZSw9l;{qP2fBaTY3R$-bJZsK`U44n9 zmKxj-SO;;rGaIo>;;zzsI9H98x)%~C4_lS}68S#mwN%WMV@_~R&~So3S7+LaJo{)- z3%1G$Tw`8FXvLuTuDOyZT5mi~1`MCe5DUeu@5RvGN4cT5=8C#9(D8Jqcl+NHJ!1ootzkit1^vgSt z>wsu|2oMt?75;S8P9-`pyIuB-w=q$TlCE$^%US&Eqn72nC%^lG|7EgVsfW~as1@Ul zUthACSqHzC?5jP;uuz9Dg(J6JFN|ALi$`8svnr3*a^RgrAPt;+B9C_>=p$L0d+ic0 z<3p-dkD;zEL-fjPk@^$$L~~i+#XTjwwyzEt^u^WFKEIzA7()fTr9aYTtxt#3Q+RQz z1Ghgp=u`z7c^og2&r5Od=q~PPCWbS;a)Cs0>AX=_%wlYb+v*h!oaC~>x|((vcJQ|0 z)oqSkmcm1s>n$4il<5ys??H4Ic~Wp<1W30;|8iwr1)MGjO%MC|r80{LCWn8W@-l(Q zJr_PxH^M(f?m@i8QrxS-cj~D-c{1%JTIcoK4;KB0+H}h`R`R8}<)2g3+%o;QJgq*9 z33D#C^#?q#!{{#wvmW13rbub*Way-{@#?k2gYurH0X_B7?re9YK&wtnule`<+7bk6u&P-=Z}&OfLqZkPr|D_9?^4tmP{rMzkX-@?+?< zm@&f5GoJzc?pwQt==f|?NNx6KK#TeQVfoFES%HEF%v`kJ@JpC=mXG%KzCA0(@swIBDou46uz2!l*YRF2r>s>KE3% z?n2lwG^M|eoD(3-+oAq`n{Cjy$C5RcwotycmV7Z%F&(=s`TFRGNU(MO?^Fp{$XS0M z-kkwm?PvH0zeKR#e|o9MY;h|8-4I?JFSB6eUkSMS!@UUKDmfxM;h1V9Du@#0MDb)1 ze`4xLBBD8q+&g^_RwPzeUk~Ohis(h$;*9cxJ2`+`2-(g{h^%9M#=`o`jQlAiL8<;l z+S<-82Dc{)v(2^MzmD#5fEdJruEoI-*m8lkd3RaT=3T-QRfi7AS0T?lS%kIlS!D+? z>Et>KbU)#W*U;Qp9uPCC=|@Cq|w-a;^0u0+BZb z*f49Y(I4PGepn z&0PFfGP;?p!JAyIgz2Va3a=9p&;<|-A<0`~&77cF%k?GYe!;r!TyeddeWow^f_PC_ zgxVGZyGA)M%7khN*YUE(!l4+7n}LRqR=;KEs#c-}yL8%$%9H80i$1>GoN8;Swtp(E zwO3F_d~fiHqPUL0?!hiZa6<-x!=B_RJT9=5;HX(Yg>6pM+xp!p_S|iEXimKW>9_Vg z5iyQi)jG;{@heUil^oWxxkq?y3%By0zP5%KeT_n16*%7@2Y$RfJgLI$rScKN1V`~L zky#h#xr`skb-A@L;;Ta!_usXU)nFEB4f8G1h5!po3xVCx zL%TIWR+73_*1PVy@&xts3ys`=r^BtgyR{))#eeBOhB0lTkt7rB?tj=hdUHLYZC-G@ z4IHx!W5K@Az1CuuP~+bZap_q$OBsXJN8b4dYM-}Npkc!q*dM2-4X?t4XAxX6V^;OA zKi<91kw!yb(3GljFWLV6we@}Q$?)Ark-b`-R8%o$ktA%cQXbZFoa+&&`s3iQUg&{&NnvhUMf2SSxMJ^Ix2?41?d;|EWVS>cFFMdGI`vOiwG@qK4YUS_D3#xS0C zBRDsPqz_K%QS+!{fWa2rYtLIyTTi&i+kc&Moq|W@!GVdSu0!mvJyf#p%rt?oP}G>V z{}gNJXTtY1T{-yGPsePm&ms(jH@qqxx{Ys=CSA@(IO6Y>)*(;@zW{!SFcO; zDgM9|WZ%)OFD2YDQWhI{iBF`anybUjiFfd$UX}7Z$0?X~tcMONMhnvh+?Bm@B%R~z z1A7S57I4-j+dQs7lq|zwh4yq5C<3W(eDG5s~lV#;LC_{f?5U z#0guo&kHg!K#839DL{x5N9ND=CZw;2P+WvMvvG#3|GdO9AeM2=e}V~% zXP^DFL<>;fDJ{7e0B9~Cb{iA_+bFhi4@f*l(OLU2!%mTo&_Vj(r8xi;p=*@QQb_l> z1lXqb;j#PVe2;0ATkrFQKL}=6#Dv0$6G;2Bv5y3XK zIN1*^E)zBO^!b#OA=>+g}Zqs9cNb*Uh&Yn zTQ)(&G~3~kW-B_%szz=s>QY-B&=PDW#s6NKG!dfp|A_;aQrV(L2ekT+7AV6PsZiE5$WDz=OM_^23dm* zJA1`t#$>RnkA;)f($l=3WXkW4tpOzMuWDQKf=OjwE!R>o^;CXE##n&c7~Kp8 zq;cu%+~zX{|Kbo*uNLgmejVg_6S5T6q-E8!qLJo7UU^u?5cJOTdeYAYQL?wG7r$(c z6s@T}QAXU|-SD5^#T>nqjL3bLeQsS~$L<2W^sbK`HV-8hXrS8J$tC2A~5B5`6n`OM@S#NLG-LOjTQO`Ol9Zqa*l>sRzHuj-6=tK1!`?V%c($K z)c1ZioO(rM_6ds+YavwgoR zWTbJ9(cI`}M5mXJz~f1i$0m4eW%v%5oA%20c6{PLI4CxMx!C@@vvLBz8(NGlDx`gT z*X`U=I-uU3pAC*p^I5PiNZHl*x*B(x!I6>0Y7s~H9&LhjD*RGM%xCj+%ffOnR?C3C zG5P~l>*Mn25by7%MSRdTT0@To>08H^w{So(_%F!g`@FG*IEb-g*;r3F0{PqLq zC|B0RZy_1U4Br!ecy7CCzSgSzv)}q}q@OU&%<*%*Zssk`J4U;ijuKN-Z8s1|z-pmw zng30&y#4E-e6IO!mP{qMNzqv?;<~@MFo-`^?GCX&bk=ro9Z^;M`43?>gNm|M3ls#C z!&&0~MMPvNi)0CL7?Dzr_!eY11wovxq4XJP4W6@ zNhhP>L|}iaBG-&c?PmYG=4CfQoT?`6?ut)w(^Wfi?Ccp?FPUF?gy_~AZ_jo({!_p# z=+2Yn`f#=1lR00aM(6!JqqiMi)|xnIG3?TN7(;iy`W{M4n*{99)JBEWG6HV(KN#pT zERqH^Rb}pA6YAZ}L67=-fW-4yUSYd!kcCra{(Q4n@EEntbge4jevgX(a3^(9s5L=& zT?p3VN{jYa*l2*dno<3}{*M}>)n0b%W4d3U5aohYFDavCBoUp?9yZUwHbG_dhHH5g zlOd!0X`}ldxvOK7YJmO!d{@F-lW{e^w{GV>MVgD51ZF$G65NChn6Y|M`T8q^HIEC-8= zwz9%-6$4obPk(xe5+NnBcmWt*1?8mZB&OKGljd1Su|H{r(@y$r<1U$ZULZnlYN?6& z(+%KeOe8szJG&m2V2;A!=6m9}c{4+2`DKUmKo|z~uu!yJqCCj(q3u$Zl5V-=JdEG9 zg$M%6u8mJ3t&mOdUFQMWL&?vc(z>1kts~aGtWzkdKgA(D3D647L0Di7scPK#cI+jS zL`-Sd4eMuu7}&8_%v4F{s^H%ubhs@J=^ewzJ* z^*3WU!z3fa{Xd4WDNbXFD+(cEzAC?x`U1iS zXS)x^Dc2MXh=Q;Vdt>gJ|2ixRCN{mO;UW`GlSv#(W$oi6Msf)fd`FPd#MXG8P973w zjST#9FS%=h7^O(JzTix1c~P$kfI^|Qe-j>h$gz_S_dQfxR2x?Pv{TL4q6ehp zSZ|m`M@tyVy#Pm&nJN*KGxmvvSw%0^^}N5yn-)1sIMU?!_H{j$daBa4RkyznJL{XV z(R>e?BnZ9I0nCtZK8^0}tTUftaV$0eUCK`&d4@?}eo!&W{O(tgORPDn(Z&P!^%ui< zmfuuxDu2=)qp|#-5zi!I#Rb1_Q73zr40kIe4Qgn;D2ZHkjW1G#AC(aE-^BzE-4^;~ z_7PKPxm=dF!$iUF9M~oEx{AC*)7SI~53Lt4X9v^xmHEhKn;$JMo-z%&#y*7@!(kvK z_cbK~eVPoMEw3t>tzC;$h}mpy(F3_jXsXUCczPDmNNUDbZj^z3Z^|g6-xt@-l&WIk zHG8H?#*zPVi^wb~-Gg(J{U*Dp2llVi14C@Lr&=*iZ;AXmVIGM=S2a=y-XLfhq)S<> z^vu)m-P)qE^1PPNhl9aDLRqT}RplY0mbUc4eA7>lmDMm1THzX}#fl65iu#eWb&=MR zg-2x^A06(_H1uRRZaEv#?hgsr?9u$w$#V^sQ3BU6H|;24y2fa~KQX$~sxV>6_i`DJH~`vYRRm}tO~@V!Wk}L6iF#1T$E>-NqlL~#xwmbbK>>11#kXLg3XX- zIWA-;v>mYgthD$GR#AaRf>}`b|hXXs=@6o6^5u>wAxlPuH8@?UK)6tfKp!cN2`)6TV73emSUl)p>iD)F$sa zZ%z;|IoK<*yeYEvG8$)CR7;Qgq(&pgZ3U;zm+lAZ3l%g^MWLROD~Q|RX%9W?gzxYW zdM_onq;JA-@AL{H)S^Q4_8zejK~si{lX6EfoF-|07y1YHpBJ`}3|I>UnX14-Hd04I zd)#azL>{t>{_Je^0sS_&TRgGun*@F(Cc{G=#TVi^r%zC#Ce#ORULqshga8zTde|=^ zy+C!EZbYQE5BML|lj*T+(jq#h{g33uYF7SGVM9g`|Ap&P^XVXMXeexdt1;aqf9?op zRVV{w5h>1c(${0+Q`s7ysTJWI+sJEgI1*GBXz>mA|_=Ap=8r1vMX4Or`q zV?3z2L#V$>1n?!2(1hIgB#v1IEem)W^SdfnAr0<_t|rnL4w+egXe5}$JAmjJ0_7fk zTYMGHLw@2rYZ}I)$^_(TUPz1))VsrvowkZM;jXyZxit}H`Nqk?)UimHJj$5O@h3({ zLjIVm?=ju=cqPTUZO)19D^|)v;IDFr_aJk*?5VR23Ux3oOkyUv;=vEDxu9i_(rFNq zf~J{Gz_R{wkTJM|3-S#n;6fXxc3R3vQuQ%}BaEnZ4Ndf&AI0c2hQiGJXW_O-lwdNs z6xBDJ<*gB^1bC{fjaRxMd4Q>Y9wXhcn)mqJw63)yJ+=UysfZ`#UW&!Toy}M1W{|%J zPlNvZp<-6+pMJ3|=;n+sopJWP!>W3jMw^K*!*=1zW9hUlWIAFfV{**Q?yoY>`iqpt z?@IGO4^jSeMg~cdT>eTrA*f@Bhm?dqWsh_>@kTmzaq%mLx9mH=s_`u!rxJVbyOu-? z2|uWBcg;qk`Bwyt&AsmDUXPSTq6{#?oiTHWl|~Ft2mMeO-kCqvp(?@N32Lh%xvDn) zZF;jPs*2CTteP_R?6<5IgjVq48r#yPS=UQE!?!Xz&@Kt5Gp9U}^g4zZEN!W=rv3R{MWlGQBdP z3Y~Z1x|}xOqM=545CK#iZ|@<|ds4RLfEg>bW<|NROgb=;<^XbfDvvz}>lnJ+8Vzbp zm;76r%{En-wQLs^_)Q_KIJTr;R1C9jCP7lULsTvSLI9u0rSewHl^PcJkr;7$^5tVz zph!cT+$Yk@=!@;8`pV8Maiqliy{b`p0s`WYT@L@AjyVV$BH}a1cGHJIDEzBh96$Ii zf7TBRKC}=D5xKa0^se7)q;ClWNvi3x0a)~vM)vO($0R;tEF~wpO=NFo{M>!LQ{$jfkrGyn7nakF1uD4GP=~Mdol@NwFNj2gYX`6m3{L zO)m{$f8khJusS8jEX{gFOPUL>k>7yF-q=RHn)`*Bd5EB3NmwT@(m6D-kEzYLMU!@< zIRf($`Hl?kxEvvhug-b|`*lFm^^3Y1$hAE_>WEcgOb$!E~l zFvYN-Ci*O`z}1%eDPaQg@1r~HNXJAiLayD(IY!xgNWQMbU1|Om8TACv$V>imWwh|_ z3@P!jazjX{|Hs0q-;X7jrQK0RRQi>@tD1WbzDBV&WM_&1JZ~q=70e+i3hl;q!>ZVI zcXt`n(CQCDFk?rRtldqy{+gLpKJ~FKJIH^G>S`LXVz;GXwFcQgjFj;Wns@yXy~k(c zfs%dTgEv)e`>CLb2I=-x7agY4+5ygyS1hHUY>CgLXFt9qkJ4e4$=KmldbZod3UgeG zrycupBn>h1FpQk^wD-qia+n($EjRvf-n-NpJrYLMChI;(g2$ETGP=>n7wLl5i{9QG zZ=&us=}Zp&9#pahqt9@=u7x2}3+BDiCSy~}Btw>*NX=23dz(boEfQQ7mTt!6{DR~f zb~GNaMTpFSmX5xd93Xs{?YcBbql~!B$=i?!5UsO*0BFJ=Mk*C9)Zq(z<^2jD(f8umW^ygqHBavaWNtpx^B5TB=Wq;I-_k9skOf--+^cuOw+ z^LW|_4b8<&M+nEe?|PE92G#Nhnx#MgR9Oy6%sh-MRNQyn)$C6zU=i|sZZW8mzG=NP zxg=r!4{(rlSk}5i9ROCQk-k_FzD+(AxoKE~bACrKA)Im_L0`(bel=DX+( z(Z&lrh;OA~zzI8i@f4T9;pxtl-rDXbE}e2>E$+j9C0!>lIwJ3*S@maREz>m@OE*qe zSiqejX?R1Oga{X@@v2P0l3m^{XaJVr0z-6Vv$o6lgaX*x7 zt9Mj13H$ZMbA53*{H@rJv#Qc;$lTFV$d)wU z-1~oA7nbgW|S&!n3 zm)Gmywl#@_JO5BH{-bO$a}xtPc57(|D98b3&d=&NB3ULqA(TXR@qnYRbPFJ`XgH zUJwYk=H`~>Aow7UNcBxoylR$D&}Clr;y*XbKXd>8Mp;0f6VQP0UG2XMv7MGpB|cSJ zh*zu|6Mf>)(2SAXV>_DUhG2Q!Q%vO#`FLJ!i1ykxVhnCx6ADrJHsM)Aq&aQqZ&SHg zHQHZvBac}_5pI^GvFV#bt&JDx-Z2-HT!t&XVrxDw27Rh7?ZtiP6rLaWZCb1$Ed=}- zTV1gQo52kWo0Prmbb^yxALp6Vs7?;xXJZZJNU2RNTKb^qyAF%qmrjU%0Lx?-=z1{% zFLW9EQ62IroEK$%^&0$sRVsN$GO^6xrWHgObLRiI3jo!v?suh3N;+R0Yoj5%V93|; z!TOu1L~;?i(hgqpK?KuApP{Gb+1WQ-EjQ@MH{>BUp}}h~{{(12qg`yTxVobm!oUCh zQ|CF=VbK4fV7}$hNnLAP?#B2x7E7N4bB=QfC6b)cC^i^KCw?yUS(-u%Eb|8QPto#f z7*ML*kMvkb1h!J@XCc1ZjG#pLL{#9d}w*%w>ducRL{wf+rZ>kB-bzTM!q2 zs~x6&oqq*fQ{iq$I;{LO)3mjsO(L)dFw@sBvyMcuOOzK6yr@S=7oNEwN0{!REwJFZ zj=#@mOKU`%!zo|2ct&BL8O(S8z+v_127icgh##Zg7S%>zud??ob3pNgXEb0la#nGj z1vc}axB~$q>#gM!L_9c+aqeeuLqkhd@976hr zlHbQ~mJg^mcwY|l#xs359z11f{h}nW-$jj{74-1U&m*3O!$>feSVV1S-u+q{n=4f0 z&cGe}PqBiZmMLbbVXMD=%Wp}o7)SqILZDo;$e`@M4m=G3{`%$0TIPKDY%hsx4sp$> z`4{bE*58Y{EP>E9$37&ze9XJ!TSIOI@g#vix|yb+y6fR;>63LK1=ugK_l-%Ka`(UN z0#mtOI^fNwi`Ixt8;@HC#a&J#1TohtfF4x$@UG3r#?z^S8>AH>b)MZ(6Xue6Q z^_pH)P-Xb`r++#em8p5<62G?GSRAWX%Xh$C98zt(U^Kd3UFj&-hN+nuxzISuKP-c6 z0*GmNL=`6fXQ$Tl0PdP^cCt-WD;&?mIwmfoIxarJ+T}p!l}GFAF1Q_1O+7ZP)C~86 z951{LiOB_+ z)c)?RA=ug>W9z0~yllCY{)d@22HLcAcbOtF)*OztkLFzON&&?`vV;EkR*)|F~IwRiEEeAA& z0PTF1avw=~v5W9jhH>sa=EbKQvCvKkjvcBmi|GLUpIC!u4h+9{sk&d(lMy~lzLK?K ziq+`*hP$0IB9W7o|66!42PtYXW7*l9~2dv&y<7?IqH{xacRHz$a2N-jNtD`?AbOU%0O#zh+Uoi zt$ZhSlsjaL=PNZ!>l*TTa$*7#zH4^O7nF4r%T@qUtmiE;?b+U3Eex<~Yh?eN!j}=T zoOx5Zenyu<=O_0hYxpRWmG7i+hS}g|*U!72-gGhw_=x?^pgu*vsozip2B4PwWT^db znLvhn{ryo)gj*5Fegc>R0dK;zI&OjLaHHEA`R4a^^=?G#DI6E^8ugNfc5x3+jnHvh z{Ijm?4%)FrwLBF8tSr8WmLfq2dIix(OjxFqSZ52XlD#6cQF9u#zQMYXG5)xOi8NB% zP~rfqY7v4Y+V^PXe6)3w&!skq>%LX}@M&R12u6m*?YvlUEN?QArkrMS;MCVGH$law z;jSeAlm0{{=#%tTFZnO1r!+-(#5x(+?L`S(3@Px%Z0q&NH3UfH;-=jV7ddVhm$f8v zDvN65LjrOmK2(*}=HOvDXedVFZSAI_QG0N%O;;w08RE&ZFRdoZYdVZ&bTBwG#Fk+% zCAht~R>tGMhj7?ntE&ds2Cv!J9uCWl`qW`-Ic@M31(d=p_`C)L%+k=drgj;$OY+K9 zcr-NR{2dP0B)sfO1kJv_Nb7qb$oxd+1bvT{{t`g~zJyhpOr0-QB7InJ)5I=|L44Je?^@B38}0iT zkPU#WvOfyLXMw}~2?AUjwk3-k z_NVa%_i>x}F#KGq`K${5xy5<$QF)E%o^ioR*woTt(Ns;Fx9RLkKlLlRK#+RF2#Nt* zMx^hDA&8ngEghXgVc(w3f$4?k)02~tz?0zOsIj4&`02HI4ALZo)$BOQLP&7rW`BuM zdwSL|q~Fra;(aUUK~vyg8Kl1Ax{s?z=B4=}LSU(#39akUM~;H4GGSYU*NBSPkN8+k zj3sV6L!oAKXZ9iITW03ojGhd9na|V=F^gv}Tc}HE{hi zm0#;bikv>(@gnX0g3Sry3#ek`3VQ_kmd_j#5h1GlDQ&zQ6I12bqn_k_%$$&vZ7D3jxPn$$t4=Ru+MJ z250p4?JLy28_oLRT!!Cz0587e6|lVyyqR@`(K{(W90$dMv(@e>FDT`>7%JkvN+Y7j z-H{+-=BxtPnA0{QKe=Djp_F7h-w~EjvWys2W4!)`mGS(WqG2sHwo6mcm&;m;uQyr3 zVVjhTr%jRcBU~G9*R!K&<$JWFccoT`r>b+Fpq|Gm$3s1B$>MxL;`5`T2YkZwlssA?o1XPX%R-H)v=i z>>bSqc%M7cOc?9R&^fT&z-;iZhe7a*%3sK1usNots2L6YbtVXjw$A~ot{}76ZZNjU z$JVE9R=tx#+pq51aF!J-FiALmW8wYexBW*xEY*$P_kRioQjkgT_N?HXkg0FSB(Uvi zYSE)bbd`jU*yyD-BUTZ8RY5eb;mp@<6dhpV|0)ZawB-K>TW=W_RRgx| z&M<^D5(3g)($X*tEhQ<^t%!6t3=JZUAR!nsR(MX_{kTk^I-XeEA{%hTwT*x}1<>BgYS@{;k7K#edb-3b%L%52pPiXBBvX+al+BJn{#ce!u(lzlN?_S7iGc}QhkD((``LRcb#!+yR8 zp*0AWlU1WQ%sKdh=w_bXVF~gbAu+}FLPGw1cO8p{IIx&j6$D(+{nnvpfzW_;!OqcV z`|(T`I}&uT9N{A79rP;`D7EW6{~=3&!jV&3ytKj`#i^H}Gn!>!rnxdmN&fPk6p^^r z)&@k&5%*ly1bo+cB@z0GRd^7sa$FH64|50oWJC@dh*#PRx!#4JC?aJ;l;&Nl3)Q-8m& zQ46&4!E7}g_g#L4_ZVwG#kCn1(&SbhuPMs5(4<6Wnri0Ks3CIVFp(`GYX5|)g65|&0NBb?r;}6z7r-Dp29hrnIG8yit30Zzk0dB z5t+VcijBute@Dmz4gt5_382X8n(+-UGzCQ82`uI9#uKL>8muUbri}}Ce{C3v(6-iR z1{fb@@N`^k+yjE}ot#^ZcTBih0bCSAgDR(ASXMl{T%7>OOK0lR%(RThUsWyuFw~}3 zBVV`R@54qeI7}=IAR25b5UYp4H6mOc9#kWRLa5>!So7j|_R#(2sCg&}IAgvBp$uS3 zB_Q9Xcml8+AcR$JlyBkPRBH1%;gD+e9Z{e8kD8qgqC47wVI)fys^Bcf>*-OzD-y8Y z1~mw>L%ii375*+Dm~vNjb=qopTj4Ef3V$7N`OVOEi1X|s-Jvdl;TZi2;5o0huO(I% zt{yjF`DOPRhTDBTS>tNjrSE`RH{T{{ZEgY=L04aMWwqQd(S}azk*PXQyuzQ~*52Y^tI@MoZ~(%l9Jh~@Bf_QpaJ8o65;-!BKW zlaunkf<>rFUT5HZ{cbWd^>J&9&-8o*m(l$;QB9sjwZeb}cPM$_AjKrP1jzBcn~kW^ zAlL-jx8LY5@c#z43s^>I&rGLYYHMhi5w`S~nE4X(f+rRLN-(mgaR+$vuT?h$>a9@1 zbPIQ+-g}|wYa#NTKen{b&C_$YSe8z)bqiYfln{bgy8flseDYSulkv&PGo^UYDKtZzea#Wg18&I$e3)_bDR zb}x*9Xrn=udmP(FAGgvCny*OO-=Gtz%Z{pg_ zG4xk+erxLloQ7^z=vmA_L)|}dw_a%SNG^C@YZ!6%sr_I-9!)3x)!SYFbTuwB0ZtFG ztqh#Aab+LeQC_U^kK)|i#3b7M;jwJ(w$jof4tYL@V*(^sZZE43N-8#2fq&;9s&ER; zaHfR8$-^7OiVa|n?PW@N=i*Ul&QS%@V|y6B;XXAT!}Isxb{*- zchRcZif%-CKjl3#+zu=gcyO5pbOuZa|1L3ou@5rnU5S?i06)k`f9Em|>YPeHG%tRI zHV?52jTO$ST%1jgDp1_=ZM&S01&aJ8^EnC-$VMp4K@#^}8NO0Y-;I)zzB~8!;~K z)AwMp0qRX3j1IT{tQs!S^~&dpy4Jvn`(5mshQodB_`|=7|1W|4e;wS{Go1hy4C50$ zYht>2tBZ;jTMXxh{#?3Qa>tYkG?9~9^fWoH=!*CqrAKwjmPj9j07w9XzjL~uh=t~z zOSK_r{9|G|Askmk=d9V$z7g7WLO;l^g2&=j<7A%dUFghDv@^f4>E2IBZwtNIG z8f6gNb+D3pzb$(t*!Y;1Zf_zZo^JD6VG+G>Vb+?9(yL_f!PFK2|D<8W+BVeVs$j=* z;Bfr#KR?c|F4p1Wn@k*sqDfs*FS17KrK^-PZ~Q8=;dv^z>p_YC5>3B^@m{Ik9vOLm z{iWZq=J@^VfrWQ_6S*e2uKS7cs6VZZH~-_M0i4>W!`jQSCMkFKn2Vz&W$())&WAe( zHiL^pj;?S!&R`7u@cxy zIG!qC5>7QtA`mGUZt*CCJ zXx3(FWkvpm0U?Wavd5nkPOuGRz)yFBxrbP=my>Jv+pXWR;yDj?v%9$?Lvcli@x%ubBXq{%6xO{6WXq z^sXNbZ>Q_!%^^zsdZvKpqhC3BfcM)UU^jXf|6JVk;KM!M2AyJmrIg!$DtnbZ%=6lH z8s!c59%bw0jg4q$yQPKsE*&}v>D&`PJ$?kXSC{uAf3GEj)WK;Vw_YoU`+t!3x6|f& z#q)<-(mHwjH}k-Va!QWzR{Su&D|HbMj{z*cF0=X=T-($3-o8KKI2nD_C_Amx4i+c( zBh6AquhG)dQi)~g=;h50R(wkW^WI$H#O6>!#h9qv^+DK(Ss4obp#V>np1kpSt>MnlV(0o_v64ax>gW{wb`=|^P=(Ju;nId(r}7?m;aP^rK(>b zrI3Bm#-jPA?9L24m6&095HjLo{Tb%~6|~_BWuPR3OIxqCSeJLr!e+2myJr#G1%>&w z;AWJ4)E5gM5Cx0@J?Nh;I6lpt6|2(c|BbZVMt>Fe_2T!c5WvJeQLFs}N&}DS%xI&H zPbPHgc5bDA?s-$?_J=urJdIm;-zn-5zb<1|jxT=8M9efHoY5@z&A zjQfPjfRF=zK1iHk^u4zy=5Au^PKv`b+G!)7NY?`+iW_^(r`0q-av%v6{d@mdkZ!Mp zf^^FaHaz*57<*vTA0ZM7(OjKVLrP@3Tr@}k&?HM=vKcJ@yoy>DE298>#0uJ%X&Ykd z82`9y(Dl$(AG3&5{NBk{_^3m_mnKro#_=$gVsHUXz|L&6 zcKQ0ykn|#az4cde0t|T3%&*iWq__b--2c3s>Z8mW`;^7u^oA4CjNNq$?}vIdCScbRFN(Bj2ctW6P&ufun9!_rMP^-pjM59ef;C={}*Fs%mgP2PFp zy(RIx>Tth^dqZMJ38AsYAgAM?%m5hGemc)c!%5!PqRh@cd*%8i5YcOQ;tq>eh2n92 zg8Yi3;G|@I&BKU-H4mN|XJOcQrlU=+kafpO8QB$w>!_sw6%teUM*(N9EBi;l#DX^P ze9}_4_u7in1#T9JhnsVreQzb%#gS6GWP(?hHREYuRqyR_6Ml! zJ3(*5FICJ;K-h4G zh3>Xge0k|Z?&o+Y)H}l*^bC4q;_3TtT0s8E1*A>-8}}2(o3vUff|5Ee&%lkKyU^8JmXQk(=j@__m37;5F3^cnm+D{+c7?afO_z?YPs_&Rh0ZY!@9qI-qZ9C$d z!CmIRuAeTu`cp5f?uxh_YpVJ3Wa4QMU#Pl{U-Q7mhIDEq>&|;B@wtke`@#rZ&s)Ve zQ}qYrO~P(mGePvCROQ3Ot;xaJ+)x~M+IzyGy69~tE8}u)?OEAT{MiNWks#C0ufL0V znHUczzx)2ATq$8Ia{w)A3Kzf4RJ^enR=~d3$2RB5Y*=kL4h>!+g0L^^+OO7YeB(H@QFU8dxD_Pv z3CuBc9$?zmBrGPzBCa1Rc+C8-ZT8=@&Pf&%n6O`QoKbJuo^hD%_wRZRjT1?mqF>7e zj3+Az0E_5hH5gw-^Y9+eGE7iB3$)6ysW zH)+$Dnvo+RZ!h?J+#Kfj;8+LWfiH_GjDL>X5>qQ$nP(SWV&jiX^=eek+|mJ@PXvbI zNI9zRAWBGYd?lHW1+Jt&u?bg=WLRtNw4IsPM18`x?Yxi+7c=4^kp7=-I zf>KQLm42f|C+fiHP@>5Xua718W(ICydFC@Tj!E5jq=;n%-(lS$B9L!q!Dj2R(PisI z;)=)gOJZMaik6y0?d2Q@BVJw2oY!TvW=mR-8) z&PR=mUoDGsL@?%sm}ML8#;f0xj9I8|*eFGU`V|yn-oG@g^{q`+PU7NscpXIq@2%0Yt8OsSGW@BN2|Y+7ezH%Z%XDo`nFJNCcR4UGxhg-19T;oU?y~rhyBtG4 zoj|ULHe(kzKp6*2rQd|f$ZbL-aQgK!97^2@O*8QCaS*an5v6|bvQI=dbEcr#o2$ED(DgvZbVh17GpKhJxImji979D4-Mx|2QO#{>J|6te(U;pg^W zNgeSloTS)uUr1#{-zp$>7is)7bsZ>O_18Ar9;?Hvna4@r^WssFx^#O=Lx(T+Cb#gg ziPaL$pNkz5?~+&>QNv}UL3y8l{%-V5b+rrW=o*jtNlze;$d)|*HHY`mZMwcs%#79dCK z0aTz@26d&Ji;kz}zgW3bnzMX0kG!wuElJrtpH(XTEh?)|o(D#>4qUpXgfMK*Rgr9g zWwC|BWdKF{FxOXkhbbmvzt|usN9s=cOE&g@vj9|rD%7oKN{W*;Vc20G!HZ)+Nmfwq z&BZ)1Yhw^S!7vN7(PkMLI2IPlf=w}~zwQr>Yv}aQV*td}SB5jh(C8A{XAkPDLi@XS z$N5zay0^zoHWb+2zzlc*5S&wH@K2{WlH9^}JfU^n&uhE^e;JN=?Ei!ww+2{-x`3;5 zp^=kZiB))1bVd_^@=dphiSOjBi+fFKimT`BZk4&9A#M(=@098n4Ye#cLa$fUpew|g zUlu0asD)kRF4xi>EFS^*SqES|yF0FqQUQ8TBHRB;aJ$FRe=k6c&QjXnxVzQ9(reW0 zRm-w(ld`TUAasAK07{LDi7fRAL@Vqoo*U85Ku8w-PH5wO05{5}p@9Jhz^5-!xoh0T z+jm$2Qa=^&dnWyK6#m2Mo$Zg-#trHpM^hOT4r^0X8Xnxe+?K^5_mpuSR*6#9xHu81&9|9^myPRDCZ{O=q+_HBY_n!mswbK1%qA46R>uj#B5r z{LXrqZ(tu^R%vpBmMl5kWa>9}Se*DaVdHw~{Yx>A^!jMsqc45xU9{ePxVQ`fzKZqplSGF=RwYp*S03#t)`iTEN?h09WkjHpoOTfu z)h6as=em6m#3^SouV%z+d=yF55#zDXEFd7@d=K!#TL_+!oScX#P?2=I`Ilo#)8)kq zU+Zyla47%V-~aGwrR{8Lb0Fc)#mo#*^7re@Y4)pUsHC0}D_allK%%02wXuFB+2yUU z)I`;!#$9T!*$ItsR?XWSb9sFbc2*LyyYQ4`$Rc1>=;lvbke^iHHrPj`TUn~_CTIg0XAznJLN^9y_v z!=F1`B2{6vx-XsZvMOSYKX<%TTYCZHmm5l&}PX9q{jwY0bg!2^QT~rOGp$ zylFNO@6*Lw8tz5TCi+c60tr&Gr13~a_>4pw+sicMVfOCH13$4Lcy@cA?Ri8t9MSu? zuw-T~0D}_Hco{`(lHI<%F8<}xRieK&HzS0)T1oaXaNCoxJ!)uUa?x&E$))k&@w0td zXYuPXzQypOMWbyFc7OqtH6VlS`~WIwG&8I_I&6P>SpGp~n=d#op%YMA%LnJx89{(^2Of*#V=y{^_v;nTQBo za?0@Vg-&BS!a)zn&`T%vBA$&B+?cgs$k!j|E%bFH!S|-Y_|XUM=K% zfKYIDLM#+2SwxT{6JA5AVQweFJ1A!sBfJ}n|0pbsnMgfS9)?1OlcAP*h_b{Q5(UQ}ivfIR z5_MlzLBtxhoo&moa`7o=3V5W<3k*`6Vq!EH`*t927$g*ne+!PnDu~Da8Nxw=O75Pi zo!pP9z+?E(nZJdVz(BD6GCe4neNb=^!f!RW`=>p@ro5?>y#EU%>hl(wkph=#{#9ds zF{mSLS4rneDl9mNiU%v!C^(7I9@GCes7BNs)(G1su$zw3y+BNzsu zzF8Gw&$gCvZZsi8(N9`oN0?z~i5PZwAYKErq^~cd|-)#4MJ>GDFe8Ypg zQX>AFA<6tKL2zss=Qz@wqx5Nfi+ON{gZrxL6oINLDRGk*QefdtcKRE?u zS&498^Dv8Q4jZE^w>)yOkI;MApAc_q_p)wD!?XmqMEmB)uTeAhPmS)It1$x-6-DFl zZq?AV@5S)@w-9W1xISIxoNy?z5niz-5bB2z`kABLz_eBwNorH>_vi5kIy2G%dQxSrshbUD89m7sEALY-9W39xBN4+14AJ6vozX~Pt@MwP+$ zMGYz81p$YsuysiW4pIUM@fUx`oC0&)p1Q-TDnd9!=C7wxK9;JM(eCLN4oloow`ptB zN-Vy=z{FzaF32^eWl-)NeK;Tu*AP_k^SlaeSVucBsja;nI9I-5(odo?4UiEE%62d? zkfI+qQ=nw>yS<3#GHUk5mMD6PF)@zYktAg!$Z|>zB4Uy&`+^a2$S)Y~w&OEU5oqm? zO}S{rG2$yIkP3InP~GYR+a{{LpN^%6E1UT37}mCb4Hvm28GAP4dxtUrmF&y(F`B*L zKgva0vPoshYVUaXdrlW|)df=>5l2c@9f+aU&Aj=Tw;8FmXV%CpAetC}SHXD=}NkSj1tN=ySVDjKvCC9;bFBQ;YzJ+4d&Y zIi2oJZizND-u=XXa#hm>N9MljL{}v~Q+8%hEYjfNLW=;2(Ea+x+q9~uBkjca`VGyf zn|O-T4a^Wk?#cXc4nj+`&@5t)tiMPP`9um&q56(<>Q!YHm8k>6yE2p6cT zF%~^Hxtja`V>s+Ad6x|PT^k+$^W_Ksp5JIWxBNHti_iUFu5R`(NH$v=O2rhJnx~fV z-RF`p;mo1+az^JmuV{UMC2R3)dedqJ4&X919$?GKN7K~C09 z1HdMd#UP3@h2!`jEDc(mW}3r5N+*fPl~T2taO~TXYbM3?9mtalj4#oMcAi>-774|Z z*D>aj)X^Elo58U1rh)DF4#mIilYEqnbW_!sBAMHcT~;#x;h^_J>1<0sA8n zpn>K%|DoD@Lw>L3>9Oo%0uT)Z!U^XqSMz2VjSu(d`8iGcZDYep&+iU4j9D%cAFHo6 zu(ors|BDd3H;x~&8vf*_25G1QzrwP&$ap>DFKhELK(|Wz$p1?3KdrF75jbKuQSGK! z3+16ZIY-&|P}mfX)b$65s?5x#(Ws;dZfkhk&2d-wkl1m{|;D*OiTl9 z#IBWo+N-BE3~R&I1(3H;&Pq((NV378i&mi$`dtjRYnOv!0mgD@D#9b}QsU)wQcIYbP`rR{zHn0!H zE$YqSG(3Tpo0h(G-%%?L9H4-{I0m8SsS9s?g(s^Z`G@U3x@aft4tyXj1qhH(R5nC= zN82Z7PsCuMjeL@G)xuupDGe+>T+XhCKDV}(!O@O^8V62nzV0`U*Y_u+KxG{hKG$%I z@I0Z5`-LyvFF}HnYcsgjS9Mg0-#>z(JNbOoC1;jv^;tk4*U$6*X|$&)fmq7Dk};3< zc`P&8io zSe`OEzzE=>3(7D{w%YJq<{8%cf3WtDmoKY)VH}MJ<3Ab~SRxIkWuKMDS;}S9ICs4{ zYBfPG?{pWJyYWRx0hZm45P*QqKQY-}$>*4J+%}mlR@O1>5{Ye1z67{Hbr_!Z*wRvY zTv-{dQ4;N~t9nONR=H$i-e21H;QO^{99JK1Baix|3jab_-cv*#`1J_yqTb;_aqjfq zsCCK_e_ZkeY*F4eV-4SxGt1Oz-&f(gez*BOCq30T{Q}5E#dgn+?i1QUZ$#HuB>AR(^d7G4=$g&|j)taDQ zqcm334QEEYmjX)mB2T`*xLD)X8&LS4yN~T((umaHaqM=uN%Oa!7X^dF$Nb4T+8ji)fX`4A{4n5Re zL?QDA;zU2{y<4iLM%)%v-raLuDN?H8npM?su>!T(aN#R}`r+io-eWgweA>4D68A~` zi_a}A6Km7sKxj<-{HvkoT4?p(leM#xt(5=CNTzQOTZ_yxQ$szD3?Z_4V2&1Kh6@g* zM@T-Ao$S{mGnP}#T!i-(ej8H$pH4;cubPho!=xrEk4!8qeZKEk3e2wIQ#CrdzDLs~ zA0~_6@vS#(Sa!p~^7X)_Qf~R--UZBD)+SqWS8mMtZpD`&Dw&hNilOb;2B03*zTis2 zou00?L%nbTaKzQeZFlJ2c|D)ReHamSbg8M;JMMo62DAzX#aR@u$?|cae`8-V7R6Aly z)vhEEUm_dkfz1rsTyWhAkTjxf>Z3mMSB*aSecU$iL>+d1hGG8Y{yYUA8ix(A{vw{n z>zy`wF^@M+lmo};H?Eic-e+b(jnJ=;>=4N=M4~w33DO~5)Acj8V=sFp>(+U@=ir$u z-uq?F7tp)@Jija6o{F@z^pW#J`3X+BY|u|a7rr(+ADU{*gSKmem-QNAYvA0;6_*%c z>9+uwdTRkdir+onTb-BZ*K@cJ7%TY(w{~FEP6d&@oV{7c{>8=?f9iAmgRk83tTbqb zh*upx0?>nfS?xoP_UUw1s`h5;mZ8M1a|@A1fGQ;)bf+FjtZN zhjq$ezx|$fA3mI2)Xpl&S^rAS{il)p-#vWk7IU~EJ74Yy=zn^h0h$Aan|X`gH>Pem?ZAM86-Ln$224C$}=EdCjpKgX@r45y!=K1KUIr}`?^ z4shQh9#R^9Rz!rnDDQBHi6Ui3WZq~RQpWArIH9alwC$8UQC`Qq1^1Lb=X|!op@gWp zY$4f_aiVgG!8sAgU9ZL2S@MXcY4$@ArAplyn17Zojl=VgDx_Rwv`gdciCWxo=tIiD z@ZGTx0`$c{-#{P58Z(b6E*bWJ9XtiZgYJU?;c42rM5S!oe8gvP9D4^z#L2#ZWGJO5 z&1;P;8Gmant(whi(8ce@Iw^g90~KnPMnri5G82*AugWw#j`8kY12b}`?OxLl9cg2C zNR^PDxV0q!$kI-V#S^oL?2Q^{^t+q-62xeo^gAmW(t>Y^q^^ypzh5Ebr z!K>3&F9yg-Dd|;5aG$bLY(9QWzW8;-@^Fir+!2hS==H~xT%@fYhg?***ylRlOa`6Y zlm@qmCR@6b5U~W8d-+1zB??>>Z&l&tuj)o`5Yt^}{ZZD~+mrK`NxUVhj zR@4L)kjy3c<5t_wJ2!5wvz9$ zdn<6!BE7f}3%B3sSA5wtp_PhQ9O?O`4Ll%keLJSCqTf;4c%M@8vn<~{t^JrNF{$LT zQ!feJYF$AynKFpuA9?9?N&u&r(Mb8k5}$mVPb*p zI{1t%O(Ugj5W?Oo=C)!^E*`Jnm_%Psg@8?lnf?^+{P87TE_1h*#4`JmW7s<1+#uFc*R~w&Iy;00r7Kl^mwaRXq*Fz7n z-e=$bcp4svrxRV2(vkxL?R_3<+f52;Lj^5`WbQ+vH!6qnm!{|k#wl&(?#NY3I(pych$iT!7AfTcp zGRgDNxl|fgET4(--n)1Z?9aYn`nQ)RqHfxuu*QlpqVtEVdcX;r?15APi(Y;?!Wwp>%sQQ$K;ryB8+>n0W z&tC(J{6b=4awb(fm+5l7hwKTdj-jTNrhVh!^bWqKAE07UOJ5M7j-U>RZ7h*|R!w<3 zVy;p%bS$i+Ywa?BnD?R|18ZAoP^)9Px9ZOcHo2HjYi!}qhh1yQM&o&g>F1z;^2vvE zfvt7dIlk4*UABFZFKodT1B)E6zt%;BPw}TULSb}`LSATl$;ohKlqW*ny`$!1E)Jbi9!xgKI#f_`OiLd{QXO-S z_BnecwcmkLRV9(2y`U^*9V@G<8tezVJM{4HGniu0c31CKCV`+7;uUI=qanNs`BJKQ zJNZQoW;5l?W{tr2_!OHA)2!g3ODxq5P%m8)boVFMB0eP=?5Bu`o~H5o+s8i;dJ2w* zLrhCWD#C5Lquc28&$yrZ6gcaDx?z3%;!+7fuTT2MC#eFZDY5ZdQ3*G)bFfNrXvL&V z*$i>Pg$X|N9(XS#Lao@|jKcCn7uEUjy2XjU9{{A!{JJ{hx1y)0E(`TUFWvk%5IKUL z-&VT8bUr8!)%bj<#-MKt;Ihi2=Xt#_-n_-v)Sn-qF2R+vG<*%Am)TK@ z8j)f*bnBmqqFs%5xR^rEXxdhg%GFrae)xgHp+_oT`0u64PlgmjKa%0jGu-`OV=?IC zT0+ieB6@>(UEJ3F2nZgWy0C)j8!;=7rhY4nu@_H~?6S$3C6Y5Ol{Ti?Z=GE`cZ)9N<-Gw|djdt+vvHJL)IAzExIbVYHMSv1IS-M>3_%8*isY^M+I&m!V;;}!)0lO|B zduH9a);>W-lDi0h-cfsZevPg2wyHnY9!Ayb2DpsrD~-18c8Pky8U#8%(GBcqe=w+G z(Qk8uv=^-IS+6AFIZn6|_SQE1+!X7uBndCxQYm&T0S0V>7+de0A*_q9#roD)WJKBY z{l=D{B&U%&U=Nmfl(nmoRAKkGEwhDex>&88lyR-CMxk1MoO2f2@=|f$0=tYfoQs^1 z!#8am4GdZ$_2hs2B%_7$DGkdqR-a~9!#IWp<+k_lv66*M@YiK$WuR&evs@i(iF2?K zf+`tqsk`F;=+s%IX}*937JN;$*$8SZWxC2%vmNa%iHSo_#@PI31r`#sOHN%xnI@8pM)*%=TQcU(Z5&63W6+9c7>zHq zlTu!e`)O;f`YnF{O^Zp=?Mu7XdcACr{7TP!)fLnV>2@1Rfj+e0e zNoXAt^bFaT8ghHgop$joVD-PMo6F89$#Neko*`AZI=%?=poj%7kN{GIvFJ@=oc_ss zn_)>P;D;IQs+5@2NYfsr^l#HUQ;j|w&DJ$WmF`odWrqTwX7^-~+ebfujDrp^;!puH z_FNpZf1=9ZjiN52*~GiJh)t7hA}7pfMr!^Sc+cB>0A7b&waCN1qVzA^cU#wtFy{cv zwa-|hN(eMnLfeKt3FPtO5F~VM*!xtGW#B8YDNf%RjyIr;oVqH@YP!-VU#Q4Zxw)(u z31BuO0zU8;O9n5hXH<%V3kq4%HWMPES#Wd5c4Am=gkt$q7tJHVVkoL^LRMewyZWxR z|IGrVkUpM~Chpn`(dNLYp@zTT+-ht03#f_HxljifzG=92-&peauylKg0)O`xXnJi$ zFvRdYHFJn8u<*=LY7P zMj30j`IIQDW?sAYT3`s6on_EJRmp@s6K!p5Gj1CkOEJ1$;E>b2;etB{4)dt3lp3(8 zwIB<=t~j(4d&&;R62k_XE|^aD@qsi)-GnB2+lv3v$GyrfynU2w_6A%L(>`B<-Z1pN z`wK0vs~;Yl2L|?g?rPaEL|}qC>MGeq7mBi`X~;vrJvLA<#Ja)9q#ggSpO<3jtT-qD zXZg6~CAX?_jN% ztWk}sAxr!Lv)w)*uu~lGl_<2~y>M8799jVKX2WzPm8YY1#}Riw(Jk682F1jMa|4Cm zVqVdK6wXjtkZY=YPqvGK8v(w1ecRo1DuDK*s<83OFZ6q^8rIjZDEK_?2*$Y@R$UeZ zcpIxVHu&>|2mH-0|Jc>QH>Bn8FpEzUKFYHYToVkh-axjw{YsJ7nTNqE#qFW~v<@_6 zJ((CsQNDi)S%pK6?&h5DiA`wca^pE3x`m?Hr;2ECkNQMUkxYyDjpu5_!peQ2hkbb2 z9$XD(o$}v#dHiYAwL1_8$~Q(DZA4?+-rLme@vY&fH`|~G*`u58+w^Y#glZLHvVQ*| zw^HjB2_LM}Z7|kpMD+)(wk4i(}Rmr0n2mBXe#T|?4j(wYees{odIw7+?7{D+M8u3%y;h%BoU zGvL)zupCTcE1+PEZbKbcnI)W~01tugb!HUNsa$@9gWMd)4%uGtEhuU!cf8Hcy@FPqy$e zc{WD!Rx1fPl8sgWev*|4dCA-Zt~2TPxvQI>8B!?@?2~AoZ*=)SB6rRvvmU2h53`Nj z}6NMiKnO;^_R(%PG%VdE21&!cv#-)z^ zBC8C(D65wmZ5-nA_cs!f0c@dV)?hOH^Ud?fS~8WlF|PrZ?j4n9_N%Ts(S=f%(fBOj z$CZ|sCi!ddSlg0a3673!kc0LsRd+M-Z3_hz9wv%{2af zy*q)j)(X&hAZD}Wcg_>%_iM7uE@_iy*%h;*ykP7cE3K$Vk-?YH=1WW4MDAClTyKx1 z0FJv}q(8Fl?uZ|a@5y4AOp9RqKYX+dck?hVVSe8(HT1Rf7Y^z`hsw|2h7B4u@g(jJ zl1@d5epWtYV9ztaJ463AxlJ^F{-)COk6o|PJoL{YIlctrf6Dd7Gk|-1WK4$f6A0<4-^>p{wOr#<^xQTf=`j)1Pd3vbSEDMo5I?6p9Srcnt?o7I*rdOFO!7tY#|8~ zm6LPSGhgs?%0<5kZoV*ViITonF$pBik6-i{CZU1QU%G2ZZ=stDZJ{NKxP=*%nWTm*o zhz@plasLqH)Qc0|Qot(c-Bv&r=(hx&e!8FW2tzD8ac!u)bnDG$_}8~a(bE$>w=aBL zWOv0xXDtp|vN(U)3g!}vz5}|wK~9fFI(`~2MqG~QzbX>}YRa_#`{4Bd9^9lT!`F9w6Q#uNPr867 z9uqB3P0IH$msK;G24|JSyF?o4BTIYxx&fxB&zs!|Lo($R+&e1gQf88@!5v}A^Vd7Z z=$~~pcSpFV_XkWEQlfl%cnOG&d%h1+S}1MXyx2?^PZxf}?l-<-`6g^2iXp3a_O%ry zIXQapfU276^6y4S+WEgAkI=wGL?#){?1GmqFbLuz9uvy?(z_Wv8DJju^rk!hYTiRq z3(>n7J{$EajRLVdh(1jr67L}Q$S6`J`UE5-ehpL5MGFAj z<)#Aw@0pvX1yC5C0d3v^YOyD6_xX=G}_auyMSWLN57aUeB$B_}Y%gCW6wYx$IFCzJ*IY$rZH| zseSQ$Pl$1~f6n`Z@w*2j#&ER=_uVFlg>)fkKg{bH2Wgb;jlAW}482|`Y+paGCYM1j zt5M6sE_-szPZpi!b99L+(}j$^rG;Gq7<-!};_E^i_CX;sc{3!f#ST;v>Cq1&2vl~C zePj^JV!)goSy433_@|KFRl;q8qv`#vYY5_qu7`$?k{%5Nl{FL#Qa$cc*~w=J zVQXJY-|h*N>U>dlZkEajWXoaL)qHDQ_$qUjjcJ+_oeWEtcd>y*^cg(yQh%aZ&snM2 z#aY+kf+U-P;O!aZU$OpWT%b2b1(`@o{Y!7BItZvXxi)5xO7IUSJ)Uzm7q6H zOOZ^hd~7zNsXntjas&>SQ#*@-G;Bs-(qE2%wNq-XYV>ulhy834-)zOn4{+M^W=~W; z$iMjNH+k!BZ8NI0kXSi_w%OwD1^Omi{!&!i$Bs-9{y7T!!~Fef6PQ7ccuvey1=N8P z464eXv&znV$M7$&ntiO&b7Y&3q0=m3N#+Z3|a2cVSPi<=v%Lo_v9F#pA~^K zuaqY+nT35n{}=q`8?W{GEyfS?8D|%nLT#K+@d^Lj8GM{Ox}uR*4|cW9(ySCXWa2F= z<}9Em=fe}s9}{UBR%dmA#(%HK=W`1=qdUHXI@tMhYjP(SXVI^?OlYgEqx<1bBMGUK zX(5(jjV};ZsSNPRew_5Kg~It^6nH^ti4JXH-NFwlSMyT#m~5V^5Qbnki)7+>Oqf#4Pg!( znn^G=+v2jsDI4}2%Z+BT8me+7nWz}?w!52ZTI2&svhEiR;ocv|AU(fT;QEkpEkGO{G@p2g9 z_E8PXokv#Jf$(RZKtahmV_F`^#<2Qib7cKU@`}a9o{@GqAzrlmZM4%^yhjYu4@bdN zW?NLvgvA6zbyKS_S`; zpSz@hNQAPSCwX?!)yh_VpH3(SgSMh51`u$tOL_`*x*h8sHMYu5&xNVVG4C&Xh2%dJ zmJV`jR7K#s4WX_O4)LJxQcHgcR$^ge z;TB7fg*tlb%r8(zWy^qW?YE?kIUCSuQe#%~gk^vCme_xZ=Dt#7m6N`^b#^SXEx{?gfc-hBUJ3KpY`))f4#e1Ike8)_4)i^Z+(hv{pcsDKADcP{5C2|+)+U8)23 zR*{Aa>h6Vm!~{NC#%2VnY7w%gXG)|y#mHil&Dk1$v=RJ58fPdoEzkr)IDdPV4^ zt!4MzbJr-JpyGTIE_61C4P#MGuw zvb!8ail;0g{vG#u2Ph!n!m_htWk;se{G}lKzeL|o%W5z!t~gl3yZn&3jaA2<#FH1~tiy0-M9%7o z4x?!NW{oKE=6>hR83uxJqDG;Ej&qpM0&Gpzw5MW-;t|2Op-*tDIuj_2^RnpeP?6ri z+X6*ggjR-u6bOa7SUx1%3ikYS2F7cZVpW^pMqs+k*Iy~$yKaojHq9Q%a)+&^^CVQ% z^vK6je5syJnycLpGH@=#1Ku-B)xC)6EADIHijp)z_ldV6_>O9mzl7nNF&xlvrU+2! zVSnat$wrWx7C1&?sfFnt*Z(MXg7K8Eo%7L4z-OA{u$tIzr$ zkLuY<0=mex&P~*2K)>|j-k!%i+a0BLWWncjc4bPtKXPvZ|N9KH?pFzS|NRn(Z8?#e zHxNEV$1ME^ta)qPl6B{2@_#FZv(chcYPva^AL^IE*7>SpOPGon7AD%2mrFqT1pYvN z!HT@v50W;g!4=*lhu%?zJ2OG&0k|}kPn1PM#mJTPC#*|`cEP$L467MC2O$VaWX`TE zXtqF8P>ZZL@uD4r!Jqwn1BQeVqbsDWR7hyw2cp z086!Y_YJpjA$2m7Vz0l8Z>qO)vp>bPCO_o z5;MH=4%o=)ISyivSU;pj20dY0&*S%OBe9zguKyt^nk#;IExxb z-z6^2V{b2K3}6p2U{g^!Z32Rt!R8g}2S7z7w0muc*WKI5XFD5}zs!)PzyzE)opo1AyX)>kM}=#5-1?^0~@{M}tmE_X8Ck z<3|?{l(3((3IO&49P6*xV*KLi;kon$Z>~D$`4*5atFm;eHMyKvEC@hgktZ(}m3+{o zpW&*T8oR=7w0jfrUS`D21%5q+1Nq`Q&+9+H9!@S)JSME^rfYq*uG2SgoHVcTzsr}?tSd*ec!Q4g*+ zV1Z5E=M?Ueyd}ib%3Ost{K3#ad$*=hWl?D0w(9m%UZ5hg9980bQ*JoYz)=1EI;Igv z9XEhOk)(D^54~jsencW?F+)o0oBeH+B+XBro*31qeb_KCUVe;lR6ZyX*ISJ6wE}!fv}6Cx9aj^}bjTp6g722dMHm`#yT${1={_g*ukENbs;+n6F_)y1W>4=H z)5arl@5Y zJZI?dSa{5MednaGzLyn$Mz9;t{`u?!i0(yVK$^8xo}2bH3a#1oUVpViy^dNxEFafH zb@l^q4q%fVSsDu?snAq@p4u-_{_K8~L2JMNRvINWUie`I1vnxuIjpxKS5U4$%IfM= zP+%qG(1qTd-BWYTHC)!DF=u8rf|hAnnapop&-E>*79GIk*iZ67y)%xj?hHIj@lb-r z>a-Mz1>gx=&i^Rx6cX5fS^JRfu?!p)Fwa9ie!xfy!Dvw2>pp_PbjWdwGSp{$57Rm> zX<*Uy@Xq0n(9411q%Vvs|4U8(cAu_&QmxmiC2}%1L0f1v5HJ#$zr7>Dc?-Y6Lc|zy z?-d$a6(78Ffto>;y*7WI9cX8~7(ipffvYt&ojw6P^{$?4(scf}Ta|giNlyy%LJM8R zj+)X^>1d(XAKK@DUVMqEc{m*)fWHN07YTD=q9eB5Exg=~UHvJRRh9kueB6gpSk=n2 zW0P@AdlYmtB=|{_UleK&oG?QGqRqOxlhaIwfq}t{xR$B?qnA;qk!rsiFSyHR^9s7N zS*nVvbu-xgrf=7LeLcaoh9#f-xmjI{`T3$xbdepLJ|{^%j|H{0OKzIZHyd|bP8(pc zm5`92<`ngdI@!t|@3x59=9@SIIM2*agDl(G06mETb0mP-=k>m{xFFMGFw{A#`k2IW zI`g02gXe?O;?ez9f?whARLTNcyYf3pXj)fefc<#(5Waloa(M5<@dzH^@UrIEC2uO#d^s&aa6u&gU8rGx(>gRK!Tx->1d$O-$-4j9>PSAeSLMV#dJ>e-$K!5yO3gu8Q5?XBhUQ+A*9 zuKhra=Us9WF!<(M^VL1|SO-5O`;1M8pyL{OM?+JXlREOq>Hc|IjP*h65{>|_$7pdPSCtGks){(h(Q)W2f8?1+ihttgGAt|1DOA(x`YB(j= zz91xof!vb;ikQSTh0KM@7CBsvwl}}$P&uKKFQt?S!PSA|*NiyHn4E~6=!0W7b=BRk zI=3=dx_K?=xhh>mN6jZq@r&Kv!1$eu`JWxnlMPtubvwg;)C6eWeS264wyUg^Pv4zL zSO#A201^>J=JqW#kBiQ`@rPXqESglOp2%UvQ;DeKg5ERDv8`0mN_O=V<}IGKL}ztx z^1(wkPn4%(Av|0S&izM0t-{~1Qwc3sC|N^X=Ewh_IL%@?waV9Ihl@J<{;AZQ{xtm$|rj6dSighW5}CVBe`i2ro-A z*`30|#0GXIFWfKLMx@F2mJqe`ySJ||pCiX3?P4cuYU0n!ju~NZojDS!(-LfZ%(olw zf=+tuhYu*Kxg#onweCp3KTs=1>p>lu>-ywI!qq2(7@%C4<;83OMf)h#AC3eJffOa;LDPZc-Id@N}6tc zgcxh~R-f(9pQ&+_++N$W;^U_2Ox%$+)i`TrvuQx~!n>mgUt}y@Grn;AO|$x>miJuAZRnhsY_;`23vV6j+^fd~fDmYxUa-4za3{onqfM=T)>PQ-5QL*DCS()3W%@DkdDnpw3sn#jrlqpLi1twodjBwNiH{;@D%_y*nz4Vlrpc#lg@edj>jd-@M6m#gF`drh)- z${A|thYkTdkZl+gB0(~U+b(vqjBmAPKSPb{4#8ne73>Txn?nKa{Wn?N3}e=y6I@Tp z+S>6*xddIF@3J3v-mpT~Jwf`YnRS|#HhMbbJ3dPVxpl1>E3i`$r|P$;q=P*i%WNPE!Cr79*)`Y#9Q0Aj!T4opI zO}E`ZMuF`moz(U?1Oxbz3Kgn7)z)2Tpp;?GG)w~x@@;;^N8E7%;e)bYQ7Y4XfBq$C z)uF%)^MikyRW>wmWOOF-uuUD+eOqkc>>np{gWI>sAtO%gI;(uzI^`J}5SJU8J@+UzG9jazZqXHwL{tlR6=9C*`P|5LCi01TkTA!7$ zOtLlI|cLmDt z0K1?Qg$1+{LjxTZ%7@k!ky_8rI;YDk=P040Z|Db&qe$Pf^Smdv@7dYjD^jy>F4uvY z^i5Kc9Bcd@L+#N5NuvXEw_;4JjI2k3E#w@bLRS^_+pPm$u4nGgD~wK$LeEo_=Pdq7 zz%o9&sP978z7spE;94xf*R#VCNeiQ89e|4fduetO6HrIERT~~?KN3X^7b5fZtIaG? z_K-0c60JW?_7A<1KcIfSti;%`+T|+yS~U>w-@F<~8Z@uxv>qE)kCsS_mRuGpL{c+} z&;~~NiCnPgqs;xjw}Ten6C+oQbnGfF1ZM0BUF3he0GkeFo-jCSr0R|$U5--v4%}!F z+}zKYh`lHfOV_Wv+_-{0sju#tHxBDV#nqhR$Y~EoHegeB<>}%g1uHK5c#@OG;#Q_u zYr#zvz7}pX=7ki|DlEIdn52}UZyK0C7>+-IruOI;qQ$-uHYf$g5Mn`?B>dZ_l+o(C z%7|}UPWAvPe3jthdEGf-tC2T{s~Xt>8Vft=04Izukl&Y)N(5lR@%Mx6XOYS_T0mOH zq`3yw)+_4%qC@7I_I=69NImf4J2flGB~Dub_913wV$1isATC?CzNY&#LYQ~aK_{u5 zO??ofHT-YcQ*qgZe?bLonuHyxvYPNLYtG&v0eIHBZ0-UR=i}BtH|Clf$kifi?6ptV zcm()2-$K?*#@^-SE2D0#w68t`V}JH83DMT1mKs~^ZIrNjQ9=`F>e zky_rjG%rHpC53W(;Wv$J(3|b+)q~w}sL-FgWXx~%7MkK(&qexdmp66%%J`~`+<%;& z2;lgrKwLA$a4S*Kuk?RDqq?G!Uw;CpX);Kgy@?o5+`I6BE_h{0nK{+q;nP_{)68sC_n0 z{{pDW_{|YKq<(t+i>56TPWZR5PXef~gP)Erx+>b_wqQ5e6exZaPP7Xh7=%3M=hlx? zv4}MWnCJzQR@qzGak7NummN%L!dun9>MQ97J8#9zKxuP}mq4K3=8A3|1IjN-h5;$y zd$Wy{?<+P*+9a+cpt`e;;AmFEdqRtBw+KS7rVGu{5ziKk3}2Hr=At$Fx1O zb!zxX*`V=a`%W*(7lj{cfuI-4`S@P%yr?A5t_x$2Jm(tyyUopUwXD^aYf9%jw8__r zXBYCd{Kicbjk+9XZKDkTeiClJDBKF@hjyO_WI8?`6#Zm3A7>r$2bzNaPnY_S?f_*-;2hCx5ptOXUCM*3|;*Z`VGsCb&c7QV#!%~Vj40F~g^*2W5JLN^3xCDIa zef$>ozy6oha@ygDQR!c0k>TQI!f0I&lBdWe>v)3eNU?PBEYg%Q0euaP(#!u^FJGS@ z*bd6d$%|j>-kud<5BM)0k9KBTo!j+Mly1XAiQ^f!rDqr%^8O2;Vj%Eriex1l|NbKn z^`oEpK3qX%;kUk3VXPMs*tLj&RKB-6k78lguXrun?%-(ZkrgXsGafUne%OwC6<0O$uurG;f`G!Ttf$~+WYjr`eIkm>t8@E+6dR-j$~ z=E!jD)63(?DPWK00q$V)5?>e>vTJ9)d$Uq>SauE$?WTFz9*T1bBwB zvpD6meV%N!le3rr7;BZ+e)_%qCA(qEPXw~=#%smaKspQ> z3a$tN$*O?cPEx$G8s##(n_+wd^$EPZ~|Z-@hpC*ceQDz!dS>w*MTMwb%p`AjTuW{cnsX+kwgOJWS8b6ZN7&ea`(DcBrxaU8k`c?=#cCPMSfdqO| zdNiI$A;`JnrvhNrb&{Gl2FkyP9qWq~#;?Q{vUr#;pzT1G?Evg0QPp>Oj}}#e>s-H{ z1pMD^Wc+%1Mp!-yl&%rl=a&G_HB^raJqAU$tZO6NhzYgYV<};Eim@yx=6TcjG@YV8 z^Ie@~zy=>pBklrZ6mHkV3v0vt(^81RHZEe1S_!S7cq01Hqk2mm%z*a?sX6L-P+kN~ z=f0l&*y6ixKD6D)~@~V_$BI!S|np(s|f|%gxdHBn*`&r6Wes1{VU^= zY#J71p6tzJyL0@Ea7uuvJKvf7FfIC@mhA}3P@#9opuc}?FT`k#ih85|g`Vd5)Ad60 zF1B8SeHc((@*WU?BC6eew`2I3Bbh2-j^bywm-aSRzr6L6R0LW z80VA~A7N>Ooy$vNQ3nU>R@{~guLJ!2kbBIA1z{23W^nDeGJV_BuyDrgmTf447yiEU zyE-hdP7ViDZjds1p8dR^rat;v-lBv|(?4zzOdow_uA_h-(n~&-R2`V^6xpx+`NsNu zHXL_3`TWr55pEB2JXfqpvS@OwmF9R@>U0D+AyLtV7^#cS@3&SgKx;{@wYN_Izh@ll zfQg}RoWDY*>35&Pq^q?5n#(CQE#^YhBbI^dlGr-s_F9U?JpbEZd;KfEDPUFQJXJ@ew1ESA@|^NqS+`Td3Kd7Hp9Ig6S9GiUt1Ieb=QD_fu>g{=v<+-x#fiPoMVyzF0})14ksx-f zz}PK;rR)1Qj){AYXtz}sU$UW>>*C8EhH6~C!V{qE$xgaT*%9Bh2{nH5_7e1yT$`qH zAts__#1d|Xh@Q0_F$20k_jo8R9b=+ob(_o_P-K&Uhrb+SsA2`7Y&P`>sP^P#t}W2C z(s-3tf2>XuGW^7-OZ}ANZZN98ptd<%bfB{v32jpxa0flsX#iuOypm~oE@?w=np?9Q zC{uT=HIDNq%s5A}kYRQpWHh%dH7)JV+4o0fSh4#{%YK>$6=K2Bch_Ghd5mzPJtoNz z>-cA!6P6~Q#XIZGGU9V^=d~|Gt`Snjn&Z}fy{NLl;PP3!c>{3@e-)(tGf4AwPC*8JG*yM-U|qd`m!f? zY>`L;Wq$*9YpC5foy*fdK)!<3UrwL>`6k{=)?9Yu_ccvvL_~2>8`5r9~x{LmQ>$U$$ zo&3~cuzZT{*-w&yHTZP&U6#I{|BoLSJS5(R>e`>OhA_785`^A&(BWGl>oJ4WchjCp z4Jp>b2#HRK;6YS=k$OT-KEo3cqsDBI$;YqG3Ml<2eJ}e+9i!XU^xpMFRgyM{zWtp% z&62eoUz!Q=;$%-pB~C|&P(Y?#{A;FY%tlO*gyeBhr4@yFzre5~)le$oP{a&I0?ulJ z+rDw=2tP90Ps;9;r{^oV_?TGiz&Q4}Gect()Y1%|8ytG;*6;Z4O$%0jSwDD;~!uL*N zZBA4AJhweNvFHx{B3n9zzY2RJg*v{1cYHWl?lbex_Nhlk?K$~V92Ay9?8WC8(M4%M zS4)Kw!-kaZA3N*){dt!j&d8zv)qB2PUOKfee(Z?`(YCH}$u3jovx|j9p_9fLcfxcm z^;o#^!PltapScZlnCflYEwA&!;yjBNL_jA);PfyPj?xnTpq?X!eayn|G@0jj6!56p zeloMz8_x4XFcNvxQA;j!|KQZhndz*M+}!K zR`2b8D`vLp+OABXfAyCR8#bd5nrpMDr)qy`Jkr=e@FIS9FaOZvNq2xPEP4{s^+yPj zJ-lD8xEx!ehHmTJcR58-MZzs(`iJ-9$oG^!L04*$zX;SYgb0GVTKK|5X_78@y7-er z@X6Zkt@@Y9dReIoQ2rWj*6!#>Qh#xI)IuE71B2rQCLeYo9s)@W|INZ zKvJvEt?PA2ggLi4y!S6?`T|>aJVQD$MvX4`4-wS6R(X$w`YxgjQV+%kl~Y#y*&pWWV5a>zGJ!rf8ggbON7DDu6WQq& zDCL|l^^l8jAVj;i@ZoltmB8}Ag4~s05aRulK9JB55)Wicpq2`u^@TxfeZUn(%tw;> z0w?8u)=T~p0`K&#a*m5L{Z63iMe^%7__nr|W1YP=wC(n)Ua?gs+k*#^1ZW*x>(&&} z6FWKx=@_CXGeV62E`4Gh>dSSX<@F|V3F<_CeFe8<-CC{bG`#(E8c%sP_6%3N_4YSrSVgh7`C2*|LtH% z>A){i|Jk3NsbiM&4(T9Y(EeJkVTQd2WzkwS*_{$TZwU*@aA|(f!$Q(8hki&6hb4!f zY9N(DXkd;&sOo7ulsQVoo8f_P13!iXfs)W4BNf6_8tHF$!c{HBqWdj4FHtZ|j-9+> zg%ZIC1N+EWhyEmclU31MI(EpOec%lcMhM%X{dKo9l=M77hmPuSRoEpxJwOI`Lx%KO z0lmykA_sdc1&Ksx3IUxsQ*Lf+tv$DGln$=;UY8#A@ zvcn%*P*G=-jlkg7c*1tK6P+vYIaw%SJX;NFhLxNH?`dw48&d3dCQw(Ok^Ef&n9A9| z7ON+$qn?dDvI0ny1bPvuuhxESe1yj=RNTk*9P9Y4-bgCdFTexh;%MXsyN@*L%zqb5 zr&fy3*b<~Y1g2#5)hZJ7&(*UF29-S+RDe+)!Tb0fExwl~^k+6H>s~o^VjCCYtp68b zlOvw_*0P!h`n1Kn#=w=~zlh8YCkjq4-~rix?^k-~j7T;?Hdfu!4;AB#CN%y2k|{RY zEW=3xOTHVQI*fYkzjJg66P|0FO{Di}fWq7!sF4%Y_rIxO^PHBlKx(ySdDHHpJtDor99zpIJvRRV_shLWPY#`2C|=*Tqa-7@)o zCKd?lHA|TycMd`czF6Sd=kH#h7S<48g`!~1sf}|#vX~=n&lno+5Wz2)TbOxmgU};#&GZ>7@y#uVbQEnDBs-JTbO<7W78Docp`6NtP+g{yKsHMTj*TW zq)7k7FRWOqgcXv8h)wIih0w%@hGl6ZtntjNvKENb2e`(c*-iwH0y$>0OVIW_KUesE zve(_^zYUXXKh;U&uujI*7$t`Jo`Iv~sHA+;USr>dgLRGRBWl>-q^rit{!Wey&nFt0 z_tw<5B=Y_J17BI#!>={HG2Y(_unaf;hqkTkiXGe2_2G(z@&2ZYgP)(=kInX-^jv9o z^$p(-o;(QfSj-^aKx?+DQaap(+H;GhXKkk~g-ZpH6ez~*HLDXk-PQ*86EM#)Tb=&+ z$^CB!``$esbY=n3k2Aut6MCGEc|XOA!FG2>8F{Vc8;fy&WcX&a9yE|C?PgGK9#txe zzTLA3S^hWxuKAQChkowAEvSPvAZ}~~$Kj88k3rvx9v($06Yo7PAkBEkfuWSbh(wB< zu6Nd+EUp}%Q5odaskXLtc?K1@O|_AK`vOjXZR>GNzn^fH7QgNtmQtcr{(@Fk0{V!- zAsu@I?#KEEdoOP+=V-(iTozATI;Dcar7z!WOgVb_-ms3Dl|G(B8Y@Z`^s-N}SYw%B z0|A#NQ2So##XnN4ry#HfDuBI6!v*N2@mDBC(ycK-3dQ@{ zB*-X8{-{C#*(wqDcVz-i#=@>3-wEXo5n0|FP^M9&N4AKv$ zLnnJVEbUPwEL?(*CC{cal)ri^0iNZpwqj0phpaJd|z?mDt|H}tNx z>Hedj5(1DvxP^s)YfiR5CQ;+vD#E(+7O?K=x9^C9@#zFYvh4_lDk;GbUps*1y?t5} z=*1%4li7W=qB}Q{L8I7toBq6UP^{X<1Jp@94hmBWzSMSm-(3vN)Oj}Yzn!+T-DG=> zH^L&kXMN1Z5R;UwouynES`@%I^T*4DIzsqtzO)6O4)&H~O-0H17)j0%JfSu9A+9!3 zVHne>!Xe6m@do}&k|4xjRinzUJ(lC_dBS|pS$mseMw;jPdBU|7B+t0;kB^CozA!q6 zrI}a*L)jScfv^$aj?kw^AV@Oq-=&7Ay~+csyt=)Op>rFO^MIrM;zwP_SFqPdws$8U zlU=#RkGCe6ak3P;gzfw!S%|4~ zXK4~GKOp0>&mZgY$8#oRRQV;2e0cp(NP0;7%aU1!0f;0vm);FeCp(8N_e|KNYQLfNc4->K`y^cPvDlm zU9I3x9bU*!6qgshBeP%YSR9yR0(0twC}>XiV1N8ci$>GFIV_LQNu!$=x{l?)obMj( z3r1;&rEk@+C3(esyU!IzW;PLU)X%K$?ZmDd!0U5gox+9nQpNfp9ZU!WOIl&4caFC~ zuA{FN);#oXo7^~V8D7VDM?p`(sOz(_?1k}pjEAq9x1@iQt!-UJjnXaud5;v=F0kz4 zvX~4kl8YN$@K=KEkaLVR-KrQ%zr&`ULW#q^G}EK_ntBHjrkZ7TTHF9UUF=W+O*YZn z2cU=1*qHhywiE7kmNYtBzO(4Q8dq=M zI`}V!9mN7?l6B;_PT!m^XJiXZtU7$|FYmb-+WTO3!kWYy1j0#5KR76EmV{R>U4S?-mFnCu|J~*6(>dj{`U( z1#SZ8Rq@FfL!U+)4wsT+zt@Ml$X8$Jwa~=?W;^!edN+&L0TrH>GTEE!%gv<@xuqZ% z7Z(R}uEbZZu>p#_xvuQB8rgfq#YKe7xk`tTyZ4jqliXs=9p`=P-UXjO&p}pVUjpD~ z0FZxZrVH@IG(@bTp+;%(dg{J%jgEUHwfj|Mah$>PZ+o+|ygu;puzlpFGdY}?(HeR0Z zDf-)Yds#H-06)&@S^`I6iEyhs_bC$(leFuqST2sod6&{pa+?0zP7%*s#1$AqGRsxx zEs!DrhLJhm4E#?>^($1yF_ERwIMBuWq43`W5O_1e8)8f}(fIurU2P{QCQDXzsI=V0 zbps63NW0dZmXs?0m@onQ=XRXK?WH zAMh5S#NGa(pirV|(FEODVC}Ik8kD|td$3+uW{H}e||LZl#6|_;PDz{AXvuCD+rEX10={{0=v>{#kB=KW2B& z`H#CPn%>!D+(|v39bZi*Oa~(1feyTm=F+sN_Y-@e6?AfBO*qY$h64!vN>6pwy<29O}h)w<$)@vwxs3lG$D2mM& z!S^HEk+e7Ja$uJ5so;9+Z`c~;<16J0r$*%gYVLjq&Z|M(S(ZKTBQMUasQ~P@Q1ORz z`Y)3qnV4ZL?UOncX3v4y9r-3JwM7f%`^D9?VCbAPHR%;?Zuw{fO)wB=cL1Ct>XUhC znk>o`s^edHZ6HngWdfsG_ ztww*VVe|<$G8xP^Gf;gU7A0>E9ZRU&StzSf*2p z{+_tW8De%CStt(cht$HHYkP)4O#X0lRMWV z5rm45B9i$|Djdz3nPyJmAnxF+iV^1}z2&4pNwih~mV}_-Hc~+fPdt>0?Itr>$I=bu z;&cj$d7Y(vxTh%b1Xo-iZ<)(VwhzbJZoqvZXr%~bT~PFogH?&^;Qik&z;6yIGqYdp zYg#!^J3~Y>HFT<9?bhhv2l1%8Q=VID_`%O$4Mtk)ga{E=6>Vj!2&GV65X$>k22$bm z=%ryVlZjXYy;yz9F~JGW+!j{`*!%B}Z=~JH+})^i%QZ4^Eo7vEusDn-Uye~PKgM-u zr6AH`x9EGUDQMSMsFsD!%4$nwvsZUDO1%FUUjy)O#Op+r)Sa$}cb4y6e>F5>d^=3M zWa5;S@aUh)ehZT92qO2A!=xCO*%n?q0*1w86>F`>28n;-Xjw9RRD=5vM8^(I~ zE6ZeYhVpVJG#qNz^ga1_)7)8}8<9k5#py826~SqA6x{{?DM+x*W+34102o%qRDG^P z->W)Ig&f-I&C^dbrmBVCzYJh>RxT^s#0Gj%vR4< zP@`Bm?Z-EiWIe}-iO0qaQPMz%IhD$`1@@T6RggF<*uSk8x^V%QZghvLM-zhx=51Ee zl08=YvuPmRqCSiXophR+ReX?&Y14@@#VK9ZK2Q$Xg; zX5RC9Mxyvrh$6*&MB=qwQiN~i*AyRbN~2nc{`748A*5U6mG8ErqCksRr!I;K56;ES zHrHzhb|l!A^YPPa|1{rm7%I}&wMBRRqx3x!_xej6v#C_K`sDs|`H(?RgV$E695P`E zKKWDnO3in?6>c#4@ECe?)g#`LKbe}Z9JQ^5Q?7o(b`rC)eIVX4XUeB(%Cf4!(SC-4 z;&m39fA0&tDqzIFA1BHdDNvxh0;PFbcUid0itZKFj z^Jmmbd=^N=41)Hy*a#qv^+a}e>W|98=to&0#Aoz+MhqjV7$8|h0fAN&cog5TUvHU6 ziSYENHq=3#J};-bYcj&jaBL$KzJp>?GF=FRXZV`L&jI5;rAOv&)yrPH&Qy97QCf&w zx)?DtSvUv|h>kJw!=?8!ouls#vtgu4yFi%*WqISeJ-Q@$ASyIV!G%;_7@I0M;Q3vM z+sdY<#c~7I?1vHZBbXW92u(84q9q+6*WuR5xt_w9kMPyu9cUWN=EM=)wV_DQ&#a*A zYU8M&;Oty(Qw8gkbO!H5PZ-}1gJzxREY|%6gwRpi^lKWAR&5wdiK;B>w}^z}>7`S> zyb$Ve8Al1onCs;XU(QM0)nQ};R1A^gX#SBUNl<60c@41el`%9%zrr7)cvrAT-Al1eqVMS{3EHlER;$0sr5R= zR0owch=Kj0oi>-+4;|6LCn+9_F{H!#@X*9Hks~-e1U;PhlM77fGW_T!M4IXyUyadG z&|%Zj2OFp|Mp(LHaJpJc7HahlbUAky^OQbbd=G7 z(prjZUS|TZaKGXbCw{*7Deb9mvHvF`ANX$=n-Bj6<5vbM!nsAyQ0cAEdv8=IQ7=jW zxm(TZ&6-}52)Z@McB@S1+-ny0IAMul-bWjHj0uP3O={h^@hnJqKjXD@6#CiN{W!4O zKF3J^v!R=70haF46n5&BI%Zw91-}~N3_YGP0TG(Rm98Nb`%{;WE&B2>|5HzV)5=CV zYlVt`{l2c^x*xAO%&LITM*L%6C4*K;u000ReJrP4wd_*vgll+2&?!BW@l?4etj`p$ z0dFd@OzR?b>QVVVou=~P2f9w~j=Y8vl4Cli%sd}U0y{=mHPwS?vT`qG!dgd?wp6v$) zUybld`ZPOd5OUmH+zL8eTyG?73j>1kAIqKg%)SVUE|~AjYXA0MiGr0tIHINaVT=dM z@O!?{(I?Tc=*7Z^R998{XKr=AsEX6^ZlO_?oZy+B$HgE{R*g!M_1~_1=p2qa9HxBk z+yz^>^$D_@qsUrr^^M3>?XaP=Okl#kqT=>;Il1`}`01Tn;wMd0(Gz>6V7AB1`NpqX zfmH&P(b(f&y65o>=JFXhnc>dnSd<#S^7efQy}8OfvzS!pkb8|Ms~vkSD_fE>vY3Wm z_NJ*z%R4&s1gY`3R{kd~{%=9&JB4u%JZd8ky0{^h;{MSs2EQDMdvK7}C>N5kamK9u?gOtk7b($T_8t7UzFcIOYQ%FK z6w4;3j}s!QtC3<%G9#r6hB1n`W5_)0%ZiBo-vnyPQcTvTY?9+TRNN8BpYAAY6U3*v zY2{!7+~@S&N9v)1NBTy5F$6T|hQ6)db>>l6Hm!yHm%|jLkjVj-vzBvF*d%_3<`v4& zhhOMjpAw{&|Nf=SXR7&N1PH;qbapGX$d-vbOh@(61@Dbu9|i78@=arGo8m6>$XlNZ zQ?@U-))E1OrTpWQk?cOZbPJLa9hbV#AH?z3347Dx759`wB+P<`{Fv<}zSCGQLtmZ; z@68=Wp_c}mN~6gbL1a*yFr)Z3@NFhILj{@%Sg(djUWTumIT>Vs!^GG8mg(ab2D=bL z`pR67O#g;`WMfqpXJJ&?jHNsyulEC}Ab&YHMieIn=JgN~1KoA#&LY2D5PU}nZ>ta> z(MlMwIYv7QDmZGPv;=|wk$Bu2nLc{wA|OqD1t#gN-~_ps>bLmSot>FxO%_XL#>6ai zzKZs*m4+;~08-l;FdaWMHmXcblSu+BqwNq!0HKXfJF#Wo&E%z!nVM%!C#2UT*QMQ} zw3Ly7DsGHDvKj8Sn`SWzkE8eDnLwC&dmuH>DEQGtJ{Iw}nMgEf_qgq-YDE0FD=7)# z`}v;Vv)F$qSF?w^woVDr=3`$@PR`M0ApU}tkul8yt`|EC){3x3DtcP9?Y8ZeYBdT1 zMkAJgiblMEeS)H%a}@srFf9~;c|_66qX%y`7#G%0@(c;fD6||^2|$$0XQHL|1KL=jLFDB{;Nx$0 zp5N{uA!H;r-xH%|o@Nkj8qle8vk+%ME}=d!N`d9SNcNGW-xl^td=l48XrvD<1RjLN z^oqmZDlBn8Do=f`Jv=pB$ExGfSW1w!4Ov!B5*N|C&%xh^{J(+YE`n{b)@6)s7Km=W zN$%B$3R%Ug5EV`n7(SrvVrs+GIQnN}?T!lUOTLqtvDIm%aX`D8ts!`}_U(7=Av?!z zvB>nxZAz(q>e*hx+XW4izlq;~*I`V)MSFKet|qt!#DuL|?T`xv-$gK?TBI zHWXWp=71^Q3n`TLp2nKkFZIlA!FuzVD46xznO1QZ&y*nRr=(I8r|)9w(=R1noA!AC z>5BxSv{QaXjEF6M4Ah!vw0^MS+prz9dYob@0|Pg#r+psvsU(f4ly zs1h8Ul9ZpAWRa_`@fgmRF70z0itXjx40u1xK$}Jb(`r0*O%hW15bDLR26SM!1-p%V-SG zYs8kUUbVoY#TuTpSKE}8C;ZwPlFd13j%j+4O_3RDbG^&}Du@Tot1<>Cv}eQOjKBb_`&XSU@jZbooRN(RdQ#M!UMpS=IXu=u9%oiW^(&KRJ~BombkCBZhybtoe#5+L*<8d8t5oP|TNg&gH~^BWjyatCn-QkhCZ{>=;g z0ya~r*UG(;0Od{&G%|n%(ztMO-md*(540+-n8@=OwVBo}e6#?_ z<5a%Yo43;YdjvFJpHHjYd(nvFKtKHgecfuB%UU)40)4bUIXODdF*a4rYC7+34_@dM zbR?w~2VosXEDA=DgRJvX-Z_;%^hq_|0Yo9TftRe84QFC(>Ev&n|6n(|kPvz#Zx|{A zilb^XXZG#7cX{|x>qRH>|8RG;0I1hb<{Z`x4Ok+ZYi6iJp?bT|vF>W<)P-6#&$s+` z;|N$IBz+wvD1W@SZ%*AbIO4O5|HR%X;lAK$X{on)( zigEt-cPZYBhK6ixYwNv|`1XOztrWx`;d);l$ba@rm;D86?d-|BxKtAxrlkI&l0~$L zqme+rr5@-EQBpR$$griddP`w>ab3+tC&oXYzP^`0EZ9A=9L_+-aJlRImF;oT9(fSa zawI8EC?1axq7l#;a(Sx7g3;mUE6p#H?H95NO}pVvX5EifDCRbgEd7w%^1eD!9B1g4 zbpZhwnwGH6_Oly`o%9xD&@elXK=om1qEu4ueN!2Srvoc15`|W5GCQ-__|KuXcfh zh#c5|$rs6f9;kgeKjNtKg2!n7R{AMa&iFA*EmErr)@TkfUtm5>mw+R|Q%htJ9Iy^t zTglRI-qaw)kqkkab(MLs3YiYy0r#^MMXOOe1|`oeq(Swx$cN#w^jRHRps%%nGe0W#4yD@HLC1&kFP)<<|;qlls8Z#qJoVe3WZ5)GQu~aUXJ(?4aD7Eq9gafliKo+LmGHO zTt`wP^|ng4)lH{vmFAN%7c4>Z&JS!Rsj!m8v0thI_@=rATjv!!&pFlphiQmXz>u6~ zx-HUE`cErR3L@da5;T;^P0lKtuuvz#5|WvzW1qq~4`&49u2Lc4+m*3VOG?Bl;=IJ- z{zy9h`oJCcZ#lx}@u!Saqf9R}2OAO5b1L45Vc(-3N)G1SC2*5F$Qe~l$!6}2*3+Il z-}KA`W{#*s=!jL7R}t$zAL{)b*u<6uT%Vapheen;@4D>m9QYd-M%@IfuBt(bLo0va z_xUO;TnPjhk7hc=w8HQ;Yh-tFEE0xCpPKJv_EBz66!u-ec5EBLqEKu*4+#wa^)^CMR$glu0bN+l!k_=sA8)9`9D3)gYkenl>=)J5_s|IgJxNl(a= z4p@(m+>J<7n|77w+)#7&>F#i<#Veu7DQXQx#2`$|ti~csd!}X(Q`r-_n^`U~^#Qpy z34WWagcd9{!$Wy_+wBJGpp3HuA(i@@56ib*=8rzoP}b^MuWfKTpwaGi#GA$O}K8&FcYtR1IvzP&ikD^dcBy8O&{NoZB327C|R>^ zk915^nMN)ZF70}!YCL6Fdhy}Ho(D;$)ahHI)5O74=)aHR7BBxj)>hD+v4{L@dwDp@ z?{aF&`wty0Lb$^T!shx4NV*GPEtg}8Zw~tOHB{2lt_Yh*81OAIC(s<@3zBGyLo;^H z90X`L5qkstKF_8j=!lkmjPCLlAlv-$0EJvh!Yd=#3It0AOg0c9LqL%NTV?qZ{CuCO zwAvtP&&wbzHB&Q6#84H63FOAjEVNJ-R@S6Z3Y64mTT&Ux4JIL>>MwNoZh-b8!(`%b@IAy=+7Ne--~JQ zuW)i|KjIwo;vnoC;f7v<`a;_ZS9=MOpnYXVBB5p{Auo?P^H-mK1p=ikEcxBV@F544 zIx$pumVwJ?!&?TUaPv9iHFFzOE^{-BluwRI1~-m(Qm=wO&2SO!KRI9gXVA$W{&;m) zquK^v3zKbN*;;G;4S}Qw-mz}jeuQ&naLfj)4A)H!1R}wru2}SZv<|{?5rX7^$ zv5;B0)IH&O5!yH0q&46?s6pLuHP8QAR6gLYR!W&)<|uNF>7zVtBwX5;{}_0}bi|=z zg-gj+_Ava4a8^k0`}anguK84ptJ9tE2Y$(rkgCSIqmVyJp+PTia>9`y@1e1e!Nm%V zC!+=qId}J+^6Y`xH^Xn9qfX3W=yx2VceTetXIQr{$kzg{b!9euTr*p;E=oId*}W`;ygP zLF2slTD$!A?32%NE^pY)d=bfJ96lM89cJC6xMp<)9Go@8P4+49_OYGg3YPt%gnh~g z^?8gsp@A6#uOZ;D+Z*8_w=KII+sTHfU`M_1iXnQI-&T6fbE4!3p1lBYAnW zQE3E~(H6&nk+3J69@uF3M@pwor!q{mWY@Qg&1eh@&z0H!TR>~Z|Mk{CU9A0TN*<{q z!T$d}oBN+CUhLWPMiBN8Y_U2oAeW&y4&`&8@Wzxq>Y&wR9^F~HIvijVsi594h=)9a zg{#v)ih#dKh?mK<(WsE#AwubJ&-D}%&;)w~aGTWp;5wk*7mA^|LyQAI>8asP!!A!{ z@ae$ZaCI)1qx{3Cez!u6uT{gee=C&Tf0fhn!+pf$S9qcaCrRjRZwFa2slV}j@c9}d z5X*sv-;12{hjIiP8982uJbZlhp-5TdK@RR48Bg?iEXNS{+jeFhe((+VV4-MAp}Pe2 zH=xZTCbW%{icQr&ITRVW^DOqFqKl4}D-cIDq!Zuu-JN&IM)8B}Lt^sq85kae(KR&t z`7@Ttm2&-w)jKgXy7;9fU1H$a{mFdy^S$HbJ5OMN7Hnq4k9&2yYC$S^z7b>& z5J4@E2Y!GzyRys4oX>D@N z_V&Plgp>4R7Bqyt?ao9He*&e6%Q*0W|J-d%2+9Jh>!15FtWWFBuK(T}&g>)B+@q>5 z@^y!Ka%v1#==CZ4-xZ%~;m3>N_&u5UU7dl$JW~5uUbb#~#&}=l z0=6SW{R=v=1hN=|uYuq6;(26eK>;jbp=vjJp>3fM(wkZz+s7f1TbXj0E%#s2qoX|A zr*D^RW?OwxeTrqewQ@ymF=7UQ{~Jk<%YI*3&|=*eb00o7syx&6tkZe-U+6Fcv*y48 zJoab$3!!;Nsu_SU*sL1frrBW8Ty|)G#!#Pwn&NYWuto;yRwV^o8D*2Z!+?x5`KYXU z%!d(WVxyW)etYBeR|ZtX5HKo%OFmWcoia=!=TLkB!p%3{Crr{xnM;^F2qV9hvPJWi z2kwF0+&UWRG;DODGCd}|aj|wGbso+>?~^9^Xfjc~T~-5@e%d(%e>f_&wEbH{V6z>5 zy#b(61h;?zoDATpKDBT+A{9=rJ1+U$+FY5`yKpM7`MO`p+nI84i;;C}pafXIMd zg2BNR&9GKb&7Z9CtYXLZirRi%xUpYU5=611-#M!47K^oCu>_*t^bh@{kbxs5MpzO* zfygd=YE+u3*Ic0J!!F=Lnd|4S&0dMIlp2%;8^FTv=*1nKPvphGzjB&a08cW0SDy&} z%Uh&;<$ZY5fBbCgVV0(1XG|ZqC>ix|Q$FD^PS0uVf+#VwWA>VJNcZtvqF18=Be+iQ zEQHq)Q$B^JC~bG&bzd1g4wH0B*BIdq{+jT=L4q+*m2uqt?Gn_vgej@u2>1O~#x?qY zwQOTHkfPmRLW78M|IF%|*ajETHNMS%)w$yU|K2Sz2DZIf7rN(ZH?Gjf(G@l2Z)6N#_>QbPsa}a%)mZVhMw~Xr}LB2qlV$!-(rs7 zCES;>550tq5VjJ}?VuOQMd@AWxv97IBbz5vMO@?N+0YlM|78J|I8bQo5Soi)bzu_9 zpQNuEVZJI<9x(1YmcxwUYHcNmq>jJ1vi@%7z1do7HiwY?t;mR!6ZxLzZU*-+^iA7! z?8e{o3;0CeG|T(>fZ;`)M|{#jJrkNZyvu{7)4MnBfr9%#u)8zt*I4ZG^0+oPg7SEs zzRPqm)#6z{&fI(lM-gLR<|>bK7=D@;+j7o4Z`?Hu=iDd33@SYWu9P6*KXVCP2@}PP z-uZlpLI-d+PM9|so-~y6Y0}XnB4^CIycnv*qWHd_?<7D=CxD^6!`y32$8s?UPqXD{7E(1((2Caitz+W}pnnZ6Lr;KJiQv+aj-s^KI`zq^0=DgCj44X-xcK7O~3 zFSXh@i0o^CNWdW-dO+B~FQ94+$!-T4%I}Mc%`GW8I7-{^IGMHN)HHtnSn>CF@tZ;V zoDhgnGps12kPq~WOZ3_eqFZ)J7VSgHF`l?etvFN4^v!o4u6J7>)1X~AF(MaXWPzDL z@|17fZPrijfe&?FV(fvF7^~5#p0ZuIJKx#?Ku;y_r)l7WV`0_f)+dZ(fXF7yO$j~7 zrTB!C9rkxW$;N-8QDQF+-krgWUH{>JFTT~URrb5sP1BLtXug6}Ib&aOZic^d{K;yst^Ngd8Z>8Ohk&Q z@$|zw)fTb@d>Gy_Y%cDd`JudJ<`nQI#d!3eIo2nakCOp{?mwcGM^jx!cEZQ^we_jN zB8p7RI1nc2)9`dSK%?+vQi|iRv9gF zaqscKFSMTbxfYt7p8Y!KKNG^s(VoMTJe(l4TX_w-T~F2jQm zaw5=wr}lK%1$(=$=OquV0Rw5>)A^~q5!i>eXqslvTP}@&Df5?^zuBwX@%;iB;zD)O z?;F)Q{#$$7L_thU=j+n?G?C8r=tWD)RG%@ys&Cy$#N_G~1215|d^h^ZO{E*Ud42EF zj39DJWb(F`aE2^K(@?CRFCyMUg7vEwW<%a6$=Jg#SSQO`b;QEjetxqWRcHN_m=dX* zLhg?bN9E?DR|iPZ-djNDn+chm){@Mtz^BP7A;a%x@j$INYh2j4A0CEx6R*vWnoRU` zk?edCfGp=?Q~cw9hVlSD7*aey@bJ<3wCsz69h&hh56{3PaIsF++JtzhJO@G&z2yp3@Vtp$Ceju*r0Ep6|8!?#a_ z+32Lbq5izK{7G=f<=tQ&?6S#_;2a; zWRYt82)^Gg2^xu$Tu4<$_uX*8-E&;TJ^3UY*oggJ+mxBW`Kez_xSbRH@Cr1ARU?v3 zZl##sYRscOV=znfuF%koMH~Ai{uz)*(mY&KOWhZnLm$#+; zcs?7Q1J($#ridHhd@xjJc{jX29LYIDY>r4iw<&2;V2T}p$icjr$WX6FTBiWkf7WTA zq_EzshXwEGku=aFmOED|D8Bbx_L1IlK$>XG8xu~?Fc!<5_V>kaVM3jG&(7KSot}X! zP$$Pz{akxwxSxH*V+gt;Sz-87jR?EVk??_+YrLcD`IIhA-py%fn9IMNiIqKE>a`&Q58vxlb3H z4H;BU>elh_jRnEEY{E{6z1+Tf;J1Us0|s&rQF7TcN#5@d!`pX=ydBYQ=@LlxG^*Ai zWg;l{)sxS2taL~?iz_H2RpLXSY{G5tSY1kZ1QarttaOGc?_gw}T>r*K{V8V{cp2>R zqc+_2h#_8oyLBDKq!#3kz^JRb$c8v;uvR5zxiFBm*Ds7>I#03I^5=GdiIK?bKp6XE z(e7*J_HI3?c6Q+FKKeg+X!y>m@ZI|1Y4h8!6jU^1O9^`22Ew?~uf-fesWpiw|Q zBpiItjawV)zq=?hM@{vm&tk8SHJzc#vveSb^BrBdQWb9uISzwoA4GM&{0syIJ=PSi z#ij4n`$OsO72Km`9N=wjIp-N;g1tdv5`UM!2weq}*<6$l8rCkpzXDfSB>&cg&+d($ z476p#QFUc6Z_tpdFX9*czA|nP`T(B5T2eGy9pckzWt1*Lo|mn+m$aI{5HbqkG5YyL zSYe<1^bPG6NrcOb1dq5%Wc)T~dfPsJFT8ciA}0b$Ui>B3{!^9?!__=A-nT;(k>iGB zl7$shN41@L918Yfq7%yJbThTecDV>$1LLa4u;EnzKl>Def^kQB4^gYh`kU- z!CzmK`f5=Qk?JK_W47za_m!?s%>W!F0m@5utk>%PI0xJ;1Z_nx0m(K?=jc~h%gH~< zlSTjN=8B*ze&%@HTs|PL_;B7u?Ld@&>QTiE^`w(}(QD@{OCe1oc$eY{WS z93oa2D)#E?mK0oeMuDxq^cL;A$^z!tyJr-5XYg%dp&bX7JPt?n%X@@qsFG>5$DMnC zJM5e;GXsYMdtN$jVDyqS?K4$Khbex8eDS^G8Tf<5C8h3l$9OA#7=B$M{#8#4@|(;1 zQn19_94T@v8bKNK&#NFgPGN(KEuR^lXH9LtDpoXKNuux8>g|ikgKBIx`^3@nC{j66 z0RHp5M@RY;wyjrbm+NFq!#6M;(O0y+`3`o}ecB??dtevcR|p+t*NYUPzrj|!hzO@d zK}To_TMME_-AdAd`Jv=oPb9-p8MH)z2u~Acus-n>jz`>)RYV4{)85S&{$5>x7_3MnYD1P4_i(!O_S!AKg9;!HA?n=TLlhy*+2|L9A?N z>p;}^kyM}@e5pHY75Gr3QNNFj{4^FwT5By~kW2=DQj?B4wCB$0p4hkru{eG6z}1Dd zhV-1?-j23q?O>B&F7Fqs?=G8>Mcx--BzDHPnHf0!bH{@7N(D zKz+{93PJiVK2K2a!$A6Y>xbGSmaVXD=@Q7Q^!>KsJeq2+D3#&UyZJ2BVeRLb%}uy1 zX2bwyH-9#EW<_I3y2URBao)trM+KYC-8{JB(CsUoZA1cK=Z% zR+5)P6kK=Ov3{IfChp52+C`{zVjO~WSNdSK|5sD!3Z5{IuC1&Mr#fiiWsg)WzZc$R zy6Z;xNd<;*+ZP&zwtMh|n~M(DPV)Tu&U)bvja5U*VTX4dOrU>L-Zf5jm9s zE~n}cIIUy~?-CfQ3>QW6c>AN`iSM-r9(L1N7kWsp4`zmU8hA` z)c4MKQT+=uvVmXY{n<;rJe%ynp*gT-&Y$g>?<45nR@5t&b^vj}&+B+n#KO;ys{%d=jI?>kGXQfrNWP;)fh6ZFb z!plA_h?t!=5bA*L1pNBR^Xe*9>d1Ly3?BDsJRdSW;H2GN;-rUW88Xd`^2ggA?T2{r z4-uQXvo5X;UrahsUIF-w1OU&@LTY=`(5w{zN11#QdvZ`|J6hxwg-OW5m6u9-kEWkheVI?}C zqQ+t|mxGD)8{4q$vCQ>Twv0u;RLG*p$)Fw>>z5NO<5zQj^qKccq&O z)E03vGtD+~m`NHiJ1 z(XIq0QNeN8?$OspHakn?Z=h08mBGXQF1$e;^WsVlXh0ef%j-AdqnSjYKQk7XV!XRQs8${vxjR> z4+LYJjF7u;IOph{cRpmD23BtY@PFmMl7I@EgTEi$L8B7lTMZPH6wCNEn){Sq;|+gc z4I-6y{rm5YGICna4Z(k03_}8_9~nu*U${?=a}-?@{m$DMOWq=n&j}v?$ja%@;MBSN z6q;5|Zi!4Hno5|;T^HV{-eCN8BE>Djch1EIpC#$ua$QnM?abu@MjyiEqd;{UhO6L8&Re!Hp`#Q540nDYqiUmgwYyg)0uqy_ z10{bsZd2$~ncxn-CqRsv&2%E8_lkWT5yX-4C;gAITCD6JN{h!mc%vCBWiBZO=Oeml zU^tp$Jl2h`k5JOU$F7vGZ6qraGaX9)9g}zp8+{@?c_(I&|IgUd?7#wHqnl~Uh5dtJp^sr{8h_50Pm{tU=}&6FiWDt1K`Kw8My6t*41 zOm>5~_xle13Dfp1Dp*UNmW`LcBS)HE_bzsjvU~w6q^q9d2*UlNNo3D|aC`eOaLgoa zOet;;(r0)k<+0{DILu_t_Z-fUi{ChHnCwt=rgTNPPJ5^aE$!s*iop;fTJR&|6M1jn zLyVTW%R-2>(c}MVp4eNvg-kZ5e}QLCLx#G{%r?O?lt4!o2EW@HkN$L+%@O5Pm5ewD zt)}Bd@|pZ^w!J0La%=dXOYr^jO0p-&3kEkdW%%Ub)5Vcf7|l$Dbu+|VJ^&!AR%IQp ze^8RG1|mHpBDzf}1x`5#pHzWAvWTZBCtG$2z9t$~X2!42|97MJf05RJ%!Ypu0<2*R zK+>6kAqI!4FWZiB!(c`pRzC|j1DD#tTk3IvlDJEWXgSM^P@zko5SF-pyk4S-C;y8K zn9p_2i+x!k|M{OMABa&WmCQ4FW5>2&Q(vy9{dP)SeZK;mk}_MP9D6RXCWvgnP9v(A5~RJ%BpU-`@#uX+$^)Jx>_bXsCUzQUo;qS11Tud0x?d; zp;`C;fbEO8AYSpJ=!KT?%tqR_rpx#yBp-!iE#=6aj71WOjpl$~SiHlY`l@F=^3&3Q+0iO6nY%}@|ewSU~6 z)pB2w6t=al`YIzPDSB>=O%gIeX`wv)4fp~PPG|A2hRM16VoeLA3DYWevkHcfLOpI7 z<$grd^_)&3@el(>4)?yj&-*ucl9u8~*~&WuD1( zx?jL&ZgD3bHb9n1pV%^cW--Y0m9r#=s$zR(ywx@MpO80nKRrbKI`b zJR_bmWb;GRZ?A7b5b$>cMY|LXTbz!&0uv-Z9A0Nlwtzcd!wpX8vo1$L~Q zOfx*4w*r;wJGa&%&+s(oEIO(-lw&5T`?9gnk*(7EO4p^gBL@sFwre{e&P1-Lj8van z4J_WckS|DsV!7(OJpz~~Z6RZ^bOfr!mzI5NEL_&N(Smdg#LGvWmLd-<&aWqGN?LU! z;O&*m?5Yj_w<+#zsfHwca58+5*$eA9oAOLX_Lj4j`!5ULzs9)wXV$iC8UzeJkX)gT zVI7IGwCmmK&M`b1;HxL-**f2JJO8r-%Cyn1rzUS0`y*|B`zScSrmEeL5>d69K4BV& zL#uGBV?uZr*pE5KNKjQh26}gwZrlsYFxrzEyG|M#-rvv!npqQ_w(h3cY-_bYXzah` z@_!mn=x9gO{NN7LzN`WUxmq~JYW|D&_hUh%LDmj#J6bPsh??B#7R`6LpR+#YJj66{aq?S}Aa=<{hUE$BC zC*i-{IXD8?@rQz@FV=|S&X;8UUm5zzAXQbWU$1YTZ3SqtkXX^!3dG;5l~RMo@{#>I zWYJtO(Y@YtL>Wm*BWCZ1}fP=D$T$kca`@-4&xP+$tc6%13-wW&Kb8G3&mCBGzj#iGHHAAz~)DvS_4Q5PC> ztZv9uj;T?K3ZE->aNWu0mmQ5nG8(B0^pq+h-DEY`TC@Cb;g#$l6|C8RqCdPRme^f? zef$%Xms`>W8TgH5NU|+;J5dUxQ=ZYq*11fcM($C!qT_la ziBhr86T&OoLP|Sdo>uhA(IVOJtdEM9Rx5(&wmxcgzt^bf6S#7gp_fU>PA1Zsh5Jg& zWlV{>lx^!BiV;|ZnzxYUepA_G27Ql`afFQbFdsN9#mtg?zBpR~JF;sI%Dnh5l?o6+ zTBk<4vI{Dl#KW3VnN`|XQZ|2sh^i`xYS?WkILvDwGR%4F-pkOs_I(hyr^0;0D+S$n|R>gQhsj!_xaUU;dxcT;tzDZ(2lyU#$)W(vz=}ZXG$DJM&;*au{yj5c& z?{#s7eU2ibsBFh-J-Fy8rMby#qsQR7sKUZ11SyxqV9-Kdp_PZ>{d`Ekhijdite%&- z5RjX!ikudHqE3n-l>)25*)U?e=5qg%Yk-nn`VnFq$n`Js)bmBh$r;z*+E$SYu59Ey z`=9QJUP$U+X1t3iyW5~j-#^9uFAKnmwtP8)KDevtqK}g}zpexrJ_PlJh0HZVtIN${ zclBu2v+anTa)81d)fu}uHrG#hyjK%Jqk_jzvRO+6>v<A$i@DP}yG2g*gqwK&AQWc+ zUx=VitTNkFdf#Syu`~f}Xxh&=pLUIZJt?PP*UD3ys|n{e%GAbmlL4(J>@gK17Ie-H zxI3G~pd2^Tm4YKiHKUDBMN-N39#lrU<(KA2`eWj&VsZJKXRd*-kF9}*VZ z6+ys^0I|g7C~)j&{7P)9)j$=#Zmdidenb647)Y)zyWMtkR4C94c;^{|V{#3l+$s|S4`{C9U>kF=r6*!-JXG$&{4G8`C=hvK zLNQva^7**!(Tu|j`72!x*!w z8y;P_5BQs^?ArYX2^Bp;6Mn|M|M(am@3GmFbVe zLKR1Bb(t^pQ<;SG5o#sCcQxx&n>{zVarqypHeQDi!Dah*C<+a#Y3b7`wO&TAT#axu z&D*v=-@q08`ciK{)!>}R11w{m`kseel@xJ-kVqi-kbJA-Wrw`lN|og9zoE8hg57Ju0ifDxG#&VnHwZ2hBFL0*Lf`=^Fe#Qg z91u`JpGQvj8T^o4h>_wZLMyTsNOh*!8ZSI@-h%x0ZE$QQ!G0x&61ZYR<4xBUhP3uTnSGj#Puv?AcQ_>pj7C}5xMU~RGO5(oy{@-46}jg=9$e< z(ut5p)fUi9BQBz5V=P#H4A#Ej7Y*p1{P69VJAWz&gx_a4LYRaQ4XM8xipaw7fVh~Qa?n*?N1;$`(xfdIVVYOr%Q|A3eQ$!~fbN-!;HjAlyd4-+6;TuMbS*Srd zw1-CyRAlq1qF14L#@R`8b8^77ju(NnaQqzrH`jrg?m_>D9Ru${-(&-8wD_l&Aneb! z?zgL@wzRGBepR9b zh%R>r&-|XvEItKgc=ZvV5ae;v4=eun?!5TnCiOAf()XoNy-b(xJc&>c@QdznA3b59 zoK+38ai62B6`2m=7TVbT#G_YA5=4EQ*$)37?I`ShTpJ%kPS+L-0>RC|OcgBQ|ILsPubqpa9KN;keA

    uaB+?7g4+Ck~=l?waV%oYC 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 )M7fd#PCpR(*Fs}1uL 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


    h7sd&YyF5I(*D6@{ME7dQS~~vg^Cmsg(d98 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 z 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 z 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

    HLX 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

    UFu>u?MT|NZSqGW)P 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⁣A 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

      Z)ZHeSukYW>H%ifG#5kYniB#7z2WcWD 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

        h95_4ba^x^)5PvMO&mt1B+{=mn?{DX%G> zgs8QbO9RZzV+gD{ORAMY;iq*NFZW` zETq3b(gV}N>6j-D{eYNXP0T;ZEci4M@_D*Kw6hT5uw-4M>)Y*Bj33E@*axM%Zi}+V zy}jkn96L9p6yN?)Iz{v;uk(&B&yHq#lg_3<;1~)18+i(bZL)BdJ(AK0Eu&IxwbrQE zzPMH)^RX5x6S@dv4z{~(54&}W@hilnl1LA2_Jy7j2lG4b*DcJlRN;esfT_|0hq#St zh@b~HC#S$6_7ef5-Vl*sJlW9=Pge=7!%5hB5~Y8{=q5mPtfeva8$7i}_wu$0%KP2@ zqoe3@#(voUtCiu?of%zj$`7Gub9V2vw!60T=OLHB53{dTNbr5nd)Tm6yGa-}MYaE9 zp})?`xR+59Ke~sIxGb0-AfKQk3!nog{_QG}%T>hp2iE*$154Usn>q;k34g85%}r*q z(ovLP4UeKz$B&&c_^6V^`4>O4SCi3PUKu# zx;nUsZjpIRIZ>0H=D+T(k$GYO@*;z1Wl8mEAZdS>OXz<5BXAC0&&N;q6!A(&AOs-4 zR{{Tp>49ae<&UQlaj}B3LJoyC90F_{&1zq$fK-k^v%x z9U~pLJbRBk(S4>N9*)#J6f&_dCMn^ef??F%IH>~GW8w>&C)fxNa6+yd4IoFKji?lR z;q>?gmIoZ02uQq6`p*BrR_4(v1YlDK{ffo_njZR%o?Y86BWb1vh9HQF6;2j1^P@L* zE{lnpg5J|U(c-54vQK739Zf(u!XGeF0}uAXkvkNVIJQ5qqPl$WGbR@Z(Llm4;`QWf zrt*;M;!KY)OUyHdRQpk>JlH5B#CTK`1NUR2p8Q?79HeOw1AaZYrc#!HSePqpLclg} zfJMiaY8T@#akf}PUi9(0lCOZ7M+zE6B`W0;T%rEp^UoQ>dMFk704VDZ`jU3>fmk}zLV{OF~G9!n z+lo{7iQA$5PIhlW)EV&)4N6SaMT+D7yCm?d^%vxe3p@?4_dh+xTQF{rT9mL-mOG3_ zE(8}1ZGViyb$5__JbQiN$C%!IJhDsDW6?Tj)!u!!I*_l;Uxp}Ib&7Hx&k^CJ_DD$5 zckg51=f2d4dK|+@pSU+p(OK+O`&B!O^z)w%#2~&?UeI^&cB5b(*Lmf-u>6Ueq^7b6 z_wWH1yUu1M{REZ?$sAM1vJ=k|4&cGjs4q>ZZTB~|#HlACX#_YY_H{Eif8*gne zC~l0@Y+vXSzrv^UAK!AB0t%4Q@vZ)QBMm{yew;0Q7w1&r3xh6oyc~Bde~}*0Gmv49 zH8=6Ny>^?F1MlN$oNGA1F$&doA=-(E2 zqk=V$aaI-ukDP%{9F^`#snhl#V)WkEW}czQ;<<#(&SZzMz;)$I))8Tt?YGYc$(OT&m;EwrjngDhn98)V?ZkLIfX(3 zPVNFLD=f}_aevOgWF-1~guutr>}$Q2n~vAC4F6r(mal1)2eyIr%_-a)pK&MC!1^6tB8=wK{jCrX(E?JbEG`1dL+N*_i;Rdy`D;19PE zR||?Y3q}zj4?*cHoVCCkirnuPBf%f~lrz$9=o{G2*o!xgOu#VQQ)Ds-o_Jlgcu{*R? zh}5Jx)@*?==a&UfI}^565v`Ca7N^Xyg^rv8NQm{?zjH3wJsnoBT|R5BRJktg7wD|r zTOJ(P+O2(nK`&O|*P4CaW?YVU`dC8VP|8tqy<3s7_N)y@-s63pE z35r(5`x*E7-LQP;e9RgB@yQQJ00lullw6Gc*oEcuwOd6Mt>#G6rao1Z*?e>E*w;(MtnPFiBQX>B99)YF$zS6A0hyJs&K%=U8bnF4FM1C(!< zx98tnN#5CvSghcrx?VHnG(mWjjqUKLab!DCu($7MNIwa3ZC)M5 zHVu*<1hOYGqt9*thvi`wWwM5(>4q7bAEj?&3a8Z9neKEqSl@+lg%{VyA zcv=?SnoVbQ1z46hU2>gmBaeDq6)oNTU5ZKEw{7z6?{mmo>x-#|>aMhnt+m#a(-baq zezCAv6VT4IuhXr(R-U3@WKDNfYXB{kF0mR$N#=)mL?c~T!eDClc#>#yhMz>jI(&F zS{7UF77*m_mPX-|$?q3ql+P}5M-PQp7hArOlWk9izIDg2X3CPpsf`(#$9QGHmWa}# zS>y!e{U5I0Dyq#kVA@Ua28wHOE3Pe+KyfSX#ogK>#VtsX7I!ZaoZ=qbic_?-xVr>* z-+8}({d<3FpXDHHB`0}u&pk8O!1%5R4{*ZlRFz{)XsIbZ?@}!i!}nx-;m+SsH3W); z-Dm*2po^w`6G>U=UHgCSy*ry@*lkAcrrfT$>AG`a77I?PdW?eteKnDMe!o1z>(ZVx z1$A8~F{2*NAxF&v+-)aP_m3;jkL-MJpC2{o0_BN6-u)+tp6;ri?=*N3He|@BYEqZs z@)_wp!dCp?>GbS3kEdL@7qzI^QBVbOFRIYg=HGhkv^&MF81vS7Wz^Trs#k=ChuNmcz07PRDm5j8u`!Bl7QZL2ig~Dq1P?e@cbmDAU}No@<)lmx zqm~M5*Eh}x6>vD(N1neG<2%IND-|qXUGeF`{_@WeMx+g<>0* zJX*OL>*rukLzswQ+J{8euJGWYl$4L}-bu(?PE<1#;Coj$ORGh86S*D-$_NyznF~;$ zI0k)2FRs_Xh~S7(vg;_0Y-sZd(`n-gN!ijSVXfnUsz}EnFLwzfh$EdAs=tKHPtkwI zc|F`t!!NLb7pxp#zeGY%|#Z7*EwFmCmjvxePuI?Rk6I%;t&Jq@q;cQ0ST8wHg2{;QNjdMKAC z)Sb78U^gLt>qJN@!0AptZOvD|bIL1mv1jImW=q3h?x$OMu`fFhwBkFfdDk>xi^Idi zt39=Vc|g|zikHW===EId@~OxDeCJbSFbsJnC%HOTdlaWUvP6W&F4}cI!2(8YY;CB1 zUQ7jer$1f=cqcl{*MHVo3B^Q2O{q01_{%gRvFWva-Bf~@;uGx$N07zWmpo4k^2Ub8 zkYi@SH=TBHV~?^ij_>cRJ!XVke)bG|jXT)|ogadtmDXWEn2N^4cVXbIxM zqEvSzv`)P*0#l{?O49!`of^;Hh1y(vawvW&3u< zj;L*3C!zb$SZTWK(o-|f8V%o%9_reN#sI$AFO-B6o*khN;G2HIV)n>Y)IE6wH1`YY zqB@`LmaM5>bD8qhQ%=12o8)S z*=N1+5=B8DT)GbtM=r$b3t4XwGZF#G$rMS$MGE{8{a zTH}5xDsSsXXm-RJpt_X7NGF5F=KZk=zpjquKhK)qy(|ymhwuKXO>5f64%K;o9=Jp1 zDtA$@>y|MveJVr}qSSR>)G1>;O(fDrsmuP>orxL(L6S>jnALsLO};tgAHNsb=|bv` zj|i%&4WJ{RjS=OYMBHMrIkNmcTPV4q6W0OJIg6AQ(y##gR}V!5Dy$Yl5OH zy;{A3I8dnwzz`M4BmtGT%_5;q%=uh`rfxv5k?h)|C&hIguRc`eg4CnTr68HqeU?Me zI)Ty?vqD0zE3opzbhL4Ejyj>bg1`Jz$)>5*__;!t45kIy+0ODn<%3VvzDYNOmO525 ztoMtRX);qq0dfYUU5j0kR+PC$@X{B^6Q}h>v}BanNzzrVmb-LQwz>c2 zdiaX(xyD`b7uZE*kH*2m(-pwZ)G+b->Aj%ZtnqYRSA>qj@gD_d*ubhj(+@_Lu_w!+ z%`b1rekx_`YK{3YoKj^Zpy=~D_Q!UZU6)E!1POr3$%Cb_*1K;`3%fW=x!quV=1P`; z4;?&aG#)(Dudfx0HEU7m(4cha^aU!w{tpka(J;Yy-~pRFOpk>R!mx^Rwx)&y3Xbv; zJfJZoZLJ26_~ELPv4YOga)Q7WEqb&P2gs^4PE??OUNOKPz}i=7L{2u&@}21CTN_U_ z{BE&<2h=lp)f*~%;?>AfCH0h~0Ae~J%%?w*?#hEc@Ww)IJ|*%Ma__ma#{eUO zR=UM=i%U3WyCD7CRB-SHT(rCBYJSs3(^Mz2_W4nXjUbA84^vlqG z;z7S=NI);Ug%yC?6L?p`Q6la%RgZS;f=vDlF~jjhPK*d` zT-M~~UspxYUr|~2B4dxz|MR=$@#^Lq1jkX*=K5l5q_%W zgIHH+hA}3L#d`K33 zJ#ml!nktcvkE)jNgD7c+g=Z64XJQb1YaVNzYZG<`jxu#t20ab8{~@}XtGR}usBibq zAAs>DP2OOz*&Iz;j|rZL&erMq7Om6s&5B!&qcgeUcBNI9ut69^RSu2gS;jHLQfhA( zLsdDrWA|w8`5#d47n6>RAr4Qs7LILM99o-d8RbM5Z;K!ZY@rRtvFN@Guq+KR&u8&W zVZ7BRqgMHm{8>&9QfAt*G_8B{?5euRzw@Sez8@u){_1OUKO~8gb|jGpT@s35l9G$< zjNlmd8|;YG1TnGqCT_Ua%Y|8LLe`BW;AZ_$mh^i)Nt}zMv{;CR?L7+ppVvFk8c&Ug zXqSE_SSo7Pm}sQMlfG6aW`V_S^{0=B5j|Vw5^~MMnvX7Bor|f$joS3DEZElbh^cZ0_zIOaG zQtM)ZN5@^6tE;P5p@k3WuU{K9f3SIuUb%TmsY(L-?Wca;@&D@F|6X|YG6Qnl!qb*V zvajlk=kA|xf{%_jU3$4)uBaF2{lAvnN67&bpqoVHhuU$Blxf@y(#;Cac91j$GhrYWI=6{*oGX{p>4|m&knJ& zy;f%pc6Obj*&TB38SHqm(1yI3VNTvEM=6J-&0E9*gLWXYV+5`mA@o-8)pOr-a{&K%>FE}U2{OGSgIrbyAkJB!3D^X;<#dx(`7>7j2>f-`1 zr3M}cw>K?X`!M8E9QO4xfayk#S)TmN zEWDf6fUZ_#o*DIoE9!Cqp*{NDLrv(Od|L*!r0o%6BES24;wLP?ENc_m>U&9-stlNa zidMq?8Q!*LLdxWJ+ymaK%Qx+HgnpNXLCPpAZTao@{onUNqKeq z{j0axc3>RzA*TJ{q$Q!KixP5vSDyh+~8m#sF~t~U81 zBX{q-mTZ>;)lop`F=fBc6-kY< z%k%&Sj7|SWF^e6};ma6?wA(TwX=gn)BDbG6r(Jfr$Ax{W=1?ClY&$7D&?Q`y$jo-- zQvUr-gXwNNo1M2^#*7%+Me3mR))ZpbwZSXqQi7+Z|GR>H+ecR@G zF8{8OM}qk7zujyk7o5%0G_7iUaYAjo1k#g<>K1xRev0Pe;!)8s>e#$Y1@Ju2wzk{5 zf}>sOP`m+9qdy7Pe*GiY=;otm`62`LgtHbVuZBDNqhVBEO$~f)VKaKa z;eWmeaxI^{vSfiit&>eUn9GFS_Oledav1;yqaL7t8W9e!c?YdRF&FhNj2TA~jWt`( zhB-1{WqU4jAQF_8>-sV3UZ4KnbtRE7G1asW$?IReSseetxXgZL^$Yi}`G7-(s+t97 z{H0Ty7seIEBNW2aKk}nHgBFt$W1SP>wo4m%ZHFg0=BD^@_-m+b|6QapefgV|#txco zBZ{=va=cmQ)yDENhT;OR&K<|@i|{&~X)Py!pGWg9>SGL;xr-aprNq?w zwE54?c)-=?H>0oVF>KbF?fqSFbpY-vYU8hR^2vK;Gxn~O&C+r{2sO@1##3=pc3E5o z^LGQG#wNh7l-${U^+|s`l4wcR2Fcv2;730Ur(y(X%^kU*ilQWb3>B9;ZX%Rl!j|<7^)7In zjb_Bzl;k2-g*8;E54s3!eeH*i(%-wrbEh5h%7xeCIT&vNbNN}U^{K_~@T=H$-|+sM zpnCot?d5Qw^zS=L5nhxZ->4#8@Fer>g^=#9?Bi6Mr@N+3PSu|j{DNH1`smDvL?XE+! zEHj{`ziC7Qw;ncV8z+}otK844Mpq2i;J0$Cq;$`4$~*Y`*kw0uc?0f zoeLf95K3I0!n%NmC-GVy-?j6xcN*xc$QZbsaXHH1=!o)M#`1{|WUVUG?)=;p?tWhM z{r-LV*I!318y=7aLmv1_>y3lQM)bScseq>vkJYZgyY3pmxBq&>$Xv8fDz%vJ?3mC7 z&V7&ggS02IesbM$arpmg9z1*=ks-B9oOSDK$NYMTlDJH zys!t{55!#I+8&f~4-rxlwZ6M7$@kU;(%ARzYrA1sJnX1bhBf_sF`lr0N2o3 zl;16)?sv^)jJcl#fdvSQ@zkd;9`4y}+Kr8)5sS&09jPmwM5ayCWV zN@>Vy&31|Ko$zn(!V(Yr(ABTYVIuIcT1z~fD7?5itQ~e)Zrk@OW83zBxwh}WFr7qy z_3be^jnMsjf1ZoyH|PbMX!E~g>Y`XeHp`hI$REmA81f|a3NsG7j5q|}OAWMozI1$N z8XMhwFK!_j_H-Kk&!UA1dkWh&T&OG`=CUpU z@2Xiw)IbI-aTw!j-KquSU^4}v)d!y#ASH!(_)7T>@hsoW(YDlvl~Rq!?k5s7bvq;8 zZ{&2r0u0sk=jlP?Ad`^j2%t9_?+{Sr%LCJ1KOIBRcA-QCeL3G2Em{}T8nt(S|M+75 z6x#&e*?2?zVr1;9zZHq$_%5pg9k`{~TQM4TRb6~@pCm@FE5UFR&)&(1)UUlq{o9E< zXPBaS?c_32(03OC7$vgVv(D4369wdG36MC^j+pB(WW)Cywd(~%;bs!H2H7A=Yif|x z&`|;6%^BuuQ07D;xwZ~IiN9AwG!7yAt6ykP+WH}?f`_!#s`~H;%N!23aCo>R+>&<+;(Sf6i-4ndCkvsnY<9aVBMTF|m=qx{DH(&Su+vYey>* zkJ`z++^g1iWq{(iQ_j+#V%TOO%KP?0-&uKN2Wvn5Z1f`W6n}tzT-zMF=oRbXdPI_j z>7)h)pGO_YnG38FmXqlVUq>E+j_&nLc+`NkFA7dI=HJ=&sl7>bx~C zdZ+}I?7OO(7vChM=)T@07RiC#yuCu_qov29_lxQtEXW7P8Ceib`*CY0G|{2E^otY1 zc#GNavsP!>(g{}KX5gW_ge(ZaC` zmkq3J9xq)S;;0yWvJ<0z(%{4?8^=@pIaYhu;T_OAjYuTunrV?N@+ESPR-?2jHpl#? zO*0YUffvMNXnT4^OKUkg|*o zwk{u7pk?MU+OVA3`#|IHC-m3FXLp&0B+Y zjqSHKu5s8NneIb(T9ZH7A$dXMV93jPvuv+UNtngspy)zT)vjwPKHm68KBjdn;HR?w zZ!6tbE?+rQG>i;t{*Rc|9vz?I2>kD28>qx)RC=)59gM4Y_lvBj)9w$h9?8PnpX5Z$fYJ#oe zkpe+INrbld`^`<_ZpSsh&4u{ilFKSzJsW?MakUOc($9p66`e6qvpV>9Z_NWpN1Ato zF^T>eiDBQC^+k$}jE=UpX&i-1rcjkxIF5b!-5|g#)$p4NX>P=i2(TZBuW+DxvXlLI zLh9L1shKKg#e*w2D4+{Fq94@ z67?fH{;P4#BM&Ut<_fjZF~o+k4G!K7EE0aj9@Gk503M0l2(6e_3O8CXr+X=K?kW;y_ur8$eq6`3tT#C;2uz^bcZH-^RGTOgW0d3g>36 z-E+F!)@cYgbJ9_4Woc)Yv zeuyyXnaX*DI9}pQY?qe>%n5%79wqcNv}8m7O{!@}dsHl)3s+lja);XefH=0;%=z5e z2|k%+psu-JaJP8#Z0Dn_wjNjhcxj&nhxeI?JV``GBQk1_vf&u_SZ;)7Ou{Y?{&g{q zb%*yr9aUjbi^@Sy(#`n$^y12nA1{w7TwS$N?q7ynq#S&io~*MvpF-xE$3vo{axxBI z=E?8G5kR%+qFR!A6tcHwH|yOSE@#&$MeGku@b;1ExILW>s3iW+x3by{ILL>VR!-PW%!xw zzBsovBkvV2{?drxp2$D6W7)-TbiS3;!8>1gQXI<$XExE9mKs*y_pPCv zc$)^Wovk&ByJ8{O=Fr^|x;@BLUT2U7Td2HV9UY^=laPG|V7umOWt05*)1}yQj)5f7 z`m7g3+wWH_@cKeg8*zQ$BU$1ncHU0C_8Z)IQ++&YD&s=5z_yf~uf_d$Hgy|#K86jC zo8E?c*&cS<8<=?@sOt)aK8oZ*l zh0@+HjmVF-iYq1!)%{GqtINV3t$=jySga2*$Yn$6$!%b`lC<$5gp=cfs2T2_c8SAf z@J!mobGBypIMv>mt`d_zs`|r0Sjb_??{^`u?KY+vXUdMY`F-j(}xt# zO>A4+9nyNbQp_9Q$%x;ArR9%<9F`C0TUwGbICDhq-in&T%@=CjaeO5Bqki(+AeXUf zLXqkFO!y@Aq2QZ0y2IOD;uZm9z+{@t#+0LU#Uph1bw9~-+s39hnbN9f(@d+Z7op{y|vVWnS#M*mT$Dof}K%Bghu|&Vr7v@m{ujH#(V+ zqq5hUT{GTu1RhVMnp>wA=^^#u*mmgZN?z69AJR3$fa*n_D``8WvPd53+0!3aX1F?o zuF?5|Ut!_b5gzqkRqIBW+Aq5XtQ|mKB1Y9tlj89FK5R9fQz2;1+4XGa>TVk^d3Q?f zWojI@p${Iuj!~Wi*Zuv)_B2pGlwFX})9k5p)%}a*>?>8&c2Qiw$R)h7eN^mmPmPjp zGD7+D6~@$$Qkve_haDcw$b zRzgYfjET}<1|Zdf!OTZ-)`KcKMWKz89GPoD30d3sHR2fe!_M=i6J0jIVNVdskQ{Zf zJ_%M?)sJy1&>cHY)qu_mHX2P5yp{;Fk=oT^9ZHIzn-v3bC>!=k{b`{};8>}B&;^Cx ze3zuoTBwZd&-v1^>Ba3@tlvbe1iT!9h7>>598MljPx$PdCwIi6l`I}EzM=p z2AKE8UHvy@Ip)@@aQwKBNx`_(5hTU4vmxr*f$uC&G-v_bEz8NNBr@2SE9=(BON$ycKxG)BaNPrwlXY_S z4(r5kES6k%_1!;bmzvoJ8PdCUKCw{Zww2B^H(49k)5VsQ>c2LJ2PXaD<_23qpC z4g@{ZNICv?<3pdunTecsC5d|}3c~B_d1~!wB71p$6qjFWVaQsBeT30OsZ-e@~@^SPLiYm9FlS767of^CROD^Hp3e5PhzrE zaHMo(9dE(zrI~!R!c}u?+3&eDhTawzf^z#G`oXhXwO@>>is=Tlx&IQ+L2YjNh>}!d)^)RgmQPZ+2Zo4OQ})YnqcP*OHp}USd8_q- zjBs=SJ7lkP$Hi%UWwM#wlvHXU9Mj^d`IBcmb&k|W#?5%IFt}HDbk+8)4*rMsIJs=T zobstou-U?AfMwJ6Fs@jnk1qOTG9uESbwD2FldZpNS1B8oEuY5=%RUCGm1u`wxx*dy)Dk>^QE2976z0ZuHg7LDa_9J7!ICsPI zk&>r-sHaQ^5q@%|gpM^Wwj%-gy0ajOLLH9;TP?}azWH!kho-cc;c$wB7xxDdzS_MS z=AE<{f+lr;*vr=Zz$8_yCKn=|=ORaTfE%8+lV53JKVSm?mo|lDru>YDn&eI9BE8bB z${eNhyS=2Y1Jh?8q_{f;4>ar6t6uD^SfVndPkU~P_#KC$rR9E+P(d&i<~Ds4@Fy>`5ELU z8T8hvOpig_At6UO!2?9Bc*f_a!|#nlK6s;0t|Ix{OU#V$2;Gb@_zzY@Pui!(ea!^^ z4K-$kL^m}lu5+{xbb_y~dRwRdp6`*ZvL<+Fz4&(kRM?bq@$Tp{W(y0;5n>C&8XBL) zx=7nZ=&gg#tdMO1Zx_j|a*ORLi+Bqc<>3W_hnm71f+#52N6-p*!j0sq50ccjLM8-TQ=# zkV96ijrdY`iLb;OvTwKcFK3DmUv!~wLwhJM3id_0Jg5wZ>50^n$f5DKL+EYhurv;! zdYJ{y1@0<}f08Y-v}}yDx7I6=Ug<$L->L8R+aj%tM0Xep+f=~xn^XD@dQ#V%dkOut z8DhX2vhU0{>{sdDm=EgiFN!iy6G(YuFQdduTC9}3{c$wQj(2{op%+-hSg6z7g>%V1 zm2Z)wY2u3^W8XhnoY9`%qQCl;vU(l%(&9}e`U1rV zKnechd9p&YPbdt9t6%EVDUZJkvcm(Uw|A+1eo^(gg$Pa(RTB4#lKoLMWLFG~4!g~~ zys?=_2L+2NNy4jHqQo&ZIraOlexNAV#CUm-m_>^1n;e;&#v$K4zCmL#Rf|9pN&5{+EkW)BAz@4B3eUm6{7dLcoz6XK&{-(P9Y8v z_4WUPbU?nwYaC^(+cE7dh6v8>SSp2kTX@ilN~*F62@1l*dyNpZmJm-1QG0L;ENC0) zliq!xl7GmIpl=vg&RU=gxCn7Bgnl~!s=LtqYSO$LIY&RXfN7B^VWEXC#!KR;s%Au} zX*x4KQHYKLLvz&zp?W+XG;ysg@i8chN{0j5#6dNMV`&p={b_jzontdI_{j*qH=jc;yb8HkI9l3juw(o(%FSmxsWt2G z%_#ZBccXzYE;ak;7>~DSvhN$|ZB^BMXVy-5uG81rYjdG>1>Sa*)?*MRSrFe2>P}Z% zr>@kds>}YxjAHm_AT3}bU4Rd>#T5ONY=RVg%3^ap$<|lhYgprn-)wdBDtY>15FU55^f1BZB zqJw^Rv(kG1N0T&JSriuutDFe-4NUdHj>IH5<@UpA8WvNe9(9+a0SMg2G7&t6` zVy|?a>yNm-Ou6yha621qOm+!5p@*sZ%s!TK5+d+AR&3aPuL8|{=Dpmc(U+wbDFKz$7*6e!=!lt8^0|Yvc zm*k`OvHv&((U#iz9@M4Xp`yyo0FK$Lixc^QDmxr_J)ytl3&bh^qI>JNIS}_-EBRdN zh~akEsD?@xb1x%MV`AfsBNG3Y)1Oa?55#wvQ*_r1Jh7QoYmzR-GutO9;h8^9L`&{wNLY_|A?auIT5&azR zIlnFp0bcGHXIM9fN&JSs#dUx+OdfJM9wpx^EZ65G1jWXjY5fTHPuipcIx?CXT%R6y z5e9fAQ{eZu7vEF8K662by#y0WFa+LbIn`p$ID6}zgiMib-7Q~GuW+Bp_xBYV@#Aq_ zJm93E8F~7y*srI}WlxQ?VEkvMx^1?w(Jlg6tInO2y5cW%IYTUHsCoaj23X;yc>f`q zU!2u1v-Zv(xGCuxeOg8qJPU7~pl8s7$CxKgW6`|GgyvI zVppL*zKw*1<*b>RPy^y%SX?)!ZkIeQnal7ikK%#8#V5m#R;!9bn>tGe_<5ZEiX7fg zE~M~mXuI^OTQk<0o|<#OTl{B}fj1&lZTD$FNX$%`vhl~LY6cgV4?ZI}cN5QoQ3?YG z_PqP0ZW{h0nu^>Ga7;2Y$u+~1(ZD^2&UoA zgjZnf8`$aBe@n+*@HLzF!8DlR#h-Yj^&2S9pF;Gq#EFPlyKYj{rUdhSK8j~q?aj_* zK3Epo^3_Vi12MtB4%&MqhWRv z=Oxa{es44V#teR#V;hmuO`ZjS-9qkJlx>TZ|i-I~C1 z#{pi2m~Zl3ThM}K;OoDgc<$<()ayD_-oP!t>IPGjVSc}#G|zqsAi34O72f_kw8QiU zp}6v$`GEYaxyLDJQ!Ox`LAMeamZn_fJM@(%$stqU>ACiSw3uJlzqBuJMrQ6o-u$n- z>N2h%VPM~H{Bpg2n;O|fgZ+&?9jWS6p{2pmwj1S)(1i+WCAjyqQO}#m5&VnK4?pKt z?OcMCU+0iR`k=}pvEnZkE^If*1aPa_W?Z+r&Uicd~MtQ=kYIj zt6H<>eH?bnYjMN+sfSJr#_2b9Z_%Dfk7s^ZKIs?hKz*n2bO}6+?A736p&NxAwcqtp z*;J#Zwc=TH5W&GeXkbo)bbYqL-2l$FHd=qh0MFq=Ub(18B!l9iU>1`eR%f^MYXjt0 zshggLV{q%tJrLOuoa^=--^E;z%aMjrc|rbf7NEuu5ftF=OZDNRlxyedH+SpE@@b4` zQPPRaIg;gZgujUak z{#1TH7S59W>G>x1S?{^y!(V%LOLfxjkJU3&R=t(@C@+4#vDpNUIz`)uHL^M3;}(_W z=bu#%QrpzTo0h0+x&O?4!Y;Sk=4jDg;u$2hT;ruj*G1cxLx+}1$KiXRD1yu}z z#hGvv5nM4%{0~8DtFly@y%Lu0JK2(wcmo0=B8?bb251r_Yt}m5$+!gWfDP2Pevs_^ zjpB;MN%r?I^32`V<)*6rhlekP$x&J-G=c_7&1C4{_c2s(j;fCSm$whPZN8%kpm&A# zf4?+r`3Qv90^)4Hufk^o2@bNQF>#F}CGzlj_0c0Z#7u>ys+9q+49|m72qr=$CX+PE ze7?IWO4gS4VmTT<7>#Re70()YoQ(6~>6aS(Ht$4l+LW;LH!mTaFCE5XtLDILuGbe- zdp}bVIVjSmU%TZD1%8Auyim_j!Y!%c;DfNO(AJTZ z3j~BM-bitx<%x7^yUdy-3BUtyzFpEl*h0UWskp-%nUN4A3j3eHb?jfdA%`xsK60HD zN;e7RSn)jjKI|!Rv2xQ?dBt5lxufhIP8-i6A`45o+T}sy8!y%hW)Ji(M$ zRUjOr%r|>){V~%?&FgE&qbQ8S+lfisvdCB}6;(HL3a|uimt)k*{c`hD2g?1d$V4Ux z-J1H=WnW}Ijh1U4A~-^2zPps_ZgPTeE_~iuYS(s8C%4DpEads%=@fKCg*Tn#pI6}PA>Lh*@sl?%fbUyl#H zJKuCssn#9@V28?s#&WDY5@aSz^b+2Re~~+mr%-6A;ZsnXd?dyX?=@krOZaK*KB-GM z4s_}#EVzC0xj^$q*_3|b`((r|BQrFf`FVSncxb?gZ;%jHh50u;yEaCXPH2?qI-!83 z)k^Jyjp}0<3z-+apXwa-T{3nYL4DMw*Ysxu;e;Uix~1x5JCzgZ6%f+zqbLgV0Lm1s zs$3)r1c~)^^+YA_ym@BJ;SNU(ies8EIgua7#p~c$1qL8tbI)m_Km;Zgw7E(#Z)VY) z@k3F!Sa1LMtM1f4CZJ&{NO?OIZ?wcKwuxl7x9A_@0<5x6z1%x__55KbzaMioeJ35;MXu0Kn81vfOh+w-)kmJ zef39RpG={Z1!IRUx#P`!92bZrTE_2|V#sjuXB?F8x9N8T8MzV zV?9zIW*SzrD0lP6li0y7qqzD$CK;p5^Lt#p(dh!f%J}*~3A@I!W8MwR90g-}R^#OI z`_zDItRHFfWCYT+AGP?Hc1U;M-ld{Ef2oR8iH(jtcUebWFD5Tf@Y4QPQN2-8hngi_ z?CXCdh9|1gmdqX@VG539^q85G)X`*b83z+x*QS(>q3p3Zz5CPk3|z_=-i5C zp>IJ8;zjMSL{!T0BV$j%KA4&qnKRx5r_?(Hh;s|U&<3W35EZq(jw_kjpW3Gwn~J8N zX>WD+1YB&NKF7LiHt=X_)cn1FKgR&1-jn|F71?&JX1O^k0g!vyx3K9wd>9j`lDx8Wo?u|)Z#E~Z z$^iDfh=2cTHOM;EQalb1JYlz~PevcI<~dlw^fh)dGdJ*qd7g#60C?-H7dnuZX3m0;L$^$Q+Ye zblWKV4JSB8qG+%#cIzQZMR{TIq3!o52P)nEEz*}vANPU#-Sp6!^aubEFIMfx)9V~n zG4FjUT3cPC(~g?^5VNQ@s2MvBRs))%wj{UT)zxy`-}ypF#1y52QsV~{o;@ zsbo~TA-9~{A>f|}o`LsV3%h{|3r)FSU(UX)ro!*yVo7tq82``WtAIEydmxTkzisf7 z(uJT>j*xDTVt7Wkc6>h=x^yngX6Bs>oU|?;hzfjYu&7+3e#bq(9yE96+Zt{Ej&cqc zGcUfXdp6Jjg%m-N-VoUBA@b1UvEaX+>3+dgY2LeddTg`g_q0n023Qc=0vF`OlgLyS zcG+rY-99Y}x0X?Gc`mEF3flPB_QBeyJvSm04WyNYR4A5xg{$EHRoWAa^!W)w7uJPg2UXF>j;o2F~GF#sHNK;VP2P* z{Rys@;p!uGL<6_YK~li(t_4}Xc4hAl#Yq2#PY60LWn~HKRkx1paJt)M|M7AwXc&0K zHCC4RZ!vE)#&Z@~u0{I1C4a>Mf}27={KrO8>og|>?wUTQ&TVScrCeDb%)MQ6dpm-O zPKfR0zF<-n9QD;LG!+LNRjvb=pszn!gCJ4S7J~H-)9^!wvW02}Ug9`DGudssV+tkJ zD?d?DIe-4<`x~rc&vu)Is|@7$QF(=^fZ@?APd}39-qA}Hng^lAw}*gkMnl7;o1|3L zr>2K7X^s;W#7fc9@5*-8eCWnh@~eM*}q4$0IYqj6`|E!%9jdmuuuo6r=SZFi=*g*>HShPZiJA(GJPAnsgrj@M{0- zN%0^F<>a3h`yLiAs7Q?@MI2SmPQ0Ngw9eM5U(m4(OsNxPo(9XPh1(Wf zV@_T!Y9)~fM;Px>7*tnarWoN2=wO%@!e+&w<5@j44+beSW7nr5gKNF8(>tSnVw9o? zZgZu;VbH_xYicdd)uiTEqq;W&F1yZRUk%$rqBoB*cg6tL=`3bL&kP?A`%wIpS{G`2L!C5@g2a+(e z@N&M^BienO2Ar7Gy9ht_y8J$t)q%m4Bd#?ClH+g1GTDBdWQ(5<&T8XVXr*j_%VW@v z4)EP%GEf%XWEpK!t!i0J%~F*(=)D9aYEp@;8(S%6Ca>d9s=3vD$=aPu(3)G`vopQ_ zVeHh6e)O>^;NsbL#<^9W4B)cq7JZRuD$ju6~3WkCD5xb zEtQ_F1lV1GWt%@<5_Qm`Le9WuuO$@G9CR=hgCZET?x<0xcIkL@F2i2Z27&_3ur%2- zIB-|6LYf15hUvBcWv;)aM$htAe8`bF;X}!1fC`|ce_<>uWv~v^Yl?quRvLVcF@q6; z5>%tHdcuO9YFOc+O=Bc%X1jI*xc$)IhpOH^0`Q&mXez)={xUSVn?sN(3*^t_*b+E20!P%Ize=k#t5AtDDg4&Bwz*^km1SThzS2 zKWvS81+$GmmYBDD$ij0QDY2}J6NwJ5uH8ipH6Dx(u?0y{YrYAxyT^^R3wvQa4F`ss zmGtrLP4J-m%N0{#Z?GHEf+nn6OWoi%zI!Q{%$j^Tr!ngC?KtbnHTC+~!9JMHS;e4_ zoxw-RdlsPbp*qo~iK-oj5J7}HR!&mP5Jt76RWNi^13g_&8UL5VErh$g_DL$gu1AMt zolpkX&s0zE)6Yzz18Kj+#ic#msYo&&-3Z=&{C$IIxG%YXLFvBEP5TKn!Z}Gt+4&%# z@Xsrs`K5o>0|VfZV|yW9lImn|_s2e@db~GjM0QT$A7q;oQmt|yIp%*=x2rqKicb2W zyhZibMvu}PVHE8vD#$rrENcqxEJhTT<$3u2GGM^}BY*RM!OD75v)%R>GU`Mq}+4C8BBIrDE$+Ho-c40zC z!MX3Q`$gvH&ihGsNAX+t8S1dpqa~#PtxhPd4~0_sn|F=sFEA==(Qm?PXQkmGd>bqI zIqF@1p?V_o#tl75$9Ub_5s!NTyHyiv(*!(?z`KvYSc+6D31!3rTUGy0GQwsZk%sLw zd0mNIy5784_Tb%p4r_l_5Al_JKLqLl&j4nHl+et_ix++z4yiitu|rd_?W}kPTViy` z3XRPQS31@~_h-7#%W{H_ZgHD=s^6}%n>~4cD4Cd~+_D`C1d0uqz!_Z;BZv1H{f zJReWlLnvBPC*$`^<}<2SoapYuUiQ)gi&bfr)r4rv9zSu4t-c9hT_Jo73|}p)Nk#Qh zMNHJqk{yY*Xqu;@KF{JA6zcM=H2JI^(^u5|VsjK79h%-Y^t*QBkw*MXF`ia(YJNi|)3toxm zw<~?swj+AXGGDyi^Zcx^s`Aw*(eKC=R=4wh2mEqKfxDSMMSI8+=<1}GhT@8aE1AIl z;-^k3oj4Ow0v&BD+P{%Nu6+JEj5?`iW?=l6fn}QN zbc8y$llU(h_+~NvhS51dP{o9|XT^BP^%oG6LUA_Ft{h0Q#~d&OV>;{4!B(`9mj~AN zCKOPJ3{^#O2_T1MwRqXB81$?_C&{SH@lme1*^4}^c>K|U`s73h;6k-}wrYm(KPBMN zZ)X4k0J5*iDyXJtg()b(5P-wZ29a9#9F~hu!@Hm#$leTMDi~)2F!9S41I3HYq=N#t zpf*XqS*Ysf%HUN_L=54DmKi>Bk*8dG(^NqBBGF^An7BY!kdRIVhq#3X`r?d5A-e$y z(+%X*Q)5a_e4w4uvXU`91@jFOjla&NeH_T{?eC;H;XXv^Q<(d3q}3Y5cC{f8Xp1yz znppy2R!_uk2KadWxF6`ySqB400TTdW+yVfvGzs00Q-G}G@t!Tn=v($Wizf74^ow>i zNu27!sB|%>uR8pbKK64y>sZj1T~R(YocY&r9=HV`U4Eq&JfI5yGC*G^hQNI@bKh&o291PzgW>OIQvR?2zFshHd0LHY@(LnYYb~PBSYC5j z5Lx~Bqj5L%!@@)>=cD9?OPBtL=qbHJ|EfpS3-F65+Ta6Z2r@i(jx6UH84T^oc}6H$ zOuXGAcP7@w;S8rXSH7u9Ix?3J^K@NTIgC7Eta;2>bzw8?7t(HHKzAmq<{1z#$K*~s z$RNo;vD}OjC8hkbw04Z7?^bB!nDIH0Ugs+95(^fCs+p;WzG*mj(plPO>9mjkIj*eT8`zc?eNse$~oE-qdgWp7#Kj=qvX$rp@kdeR#vM2tDv{+G!T8wiyiAqlK?H+@y$xu`Dt#ssL4I>PSv`bH4|yT%Y(= z2ndl6wZHB@Q#&pi_RwT-*=N*j^_Q@r*%GLDtM-Rsl1_+hAsR7GehOvsHr4SMM$CVc z+7$-7=oLp6n`@|_;iL`(6s!;ghnmw@NK_lGGo2BB@+`WE7&db{68kDfLCNR1N3|Q0 z!~?d|amgd|rcD1?)=6^~`k>oKAE0SGELsrpdI}?U^ZIL;57fT^WF)%zC7nKB(Y*UM zQR;qGs#faZFFH8ce`a8>Zs~UMDx>`RqZa7#4URuLGSa0D=V~+PVbd4SCf(yl%SBCD z&3~q&$9CORQ~Upic~y`B-Km{o&|gX4zef{V9@VJkfx3crGyPP1vWr9-L-^aZxXzQ^ z-3DF4mm9#uih*{`n5ZV2IDN^`6TOBu{7=0Cy;Y1hv3DdyM4XV6oB2tc#60;@&6liE zd>9{Jc(Fm63oGIjR5NgSTc3-^`hB-~M`&rPu199_>%rAYT~F_$-@zAiknoNSe^?Rv zgE1H(i7}Wnur3m%DheQr)p(#ASRluKcRjm?qcemUiOO)13XM1x&CRue`Fbv{4-t8~E)W|3hP+s|z>ny1?zB=c6` zTXd4kip&0s?Lxwv0%=(%XYGxEvs4kTngjn{1dA+NKmZTs^lmpfi$9 z{mi)-=k?^%s?@S`RO><>S}(qAOuHv;&Tk!2^&_U$F8g**D#Wk6xHr3G$9sT?vc@pl z*gJ}Hm|U!Z%@OIdtAt8|?7=U?2IVi+XU0x`QddEtpjWOiUgZyU>5`QC3fgi;o>!A{ zsp5;~w6y5t8{1lsvW9E?>u1kMZ^kDDY&uen_A;o&9R6m2cejv67Cmrj{=2xUp<+v`e*xCE)G2G9O7JmLot3@36`d~c)1)uup+S742fzB23+geN^a4@J`fXsb( z;B$)@;xtikJhjMc83s;DW-ik~>{&JsGw40^N8k{-MbDO*-sqGG-)C3KGH<wcBPP9* zrpsKlU1}Jb5pKzVddcKs9I39Mm##w91=bEBbj5l(dDF%lWcr&wT2yp*Gu$m$mW0np zrsKeN=p_85ft)+*pI^|nx)9U$t`zfouQRUc=n%opj!0i=aXzVqgA9V+WRdf<=%<^1 zBOW@3w#%hGas&s^ck3bGHGqpgq(`<+sZ=|?ebzk|L+ZkhJ`b^7=MLC zXXgN$_#(JhB$*@95_L2wo);i$jwF|)c)V!}`akG4n>oUvXPJI0$^2Iw_j`L-g^jR< zR9!@&)gaI8uYK7V1!PZv>UkE>h6(LX^p@z3{+EjRuq))%bSbwSOEVN2&HXqhq+#{3Q&YK^!+6DKjk~2)hc~6@h+4_ZhKu8vpgVi5CkrO`c?l?p!L|KMnUmQ8Ofn%0SHmqkmXK|{RkLWtmE$Fy zJmSvA(7T4RgKDO;;7_myQynS<>ZTs3*rqC3NN9E$rz6;j!^tnS`{Q~>cVD@BelW%2mIe`}a(!ueJ9Hp33^ z52Ufy>CBoC3sQZRyu8dux-sxgduvi)N=2Gyy ziolG0Vl((&xXbEEeqzvAve3AP^9~4;_2}cDc+gIxph0F}zb9i8jdNNi;!19Iy%0mZ zdvu1%B;Tgz0$VCU^kd0Oy@14DWBpi1CH{tb#VYK`F{~|BRm|G~QLd0iu3qGJ`>TgcQ)X=;fET-8-zA)aBKFFTVX430PVqw50d6su1gb9#3NH82 zaDTzCr~xcgL7>Tir|@F$7bfv1tAjX!M5(6W($yyBDGS>Yo5zU1HYtqnH(!{Rw}>+_ zYbmiP@XTAjs~B9nGE5FoU%VhsWs1}-dTNrEV2fJ&UlyS2K894cGP0OyGX6F9*>|6nE{*h- z_psn%MN3~j7uPLgz+3I>X4mG<$dB$#99h3?dH@R?TaNRr2%Q#>oWp9yv>awGWKS!3 zx^h?7JWpl=#Gd)0BTW0n(ZC5<*LT9pKaWq$IM_6xX`A1xK{7zHS(+Qa)B;!6am}P~uD^tz0Br zRh2bO7P>cd3*zqd3{N!r@*)?7lWKlS~rbrUo6B`uFPrmcO$86p;8MD+i| zI%G8L1TH2>>w!MtxW5=pKkc(|fa8&U#jN@Z_CHPX>VU zS3ZricE3FO+hyhoS3Ki{FvzBU#gRB)E+Uh{$nH4sE*~^@{;?OG`H`J^D5;!u%O1D? zEl}bFq81x0IA+4l``$Aw(D&&1Y)(@8Pq&B}Ehx=oyfhqL_Bl#slo4Ec1e?VmY)>1r zzUSNOn%@NM{<@vcC*zH|#WazB7}P@lTJd;+J3uM@%U(KkMlBn_8je&(Y{BoKr?#Z< zH@MS1hVpvlLm2^BY~dN8G$o*w1%SgD3kvt3+$9~Q2uivoBU6-S82O=e3H<3Tgxs_k zD9+?#yq|HM%%pVMIEWk-lji9i z3kkvCup-)g^P+Cmtrml_Q=W;3h(Blgdu!zd{B-=oSNb-U=FORalJ}EJ%Ib)Ci-G!) zIVo(K9~hvfjU|YuYk3fUMgMXc7H>DFxqr=byAxcf05|9@be^sJ`Gg&EOV61 zQ5QMVi9-5G2#cQlLPCgc_|QOw5tx@J$FIS8XTO*g@U<5;(ACK&(#l9q-FM&%sl)!! z_YmQdcNgM{f7XFffd*`8zn~U-BcsTAM%52_pJl`xSfR3I@Ks*!&TQ_l$;OhLMj(|- z*jET{zQCR)LUsoc_ouL~*{h22MIW&+y|rLba#Ge+szY$s-n|IJ`)t$iCgqt^a zM;X=*XmQ&`<;wnWx)&0{lwhdYzndP?RFI&g zb1{WAXl=LeuX3Yy*Li{(S`IwQs_-N<&f{k)9OwSeoA3X=0yQ`h=qkYy2g1JP<;-*z zr}u8}o#fJGo?`2?ri<2x=8$Kz2_i&s{(J5pP}0Ac5HQC ztCa9$vfmh#lIN7v*P_ReEl*_fk10JC+^~um(PH+HT)Nt>m-h0DRC^E+5#e~{^OXm~ zNaWDj6evr(Lq^pKpW^g~GHun*L1=#Ae$?ELyMnBLZ3RJ=rG?xR@|y8vJG)_`nGIJD z8e$3oyS=e^zkfRJftRj8ezEr{$^TPM-%b=*zA)c{Mnc80rprF!*;fg@dIi;@u8BMr z7&)#&8V$*_q}JYEnKzldDixTzuS3_Qw(7!1>w{Yd2g%`GnhsBhJJ-Qg0~zWLS9b7( z%9hX6B&Q0thm#}Z&<;}d!?Ul?^z5`6kSR?)bi5c8KFe=`-t)iaLPE0S#jyr50y^=% z|B-DbnSw0sxyMELN5<=mR`5~JFG0#+-CjA`h1s1HRry9a(UfBhjF#mw59(BI)CV1! zFWrqZ+q(cj%D$+iQ_}^ZF25dp0=PUEU?~XKHyWZ7b1yV75c~WRG5JS*1NK<(!v3NZ z{6Qu!!b5ky_W5~o(a<&>8zw!N`JAT7n%$3 z@5AcRvu7NOSzM}QrGpuo2E`Dl3&DC2HCzF2mp&5Bxvbz;eX|uQWJ&v1MK?7ZHMd8K zwnRGrEW3?P*`HRq--E$pyU%C0mY6Q9VU~qvtQoUNOF4jyrR1N9?fcyvd)rbO@(yDBiL!zYS<{xQ*n_riObdbiV|!84c+|$+Rbu_*o7h zxk*_2XwTdavYsRm_ycz}Esp+cu}voP)tbC^9*$;=W% z2&h**$iFsk8KDtrh{ahc1a!Ak%ZnLu7_WT%xmX@5h>EKPo0r@stH7vhy)NbOCU*>opdI>112;h3 zHY@RFz^#JNv4S~E$IGKXQOESn?lZo()LGWa9uciLcW4*I7#)@4O#1*u$Om|81-NyV z?F={h;;a^Sa`e)g?Q1~<=h5f~>zGBo;@$3L z5^6AuT6#K9QsZ*fwDpQYg@d7c_nb` zbHYG^R+7ht`ub{|yCx+Zp$AA1Uh2!PBIv`GQLGl2lGRa<<{M20P5=SlpnQOb4t_~( zM=R7tWLh$&Ox8alqx_)xnbS^ff$1foMkc+8|Erk_npi2(Pj>^*gF+u%n&5z z;Ea)jnh6?mY2uy)A;?Ubm>D=>fmE+g3h}V68-rPdlm`DoSHi+k&%m`sqQDmi(NJ&H zO|0xwY!+!wYJpPzX4vkXyBdFZeB_{>ztRSn*!hL{Yp{-$B+!2%-LrF(xuyT!Dda$z zdY%euxH#T*kIx{qVQnXlnFt#jN%t9Sy_Vyt#N)0_cX8b z?>G1soVzpu>}r82>c8JM#CSx!11xixY1m|A7lI4OkMbR1)9JCDs?sSQao86PxZQ7q z7PCNQ<)4sNuFqN>#IDm*PZWO(9%$kiOjlnB3n@ zcHPS=jV(}))L+90whr-j-<22A04PVu=Y_roS+w}ZTF)@FpC0J|QG$_@gkYmh2bNV4 z&}X@^FanM1LePHy!&JHuYdyPt_Q813iJRqsVptACzFAaq=(%wYkAoj(rjM1wUv^RU zHhTXF!*AoAx|~lnKeu!@A`KzaG$!x*9>xwUKUl>_w7gL2(8qn$Co<)}+xAt|XE3_1 z9j^!7HNAOm>;4zVQ)lTIb*MZHO5)sA#(z2t#5naoBU~sM6FXPeuzrxbw6c5(H(pl} zoH|+RnteL|gkE>sH+@7GnXIxA{w^6prz=H8{ZRQOh(+dS^5zzp#;qf=qfuXL7wID( z792FK_)2f6hN0=^C0J!#!U~($ml)|=d!4hFf`=<-L&dg>I=!!Wxus72vi6JMCVnhO zKtg)H5k2FiDeH_0(f26z>_PDQ&RY}*HO(ArW}=6*?@h5yPh~;yLHDZG?N#h}E&(j_LXG)BwGHx9Zs`!RqQV-nH%0#+EpP#@?SEuhX-ihPC{?5+Z6|Xhg&Y@Y~}%q zBmUJVCiZkfbSV7@y4CNZTP`mSDo22Y{R0&#$CPk$wT;5)?3LC`w=LX}3-kNfw@$Ad z>f9o9{b#4_A7UOCBpS@(wC>Dn2k@ilruRIrI;DaI7gbNP7fPS zGP^x7^mQ?4Hlp@5_|QA<=8waLlrHFoQJ_nq?S!)}ZmK?_n!QmSfv>H-L%wjT9kI=R zcNtNw(~HD_WPZRML8SkR09+@;NaK>-=Vh8zCu30jl1`NQ5Fxs4Uzqt#sI0A(jrpA6 z8JRXl1%vgkGLH%-@D7|A)ALrK0?YC zGI`%|eU~7~e2Pp3ef>jmf!~CsG1Y`= zaxpuEI68jWuI`puXqeqg>Vr;~{fKMLfT9@bj?P=rnzh&`P4xy(p)mDtr%8xd;Clv~ zSGNJTI|`qIy5%jh#ic{cnMQuFNB07IkNo|~eA9y0#;i+&Mt$XDw(a|+GB3$U{?Til zB<_KyRJO5Ecq`l+An!>6&~?+EK(zWywqE3#~Z z2=VsB6)m12wd4X5lH#-V{1|m~gt6JCP&)Bn7L(3=`OZUflqUQ;*0bh zClguBN`&q;bwwCY8=DheSQdCFqz3mct7z_G8g-vmTrWz-+}1CJoSpce5#<*{BG&0< z(Yk(C?1_DLc7eBStghwv6N@vgR*{|-MdH?aWjeOGPx-xiN&pe&yx$ zclki-j{Mz`55AtPUXmZRE;l;G(G4!w*ydN-l5Z<;ZoY}yN*_}kvv`IIX*GoGqx#$s zjc~w6%2WlIu@?@N;-FF>V}j}05#UZ3y@7m{!?i)@7gO?X9Tbk7PF$lg%&t$9^o7hr zRT`Q*G^&FvOjp(!`%*J8zDkfgF|rNGEtyYijRnW>&BCzLG;y^^W@-s z0Z;cBV|++aRZp~F?xdY) z&mj4e=ju+>uQA;V9R}_qdB2`q{5Vd>!n&x}jNr17N{fi{ei(W^cPn{9;&+I=Q=-&0 zJoIQn-a%BB|Ao;LqQ=nowk4;!W~ZfAjlBn1sWaKfcJ*DMssDeXhSrsjMNhnE228B~ z3rLd@K=;-+-0v?vI9SEIouWc?=Wl2xCZ0U_ou7|4ke{D^tc8pI@?Db%_r>L-$}cD? zjO3`Tgy(O_rbpVH_1FCL&CN_5PjjA_n0=or^JptpH~H-%xOsyD^rf6|nas{4g^QYM z%WYS_;5e^4?HRgmj>3672QYYIXKQYy$j6B(fEm3#5!`cr+1!@NO`WXMzMHQkqn__m z7}ESlVPbe4kbzm_*H;&mDk0ta3zL%^d%xF;%jghE0A;r;>8FHN{RMJQRZ8UH9|_*#1i0Y2z`f?H zne@eQqc;*hNikK{UJJIhyO}fpw9;?2>!QRlxz@B8;PAO_FER#spjbmp3OZ>C3?+fm zj0&~mip7o(#a4(p!DfCJ&$L<)%mrk=mJYBuGJk0V4~TTL{!96Cb~pf>S?do}0=Ghb z9k>47t!;e;4dXUg(EeL^2uRFU?Z)_iIGR&5`Aoku3xQCrv6j9EV1c%qk2K%JP*2)Y z@UGU^J`QFR_$?2#2-VCL&ump#sF!ShADs$q_`Kg_+eO#pHvYLMRjA%Vs5eej^TXM` ziwQaMRnsO*Rkk`GHH|4=8pTF>iuX3v5|FzWxh-2HB;KNp_YEuf8nyj{AWF~yIttry z1}=T&$&5pR*qgzq*CgrL#VO7^FaK~ErIafi?pH*X^6t{VY=z8w9EPHnt#RqzU@om+ zUk1#;Y>Uk(O=l8|Q+1>~=>WQh<^1_tCMG60l_>$<(?2$bqNPgU4L>8YZ;Q-4Y=phe z2CQ#mlJ_G6<(X>1_Pp@bpUt=$1CT@549ZzxtGzcPRC!rY2y`#yUoq2pKqp=_wx9g-{6IDH8i9{0_^P;BGE4J@$jcjlEiUrO;69|oZ#1hmaJ9@>)Cn#D1$@k zzl0weoBJkvV97ZRGMC9y;;N!;h5S2+G^qfKRG_ANn~@Ek1YA)}p4YP+P16yT4T zV|nIj{O#mkR#WPv{xe)(ROkXF+pB5I<@4CUowRv?PAv{JE1%1PBYFvhHdzWJu zYJpnT;+IEmeWp<4J z{!wO~os`#l)L(0Mt4^Ml%khJv6%(*uktgVYCLx+P&7!m?UNaTtfU9y0s_rRyjEaIp ziih+cf@8+=3OevSmya|6$~zIs_ycYdW-X`vH%C_XlVa60H~L#N$4WM^Er}z&wdTh- zFg22@^13TH=ly3veilpk;=Z_~6PNwCD_EbWIAHSpX!vJq!yp5(cZ#Uh8Buvf>2;`; zk+BJ3Bab}3XRs%aZ|=<2Coq6@u&l6g-3Sc=)ANgYSp9ikK@=#J!DDBQ-aw`tU8Bn! z?fm|#H@_JFy6R?rAY(vO4+$h_{1nCJ_N@Q1BRCTYeBMeD^!?E60cr-oxzJZmPx7B% zPlifGBu&j@;8*hykGl_mzB~XYpB}RdE?Ox%U;6>Sss-GV0Y;y57c}AKf8>PwYU!bm zyoYisqh}dlrf0;~4Vy*YLHO8+#uE4C5B+S8jjwaCQ+oa+oGpRc`69Wnzs{TKURVe8 zcWnpfHSCB}5a<1WsUAz$=}RB~Gh*(KJnW6M3cdKVKM`bz<3CX6AGt8Ba`>3s49fMp zTYCXK`Pc3SFIk2!h0Py2NxwmvJ_I ztqG66`475bz;aN=3B=~l>sF9m*7i_}){3`a1Vp1{X1)cs%*aqEy$qx!Qs@-O+oi;c z8P*~<7EX|((5A4lkgJFgk(z(8grrlU?1%+9c6hxCQ$Zgo5{ z`FIV7f%I+MpJ}!Sv-SYKE-y^Fw|PZs@7}kq3hI8Q#0r=O)ba-kAvlYqeT&o$IR|8T z=mF_}JSS8Nr(>KO_6g z$|mAEfD}Ck*XEn=%|c&GzQ5((a4JZz9t1z7)HuuC&&Vj$xg?f?r7^FzznoBf3a7yk zO87Ery!)x4k}GD)?`iGa@ytZ6CXeWL6Qxtv{c`eg)hJh-*%sqTlqqHcSQpDCk72`K z&keJa8;li=jK=_S@3}cCZg^*EbiWk`e;GL)Sr;zArJ!crD#xHp6HR;amNA(8Sc&{o zdAy>9)G`JYxjGP0Y^bpAok^&uE*6o#TF>Uuwnx7k+9@7h*LWYfq0`4>etp77sFOK9 zu9VnNE)Q(+`S|r~GhS*?2f^!ETCcQPG@;tyIrAd@b&kkGTWP?)U{N<+kU}0@H~lNc zQeM2O$T99xVq-0aKsPs&(M3!Fv&*;M57>U1fO`+heKQ_g9!PY_ucEps60#*R;ZK2~ z_0BC7>z1{Jl68y^!&wYtoF<=t5CwjjTNsWJTG1c4Jyzt1F09PH^5vPNM2q1eoM4xx z%qb=W!b>i>qUtjWBhYD0ZyXCRY{BilK#r^8j37}exv``(ZT zpz!_%@g}X0Fux$H#y408fn3{}zorNBtCI~*k}EN(&%V|BW99Tt+LwL&oPn+Z&eN^- zh6{X;?j=3@boq+zF5#!WyCGbVNGKjd=+{;9@1S;5E#As~cyx6J+&CvwJh-l0@8rw? zN-X_^ojNp-L2J?$x4J`o{dak7_Q-rHUeiCxh$@L`oYM~9VT6??eAw{Kp%yfWifos> zuSYZ;l%c3#;73>dO~}oG*_Vi>E1uNBe55=90McC5GyOC2eSy4L0opa*NSY+Ks@^UN zw!HxK#YqU^`o$S$&*Qx$lMaUP#JzKKAan2|CY{kFic>M#Vh_?Jrfh$9EI1uT1`Dl) z69THv82qPQ5oYDL>{nc#5MdBQ`S|G{5jdn1@|7LjM=s8$pw=m7%)TXnn@SRcrAj z%%XB9TMmYv9C1|NJ({w0<@ro;M<%vGYx1or0~30NEw)Y$C9uA_+8mMS}h&tmt!6CF=x5P|^|+v}ITd?fUKsB_~0bAnamQvsLvJJ*9Rj_Hn7 zaQAwyo{A+x!wW)^VguA*!D-X+oAaEvU(+4p6`*rQ61Mr1b>Mx>e)5y4-mv#UtImahD!d4 zX$y7>JDQi9Pft^Y$GGG~(Ao($R1cyb{kj!bEpG4NXodOW;X zBnrsK<5X49Tu?`1;%FpZ{Fj%Fw$eZ3EZqD@VF9=T7Ed!SnZ+ySEdQ6g_@C|Logeej z-KNx1t4wM4U}@t{;d0vm<$23^ozJ;Y;WmkIxNmf0QNDq3(Wf^$0bw_<>;kmT$qFf% zt<@&xQ0R`JL{Sa9cNS3S9c&^BW75zRQfT;iD`oe*z(QqWIk6{a)@tX+K&;q8WLhle zd5j0I)&gEVZXm#8*&{%Q3+hOaIGf9T6z*1)<=HYXG?LSrkdjn5yLeKsQ>A1ia0+fN z#x=>CwcQ~p@G4&Q&`9;7Kxs+A^HO9LUyEi56+CU;nQNV(^Im>9>YLCrb)dgnhG5ha z=`SHxtpiA_fG2hKJ-YQ1H-$3}kA~6!FVk1{O`g%An_4*u(hnyL?Bn z&lD%yC&B3T;Sg3BE?{SVMKixgUe8RA*TxvYcGy+|@Wa(*qX3=v^FhxLbA!W@la<>T z1Y+*ZJYU)2dQ9a=U#w4r#7kF;FXnv8bqs94%yFCa0fv9+nr$X1hVf?+k$Ny+1&{s3 z52pOoG(uuMoTV1_lLF1?VA@HG4eX?sN2(j_YA^|o_fzG}z9%$z#}nl!4FPEdKA-=$Wqn9i{(*Wr{Mftz8v$GU#R!G$oAH`)DTIL5@Z701I9x@Y zk1GkHg=9Xo-C;tZXYqVMiis-#aZxvo->`3VvQS+B0{Nw8Z&Zt-W4*F3U?zwU!ay8}CuQ+1nVfo}ptT zDqzl9wuNJ#3%kU48RxSk%;RzxE@xz7L|}{*l_#)AicqC;pmNXRuSqb%9)DS7+V6Ok0sKB8zNQR8><<>GXj_>b~qCuK6OR%^-JkF}y-D&^q^tCf6JW+i7X) zAfZV!OhT3uF+?^OpWK6cJN?(bc6GEe>OddQvvoKOW0!fNu5uh-vEEpdV1d^``h6zFRoH{*qrzX)*y1W=r<4J|)Uw4mxlbba z-A~S;n$}v$eX&-@7N)I5Zy+x>V!q-sD&T1T94$0Spo zcZ{f_yfVSL3ZkTQ&7-HH*&leU(#+r8P{NbzZ+W^_mysgsY<(P{xz^mWf75dk5E ze<(qcvq+%b+$8FaKHeq2l#V~|5WQ!3#dias%iLU4U&UpCEO6X&8SDVq#H(%BRr_|3 z(>AWw0XYR^j<0An9ZuB!y%?NtE-AhC*qsAjV{8yI+;+AybZT=Jy~!ITI&=ouwYxCt z@Y#s#Ib40ja#O9@Vi!uA4V)l)hz+$EeSp4X1O58xmqEYyqXk#`jjnV;WUhao6B)rkPhQ74yeM z97G6cjCFqJ6w)&nQBl8f!&Q3%$R9w(7xSaO&ap5sZpVXAuEAKDiQ#`pQj<-c(_O;K z7nE4O_hffcwQCCN^Z?&gzQ>do#7EgMmJ4P{|4t0i2eK)E_+XZi ze_64yc2Q# z^mF7GM{r%0__53*JYC+)Hud_+Tj4-mNU=eXxeRxGc@;Ns?*eAPGj^Hw_bF8vDwR3L z1NSpt(Y)|blpvW?X}JK*dvbE>_l>Fpi$yZ-Gu??zj!{Q^j}qT-=6ZJG#)hu0m$rp_ zJOM1%AH3pB@YAhK2Kw%%=_({`Dbp|D0ll(3^zh-ynTzR%EP*YriInj5?iBg%t5$Ev zIUzes;pvmC_6N@~CaY|7hGd%oOrO<;#lGhb(r$9U{O{M$W&S#hN+$^X^S zQbG7x0l$kB)(x)2d#Sm;mcC;sWy>cme4`1xU*q9lu0-OZt`yKK@PM(tPwd#`{?AXh zgJlwb$o@?I6tRgM;4cF;pT@=e5TVX8o>#;_(-VGS`!PpYi4Ax}l;>Rf8aLm9044Fm z2n~KxR+!CTC9WbkzBtYZSy+(2_Pgw9ZT>|iGYbor$BYhl>E zrF-#(XKx_^-eFE>O}y4t+Mg14ZUu#w>idhpgY%D6&R zL~2$;9PxN8JyRgeLDv*WjF3{gw+%gn_JC#8@1bFS13cbAmtH|rf&VB28O3ji9+rvr zLeWW3l-%x8hyP~{`Ja+pZdQ@z8S*~jG&#ogyKGttSiBt#SdM2x{70}~^aS1YTx3h# zWM61Wooj7}Y4|IXFn7hU*Hf3Q{SILx%gLWY(`Tv?AK4$ypvGuXmPdRP{CtS))mI_* zClJvU@{fO6LcgHA#Tm36rF2ZjPN;gsem6HNg9b}NMO*A`Xp6aI6kpv^Z6~9`nel z)rgifuRB>&&r-42$ic==>$0PW>yx!e^Aoan&(b%q$@=r$ks}Q;14dpPmOYDR>Ygy| z*V@~H_TL-&fgcCt*HK0Keq>928hVI$0L*8XoidPP3*>rwYQqWs4HcW9a>KRJyU5`gL`mG0^`Qy^Zzi>|k$_O>KZUC?bzVikrq? z#EQ5j2hWdUT~>zuj?OVBMM-aw`Bjqr`XOXB(Cn>pO9`CPvX~`=MtPRDwNA%)pY$A5 zTvYfKbjX&IoVCxz_sa8{(oH{E=#k$*6$=K!w3XFg{H4MEdGTqnaS83JY$n(T`J7C~ zqt56siEle+{~{O`CF8H(UbeKzmqtO6tct~yiDN7-l#)_l@tFG%h)vH1lNQmAQmUwJ zMpW-6Eh<6x2FZacv$mr?(G}(dzM4UL)l@B%BT(3RqKos12mBT6m&{+GF z@ypzMkI54DH%}Fl^_G(;Ll8oW4C$Z?#C6r3@#ms8X4TlD6gN(bV)n$0pE0#TrohMh510fvI z{UY<>66~IdE#;JlN)Pj?J4FYlD=k!m2kWR8iD|Oa`q`qk3?6Img>2lqCh-A*9{kJ-E!ZX5LM3j=&phBPyoKUk zrTwcFxCa`y@7^D-Oc-lWR+d*k5eCpT zv;NxNpp0xR$JEyrY;BQfQDP&ld3yG(k$NXgX2GBu^uMIib+gR)?w)E zdUAsX5#d`lESeoUyFgtbyZvTEsU7J89GHQ6{zzfr5We6`0cnZbD!cj>zR8KQZhWk@ z>iXv9<2yopK1YR`&s(H5uh~Cj38nZBlC4D<((lw2V3fpL_>^7|-rS_?nOa>|ddJrn=KX?^YlmKOKXY*6p*&*OK(YU_NcK{H2+&*P0c2NhN}M4lWgdqb`8xLy$v_ zRbH9X%$DT<#mMcoe(u`az)n3S{ft^T%LLX$Yom z+P@2f|3G}XcX>F?;cyx-t7?rZSpO04+m$1I!p;oo$iV58WPNYd#cwUfH1>}{-a2f%U zwpwNz*BVlzZujPcONvXJD#YR@Mz0#rU)_cj7v5nwzn@%;ZUIkgj{f6Uhd*SE6yN$e z3C_8}CO)(1%BnW&a{-Altr~`tf&zhp#3*>TyDCsN2m#8y>&e*L<#fISJKZ9=7x#sNLM8?$yq(I*>S^Tb6 zawX1CmFX=`ucRXokDN zMKpN3V9LRegHrZr$2J82o?ZI)szQF$zEpyh!r?LNkE#@7jQxHEiL?YTcFc46#k4Lo z6Go(=!jRv@V_el*k%PjC*cX7CtcePn3)R|BbbC?4*xY~Zfb9AW4bq%u9^zFdrRK3w z{rqgFF484;FE78$j1Gq`Bg^a7pE+j$&nV`op#|uZBqm8|UPARe%5hZv;LYnxdQMbc zBPO!v0{@Hv)2DLL3r#W~Ucsn{Ucxyt{(N|yGBg4p`%vBjfnc09Ml@kElW7Rpn=SQ` z?@}Aoe#;svw?Ak76i`V~*IpemHj$$w?0iBq!Ja=+0DvpXgukb>p8KLJm zec{S%Ewj0;=~v%9jO%pWc>=6TlbFid9P+ov>j_vE2|T19B=MHRtIip2huk#2vWHnv zCXq*3=a;Eh=wQxsm2Gm&fjS8N+Awnap!fes+O5-4Yc3zU{q~5YP9U}RQ`}7%OO_sG zWlA{iW;v$uf5-O6uj5c9b&GaOHziBY=w6G8+CARQj2JXu=kGv(r1C$azI&ZSX69!6 z>xTZdCd4H6?!UuY5SN?&!Gyl8N$3!*ho>`!Cq76nGpEPn_48{;D`;j#JJSb2!bV{R zTmaozZtN?!NB~~l*!k*(`wqz)Sz2D6&o|%BP66?ls?4=Xf3;6k`CpW?K$Snp@w;SA zzvObr$-+}(TmJv3dh4*J|M1^`Y~bidP+Cx=OS(lxx}=l_0bzi2j2IxD(g+NYM!G>_ zbeGiV?(P_I_WAyP=UnIfz3bX_t=@azulwa3W*u)t3E_*Up!MC`KQ0O{NQ}+3-ts?` zs_d+`up!`w6o49QvZr;yK2~wMSntAAMNP;M$pH1=Mum7D6}6*nr<<=NZ~O@S4T&)s z^oNL=|4e=5SYp#ttYw8pNuC;%Y>BElJe$`uv(w$sjJ0WZ(f5rszhBX6KVOv@LZmj*yOC3c~}e zZ2&hp7L~~zD!#7#D!4dm+E04Am06Rtp$Q|(mdQ*WJzna_AT_uN8j?h04zF+1l74;# zIDRqGV;>vnynZiNz7e_kG=p>s8o!()<(9s8xdr4(FF~vKp6f<^kXDa%?;mO;O}=#{ z>gYuF{``?`shR7vxWcHQwsmLqjzz>_mI8pBsG$v!;tmR7AIK-|K8S-@DD4Y{kv-c} z-CTuUhkpO3*DY^a>EZubCo=px!dr}+q=~G|QI(PK-n^`45gBiGbDl3{Tjn|W=dBPd z5j{OV7;8)|5dHn%3~M8)@Di!}{hpD1#@#wghgqMZ&%PObRWlvUvX@&Ws>!zw6A+J1 z72W@A-ch!%6l%R0x;R(|ezGzVTjoG8lWXST3Vh?I)a_{||D>tE-NyL(Ro-@n|7X>F zEe2H?OWf}FspMyI>=$93PN=?Q%=zWuEtjr4a#AK}*lSiUtmU}I*PpOntWrGU(!Jwt z0H^#`#?^NM@HLbx;jY$CgAx?vST!y)zuv)8P$?{B$?0!R4#B_P)9-R&v|OjPUwx7h z7!`MB1H)JgED0fjzn#tz0YmHl8dw2n7&QhHfCVS|-pM`+mJZXG_)dW}eU}B81=&Hs z&y&6sa4;l*J4}aJ^DHGij@1t-yru){*ZoJW_`$*mZ#Ju*DEIfP+pmu?oR>hK%vf~u z>CEv&va+{ZEZv-BWXb<&=De@jQ?h#|eZT zRvn6e;ffJ%83cW?KJZY}^kQ-x^83oCdaX}%+5QVW3ghzF(^J#2KUk6bDd8$5knzh6 zB6)v~(5lR(JC-#jUB>LKK8*E!QVaaZxS@z?aWeJKb(Qv<%6s#ap`qcyuNIS8p@ig+ zY*Yu`FuEM!9{u3?U1a^o5C**6Q^k*SL(Yj|7r5dPW89|W1YzX^0Qxs%N_DfPMPRl$ zQ<63~^zWs_=RnK}O+{Cb8&VkwO$G;aLi8)^Ur}5If6lgQglI0z9*|U4_s?&q)k&y-VR)4bi+6f)YFu zl`KKB8BOl<>oDb7NBOp!fx|At*S~_zFqw!63Ryx*C^;45{fcj7IhbWb^0uP6g=M z7{%~E=%;L!vd9eR%BeGY=6>csx|TB~v(I49*z2QfAUngZjtBPhsqPQ-rnoO#?n^op zTQXIT41`8v&h<#TgX^ryRyHDISg$sv8T6ooHc<;BCoktal0!1|SoY5}AM`we$oJ{H zNUnv!$=K$2_dP=S5RcL{Ovg*WDob6>`~{d_4BCh z{7g99J5k?!L=()h;lGlLiU2?Emu$_8TOIxdZs<~_g8L{!;_7L{Qv6}2ZpY2rCe}oO z_8*=gjnMo2T?Lx=KG7FH!?JQ!;r7~gBy%AuYgZa(Z?E)x`+MT2=_=nP^=k5}vP!=` zef8=^eg{2#B9;{Z7)tEBk*Q5O@-}6V3qceyL{5 z=GOHOG}_Ibf^>^|uuz@9T4g@&AS$IsH&atxGK{)Gb-}jNl=s@*cDX2_jmkK=3(w5XZlTD}e{LIo* zZ@Y_E_$>D@%*SV3sJWbgy?M9j&p{3MV`k(L&zy%d<3#Or4Gs^{cRJ#xo#uOtWNj@o zTqJ&ZN6TK~|7HPJ4g+ZG;nsC##Kxm%&+sxQz7120XiYqEz~JSO9f0j&$YMSf7S)R= zU)Co7KE6XswsJJrq6T=v?QOV~&}cmlGd^9yLe`F!%#{gz*|em{DFtiGrn6FxO3UnP zCl0C@>7>o{dUu%R@J@GlCGKs*$|T+827-F1T~EUv)XWCmi>4%EG?t^J&s^#BN+;CK zF?ompw2kM-2OYIrzu(XKey^7Za&Mt;`~wsHH~lj-k3fmymZ(>252t|s3PW2Q18Mht z$YPVSq^zzdC^)DVHfr~`)C44J;S_y^bwdiC5e#U-mF#a_atnV3>uS#5w7pvVS=(gxMQMRmG|(gxmU~G`tSd<=p zAZe_*kGXfzJ}?a#dI~W&FCbMLOs0b(@QGQv9}rywQ{%zWR0O9986S=+EVo&|YZ-Kc zx3Ty199Ipyry$jk-Q`MJaZ&PX?t`OuYC15uIDPsPZCqXA$8s_M!zT+fx+8-mm!@7@ zjRc2)run*WKCmdhGC&%}k_wG(rFPY%#b~@Ytsv11NORE}(%0?!rbD+sQwatyo}@($ zy3!cpKRgY3qLg&{9y%XxOP6Y`_ZXGJS^jRH_I~}SB}-t=_jkyGGf8S%db$m28+yHS z-88d)m`HGtMo{y(ZMpnRITGxfjiya!7)^kM38XIFHNoh)QP= zof^x9fc%n1yL){MZHe3SN#nSpRgKM{ld@8BAK)|c%YqPJ(>$uZXBlAko8FD5tDIhR zKE*UgK!v>4o(vN~Nv%%(h~~O7q3uM-@$Ii?_g-6N-WlE}is%6{LF$+dm1}f;qd=eQ zfD0c;4iPbH)lUqB@YiPHk54t5T8#=NTe50{)?oP<9lupB9q6~&^(o;7wLee1uNTVU zzlygAuj{St#$K9=K$z!CK1J3MsvYmnc@R3`LPKvtWtui5Lr`7wJ(smbW!Dzn)zC)J zW@%&eiIk7)t8g>9AK9{A1f`y$dhXvBYR={{2Zs>|gJ9U*Yvy%J0K zQ;mw=lKr13B^uB}qA54hzo-4|2iy;<+`~QfjU(F%42nQsbcm8x#eCg!S2M%f_d>@v z{Y@GphNG(>rVa$4nN%<%ycW-oK#+YRzRLk{i7N)B4!Pp;y?l+oLQY*&q)EHl0_GWN z*TCjlB@^yn>u4iYTho1}Gx?42#7&$h28izuAT_4bjf-=(*nBE0tp{!l&+-vAzx@R) z<~>ZPsUiN6Pa1!q=?Nr$EpesrijPa>6WfT^Go{Z#Nt0MMn0@C}_*@G#x}1TTzrsDr zL<6O-z^{h}^*@r3ym=iu{y-zWI(U~Dr#|a<&y%{`cDWXQlV$^kF{adwZJj1#e)?)x z1W<8X^vFkt;kYZO?=qyUrEVLigN+jbRr&dJ$vQ84L<^YiSNMS|R0Rb-KnrrUpIdx_ z+KjLNJc zm4X!P87{`#%01g{>o4 zMLHHy!PZ7LCw1p!P21_nz9(Po^o!do%<}QtkRqno?q0qW$S}Ro(^|(k3If%jInxjQ z)W&{H;ldGQBz3Rm21dH=xjDE3bL19wK6-(@jmMQW#KG(R19)C+XCt#A7^w~~n0?07 zYd3ano)rwWQnq;btOY9e2W}q$u**B`u3ujYBp{5JI;YBm-jktez}Nw<^=rOa z%Vu}(8$1KMAWh~yhP1DLU)DnmR{6I&HQ;~I6D34)O{R76YH_JN+H0L?-_2*sZNH1# z$H5(ksn?0^>B4HhAnYe|@S1R$btF*xWuj7ZybivcQ4!%wG>u9)s2j{hyti_;d*^xG z*4`beDVD#hs-ZF1mbOMIo~rOSVhQCJN;)AT^*oDca1z-Y5*cadHo4)$>6PjyX_e}<&1sM;AUFr@}VW1D6YvahuNCVH=*_*aE$yZIN=@n5wqwF_x z28J3MYS+lkzwGqf5}#2SX#LNQsQSvGTUaj zKk__&A1?%a#x;)txy!1MS3}iQ;brY^-Kr!O3ki4@S;uky8b0MudYQDCm8E`K8vL}I zr*y_if15Yxy9;cTmV$wE!}PGcdi`|O?v#uqjOp%y?lQb(=%}O`4TaRWAXYo8?n_U( zpLQxI6`OFEBx}vU9uY+30YF%*06&@8g^Jh=_~zY875G+ttQkBJ>9PdsEtjmw7g3}0 z3vTAcd9Aoo2hKNELIk+`6m3gD`nN=3QRFE6q$sA_b-|=(#gqVg>wJ zgy-Asu1pK&uM^`)X5n&m7>hVHCj;5uaGbOU|H13yjzm#{tl9+Ff5mQ3FEH?}C#!_Wq& zWg34^&%JjKA}m2qia$y
        Kty-Mr2k;7@5fL~atTlNTv#ax%&8Ge~-Sn~w!n@r1! zMC4KC2;5hL#%UvA2W|(RO2$Laot^1aKr!^H6!ErgBP3k{z{2!OkSXc}rsgl?5zJ>5 zSy|eAlf;>w!K#~y&?|N$`u8`T7pJ8^S!3DgG8;*DDQno2fY+i`9KCSn{H7L4H?R8L zdEW>3U-*!jgc)@+ugSoe6if{+A)`8KLqruqEBhegDy5S*r>80nFDF`rzq74mF^kOc ziXyaQ4xd3$JCp%=#1jO&Z8k<)Y7o$)C$F*CR@)7X@0~Bd5E$g{X%DAo})#WiJmWA z2+_UyqcjxGJ+}A^wN4ZJ4AENbM}C}k6BF6nM~j`jO?%8#Zbta&&9o3(P*?C|+hmT> zb4?Wpx^tGO`JU|bo$8F42U^=h7xdP*Vq_Zz-kg^CC<0BV*?uD$MlbWB_}k_ito;Fr zCO}3oCnH??O4A{S5RWP7V2wdP98Bmr^zXCr15HYS2|(#CY_l7PvOln#{*rLDZ^3d;ni!ty#DIGi4S(_YiA&>z&P?IPVa9Tmz9SFp!5{wVHats1Gn4$sPTxZ+`xhMLac`glP=b=z1LeBO?UY)R^ zT`zaL7LA7YtE4RfT)Evply*RuxOxd^yg=)JbY}e`cab+eTqN|SR~jO4eN=>g4A~l! zHsWfs>#kw+j3zyLE8rS-5z*o)DY~Wh{*=9QQ{=mysqQA*tj!4>JYWS4QTWdLtg`sD z4`}=cUo6WfAeQbImawc?T}B%JqgIch{`u||S8=mdc5DCFxOuk~j}VyFH{;b5HUiwCPHx=>l@`)>QU=!Pjl z=D?a35-NFm2e98g`twzwU^qgQ+PY7p#0W>;Y{b0Cd4-#7aQHrwP#_kjUu#u+SF)CO|OBdSp8{l~-@!uAb)cBPQ zs_0hcfO+lrW)N!6omMn(}EPm{-h}+AMR8JveBzR3KtwAY*w>x7IK%M*XAI0wP0^hfF zesvBDE^#w==)NJ@wXS)fNVe-I;=cey(=a{*{e4>Us|_UnAii^0qxcRsgCf8U#H9Rp zeMaI52qV4Bv~^J2P?`$-ff{35UP3penb&Pj42a>$Zb#T&TR2Q78(l>5xt7NU!@u6iS2c#LW=+ebYMaeiSvpsdeLzOF zU`bZ4=Sk1OA@@bl7SIuE*JHhKuh#m#vYST~jOc~jY#8^9^(^PK+KWFIo4-niiDp|g z6$M32zTAPN$GLq?*7D6qN-T2$(mBz9V0z!t|MHj}f1mnG79I)|*HPn*^4L&WF|UC> z4N_$G?+vNpjd=cSege7aZMG2O(k};5;@8-EL&8sN5&C+*ve_2F+?>XZ*YB;H3gx~k zkINZnOFR0hoj!umVxeYVF6675F+jXmCP1qFx##+M$br;9GclqVItau>)HuUk&}JFY z7bI}I)t)xJv(q3K?xOtsarEn-DgJWOZVnVk6DRW(;PX^(-}V;AAgjJVP+A|rug6qe zSd)+#sZ@qs3BLt-RjvhV2N1yFY2{VX=a|VHfKMf2*4}vZGk&S198aCd8QPv=dXZm=8TFXN5=U!%9V=E6bRX@Ea(WB+!Y*@;LAX?#+!0Dj5Y=VCdethEf6s4F- z2FANzzTtV+X{^CLstU+4`>SpHSfNegq=nF_xRI_)86Vqmp{+H)%PGhoG@GQgKHt7|!O~GpRajq)jOr@XrL(@wP^V6{H?&JZ#dBXQ zCfBq*_z`F4a!v8!N3cne_?CraoJv3RvcdM-u9(>`s6mz7C@(JL5|Ok1$29P&nb$!Da( z+~xnM?VEVXUH+5QRJYy@w0iM%kJ(nS`}rne`k;r%Ny+mpqQE2Ig!dzADMPS(%c4WY ze)_!ogigQ>uQCqA$)S?=EeOW@e)=hP2s1_JzG!=$N(D}Sp%Td(Z5F2q7inMVhI(u( zO_tem94kF`n6@}lAB_J-{aJl2qd`CbBSRtXvFS;ry0kVOQcX>&CA>-zW9s8;;vYEw zJ`3G2{{+;Z>qbjmQS*okhGNci1O%k2u;Up2vFaGHSexfqoAt`LeOnnil8{VBQ-E8o z#aw_3pg+CX#P)bGE!yZo@h;xy=O{bNlIiwyQOc_Zj%g}KE%0}s_AS2@N(FVXbge8_ z?&gM#zNL9rn)ZnS@Wr80-K9OGLC!GkmDZEm4cKbG8Jlws-QDvg?rT;)^ZN=M#S(At zI@vYw^I7@!M44azNJ_S-UQn~Bn!@zc4|^_|!OvNcm}KUl}|Cv&SdiD*V#i{__m?U=%(;Hh}>7owR^aJS%7 z6{Rr>7OInQt-i}s{)ACu zUFq}+j`gY(ese@)n0Na6$4XyUJKh@&ZBc%4;ZdKJPd+K+QeuWSE-i2K^(*ZpXyfs( z9lUX04}?>!CTE3Fl4|W0q+hf94bRy~`d3cNIJ zSjEq%<`9>`p_y(oP51NlXdutl{)tBBhr@&+7T#yZ&2ej&LDQ|n4-ZF=k_d&2M*?mu z)Q~8`eNz0yp2pZOJ)gdi+yp5l_zO$7@>NRxGxElZE~|O)jwE!talQO7NwPvRlt{y8 zVa{eW&y)~8ASu?92V|QJUlY~qhoje)%ye;-)IV-AQt-Han{%ozI|?y5TQJ2)4EZeg z7w{gdNJ(1?TewP!XK2*MIvMG0Gx+#*?huR^pEeA=_)xU=Qp3%Qvtk~nIVGi~vqHXS zLUTv=i${~nW>-u9_s;T&baa4^?yg^_<)6<@lJ8B^RTc`tq673#04jmg3_UiUwro8; z*T9zl$tC4=7M6lZk2UoX1A_LAY8Dib#Q1}GFsQKigWKCbop3S;GJMe|f6yp4bW?X% z!FYAxfz?Hh(8wVS;kxj`Wnhhc|AEdc;qrA$?y(?N$8X{IcDKy|>bUiH>g-)hh3sy3 zz$p&|m|`k+$y`O#@%J)04-U05(XUrLI9Oe9INufd<3EetoY@0u4orpI?c^I(gFA-Q z-=>?ASReWVR|~FFOf95I>BwJGHX_iChY}Jb@j(q&#-FxXVZf<0aHM7ypKadM>&m?A z*tAliD|8JXMgp#I06Z@f{wtq`2dDN&!xf^Vm?*5%BkNE`TsIqOc$)%@U}PyFQ+=oo zE`ANWf{`^ea(_|z>4h66E2RhB#&O#9`+V}X7ZCDZ;Y!af0_V#v2KOXWSzQ#ZS_i0Dlm@{IK_V+ zIDJ{HNi<(W>)kFnY7wmV+N#AU7SGWao?n?ALd1^~)&r>EMnt*pq;x!3+T%|835#gn=iAToQ^I&nB zDGf^4jE85Lrg$D$8^LH5yMksZGgS>CKj>v1L$jL#Ug@fKIxIdYqkwIenhrmV+vylQ z#e!d~_tT|!z$;42a|=88F;Q}th0T92xsV@5wt5q@713`B+|jnv)wugqRiqppWTt|$ zEt-{LbZts|*07wPeyCeY!Js2li|1p>??=reNScOE&-R2YTo3(B@WStq4-FrNB(cIqW zEOmUZ81+pDxFrK59|m!3jJ$A2Sb6dRSbqK=hDzWr5_mS+bIA06WMYk^*CQ|d{!@sd zfw1NhiTM$)O@7z54~J2n)TL<4m9Auw{e^X@s9MLOTGjRnpVOX7fvR=QFF!OrKtJx6 zbE#)!FY!l)1899vFqR!vUOF}WC#iHiE9E8-FqB3^{|EEx+x!HxMu!I0mF8Sg*Viv{ z1{MZJSQo`>&nGTiTLlE{eq8{QV<*r0fwK1Lkq*ROFd`} z`I-wW7?xf1Jk7fY(In ze5vyW0BjFCsWb9PEpP#|@9|^KNsEoSeyMd=q5sIGts!f+MZd&HttbvKDuL zxomsyx*V&uM{hU>4ES#Y`3ZNP(CYQE>ZAkTA(dU(Qun zfx+ft{XNQ_U+l_iz?IG#>1XynQbZtY+vn!3&WNPOw)F_Yx?m|=V)svech5nK?_M1( zbZh{K+3@H-@EpW%vN&-0P|BUcIhbtl;N@I)mSg+}<5bIQtL4j=+Ujb%KX{^@Yusuqrsz$3y5pG-i@AYoPKry*9LBU380M=`&A^I6Hn+au2vciW&w?EH3!FMsd zye$%xc%6(75e1S(W2F77{L$yv=$v? zd#=Y5jRIc)ZgrI+{zI)<$I76NViMzNtgGK)sDK3!(Cf56XsB$^-mmk8F9ds85C3V4 zI)l9=nI`1QIse1@)Cgsj>yDF{%hayyVE+S6#Q$ai1a&i=*FID&qq>3@xS&ptkPa(RaPk$p6$d+OyUb#>dLV`J$QpMv1n0E!4yB zXv=_9;{HVCSD1=@YxMDA_yd@P3J@kXFa>Ntv9>a7=vfhFQTLLj*X~Jth!8SKEj+`N zc}$QO=W6r326U=g1)vf``HRMQi|4VW|B0m#1kcGTC7aS!M8SoHswz}=Z`4fodv_p< zNUd-#-Hb!iAs8oGf*`qc@OQ`*xu7+9198#^1HgEL4o zVe3sAepM|zVFH_&2arR}5}$*}!+eTK6wwnfB zArK7s?6OLv))kmrKK?P?g3Q0wscSQXq5g1!`a-6>yygQ_+JuJ61cQC1_w0V+%GVRG z-_(pLZ^X$3ZE$Og{As#7x}zigRmSB@u2Nzk6YN0kT%V2HS}(F1B4&`oc@JMjGtsV@?+^O4q><7LM6jp#Qv6|cz)Re8r) zZf3mQb#2TQn1P4Ls7SiifQ5;NKySezbJ?jp%U9ZhJ(fLCFS*n6jHnzGR^qrk9V>ug zX{<27x`R6*HL|)HhSl0D?4=J?+on#f$;tN};y~YOgij*sCrrm@I zDP@hEg$v?)eRnD0^ZPOh?u$=)%beG*Lvcs&MGt(sj$&l3_(@(OcERSO;+|4v9xC|X6FH;Ei07Gz zO{m+Ggbzw=rxO!p=a}gM6!}~`lulYcGU^YD7TC@LG0_)+Q7f8eDcvjx44$usyT(zTipJ){C*3ag`jc5^r=-eb)|8+HUOgBy+?Pf?|)98>E+R~7im_A;n!vA!D zCBfuiLx6p|25dtP5do8j+B3+9rRy3R+GYq|qxbg*uH(u=GfR&h`H-a+P@DZ`_vhWZ z%U_E=0rXse^Np74mv24p4&s#acm3MER`q9LdO}bYWbTn zlptg?ZQAD@;SZNzufZxZ%3YqteW&utT375lDOGv3pp$8wY_sfa!Ou>si9YzhlU^0l z+y1!de6Fus+49h`Uf4WKbPVL(7ZG}6!JoB9wTdXryIKXioTO8s8Bda5OV zWL|De$`-?1!OsqJd2o!(yffpILyKsnq-M^3n@TOHiP($M_zSM?>r76;evlZhD-dnD zDg3G*A-`Pw>Ev}|&)v8xy38X9cXw=uyh&mCwf(+0yUvvpW8rQq1K0K^>pSwLY!?J%PkDTAJ?MSoCb6*_V)}Z& z8a$BzcPEx^;|rB9XDRf~gNR&tg8kQLvD+eUsAuv`nfye@ScvTEXsrymCN#}XO>H;j zUFlns`f-fUMxl4l9E$Vv8^HJ^Jv?=ENR4H)sW=u*Q(Z113l7vrC|U*-W^$4XU!bUt zq7tP@t=J5WcDx+!f4{jdG}B6~2yF<^&*Zcnd)2t=*YuNhZv+%Iu$B2|KNuqjJ&XPA zNls>WmcojACCKO|gTL4H#Giazj$4p4jb=d+<5wLhQI_j$ny3gJZ7HFgKSmV{8uGvn|5zv z;E0uSwTrq}{>Hj{eM6=qcYmNcfX*uE?s-ek*@%AuRC@XVX$c=OOih+@G5&SgAp*uA zNitPz>d;2{Q4_Okw17s9EjQB;^gYN#*86^2 zGhgvc+r$5v8(&IFKPhy1am^+od}pX78KnP`m;5RRkkuRAMCjT1%j}+nGS4(l|F7KK z`s%37Wpw9j7YDE)?&A-`75d%%!aGjyb3&uFoAtW#jX??rIb8D$r-I+h^ASB_Rx%DE zPHMAp8sv|`zSqH*-9jy6i>HZoIrpwt<7i$Y8`G}kW)sb{cCtv0`Rww;Pa@C~os)1Q zFFNQy?@#}iMCZ}td%kllbiq53w!fGn2@tQ_3_F-eNzn_il`cu> z!B>+A)Ny<3O{$NvYg&Nzof{O^qV4L|pEPPrCi)33uY#Zd{-pf*ui=kYo#Lz844xIYUWADyFh*=_{ZV#~a_HoXG|AO5a7nl~ zYP}v3?IQ#;))^d`q5A*W*D27UM*Mn4 z>BeTtlfvs=Cxa${v|@w9k-+N;DRLri;}!&#Bb36<{QcsdI!Qcm*6AAx)eDm8tni+mRcJe6=xni))Su_?Wp zIrnp+PBAPzCzAH`dkSx=1Qh*~+651|Y`87xic>d#{%kd~js;i~+!YeKBa`mhcwc3v zS_2q(S4ISXozpY>$=0Lk0qgwz2lR4qPEBmmBAReb^$Dn)M3?zn7TJi^%)ig-OVLu} zG+rCd7zPra9w$oOf`VVCqy*+laW#8oVMW!=Yuid8W~*DL z`(WWCXjVCNyvL%%H6NF==&-eTiyP^^ut!!qYv>kzuDWkWDApqrcDm)&uDVA@G z-ua2ezL^xejTIz!v>knxBgqR+aad5_?aB?cY?TsQk;V2+6R6&_?%ati%m`2I8--?w z050Hav@r1^g8X8LH!V>+IqC1?5X5}~nCx-%GfIN}j!9r8?x6lGYA;;Cz0aw_Z^*c( zXnj^!2qYRMS!K8(x1yDm@6aq|0BaA&>UOU3-3d0{> z1k=DtkJYE%6}1?Qc;4+>K((jAej3lneCiI{1v^;$+~UFp0&LS#>uLn17R@){??#O0 zd&#NQdum3TSB^upnFg?#%2#59^hodew!bPawq_a3?OQq4{N&O;?igxisXHFE;UvE>k5M2NnzcC_SAv48Fa+bw67Yp#JJd_P4QT7fIbbw4#8@QuI9g9L2V zVk>~dX^Lf}7}Q$S3anF(h{A+L%S}c1%w(NJ+X9=r`hK#}ViafvZ900AJMGBmR;Wj? zGq-%$CF?uqN8|~{Hg2mb*x6nmO}yj8to_*dRIR7z2UNsCeacT1`dpBc-^qkb4MHUZ z-sjDUR@R`c);Z{5IkVy)xR(FN1R^D%eQmo{%|%o!k4kTepe%1lK^H%dH=1`e6CQhT z6c-{NYA(FL8*B2_sz~y>#}Uv{^Nzqr6IISah1`&?`)#j}XLA$!(Oy+4Dt1u~aDJ(O z>)1$4mFe?Duz*T^UNO-3Znk!}V73{^0CW|5dCT8wx1d=T3AzQ8d( zm#LNGaX)(Zc8H`=9bF0;T|(fNPE&_=T5+~;U537Y8%mje(ZT^EKzV{-|InV*8tn~s zQ$4<|#d_!0fUC)jH2Hs)W0RVFVY=so4KwJU@s#?EWsVnFs2ZGh4r}Df?&_0D8|NRD zZt{2|N%_khu9HH_14P)~DrCJgd{-aoX!7Oh+jvzPlAgc+qjOKPzbQjoWzJMkk26p* zW5ueXMW+Q1I!8M8sv`;6$GN2{uOU z%0y7RO@|tB4HJTuBgT}tzyn^uVckC{woW@DabSOhl5$%*@>w!OH3j{?Z9aQ%{z)5t zv~Pb@GyNHQaFKp7hq@Y^W!v+WDMkypYZ-$wW;_``TaNVVR}>ibvPy*+i`B)$k@gJ#x{9|}gq{4k& zu{VHb8_FEYJfk12KQ7zaLsPw%LGeKJ5E?7Qq!+Q z-=;F+w9IjfQ>smaRMgIu9k{#7M69UHNRQh<0nVT=BsBh}pTnY^bXdvdjNha4l5uLz zsu*uB*V`D~B?CJ}+)2-}UmTErr?55Ep?jke*gr^u_&NV_8GIHWz~l__-SD_33%l_P zSm(+V)~91=Bo|lu0_&8H&t6CjbUzKE2Kazj%TCI4p@N9|(&PgBX?H*I2!4PX6P3YCvmCZ*o#PD*+^ zZl3+}Ho_bD<-|GOC$SrCFEvi3OE${XB|7dp!(uvPFuK;CIw9pzW<53t2D;xWNn!b3 zOo1bD9=C4pH45^)a3q07v2$CvNFBbbUbv4Z)U8V#;nC!ZWqE~uvzR+SybLCNO)rxQ zKg?o5*GHBrTw?7DNYon@O1hY-0)3#OvE8@m&y9Nf%?Urc7BD`bHn(LyV8V5ciM$nB zX?d5MIsC8b=Ot0^Kmd*#6e%qa_iKDsm0#}*1)_u6?{}C|g*_481 z;-%V-JX++?GUD1YG@=ALG3+yW)2X*8sbl;=s%yDpC%cPX*Csl3~RmLypk5s~V1T`kg@ycfY%T>^s@M z&|D3Pl`X)WG=JPa5Qqm~oNh#5Ey*n+zho$`N!;XV`6iO@ZcD{ebmh^ zkJE4JI~!x|%0t(;(EeI$_FX}V(@V5TL4%*5FBh~|j^NH$NIJ6@_EYg+rhU?Qvr!FH zm8qcR__7P*S|oOD4>EM4p>?PExec}hx%W#JHA_@=kN)qoZE3E@GTGbuU=aqQBv4o4 zt;A-$WI4-M{bC6bz#oP-5&9Ad44;{B^e+(wSx4J;RLT?xwUm~|J%Z)1V+Vc(OKK4^ zLO0lrz6s5L4=`|BaJk&fxDIVHI(K~5JOU-XX8XAOUr1-a`N+F$p^eV$%(IK#kR&sg zt^I*byms3B|GS|5|5vsc1-+exGNMJ5=CFLH(%;d zf1I0WQ14ltJhsvRLcp*|$XT2Fgtdko1t5pug12ZOi|$9G(4mb#Uzg})i`w+BKk{p5 zEF+vhwge}Qr&uX#)Mld%35Rc{^F^aFqUZ(}e*Lc$@f2m?Vv=>|m_q>(P^l5RFY z5Rnu_1jdl=?iwx9-QC??cc1UQ_xHHJ|F?hk*kgO2*E#2TEK&P^h+NYfA8%*>-XFS% zX6206Fry=Djt&qCE;Cq6_{m)g0 zkgDk~(g2-u-SS5{uAfTnWjJi7PLX25!u*bJ)b%7J&%SB9OBf(J_ZmHi+z;sU3d_AW zl>u-Ih)U5ER&`ZS1YKQ*CP6NCFeKQ?TLnBxD^h9qN)Hb(?Ya-_DJ=Y@wEyjcHgLYA z(Z>E^g}8e6RP+wGDZn#o3Dvg%YJJpxxF4j=h#I#)D0TB$jZ~e%SZ`QAVpO98b?JS$ zKv;+-F(+HF9jK)}JL3Bz?7^o^^6sGE$4-m$;Xm!IoS6U&JGYZ7MmCTSn~Tv?o1-Cp zG`dr&Z-fIncjx;~mh+5NY#2)|T`3IPI$JYDkDO9dW=922-40C3=R#-R_vukE->q)p z_Ru6bOm*i&$_j8@5AOAzv$zjn$Ha4s3R)Zja-w{W5szoAq@#1;F>Uob2>YmcNB3(( z0vD_dEp4K|p%C@+HpqenZGyOh`1JS3ZpA5?vDA42wl1+?NNv>+DLi|EOrDGFgfkJPiuP(mkG z?f9({9(t29G(VzPndTR<2-f(45SQS|zdH$m?2Af!&k6ladjE~v*S-Ziok* z0=Ni5cBl;A&yx|1Pb}c`rm^Obp*CjCEb`et&&zbqm=IdhZx#&}joRI2DRAA_Ze?UZ^6Bh0rl3kJ*kK6W0BoE9W7}ICgVQXJ| zMTelLK|64e1s82g3q@gC}TS_N${ z?0GuBOg?tUrt!A25NpTP!~qWA_?cS; z1x|^~)3Z^RmFCy(Hd$ENthq8!maF#i>8i3)35o`Ti|dK0Y_YT4!$x|H^ep|4iMlXe zrNea^AyA07S-`oJG-PJ8n}oh?C$_be1@%Z?NdWGebQ|eECL%gf;sG_>? z9xV^rV^JJn)fM0+!emNzT?#45JE?cEDR^o|#`5uwqO0EwXjQBZqF~|!2+(_x^w9`Q zR_p-IHB%Auk7f7@Z?^6-Ka9L0YImO$u>b5dYF|BPF=6Oa*tj8jFtya?{cu>BfK~^w zHEv}keOIRuP*n^IEWR7`5xt~00I@s6t`P0(Xa9k-o9=g-{X=!03~+uS>^L2LCt$$f zf%j+yNc6EpXAvM40n4r#t?V-eFnsMZB5PnVzy+p^Vn+x+39iMqEv#;BbmQ@zQ!y^B zApK!Z_lvEXAxBiQKKc_Lk8%qIYPjx4u$49-9iTH4EW!6GIq+qy$f2<{x>)O{cH68r zR(+lbUh?>anR5maT36{*W9ie_c|{B}_c#!D9A4Gx+5ZYmNrcx*Bk8T{61UsL#8{iqAx{Ans&E4+6{r9`` z`hcz{{VApD*|9ky*7|p(@Q9|tD51e$q}Fa+bwnEMFO;sOsNIYww`gn+(a$USNTx+#%|jW2n$?+$%6zz&`7z9q;$;d(?pB&WNz&KLg? za-W1i|BG5Re3TIuo=3Fm%YzX0{*X=2szc8M>QBqk`p;+=i4R?#JtRsqR?9+CV?`1|+68)7KUc*CGCHub?tyRjf4penIeJRo) z1Y!E%+81Uxzs9#|L!bIrWUE6Wr6~(G`X!q3|7HP>hnP7 zy#N6>2{;u!%peWMS|AYd(HZtty76n%*9`WZKyVSl!VxuBo}o9)iWMeeH)aGYk+Wf#Es6oB8| zb5h64IqADh;B2ezt(&mCgd)p7!j_(6YSii-BX8TOzx;5kGw07HMHNO33+n4hJ-n#X z;oG3EDz3~2qIE%fL?;zbwbP8YdUoDe_D?=suZTM|-{v=4gc9u%xTxbdWY6_a!n&#( zX>#-ibh;W6j_13xtn2l-%#`g@{yF;}!g?9c6Z9D6{YywTxB`Xp<&Ls=V}B)qt@mA7 zmgnCjl_H@#$27}QhOY6+re9Kuf)mymBVY}~S>yLHY0p-8O6$Ts5l4(F%3LR=_EQY@ zYv-n_T4wIU%^v-9R?}`owQtx&x z?N#Jre1ABf-Z#P!NU%5QrW^`}D29WFO=Gp2ugCuDM&7Xv+7yRnr-T2SoE0UfI69`X zvffyRAjuzjOFzs31gyy`*QRu=Q~Zvf3xBTxg&mrhj;`OnX=hij#j zu0N_}^!SmZLDtHsG?wlo^Lv-=oWMXu zM~+!>G)EUdX0_;(BxV_wE@C=)7xVf{jfglTfh-vjs9OwpBAT{2POUym64zpM=F31w zXH4ivYRm@n`DPQ7kKq6r%Y6%Db;ycNmD-!tv{6BeMU!DpOMeYsZk~U;$9~1es7B^7@fZ%1GXb92> zq%vHm4!ZiIH2xZydXfq9j|1d=8lZEPJOQ_Z=h_}d4bZ4fm=ON%3y59||56W}#goCZ zPxNybR0hD@aslGXfrG2u5^F8}-WMMY2+DFrGmYzW@(ug`p+_zNzk(S4fG<_?A<$FF z4}JO^$Rn&9$@hYQEMKsDa<~Vj@P|i>G@C%7u?*PU->@rHyY=q4Nn9@Z?%&$@KlX9{ zLs8Y)dq;tgLH zX1h*H)(D%ir*Po+0BNd1(l`DvLT7&?2&Ly>1^M{j>$q~&#UJf6fJ2eNC{rC`hpt~> zZW-lT?j`!8k;{$QG~9|@&yk=QH>@nyO4V_uWn7i>(;t*n%>-Wuun2y34rY3P+sDi5 znO%YXE^=5mWT+u+p6F`02Sbe_Ug-Z`vq*PX{i;2uE*~g6`i3g~Z=_5LI3W74m-X_>HBvnmia} z`F$cB7#cI3nnw>dmhE>VD`W1<77pQc)6kNitG7)I-vOUoZtReK$@m-zGtjuejIh+h zs8!R3BbF}d-Q6_-@LNWXf0!>1i4SdwI_T~R%NSNsLMQVkt`DK_w+#<)iUn=oo}5*A z60f%ZK#&{0Z?E?ctZ5s2t^U{0<`HdQ!4qkH+xX#5fKae{<`gR$bb5N8qa$yP!s+PL;su<15EOoa0tue$eYrQ+s@yyhoP6 zo!b6p(|_L&(HSg$WI9PIPyyEWt|2)OzUNLw?sL2ETkh8SV1y)MYe8mSZXQ7=PCm(fxNa${>&p$F$(=zJ48_)cs{XM8 zCYmeAOdHtYFHk+9`lw6z%dDixB(52ZxHI4>*Uj}nxQ!PfZ~$BniC@> zOJO~QW~cEqSWp+E6~@$u+l`s6k?g&*VxN@8wcobO^)N@H=mp+Wu|2s(HV#B>ZSCPq zAO`H}mr`|cu;4gh6wugsURiwiO}u!*`2VLT-{JWlT=+ZYa4ueFIbJjSJRIB`7AU!G z-{cO#-=fDkTf?uZrR8Y}E1xm-0;tm5U)#NPSK_adYh-ZK0%}m9B+fo)ZacGF65S#a z_t5ByBlJtFN;_1lZv9_Lt2#=L{INW2E~^d+{f30XVp7i2e#T+J%*0Fdht2qNe;lC}to+PfZyl!^LgEw$TUpqUq~t$dujPuVt@=J@%j#+Sy!84D=JGFZ>}Nb0 zKHWr~Lqu)zsId!V=`Er-ruT#HD%}hLAVefxzqbZ+$Jxx10^>!RH@AvMfS42^ zLV>QZS%A)CCRAdXlUreNy2pZ z3bAy_+HQ;{^^DuRd!MpBR;rCY+y+q_sZ?q2RAc`}rvD(v$H?$Im$okr$zWomo?4t} z8w?c^U~K=d$yFu*kP8BV4~4|+-4CA=pwv*mSrvbKfnEynjF(4y*=(_zo zN>luB!m_$Tdqy&9KA~|-vzraukDy*wr>-_wuLUt+R}Z&J(8=qv;fbm{Z5 ze`h*xYA!WAdiX<-pRWnopwL(iM>3% z{7f~s`yMJu-{d>xzBj*5FI0JDmM(cfc_FR6l%9*1Qf}h=PFjV&cEaxQ;Rg0&K!m|X zQ~|aah1*aa01iSJ7-1;1OR*7s1))?b+qWK|=;*2A;Sky;yD6=SiNJtB&RD}h z8@l>3`yH&4G$L`X=kG&2D#8mk*@S8ymN8^igJ~c@dV_v8ctn|2$T2jM&@qVB;qyCY z`%j-4HUT?FEehjyPQHSdq^?EyFiVWB_hB2M9?n(@J5E=RWfq;W|Csl%uvOAE|bn=F6>;KKegZX@j3rHs&)00pnX8)>CY_Q;#nGpk}}`o*7M^fCG9lD-c z8Fo3hLXzgONn@rmQ6l7px49jWa-bGI501kwy79oQ0=TcmYfsCFUk~lho{HU0%Pz7a z;^%!&`rP|?Cnob zIJfOJjXlz|r6fYS44V<;^M4-j@G3l}(Q0Xnm!q_q}$m^NpYZ`PhTSPXAY*C<3 z#3N#yGXFFAB_nGT110;N%90MNYs6K7u-_NU3`}!q7)%!LaJ=BN-!#$*v)tWlzV12y zr`;ez9<5zGSp0%j)@cUprtv(2kS^(fXDJypEqgwQ;}V8k=VMlz zke}Qhp%HDY7caw5-PK?ZWL@;~JU5K?PWg_$?3syfb*+lzuTA|tn0J*#|0E74&ZO`9 zxQySy5o`dP(t)gii&hVgS*Dqu{7S3=GbwE-BO6Sv(oT4{e&Tv}idwW$`Ec4;|C|5L zM7h-({y1w3*lSIlii@k-T_Ch*I>xDe_wAZ;x%3}Rwis&PTz36+GF6r2^G3n6e{V8e zUclbIcB9+$xK*wjFF%i-w3V-8;fNvX1M>GK%jO8Sa<~{Ty6&q7^etd3svHdcmVI77 z7nzO6YcTxOe6es~%u9lAlBG#nOf;S;;G&bl^e%p^WPi=j*&&4_E>$7oO@l}=Fy*Ay z&af^yNX(=2jr=SP+23RFN&h*5Tc_a}LFGGO!SwC1zTeu_q~Dx>K2hB7CdHy8?b{%T zZH9rlkkIS6G2%+j)Tlzul{r0!+OaGP_o;{b@MaQ2aF}P#Bjx&taH4|vF^k}l{Oi8GE?z$LLc8NUYdag8?Kw2yD&hQ%_}!1Cd>X6v zmiLYM|F4jY2hU%2@=wc%9mgDAlEIWGA>x;kGaD4*0fj;{KKl=r{~N>O(R?#EL##zk z)5dnav4wsrkN!x`I>JFhppq(|h7?I%HY=jhj~viEJ)oF#DMo!B@OL+CB0pBgq)}1Y zFO-HvzkFpPA(Rwh5pw_?0kzXnv42!MM>R6?9>+cTPgjbl`ff>P$uGH|N|L-o)6^<( zaS``N2QG?OJ$3$rLN2Q~BIOZefp6k4ok<+lA<=c@Dgp)*rH@8Hbkb2!zawKEava70 zd@`27{;jx0lD{KZuklcU`y2QRrLb#w)FE0k^N<0*`v}JL<=-U>9L9u>Qd`8Xv!Y&L8U|R3f0f8~`DYiNObYS}b@jP9Y5B zToGB}XHOQ?NvY#IA74IRkGllU^=z@$g^GGH*t^nGw>&JSJJ-P$!DtA;Ln*;G7|<3Q`WGC?7IqG51!y0Z8bnxE{D$Y*)2q{q%$Gs{8*FXXuIP2|W=g+mqR!r`ohO||QN2{Qcl2v$$ zgG&|@gNrNiLQlhnsexp+0-$@Ypf=N=6PvyqX8${zhko%&)V#RON~C$fyQ`_hypLj* zh`MhtOkQ$+>lw5iA_%bL|DZY!na+y3oXZLqAok-3^C0hvqmjq#d#+K&5u5ZM2_qv& z4*)X#Q%%=$^DiLJ6jvf*x#Q`iG6nvuIz8L{!Ha)$x-7ay&i!uRFk&H`aq^9AvFb4q z{B!)J7_iIbP+_`NJROE1XY+p=*d=Tfaba_m|RhF9^DHoj~Gu52tlh1l{Lmk3mRNT&bCl+kxAl;BJs7{MQ=@ z?kAB;)#JoTT%Z1AQ8uU+Nc}zX6pPxV-`P7N${Yj1jSKJj*yeU<DrnPjm$TJS9An z{${dENX2`Jz{twcvyFO}`afXnKa~UCh5s9*82o{L@FexzcS*I4iaEKuDF4*_u*O-P zdY_m|Ai-{P>jFKbv*Fx^YiwPB!631ZYQl1_OlYGy?A6Z#Z}p0Pewmh^)-}?rPE?G@ z*TLq(8b|zA=BJONYmq!V8&*12D`e$8QsPZJjrXRvF>@Z+csjbKnl9z{QQaqRiHeS{ zVk)<{FQ!oTb8I&uHZ_-rTd{f^-6N)a-03E=@Zppqipx7a*{42$t{EbM~`lh3JNmFtOF z^S!ol?{=vQVE{1skyk{k02M%$lG&Zn2)n&mqQZ2sLI;-cxR z@-|F4t!(diVQ~spFr*|Bv*A(d;K#@%RW)J4=z;RfSqih1R>mtckIdRAui6v#nt#$PVsaO>2f!3{TLK0t0Hvu>(HiJ@ zNMxeYfunsZLPlyPH-$^(!gt8d`=CyVM&Bw}HZ?UI-hGtlwo~q(Bv?ga_hzhi+#4K! zY;@}KaP&$vMzjrVJpcYCd-tA`2)wyB>VQUa&tXRw7jcNdvBkr0`FBTMdUdOw*c4zQ zuX2!i=b))c^I$hMvTsWE6?`mbm6f%h+kPthr%bIFeIw~?gic`1fHzZ?8dl_~8u0!? z&Cdi0KFFP#ZU5DOr2wd5;hGYa=_N9lt%6~O%XL>@vSI&Xufu1dz}-kwNU%3AtLz^8 z%6s(NqZ6!iS_)aY#0jmo=`9VoHM4m@hfZkExUW79pYhenQ89@6u;glZVPMSHWGOhw zUB}+k+M3t|n0+@7kQ&>#OJJYczLp0p;a&Fmq3JISY8;3cnr*_PA|Ytj2dyqwi32Wd z-xqs@)mp;65kk$6e18g}8V$NI%^Wg1+>^{R8lP4fnz~85htfi==Y#c?eJVJz`$|Wa zmZ6wp;{Dqh$q7V6*~g>+PWY+|Ml^HJxH*y4%`8-7QR2cee}uR4Gd@wp(~IrSzj|E# zL4eb$O%DwBbh6!He68vI`$tXWMt=THw5RPj7)4kBl08!I9a{QfzmuecyGwd2OPhqR zC+IS5mu}DJV%&$rY$6`vXsdn?l-=9hEu(F+GN#Udwq~MZ%LR8V?P!#lus42LMs*n9 zqM`+l07xf1={u(pcf27Y#9p+c^`(fu_@@?pN+(cj9<-7l(aWlqTB>PjQI z&CJt)e5vD<}Wo2`?qwK_RT@${| zzmp?2B`8h&)fZ`MTH5aMf|I+hfnc=CEl0TQvw`AeILh_FG;{~SCh~snm1ohYAAPE zAd)+$ww?muZMVTG=G5#L2ELtI!+CXKI1KT~=*(bOe3g^cbTL_R!J`fWovTQ=NyPw1 z?beGz=1m*7U3pKw6oyV_=`h)=oLOr#8~Uff_jwMWD}4q&zOK!dCxDWtvArRY+_r{l zSAS&O>NcnRr=j-SNvGU%PUWgYTgKjU!*Vn~+I#M-oYf`d`_p?a zzb@f<2VzmD=DU0PJ0oedPg8Lz7P=Q98pE{G8nu&AT_={1Y?pVCcGJVgc9hZ4OW?jQ zgBjJ*c8C}ZL(L;K;Kt+Uv7YHa7-*?;MH8Lb#`U%(h8wXUlSbIhE8h*=5S!+ib!@dy7i3O)0foc<##vl(6e>o>bH zG4igNQlCqmKWVxq^_-}m|I~b@*GxfFIKo=Gl#5v}bo#DlOpoo;KmsvdYI&|OlM(gO z<_z@*G_HF2=ogDet}L~aW}EP@LpS^@R{zY+u^?5vCwK+iknbbESZMkvHVLRYIsF?< z9j3|OwFODzAHE-I)b?fj8w(*_ybAp4IRI_w3bM+O9;O?OlX3?9Vmf)T*x3QyFiE_n zA}cYK1G1OMUN1(l#{bA3V5I>`ND$RAutY-K$z6eWr}zulf6_~)u%>?o9!8Uig@X3< zW2)?;e7xL?WD|W9O#TIe;sN6F2&hOiIfxbWHrtFowH(-&*ge191 zK0tEg3A$i4)CXdoxT0D*V@0Q90*=EL&CEeQIPoQ&d18K3( zW~3H8ruzl{3v?OyGPfr2_L3F_ZGZpwrAPNcN#y#xBS;_fsjRLus1L&yB?W0SjWW5+ zT@6N_yr(xm+Do8~pn99M^A9n3Q$5wr93EqPx4)Cx{3~U7x4F$Zcy|V0E z5yNmz&PrDeJ02q!I{5#2)l;hDT~;Sis(F9o9B8quM^p@F?Y5u9V02LZ#}i;t z3H_0|u1)&)T(Ew--&}jimRa_?+vKjx*#Z()-RFc_|9p!MlMvrt0A@jp*uv0)HqfpsmZu zh$D;I*yP7yEqe`~;m}GUl8&U2VLzZ*cHb}-_|T8;HckLE$A)0FJs>jgE{92Gi&A4h zk?w8lXcUYVSTSh^zMBs>llKGfJwAy?f5(nJKV^+D5zVpUhd8sWA1>n}IaA)NAa=(L zR(mOho4|9^U=3c5>`Zqxe3Q83k^s)Gz-F0yIF*Z!$1UR(z&96?p#DhCZW)NF8z~rD zWrntJ-4FZJ12bPXZ%Lk(3ftk&4eS|wr2h*+!H|(GUFv1)m<(ly-Za?;(e&Wb`+}v+ z&>>I%R2}MOz1VVg>~{%)4Nu?PD4H5{rp!QH%f(6tB(qmNT)Z}i^`n<@ueYWQ`F*79 zf~!QSDLg4Bn=m%0W1x69tzFinBG<~SVfrb_%V_}RSCu0oDCyUd7xQFJ^FetSNW>LW zsLY^>9aX)fu8dk@+~zmqi+KcjpggHU+J#|*oZUa6B_MS?=cfZ?PX|j^ix}lxPY1J5 zaCj3bH5ntXLBYx-??u@@Z)N_Sz!mO(&t6xlr75eg;r?BMUAtb_;A6Ysm2U4;o)yt zvj!=y?exF$JLvIhoVOIk6S04B2n#rd0d=n#np{r2|63jU&->f!Ui+KM$GGX1@&BBv zvYWwbC8CXY3;xU5QcAVj;W@ha#UWur0dNU3Mla8(7ZkQc6H08Z>NL%^z0{pCKw-S+RGQN}X0GRcg8lYqEk0Z0 z27yJmW#73$opE`2n`BhpS)}j9Bg?O|7F7vvR+KyGRO=(ew0CmgS-=`Bhnfc+a~>}D z^~Qe^cmo@=Yf4sBd)rsNqGyWw)qXFf4vRcne)0tB&+L70#OPbiRXub`Y1PExZx1xwiLO?Yqjz_ek%&=fYU(VDQ&qo)_fAZwg^_k%zZ zSy5OExraG2a;YrBZkISDG%z^+3aV&U+{RlLfz`vmX zpnwBw!ER>IvxjdS$L{0lXjr@lX?Ip=4iXInVHabHJBO=W98em>#y#Np0d(M$ijVUo^UN^jKR zqF5P6*wi1u{yaMq@M-3m} zzJ~V!c~a(W-G|;hM^#3~g9c9(JQ8W^*{4tU&20IE8c8pKc?<7gh?jJ=FCwW8fcJP` zxv%kz<9w^;?hmdSrjAX8FOj14%tB37|Ag>P>dg7-2kg!dZE_Ci>1p>yb&5I8LN|<@ z5~q3%%gdt@O*lh2^-3$xhxz^+-MDQVQsCc>;e0hib`c4gQdX3iDSk~&NpRBKVC5cs z{wS+mhmrj##%JXu2FrNl9^sy&*8wTRVJv632?(!)&}b*X=MVi>eM%m$<5jHhoAtO~ zPFfvi*6Ebzu4MB4;!gD%wR^yR440qd+QF+!HUve3D&Enl-;CRNhEPouZa6msP>g04 zX63egl>vePu^m9;?7&HkI@}GZi!Y%^iLIH0q16g6>%MLhKTh0c7?<>*i-6mqMpoXu zqW+yiECxy3mfA>sKu8k6KLARsXXB2!-iL$)?Iw;a4OJ=8ibBVWD=W2r1uXw?Wx{T% zbLzw_f_MqL+WlQ0;2dk!Mkueqj)pcj4^N#-1daRM5`5dSwWas5FSI5|QFRS`Z?gio zhJT{gM_2QhlWR?1%~USzPOd$f4$h=VG@4nOz?{uG!t(o=J*0oO{@eC08Hm#aOWane zfT;Ore1_EE)%gxjX%$T}Ck#AN8n5~siQZB)hfqQ>hlZ=?1g0I+@s)z{AO8tcQ&IgL zN0iS$?kWB0>9)Adw$~Pr19BS?WB4z%4xaM40dfC3ycrGL;23B274&_4E5C1wq)dhI zQs@Da0yBTs|Mq=%Cj9M$v8#wKtLWhC$0eXa*x8ZMq-f{(3bKGf(Ho(NNkTH^-{g*yK~oW-HGEqkN84`${Kbl}+~ z+}iWJ=)ZG+m-zir{{?pGkQ`lY$P}tv6+)+0{c+60nhXU4!XY?vDkI$~>*bXs?{)pD zYR1nJu@Q@Olk!AAr>(1tIl)16zrx9kDUC(~Q5n<(L(9YeBFO~u{KlldizFeHOr;hp zNzqi25+Vr12+eP(4iGKRvRRj~7=m3vRkP^=>=dan+yE!_sY^LaFiSqiYue!h<|@{P zN(2KclvO6}oTrs|!&JW%=JuT~B!iLALD9fiN z>K#s!{ce+xiZ3z{cgT7X!L-PC`r{xnvdm<*77s;x3!=8hzNl4_6-cx^(a4HK!mgoi z{`DO1r<`>^+_#62`V|BUs|y&%nJLovP_v#jV$CNf@+kjd`Jy?V(va0IYM%}jJT$Vw znlzm39Z$wj2o#SeDa4wzKk<5{e5i|Ss{}XKip_O9hdl@j3O*;+acCTxFYYdVtR(G%&JW!zj#W}0WqcXU-tg(?|;xBe2EG-wE};|QhvhW(o| zZ42L>zk0B=GRxCphBf@;D2^*-RnuPYHF~~FkSS-WB*^9R^z3YLputmrr4_0zxuKZ^ zi`nSNEWq>Y?x`7l7%d#p?I|6KC5wo=wV8I*l*}z4yFAT;mIoU8Wbb>z_A^{4mW#fe zwET>79gBJdrnx_j;GZUL-WQ*t$Dm=RU66MLcF#5KZFlLoDo-Wq9N#-d&z34L=r83ZXI_P)F zbAF*z^>jRrM0`Lm^{f_V_)Oh5FM%@ZGcjs(yb9W&bkB3E6FfrKC9}8M{o`3ET7k&W z{j})+%ZehwO;0dzRBq(mws!NhfM2P{-Nh@!e}>+9zem%XRl`fw>
        #t1d1pKxl! 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 +Uk24c-fQ}@v|27zA!38o9!lNBFx=06|d- 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

        gz(?U@eer)SWUDcJP{^?5 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ȷ%i5zTXdiaTtVuY$H5D!fU72Yl!E z*#^FSU(R42#p5@(8V~#BeTr3bB{fll)W?MEzj;`-%0x1Vyow7wPE@Yi2VU_KLxvEW zn1N_+UgF)1r6LdOBJqDkQvC7#FtR4~h*(xQT)zqUmkx6`#dq%!Sjw73t1E4WTi*VI zIGorkOy_56g)0;K|6H+^Iz_0^bi*>jws3ksU>ez1wNp~0U#9-QciI04x&06AcBA@v zh0b@4Zo>&#y^XhYnsV71OtP!a>xBQWGwMC3(#kiwbVYr7d)!ha9T{o8A(zo^M6y-8 z^ZxlnXLR`tVdlSv-{tkEqlV*V%3A0R7J8W6c26;0!n*||uF(RQhoAc=yO#zbG8$gE z;XsrQR*bu@)+Ddf*84M)joTWmP8iNt^dn9p3LTOw2v8s({W$oU06MwG8M55}#jpLB z;u~!+@3(8b6mh|4r}P@^cb%`E?;F9WEatQt$xTkpGG#S3!K8M!r@u%dlYxHK^~A-l zK}0vdLXTy2!Ax4nT>Yo;mcH+Nbiz+`pZKJp+bQWJsBQ3wc*c5PN+^l%H`6-tsetG>07cbGE=gdgUoHhAIu6|@S9y{J%tDd7 zn3vFKKt`)W|T6GL-5+}GTh5q z7hT1!$n2y|e&UDe0AuRvnJTsmfG4viht$I1GYx%zl2Z|$(ynB<8ciFS(L0!p?47M* zYVa2Rso2k~^!%nDF|#+<)~RupnJbVqkqDqD&prn?$IoJn@a%)ICz<^LY9WFis>Y7G zIUG&JHAM13erbO1&=fb9)~N-qY#!bjVf&||uUU@>VZANehI_l|^?xp!yS7(E?$@fd zys5ZBjs7D|xc^?(kc0LltAR`wPyH33YgQ7p|F#Ad7C-SE33d^g1K%I6V5tAuqDSy6 z6`Bi@CRp&Zk4L9T&1-eTAa_={ANDe#e|&Xp@J_f{wkTI5=Nu0-r^Nv&CA2P!n62o% zG7TuAA9JZ9mvrJ!zg3{B*2Ns8$Pb`U5);NnH-{bS#&g)uyc0<(6(vGRVJL9RW2JfK zVnaA*6g;Fm^IPQB5Tv}xq3BwtJOR^ZPY|_Z6+y>sV10H6uh`eOkP(@iDee6_ECg-Z zQBK?8eX_CB3-GkW5q5>t42m%)aSBA1NSm}fklfGcQ05J6lV`fF?)++(^_eNwdmc~~ zF{zz;kyYeb|2}9f6!r=5}sMty{$~kJf=hQ$2!+lHNh< zdXXR>r5jr{q_GxX)quS_s+ayy70z*d?-l*$shL_Bx}lx65GauxhVa&eXnT@5)IrMy?Wmn3K6MQmoY5=R#aOhU(VTFh)0auJj zpKVEy;xIEeFA!0hC-pF9TAy#F)rDMRrbxD{(xK5VYKOz`qMLFaNrcaz&Py`6gpsdDl^i0?JEO*Ta+ zp?+SfFWrarb9*8o393c8kUJyjK;>8hY!n;ay7+V&$7e_4OlKMKD+}l2u#UEp5fSRI zTT~!8;7ACo5ga0A-VuMm1`uOnv-Yl75fU`ZoM`Mak8&{cW+I#_h!CwT5qL3#7Bz!* zrVAuo^+th{6vltf`cxz@Fp`EOe+-Q^>RO0%YY%d_y1=epgV5BabQ8h@sd( z=8nf-%9BDW+IA3N4BYv{O|zCytei^F%`iIo*8PWRDk`n)R_qU;CPer{%c`-7SiG|p zdd^Jt6uuMKlv=8iz*i17 zMi9BTG0_&s32mz|+>(gYhLnKJ%TE`ZBh00~jfukI(qXiGsF>%$r|))nq+-R>(rud5 zQ?Y%OvWD6DLqc)r5Ht9DrM~rpnC+8|?Z{x$hBS-o7#FrTWLGiBE-A}F$1v|j?h+MS z3XY9&#GcPn#oy%A6SVJ5EIeEWsKhk&W{K7_Uxb(}1->tiC4+9+uxS7RP4&fIDH=Za zZePLC8b%9n%|9;lwXqtPG&I=U^aBxW@c>@V+F(TQnnW;42i&S*HZ$i?I)Iq2EvCv0 zAe&A$4P4*Y1S|I{brL0G!D+9s4#fquGQ{m&C_S2+spMjvsD7mN`q=_7j;?FT!KUFt zAUg8N=B*K541VG6Q#-N>i}+M5UjE~9u4Rtp85GYQL{>Ey->~-w_H$NjfaPX3ij!`S zYCn8%bx||>^~^=%Gm2ao{~(F2|G7Gt8Apvhv z?sIIPf#1keyczTBXDO9(9-u()R>OM~?jcl7qn6XnKO%=l<+tiHDS|gJiz!>qvfG(j za#O48nRN6FzeEQ!BdA16RhXIYY?$Odc{PvGd?jqIX=Y!yB_DJw?X`A?F@q<<_il>c zWR~&|fsO>O=DqxVxNUw)($lGKGMh}{_!FuN-?>50k z@bNDsSQqJ&J;n}%;{1njI=NR~X*%{PTW}ti3+RWnfRx}yB3DKuBbYs!|B-|HFJJ6$ zk2OenW%=>Wk5%ucov>y>&aheFxY4Qi#hT53NjWnq{}#l2%j9v@Uyg9|$|kE{-Tj8b zL(T)wKYOVw8I`EW%c38v$bE+hlh@TjG^_6?dSxvZ!_Og`R1qx9;BgAdh-lvEQ<$~= z3)rtt$Bi!2Pb{ZYolVbWP+l?~a%AqZiK_HdQbh4O8GagH>tGU&m|-#eS-Dogv=qwA zV3=L82IAr_8vj&as(K&QrZx@@ZzgDktTJR;5CD-$TtoG3QywD;@nod6HZiSlWC2e} z?_|VV&Tu6*{=OXCAIeq95t2)_^v(78HGVylE=iO{<)41zPoorT9tBpa)|AIEhf7e# zgU)UBb&H-JcJW2N-x?3v=;~TEcA;FDd9lTlxo!mXqrc}cg~nJStZD|i*y;f7Iy2XD zC9|;9HkfO=UfvRo4laF3A1;7Pa@y(Z1_EPOndW4g?FXO zMMPo)DkB#(qUW$gH9$3j_8*NsQASmDY`WSHE;0emLWtaEQM#rx6LbwLTqEoSTQ4kP zz&rgorv{xQ3=!J&B5js_a}!zrm}hsAQ2Y2IY9oOT_QHEIb;yZ8fQ1sh;nKI1*IP*s z*9OfANYwwuQuB}Za8%xMj)r2NIjcJ2`lpIX73+SH5Z}$0h+-a6 zu@t{6u-UaMOHD4v?5MA-7AcnaGq#F9JG~bVD(G==rwsPTnI>w4xWd-;wefYEoNdGq zp%Ia`r}H}!M(~gN^ADf9^BUl`ziBT-uKGOVU9&Cn#}j6om}fmQbI$qtzLeK+Zck4) zRMada%yz}CG*+?$nc{D&?2UEaTQckHV;LSLNSP2VhaJXD7r%m%$)O;reGOdH&xVJ* zF$e^NtDmmEqD{Yyb{W(A{BpF3rQ&>}Lityq{-eO%8)O1-)~Sp3fd6fVxyUgFgV&@R zZ@EFW(%6kohS`L=)4GMPp2Dz@a+HpgfD#e*x%``0U&G-Mh(=sepdrHv>4*I@bkLrV zy^7XcMJeL2WgZ^FeOmc>d28zZp1GpVR-Dd{p2nWMV*%PPI799X|A(-*ii)#cn{~Ts zBsjrcg9V4+4haM&kl^m_?oJXsxCD2nad&rj3GNP!vpe6MbNzFzz4q9L4Bmc@Yur_J z6)qBA`dx)~>6We65$fd|36YONFBb|!ob%chZ66cR2V2pS4n!u^eNZk2N-S%JTZK`( zq%_seE{Bwt-!K@se|w%UH3HpfEU>7(9jtr2#e9LweARb@!wo~tpp6RD_l&TpW#ouG zsM?t^zM9fI{!bRbyqlXeKEPsKm0sSVwGuEM*F zIVQ=cKSF(sC`E2Z?eJU^QsA6byN(2BkqUUK{M~KmnGuvm~;_k=-eW@-iv{%}|9 zLy9zdXt?D?8eDcg;OcEA35g_9lCq(=w>!#&XMX-XMhEH!Tv-mWDPP_lZG`sTTsmmy z(^?{lP(DhqgMNO4Lm23kCE0l22)rpNjU3o%`dS?S_1qk@%a|`HlZDt#Q9vf*ZAfWdSITNDOjejVBtnpIMBfo%;f|vC( zt`(Q^3@^*puY<%-DXs)*0|IPWk$UV$F`X%1JgWeUL=fuMMEr{Z;||I87ga7%p7q_D z0^Tk&k=9GF;h%*`ng{y0Fa5$FZ}z?=ber6KC@gBP+AtLwc}r`b|kH2 zKlkE0bYwKgRHDSP?oi#OyJLuF<6?uCXAB&w%$V!EEn0aZJcL7!Je9srH$5U(w)&e_ zQin*9B{DQe}n|*Ww0)y<5T&A5G+XL^65Sfd~7C)?sGGGV3Cg$GAGE5lZ z7(?H}!2krVB?%`2AMLR)Nfmv69$tej)*&Lg)fWj{An(KQ1{kq9hS*IPcMYU-HY5ob66k zufdfpl>)avl+A?xmZG@Trk|OljC-P`6`4z&A+qWV)P*1dT>Boy%d^~n% z$INx!jkpF3uur*UdQvu5J#=*@6|&ilhYZzsW!}4{(~+~z?2vr2Tq3_|Z?lz@w+_P# zx{mEDzY-S{O~op&qHnoQLk6>r9i0jpb%vb}Ts#hQOhp|Kw%U}21nmkc_7%`}c{A&e z<}_{N|MEA$o)DY+sl>Lp!@VA|f1k%XI0`y8H?zybv~0bPG9|AAr%j#9*WEIWy_RZyX0E9EuT}>8uF&NgG7caWKq< zEWFi|?I|bNU{EN%!b{BkDjlU=d&lEr%Z)B%adEpM=>;V$m?wsfS|GC-si(}T&Kb8# z$&Sq7Un(~CkYOIB;n?;%_7Gqa#o`5?^>bi?Mk|<2FEH*#O~SIMg=kM;#3aM%AqwFU zMqRpPD2FnyFuh>4N5%V&^6$D9_4;4FDpOPv4$qvLwaDqLuwTTQiTe6%ZbAKOsB(Td zoNu{&+!1cS=QbMu5pul3kwSog$cXK>92uMFOq|zQ>vyj0hEi#&>XH#8I;qeKiD~}C zEV$G0D~F@}jKEb&{*4~5h*y6(7X4R^B?!EeELd!8Wi3Xc^_^ogGI;MhooY}W?N%#5 z0mh9u_3(3%T0$?LO$5>H2*fn4IbANf>C&8UhfEQ}{(cYdWeCj2%Qs+Nv-a*KiJ$CWe~f0}W9c<{yO zZ(asoptUPv!~b=b`elahnM_di&L8fQzTB^kbKw?Fu0y1e`sr_v{jpb%m_W3PD!Ru_`bloLXL zT7LAKolQ&(`Nh5sfC?g=eLoOTn7xJFP#BQduT@ITDz}l@f$e`gS*T}?%WniA79g8v>0>2edm_`^MzUE=DEU*izYoX&_-oz6^& z73WO~*z|^+mTic~&v25L7GosGoN}AFD51m0m31huiK}G-pHlB z?S<+#cW80ff=Tt`ZdCbU3PM;{RH{Tp=&8fWqO)1GD$XUXcLb`j)!VB##P|NoA0=p; zk@N+#upLVG`<4fc}x59s&wCSLZ)KN&+v3N03BFYOavL0HXvS>-&k3KTGNkn zMh$jZ#vpHx^N#;@P34{*MVSJ+hF1AY=HJ3c~NnbpO>yOBW*{8jQAWn{{mVeMq? z(j)wvEfrOkW}mW1NG{iWEU3Ru{54#^(nVhukjf6B-CbhmIhBE<%stD^^Xz@sohP$dblT(PLZsbO8M^7z>?gFL-6hGkE(2I!-apWL{~vs`!~qbNmiS+ihYkVb&=JKXj(gv#=%{v9o=fV8gt0 zrbAb}>9i!YAi{4KnjbQa0^H=5BLS>2*R`B3MrXlG*v!8nx;V*;lZnU**G49$3h$>a z*#!?a1_s0IJ?^DqioB1YW;Ki57co32AixjaQ^6%qxr>F#T$q~T67b8vM(6&-k8gG9 zI~gdW2g2)5zy2IWsqAPYPk6hkrzyUeZAkajYb&bQ#*hTG%sIXo;{S$@I9W` z30c*VtyBiZ)S-M0Sc3Z zsGd7*4qI2mAWRgHmU8rrqF0A1%75V&wn=peHQr)NKj#j0Z?`}GRmZ~HSKXKHTXB&c z*UX8vYqR)l$8(N;dFx(W)SIo)2`(O3T1xplvZyfw-JB)7zv~w!O-sBW%TR}-EWJ*i z32cR1e=rQds-&bHFpW>XGk1`y(Jw}>MQRgS7UbSE&9 zZLOKrICYLuS+P_Aq^);JXYlt6mC9i`jPIOT)kt3x;FB-?J*?u?F{aRbyzY`TMTk04 z=$@>w(xEWoVBh9x6X$OjGkM1JCPuCH2sTH7kSq`avXtq_(1%d6ern{lA(~%-h{Otk zul9urEyv#B=m1R$@N=dhbn;ZA9G#2P-Hr}q9FoR~5ax(L8V6bxv}I&lQ?I0$h4vTJ zD<{p8#1(Y0h%wV{-8 z^o|Ka4*>+Pob5_$bN{rGPc9G=d25>D88SHV$vwrqaHp>o_`RCl=K|%qTs^eO2)meG zEq=IW}^Y{VWe||Yma|Ccq32K>Z(tzZ_Z$T>Nx2&eAe5*KsF)4f7GUK zxPAOgrq5?e{_(2pE3DR0W`X$?6)#y;>}q+=nXGjmghpAZ`O;|%KH+;kEJ-H%QxoneeMQO8onA}p&SOYs@#M^e_+2)Tpa3Ww+p*1L*tqzsHVzaY{R}}@v?k3Y zK|s7t1@;gun(Nyg`X&(Y+O_ym`gMSK zY00t(Ys>wbWFE(sy?2#WV?crz6}m00fn7V+-!7kz9+L+_6(1tbo6VL#=P`;v6)5|# zdL8pI!!sG5>}}S<3j(w7vU(v}xLhC7k@cLUgr`e1J5ke^A za!|yl9DTrC%d}rnDOJrV1j3|AdNLAF7~(`&*A_Su-)r?I7Zl9LpMEo`HSbN{_&ZXC z;ViIaRi>F>+We(4!dLL)@01yzH%o4M71Nw$fs2VXRaUR*2#Ga73}Nr==03OraV|>qpo@h zBmNlMD{I4UU9JcwsfpWxrb(XR=DRwDXJuL?42w*Osw8*ZOp75T??A3QR8Y37rgm&q z+DMx~20TA{yr2_qSp?`+pWWvm^jt-=b7XLvV32RWfd!YHW9|~gaPhv$a9OA>P0&-N z?XkIC^L_l!71wodcV(s*fq$#CHc_~>i%8djzadwqox_rf1mTAq;a?XQ*SaQ8@Va

        UICW&=|dY9hz$KhD! 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°t9bpZJO$j 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

        (N8fJI_^t5n2q5Dt6E}s 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

      1. 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%0AgaoW!;c^#t)Mvgy)AIbJ*dv4=#GD| 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¨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 D;m}(;n(KGflvV$$7#r!SKa}H@uKQg!CO;g$a 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π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�(^kE24U@PS2mwLS7^#E}la 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