// AsciiDoc settings
:data-uri!:
:doctype: book
:experimental:
:idprefix:
:imagesdir: images
:numbered:
:sectanchors!:
:sectnums:
:source-highlighter: highlightjs
:toc: left
:linkattrs:
:toclevels: 3

//Latest Strimzi version
:ProductVersion: 0.46.0
//Strimzi versions used in upgrades sections
:ConvertAfterProductVersion: 0.22
:LastReleaseWithCRDUpgrade: 0.24
:UpgradeGuide: link:https://strimzi.io/docs/operators/0.24.0/deploying.html#assembly-upgrade-resources-str[Strimzi 0.24.0 upgrade documentation^]

// Kubernetes versions
:KubernetesVersion: 1.25 and later

// Kafka upgrade attributes used in kafka upgrades section
:DefaultKafkaVersion: 3.9.0
:DefaultKafkaMetadataVersion: 3.9
:KafkaMetadataVersionLower: 3.8-IV0
:KafkaMetadataVersionHigher: 3.9-IV0
:KafkaVersionLower: 3.8.0
:KafkaVersionHigher: 3.9.0
:ExampleImageTagUpgrades: quay.io/strimzi/kafka:{ProductVersion}-kafka-{KafkaVersionHigher}

//inter-broker protocol and log message version
:DefaultInterBrokerVersion: 3.9
:InterBrokerVersionLower: 3.8
:InterBrokerVersionHigher: 3.9

// Bridge version
:BridgeVersion: 0.31.1

// Drain Cleaner Version
:DrainCleanerVersion: 1.2.0

// Source and download links
:ReleaseDownload: https://github.com/strimzi/strimzi-kafka-operator/releases[GitHub releases page^]
:ReleaseFile: strimzi-{ProductVersion}.*
:supported-configurations: https://strimzi.io/downloads/

//Monitoring links
:GrafanaHome: link:https://grafana.com/[Grafana Labs^]
:JMXExporter: link:https://github.com/prometheus/jmx_exporter[Prometheus JMX Exporter^]
:PrometheusHome: link:https://github.com/prometheus[Prometheus^]
:PrometheusConfig: link:https://prometheus.io/docs/prometheus/latest/configuration/configuration[Prometheus configuration^]
:kafka-exporter-project: link:https://github.com/danielqsj/kafka_exporter[Kafka Exporter^]

//OAuth attributes and links
:keycloak-server-doc: link:https://www.keycloak.org/documentation.html[Keycloak documentation^]
:keycloak-server-install-doc: link:https://www.keycloak.org/operator/installation[Installing the Keycloak Operator^]
:keycloak-authorization-services: link:https://www.keycloak.org/docs/latest/authorization_services/index.html[Keycloak Authorization Services^]
:keycloak-admin-guide: link:https://www.keycloak.org/docs/latest/authorization_services/index.html[Keycloak Server Administration^]
:OAuthVersion: 0.15.0
:oauth-demo-keycloak: link:https://github.com/strimzi/strimzi-kafka-oauth/tree/{OAuthVersion}/examples[Using Keycloak as the OAuth 2.0 authorization server^]
:oauth-demo-hydra: link:https://github.com/strimzi/strimzi-kafka-oauth/tree/{OAuthVersion}/examples/docker#running-with-hydra-using-ssl-and-opaque-tokens[Using Hydra as the OAuth 2.0 authorization server^]

// External links
:JavaServiceProvider: link:https://www.baeldung.com/java-spi[Java Service Provider Interface^]
:JQTool: link:https://github.com/jqlang/jq[command line JSON parser tool^]
:kubernetes-docs: link:https://kubernetes.io/docs/home/
:kafkaDoc: link:https://kafka.apache.org/documentation/[Apache Kafka documentation^]
:K8sAffinity: link:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/[Kubernetes node and pod affinity documentation^]
:K8sDownwardAPI: link:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#the-downward-api[Downward API^]
:K8sTolerations: link:https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/[Kubernetes taints and tolerations^]
:K8sTopologySpreadConstraints: link:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/[Kubernetes Topology Spread Constraints^]
:K8sEmptyDir: link:https://kubernetes.io/docs/concepts/storage/volumes/#emptydir[emptyDir^]
:K8sPersistentVolumeClaims: link:https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/[Persistent Volume Claims^]
:K8sLocalPersistentVolumes: link:https://kubernetes.io/docs/concepts/storage/volumes/#local[local persistent volumes^]
:K8SStorageClass: link:https://kubernetes.io/docs/concepts/storage/storage-classes/[StorageClass^]
:K8SJsonPath: link:https://kubernetes.io/docs/reference/kubectl/jsonpath/[JSONPath support^]
:K8sMeaningOfCpu: link:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu[Meaning of CPU^]
:K8sMeaningOfMemory: link:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory[Meaning of memory^]
:K8sManagingComputingResources: link:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/[Managing Compute Resources for Containers^]
:K8sLivenessReadinessProbes: link:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/[Configure Liveness and Readiness Probes^]
:K8sNetworkPolicyPeerAPI: link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#networkpolicypeer-v1-networking-k8s-io[NetworkPolicyPeer API reference^]
:K8sImagePullPolicies: link:https://kubernetes.io/docs/concepts/containers/images/#updating-images[Disruptions^]
:K8sCRDs: link:https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/[Extend the Kubernetes API with CustomResourceDefinitions^]
:K8sResizingPersistentVolumesUsingKubernetes: link:https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/[Resizing Persistent Volumes using Kubernetes^]
:K8sSecurityContext: link:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/[Security context^]
:K8sSecurityStandards: link:https://kubernetes.io/docs/concepts/security/pod-security-standards/[Pod security standards^]
:K8sServiceDiscovery: https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services[Discovering services^]
:K8sWellKnownLabelsAnnotationsAndTaints: link:https://kubernetes.io/docs/reference/kubernetes-api/labels-annotations-taints/[Well-Known Labels, Annotations and Taints^]
:K8sZoneLabel: link:https://kubernetes.io/docs/reference/labels-annotations-taints/#topologykubernetesiozone[topology.kubernetes.io/zone^]
:K8sDockerSecret: link:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials[Create a Secret based on existing Docker credentials^]
:MavenCentral: https://mvnrepository.com/repos/central[Maven Central repository^]
:KubeTools: link:https://kubernetes.io/docs/tasks/tools/[Install Tools^]
:NginxIngressController: link:https://github.com/kubernetes/ingress-nginx[Ingress NGINX Controller for Kubernetes^]
:NginxIngressControllerTLSPassthrough: link:https://kubernetes.github.io/ingress-nginx/user-guide/tls/#ssl-passthrough[TLS passthrough documentation]
:KubernetesExternalDNS: link:https://github.com/kubernetes-incubator/external-dns[External DNS^]
:ApacheKafkaBrokerConfig: link:https://kafka.apache.org/documentation/#brokerconfigs[Apache Kafka documentation^]
:ApacheKafkaConnectConfig: link:https://kafka.apache.org/documentation/#connectconfigs[Apache Kafka documentation^]
:ApacheKafkaConnectAPI: link:https://kafka.apache.org/documentation#connect_rest[Apache Kafka Connect API documentation^]
:ApacheKafkaConsumerConfig: link:https://kafka.apache.org/documentation/#consumerconfigs[Apache Kafka configuration documentation for consumers^]
:ApacheKafkaProducerConfig: link:https://kafka.apache.org/documentation/#producerconfigs[Apache Kafka configuration documentation for producers^]
:ApacheKafkaFileSystem: link:https://kafka.apache.org/documentation/#filesystems[Filesystem Selection^]
:ApacheKafkaDownload: link:http://kafka.apache.org/[Apache Kafka download^]
:ApacheLoggers: link:https://logging.apache.org/[Apache logging services^]
:CruiseControlProject: https://github.com/linkedin/cruise-control[Cruise Control^]
:CruiseControlConfigDocs: link:https://github.com/linkedin/cruise-control/wiki/Configurations[Cruise Control documentation^]
:CruiseControlSensorsDocs: link:https://github.com/linkedin/cruise-control/wiki/Sensors[Cruise Control documentation^]
:CruiseControlApiDocs: https://github.com/linkedin/cruise-control/wiki/REST-APIs[REST APIs in the Cruise Control Wiki^]
:CronExpression: link:http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html[cron expression^]
:OperatorHub: link:https://operatorhub.io/operator/strimzi-kafka-operator[OperatorHub.io^]
:OperatorLifecycleManager: link:https://github.com/operator-framework/operator-lifecycle-manager[Operator Lifecycle Manager^]
:OLMOperatorDocs: link:https://olm.operatorframework.io/docs/[Operator Lifecycle Manager documentation^]
:OPAAuthorizer: link:https://github.com/anderseknert/opa-kafka-plugin[Open Policy Agent plugin for Kafka authorization^]
:external-cors-link: link:https://fetch.spec.whatwg.org/[Fetch CORS specification^]
:HelmCustomResourceDefinitions: link:https://helm.sh/docs/chart_best_practices/custom_resource_definitions/[Custom Resource Definitions for Helm^]

//distributed tracing versions and links
:OpenTelemetryAlphaVersion: 1.34.1-alpha
:OpenTelemetryVersion: 1.34.1
:OpenTelemetryInstrumentationVersion: 1.32.0-alpha
:OpenTelemetrySemConvVersion: 1.21.0-alpha
:OpenTelemetryKafkaClientVersion: 2.6
:GRPCVersion: 1.61.0

:OpenTelemetry: link:https://opentelemetry.io[OpenTelemetry^]
:OpenTelemetryDocs: link:https://opentelemetry.io/docs/[OpenTelemetry documentation^]
:JaegerDocs: link:https://www.jaegertracing.io/docs/[Jaeger documentation^]

//strimzi github links
:PodSecurityInterface: link:https://github.com/strimzi/strimzi-kafka-operator/blob/main/api/src/main/java/io/strimzi/plugin/security/profiles/PodSecurityProvider.java[Pod security provider interface^]
:PodSecurityProviders: link:https://github.com/strimzi/strimzi-kafka-operator/tree/main/api/src/main/java/io/strimzi/plugin/security/profiles/impl[Baseline Provider and Restricted Provider classes^]
:PodSecurityProvidersConfig: link:https://github.com/strimzi/strimzi-kafka-operator/blob/main/api/src/main/resources/META-INF/services/io.strimzi.plugin.security.profiles.PodSecurityProvider[Provider configuration file^]

//OpenShift documentation
:OpenShiftDocs: link:https://docs.redhat.com/en/documentation/openshift_container_platform/[OpenShift documentation^]

// Container image names and repositories
:DockerOrg: quay.io/strimzi
:DockerTag: {ProductVersion}
:BridgeDockerTag: {BridgeVersion}
:DrainCleanerDockerTag: {DrainCleanerVersion}
:DockerRepository: https://quay.io/organization/strimzi[Container Registry^]
:DockerKafkaImageCurrent: quay.io/strimzi/kafka:{DockerTag}-kafka-{KafkaVersionHigher}
:DockerKafkaImagePrevious: quay.io/strimzi/kafka:{DockerTag}-kafka-{KafkaVersionLower}
:DockerKafka: quay.io/strimzi/kafka:{DockerTag}-kafka-{DefaultKafkaVersion}
:DockerKafkaConnect: quay.io/strimzi/kafka:{DockerTag}-kafka-{DefaultKafkaVersion}
:DockerClusterOperator: quay.io/strimzi/operator:{DockerTag}
:DockerKafkaInit: quay.io/strimzi/operator:{DockerTag}
:DockerTopicOperator: quay.io/strimzi/operator:{DockerTag}
:DockerUserOperator: quay.io/strimzi/operator:{DockerTag}
:DockerKafkaBridge: quay.io/strimzi/kafka-bridge:{BridgeDockerTag}

:DockerImageUser: 1001

// API Versions current
:ApiVersion: v1beta2
:KafkaApiVersion: kafka.strimzi.io/v1beta2
:KafkaNodePoolApiVersion: kafka.strimzi.io/v1beta2
:KafkaConnectApiVersion: kafka.strimzi.io/v1beta2
:KafkaConnectorApiVersion: kafka.strimzi.io/v1beta2
:KafkaTopicApiVersion: kafka.strimzi.io/v1beta2
:KafkaUserApiVersion: kafka.strimzi.io/v1beta2
:KafkaMirrorMaker2ApiVersion: kafka.strimzi.io/v1beta2
:KafkaRebalanceApiVersion: kafka.strimzi.io/v1beta2
:KafkaBridgeApiVersion: kafka.strimzi.io/v1beta2

// Section enablers
:Section:

// Helm Chart - deploy cluster operator
:ChartReleaseCoordinate: strimzi/strimzi-kafka-operator
:ChartRepositoryUrl: https://strimzi.io/charts/

// Links to other Strimzi documentation books
:BookURLDeploying: ./deploying.html
:BookURLConfiguring: ./configuring.html
:BookURLOverview: ./overview.html
:BookURLBridge: https://strimzi.io/docs/bridge/latest/

// Link to resource on https://github.com/strimzi/strimzi-kafka-operator
// Default `main`, specific version overriden when building the docs by `make`
:GithubVersion: main
