diff --git a/etl/debezium-jdbc/Dockerfile b/etl/debezium-jdbc/Dockerfile index 8742d805..14ddecf2 100644 --- a/etl/debezium-jdbc/Dockerfile +++ b/etl/debezium-jdbc/Dockerfile @@ -5,9 +5,9 @@ WORKDIR /app/ COPY ./ ./ RUN mvn clean install +RUN echo "DEBEZIUM_VERSION is $DEBEZIUM_VERSION" - -FROM debezium/connect:$DEBEZIUM_VERSION +FROM debezium/connect:1.9 ARG ORACLE_JDBC_VERSION ARG ORACLE_JDBC_MD5 @@ -34,6 +34,8 @@ COPY --from=builder /app/target/*.jar $KAFKA_CONNECT_JDBC_DIR/ COPY --from=builder /app/lib/*.jar $KAFKA_CONNECT_JDBC_DIR/ COPY InstallCert.class . COPY "InstallCert\$SavingTrustManager.class" . +COPY connect-log4j.properties /kafka/config/ +COPY log4j.properties /kafka/config/ RUN java InstallCert --quiet "${ORACLE_DB_HOST}:${ORACLE_DB_PORT}" RUN keytool -exportcert -alias "$ORACLE_DB_HOST-1" -keystore jssecacerts -storepass changeit -file oracle.cer diff --git a/etl/debezium-jdbc/connect-log4j.properties b/etl/debezium-jdbc/connect-log4j.properties new file mode 100644 index 00000000..f17e2bb2 --- /dev/null +++ b/etl/debezium-jdbc/connect-log4j.properties @@ -0,0 +1,42 @@ +# 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. + +log4j.rootLogger=ERROR, stdout, connectAppender + +# Send the logs to the console. +# +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Send the logs to a file, rolling the file at midnight local time. For example, the `File` option specifies the +# location of the log files (e.g. ${kafka.logs.dir}/connect.log), and at midnight local time the file is closed +# and copied in the same directory but with a filename that ends in the `DatePattern` option. +# +log4j.appender.connectAppender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.connectAppender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.connectAppender.File=${kafka.logs.dir}/connect.log +log4j.appender.connectAppender.layout=org.apache.log4j.PatternLayout + +# The `%X{connector.context}` parameter in the layout includes connector-specific and task-specific information +# in the log messages, where appropriate. This makes it easier to identify those log messages that apply to a +# specific connector. +# +connect.log.pattern=[%d] %p %X{connector.context}%m (%c:%L)%n + +log4j.appender.stdout.layout.ConversionPattern=${connect.log.pattern} +log4j.appender.connectAppender.layout.ConversionPattern=${connect.log.pattern} + +log4j.logger.org.apache.zookeeper=ERROR +log4j.logger.org.reflections=ERROR diff --git a/etl/debezium-jdbc/log4j.properties b/etl/debezium-jdbc/log4j.properties new file mode 100644 index 00000000..272d67e7 --- /dev/null +++ b/etl/debezium-jdbc/log4j.properties @@ -0,0 +1,23 @@ +kafka.logs.dir=logs + +log4j.rootLogger=INFO, stdout, appender + +# Disable excessive reflection warnings - KAFKA-5229 +log4j.logger.org.reflections=ERROR + +# Disable excessive logging by consumers and producers. +log4j.logger.org.apache.kafka=ERROR +log4j.logger.org.apache.kafka.clients.consumer=WARN + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.threshold=INFO +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext} %m [%c]%n + + +log4j.appender.appender=org.apache.log4j.DailyRollingFileAppender +log4j.appender.appender.DatePattern='.'yyyy-MM-dd-HH +log4j.appender.appender.File=${kafka.logs.dir}/connect-service.log +log4j.appender.appender.layout=org.apache.log4j.PatternLayout +log4j.appender.appender.layout.ConversionPattern=%d{ISO8601} %-5p %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext} %m [%c]%n + diff --git a/etl/debezium-jdbc/target/classes/META-INF/MANIFEST.MF b/etl/debezium-jdbc/target/classes/META-INF/MANIFEST.MF deleted file mode 100644 index c1f9f30c..00000000 --- a/etl/debezium-jdbc/target/classes/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Built-By: JaiseT -Build-Jdk: 17.0.5 -Created-By: Maven Integration for Eclipse - diff --git a/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.properties b/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.properties deleted file mode 100644 index c0b58698..00000000 --- a/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.properties +++ /dev/null @@ -1,7 +0,0 @@ -#Generated by Maven Integration for Eclipse -#Thu Jun 01 11:00:04 PDT 2023 -m2e.projectLocation=C\:\\Users\\JaiseT\\Documents\\EPD\\nr-epd-digital-services\\backend\\etl\\debezium-jdbc -m2e.projectName=kafka-connect-debezium-transforms -groupId=ca.bc.gov.nr-epd -artifactId=kafka-connect-debezium-transforms -version=1.0-SNAPSHOT diff --git a/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.xml b/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.xml deleted file mode 100644 index cca86583..00000000 --- a/etl/debezium-jdbc/target/classes/META-INF/maven/ca.bc.gov.nr-epd/kafka-connect-debezium-transforms/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - 4.0.0 - - ca.bc.gov.nr-epd - kafka-connect-debezium-transforms - 1.0-SNAPSHOT - - kafka-connect-debezium-transforms - - - UTF-8 - - - - - org.apache.kafka - connect-transforms - 3.2.1 - provided - - - - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - \ No newline at end of file diff --git a/etl/debezium-postgis/15-3.3/Dockerfile b/etl/debezium-postgis/15-3.3/Dockerfile index aad7cfd3..d9f858ba 100644 --- a/etl/debezium-postgis/15-3.3/Dockerfile +++ b/etl/debezium-postgis/15-3.3/Dockerfile @@ -44,4 +44,6 @@ COPY --from=build /usr/share/postgresql/$PG_MAJOR/extension/decoderbufs.control COPY postgresql.conf.sample /usr/share/postgresql/postgresql.conf.sample # Copy the script which will initialize the replication permissions -COPY /docker-entrypoint-initdb.d /docker-entrypoint-initdb.d \ No newline at end of file +COPY /docker-entrypoint-initdb.d/init-permissions.sh /docker-entrypoint-initdb.d/init-permissions.sh + +RUN chmod +x /docker-entrypoint-initdb.d/init-permissions.sh \ No newline at end of file diff --git a/etl/docker-compose.yaml b/etl/docker-compose.yaml index 841eeff0..579f5c39 100644 --- a/etl/docker-compose.yaml +++ b/etl/docker-compose.yaml @@ -19,7 +19,7 @@ services: build: context: debezium-postgis/15-3.3 ports: - - "5432:5432" + - "7432:5432" environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres diff --git a/openshift/templates/etl/debezium-jdbc.build.yaml b/openshift/templates/etl/debezium-jdbc.build.yaml new file mode 100644 index 00000000..6c992d99 --- /dev/null +++ b/openshift/templates/etl/debezium-jdbc.build.yaml @@ -0,0 +1,101 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + name: "${API_NAME}-build-template" + creationTimestamp: +objects: +- kind: ImageStream + apiVersion: v1 + metadata: + name: "${API_NAME}" +- kind: BuildConfig + apiVersion: v1 + metadata: + name: "${API_NAME}-build" + labels: + app: "${API_NAME}-build" + spec: + runPolicy: Serial + source: + type: Git + git: + uri: "${GIT_REPO_URL}" + ref: "${GIT_REF}" + contextDir: "${SOURCE_CONTEXT_DIR}" + strategy: + type: Docker + dockerStrategy: + dockerfilePath: "${DOCKER_FILE_PATH}" + env: + - name: "DEBEZIUM_VERSION" + value: "${DEBEZIUM_VERSION}" + - name: "ORACLE_JDBC_VERSION" + value: "${ORACLE_JDBC_VERSION}" + - name: "ORACLE_JDBC_MD5" + value: "${ORACLE_JDBC_MD5}" + - name: "KAFKA_JDBC_VERSION" + value: "${KAFKA_JDBC_VERSION}" + - name: "ORACLE_DB_HOST" + value: "${ORACLE_DB_HOST}" + - name: "ORACLE_DB_PORT" + value: "${ORACLE_DB_PORT}" + + output: + to: + kind: ImageStreamTag + name: "${API_NAME}:latest" +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the resources defined in this template. + required: true + value: debezium-jdbc +- name: GIT_REPO_URL + displayName: Git Repo URL + description: The URL to your GIT repo. + required: true + value: https://github.com/bcgov/nr-epd-digital-services +- name: GIT_REF + displayName: Git Reference + description: The git reference or branch. + required: true + value: feat/srs-26 +- name: SOURCE_CONTEXT_DIR + displayName: Source Context Directory + description: The source context directory. + required: false + value: etl/debezium-jdbc +- name: DOCKER_FILE_PATH + displayName: Docker File Path + description: The path to the docker file defining the build. + required: false + value: "Dockerfile" +- name: DEBEZIUM_VERSION + displayName: Debezium Version + description: Debezium image version. + required: false + value: "1.9" +- name: ORACLE_JDBC_VERSION + displayName: Oracle JDBC Version + description: Oracle JDBC Version. + required: false + value: "21.6.0.0" +- name: ORACLE_JDBC_MD5 + displayName: Oracle JDBC Checksum + description: Oracle JDBC File Checksum. + required: false + value: "312e6f4ec9932bbf74a4461669970c4b" +- name: KAFKA_JDBC_VERSION + displayName: Kafka JDBC Version + description: Kafka Jdbc Version. + required: false + value: "5.3.1" +- name: ORACLE_DB_HOST + displayName: Oracle DB Host + description: Oracle Database Host Name + required: true +- name: ORACLE_DB_PORT + displayName: Oracle DB Port + description: Oracle Database Port. + required: true diff --git a/openshift/templates/etl/debezium-jdbc.deploy.yaml b/openshift/templates/etl/debezium-jdbc.deploy.yaml new file mode 100644 index 00000000..b3121d70 --- /dev/null +++ b/openshift/templates/etl/debezium-jdbc.deploy.yaml @@ -0,0 +1,151 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + annotations: + description: Deployment template for Debezium JDBC Connector. + tags: "${API_NAME}" + name: "${API_NAME}-deploy" +objects: +- kind: DeploymentConfig + apiVersion: apps.openshift.io/v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + strategy: + type: Rolling + rollingParams: + updatePeriodSeconds: 1 + intervalSeconds: 1 + timeoutSeconds: 600 + maxUnavailable: 25% + maxSurge: 25% + triggers: + - type: ConfigChange + - type: ImageChange + imageChangeParams: + automatic: true + containerNames: + - "${API_NAME}" + from: + kind: ImageStreamTag + namespace: "${IMAGE_NAMESPACE}" + name: "${API_NAME}:${TAG_NAME}" + replicas: 1 + test: false + selector: + app: "${API_NAME}" + deploymentconfig: "${API_NAME}" + template: + metadata: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + deploymentconfig: "${API_NAME}" + template: "${API_NAME}-deploy" + role: api + spec: + containers: + - name: "${API_NAME}" + image: "${API_NAME}" + imagePullPolicy: Always + ports: + - containerPort: 8083 + protocol: TCP + env: + - name: BOOTSTRAP_SERVERS + value: "debezium-kafka:9092" + - name: GROUP_ID + value: "1" + - name: CONFIG_STORAGE_TOPIC + value: "epd_connect_configs" + - name: OFFSET_STORAGE_TOPIC + value: "epd_connect_offsets" + - name: STATUS_STORAGE_TOPIC + value: "epd_connect_statuses" + - name: KAFKA_DEBUG + value: "false" + - name: DEBUG_SUSPEND_FLAG + value: "n" + resources: + requests: + cpu: "150m" + memory: "500Mi" + limits: + cpu: "250m" + memory: "1Gi" + terminationMessagePath: "/dev/termination-log" + terminationMessagePolicy: File + imagePullPolicy: Always + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + schedulerName: default-scheduler +- kind: Service + apiVersion: v1 + metadata: + name: "${API_NAME}" + creationTimestamp: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + ports: + - name: 8083-tcp + protocol: TCP + port: 8083 + targetPort: 8083 + selector: + deploymentconfig: "${API_NAME}" + type: ClusterIP + sessionAffinity: None + # status: + # loadBalancer: {} +- kind: Route + apiVersion: v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + to: + kind: Service + name: "${API_NAME}" + weight: 100 + port: + targetPort: 8083-tcp + tls: + termination: edge + wildcardPolicy: None + host: "${API_NAME}-${TAG_NAME}.apps.silver.devops.gov.bc.ca" +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the OpenShift resources associated to the + server instance. + required: true + value: debezium-jdbc +- name: APP_GROUP + displayName: App Group + description: The name assigned to all of the deployments in this project. + required: true + value: epd +- name: IMAGE_NAMESPACE + displayName: Image Namespace + required: true + description: The namespace of the OpenShift project containing the imagestream for + the application. + value: c6a6e5-tools +- name: TAG_NAME + displayName: Environment TAG name + description: The TAG name for this environment, e.g., dev, test, prod + required: true + value: latest \ No newline at end of file diff --git a/openshift/templates/etl/debezium-kafka.deploy.yaml b/openshift/templates/etl/debezium-kafka.deploy.yaml new file mode 100644 index 00000000..5fc8c37b --- /dev/null +++ b/openshift/templates/etl/debezium-kafka.deploy.yaml @@ -0,0 +1,111 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + annotations: + description: Deployment template for Apache Kafka. + tags: "${API_NAME}" + name: "${API_NAME}-deploy" +objects: +- kind: DeploymentConfig + apiVersion: apps.openshift.io/v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + strategy: + type: Rolling + rollingParams: + updatePeriodSeconds: 1 + intervalSeconds: 1 + timeoutSeconds: 600 + maxUnavailable: 25% + maxSurge: 25% + triggers: + - type: ConfigChange + replicas: 1 + test: false + selector: + app: "${API_NAME}" + deploymentconfig: "${API_NAME}" + template: + metadata: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + deploymentconfig: "${API_NAME}" + template: "${API_NAME}-deploy" + role: api + spec: + containers: + - name: "${API_NAME}" + image: debezium/kafka:1.9 + imagePullPolicy: Always + ports: + - containerPort: 9092 + protocol: TCP + env: + - name: ZOOKEEPER_CONNECT + value: debezium-zookeeper:2181 + resources: + requests: + cpu: "150m" + memory: "500Mi" + limits: + cpu: "250m" + memory: "1Gi" + terminationMessagePath: "/dev/termination-log" + terminationMessagePolicy: File + imagePullPolicy: Always + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + schedulerName: default-scheduler +- kind: Service + apiVersion: v1 + metadata: + name: "${API_NAME}" + creationTimestamp: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + ports: + - name: 9092-tcp + protocol: TCP + port: 9092 + targetPort: 9092 + selector: + deploymentconfig: "${API_NAME}" + type: ClusterIP + sessionAffinity: None + # status: + # loadBalancer: {} +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the OpenShift resources associated to the + server instance. + required: true + value: debezium-kafka +- name: APP_GROUP + displayName: App Group + description: The name assigned to all of the deployments in this project. + required: true + value: epd +- name: IMAGE_NAMESPACE + displayName: Image Namespace + required: true + description: The namespace of the OpenShift project containing the imagestream for + the application. + value: c6a6e5-tools +- name: TAG_NAME + displayName: Environment TAG name + description: The TAG name for this environment, e.g., dev, test, prod + required: true + value: dev \ No newline at end of file diff --git a/openshift/templates/etl/debezium-postgis.build.yaml b/openshift/templates/etl/debezium-postgis.build.yaml new file mode 100644 index 00000000..3548d589 --- /dev/null +++ b/openshift/templates/etl/debezium-postgis.build.yaml @@ -0,0 +1,59 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + name: "${API_NAME}-build-template" + creationTimestamp: +objects: +- kind: ImageStream + apiVersion: v1 + metadata: + name: "${API_NAME}" +- kind: BuildConfig + apiVersion: v1 + metadata: + name: "${API_NAME}-build" + labels: + app: "${API_NAME}-build" + spec: + runPolicy: Serial + source: + type: Git + git: + uri: "${GIT_REPO_URL}" + ref: "${GIT_REF}" + contextDir: "${SOURCE_CONTEXT_DIR}" + strategy: + type: Docker + dockerStrategy: + dockerfilePath: "${DOCKER_FILE_PATH}" + output: + to: + kind: ImageStreamTag + name: "${API_NAME}:latest" +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the resources defined in this template. + required: true + value: debezium-postgis +- name: GIT_REPO_URL + displayName: Git Repo URL + description: The URL to your GIT repo. + required: true + value: https://github.com/bcgov/nr-epd-digital-services +- name: GIT_REF + displayName: Git Reference + description: The git reference or branch. + required: true + value: feat/srs-26 +- name: SOURCE_CONTEXT_DIR + displayName: Source Context Directory + description: The source context directory. + required: false + value: etl/debezium-postgis/15-3.3 +- name: DOCKER_FILE_PATH + displayName: Docker File Path + description: The path to the docker file defining the build. + required: false + value: "Dockerfile" diff --git a/openshift/templates/etl/debezium-postgis.deploy.yaml b/openshift/templates/etl/debezium-postgis.deploy.yaml new file mode 100644 index 00000000..c50e254f --- /dev/null +++ b/openshift/templates/etl/debezium-postgis.deploy.yaml @@ -0,0 +1,159 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + annotations: + description: Deployment template for PostGis database with Debezium plugins. + tags: "${API_NAME}" + name: "${API_NAME}-deploy" +objects: +- kind: PersistentVolumeClaim + apiVersion: v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: "${DB_PVC_SIZE}" + storageClassName: netapp-file-standard +- kind: DeploymentConfig + apiVersion: apps.openshift.io/v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + strategy: + type: Rolling + rollingParams: + updatePeriodSeconds: 1 + intervalSeconds: 1 + timeoutSeconds: 600 + maxUnavailable: 25% + maxSurge: 25% + triggers: + - type: ConfigChange + - type: ImageChange + imageChangeParams: + automatic: true + containerNames: + - "${API_NAME}" + from: + kind: ImageStreamTag + namespace: "${IMAGE_NAMESPACE}" + name: "${API_NAME}:${TAG_NAME}" + replicas: 1 + test: false + selector: + app: "${API_NAME}" + deploymentconfig: "${API_NAME}" + template: + metadata: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + deploymentconfig: "${API_NAME}" + template: "${API_NAME}-deploy" + role: api + spec: + volumes: + - name: "${API_NAME}" + persistentVolumeClaim: + claimName: "${API_NAME}" + containers: + - name: "${API_NAME}" + image: "${API_NAME}" + imagePullPolicy: Always + ports: + - containerPort: 5432 + protocol: TCP + env: + - name: POSTGRES_USER + value: postgres + - name: POSTGRES_PASSWORD + value: postgres + - name: POSTGRES_DB + value: postgres + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + terminationMessagePath: "/dev/termination-log" + terminationMessagePolicy: File + imagePullPolicy: Always + volumeMounts: + - name: "${API_NAME}" + mountPath: "/var/lib/postgresql/data" + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + schedulerName: default-scheduler +- kind: Service + apiVersion: v1 + metadata: + name: "${API_NAME}" + creationTimestamp: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + ports: + - name: 5432-tcp + protocol: TCP + port: 5432 + targetPort: 5432 + selector: + deploymentconfig: "${API_NAME}" + type: ClusterIP + sessionAffinity: None + # status: + # loadBalancer: {} +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the OpenShift resources associated to the + server instance. + required: true + value: debezium-postgis +- name: APP_GROUP + displayName: App Group + description: The name assigned to all of the deployments in this project. + required: true + value: epd +- name: IMAGE_NAMESPACE + displayName: Image Namespace + required: true + description: The namespace of the OpenShift project containing the imagestream for + the application. + value: c6a6e5-tools +- name: TAG_NAME + displayName: Environment TAG name + description: The TAG name for this environment, e.g., dev, test, prod + required: true + value: latest +- description: Starting amount of CPU the container can use. + displayName: CPU REQUEST + name: CPU_REQUEST + value: '250m' +- description: Maximum amount of CPU the container can use. + displayName: CPU Limit + name: CPU_LIMIT + value: '1' +- description: Starting amount of memory the container can use. + displayName: Memory Request + name: MEMORY_REQUEST + value: 512Mi +- description: Maximum amount of memory the container can use. + displayName: Memory Limit + name: MEMORY_LIMIT + value: 512Mi +- description: The size of the persistent volume to create. + displayName: Persistent Volume Size + name: DB_PVC_SIZE + value: 1Gi \ No newline at end of file diff --git a/openshift/templates/etl/debezium-zookeeper.deploy.yaml b/openshift/templates/etl/debezium-zookeeper.deploy.yaml new file mode 100644 index 00000000..6ac5e449 --- /dev/null +++ b/openshift/templates/etl/debezium-zookeeper.deploy.yaml @@ -0,0 +1,112 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +metadata: + annotations: + description: Deployment template for Zookeeper. + tags: "${API_NAME}" + name: "${API_NAME}-deploy" +objects: +- kind: DeploymentConfig + apiVersion: apps.openshift.io/v1 + metadata: + name: "${API_NAME}" + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + strategy: + type: Rolling + rollingParams: + updatePeriodSeconds: 1 + intervalSeconds: 1 + timeoutSeconds: 600 + maxUnavailable: 25% + maxSurge: 25% + triggers: + - type: ConfigChange + replicas: 1 + test: false + selector: + app: "${API_NAME}" + deploymentconfig: "${API_NAME}" + template: + metadata: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + deploymentconfig: "${API_NAME}" + template: "${API_NAME}-deploy" + role: api + spec: + containers: + - name: "${API_NAME}" + image: debezium/zookeeper:1.9 + imagePullPolicy: Always + ports: + - containerPort: 2181 + protocol: TCP + - containerPort: 2888 + protocol: TCP + - containerPort: 3888 + protocol: TCP + resources: + requests: + cpu: "50m" + memory: "250Mi" + limits: + cpu: "150m" + memory: "500Mi" + terminationMessagePath: "/dev/termination-log" + terminationMessagePolicy: File + imagePullPolicy: Always + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + schedulerName: default-scheduler +- kind: Service + apiVersion: v1 + metadata: + name: "${API_NAME}" + creationTimestamp: + labels: + app: "${API_NAME}" + app-group: "${APP_GROUP}" + template: "${API_NAME}-deploy" + spec: + ports: + - name: 2181-tcp + protocol: TCP + port: 2181 + targetPort: 2181 + selector: + deploymentconfig: "${API_NAME}" + type: ClusterIP + sessionAffinity: None + # status: + # loadBalancer: {} +parameters: +- name: API_NAME + displayName: Name + description: The name assigned to all of the OpenShift resources associated to the + server instance. + required: true + value: debezium-zookeeper +- name: APP_GROUP + displayName: App Group + description: The name assigned to all of the deployments in this project. + required: true + value: epd +- name: IMAGE_NAMESPACE + displayName: Image Namespace + required: true + description: The namespace of the OpenShift project containing the imagestream for + the application. + value: c6a6e5-tools +- name: TAG_NAME + displayName: Environment TAG name + description: The TAG name for this environment, e.g., dev, test, prod + required: true + value: dev \ No newline at end of file