diff --git a/changelog/20250909_feature_improved_agent_certificate_rotation.md b/changelog/20250909_feature_improved_agent_certificate_rotation.md index 76c8c942f..9f26e72b4 100644 --- a/changelog/20250909_feature_improved_agent_certificate_rotation.md +++ b/changelog/20250909_feature_improved_agent_certificate_rotation.md @@ -4,4 +4,4 @@ kind: feature date: 2025-09-09 --- -* Improve automation agent certificate rotation: the agent now restarts automatically when its certificate is renewed, ensuring smooth operation without manual intervention and allowing seamless certificate updates without requiring manual Pod restarts. +* Improved automation agent certificate rotation: the agent now restarts automatically when its certificate is renewed, ensuring smooth operation without manual intervention and allowing seamless certificate updates without requiring manual Pod restarts. diff --git a/changelog/20251001_fix_mongodbmulticluster_not_ready_if_0_members.md b/changelog/20251001_fix_mongodbmulticluster_not_ready_if_0_members.md index d76e5a092..ced862feb 100644 --- a/changelog/20251001_fix_mongodbmulticluster_not_ready_if_0_members.md +++ b/changelog/20251001_fix_mongodbmulticluster_not_ready_if_0_members.md @@ -3,4 +3,4 @@ kind: fix date: 2025-10-01 --- -* **MongoDBMultiCluster**: fix resource stuck in Pending state if any `clusterSpecList` item has 0 members. After the fix, a value of 0 members is handled correctly, similarly to how it's done in the **MongoDB** resource. +* **MongoDBMultiCluster**: Fixed resource stuck in Pending state if any `clusterSpecList` item has 0 members. After the fix, a value of 0 members is handled correctly, similarly to how it's done in the **MongoDB** resource. diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index d30904121..da5a65d08 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -22,7 +22,7 @@ spec: serviceAccountName: mongodb-kubernetes-operator containers: - name: mongodb-kubernetes-operator - image: "quay.io/mongodb/mongodb-kubernetes:1.4.0" + image: "quay.io/mongodb/mongodb-kubernetes:1.5.0" imagePullPolicy: Always args: - -watch-resource=mongodb @@ -69,21 +69,21 @@ spec: - name: INIT_DATABASE_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-database - name: INIT_DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 - name: DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 # Ops Manager - name: OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-enterprise-ops-manager-ubi - name: INIT_OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-ops-manager - name: INIT_OPS_MANAGER_VERSION - value: 1.4.0 + value: 1.5.0 # AppDB - name: INIT_APPDB_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-appdb - name: INIT_APPDB_VERSION - value: 1.4.0 + value: 1.5.0 - name: OPS_MANAGER_IMAGE_PULL_POLICY value: Always - name: AGENT_IMAGE @@ -122,14 +122,14 @@ spec: - name: MDB_COMMUNITY_IMAGE_TYPE value: "ubi8" # Community Env Vars End - - name: RELATED_IMAGE_MONGODB_ENTERPRISE_DATABASE_IMAGE_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-database:1.4.0" - - name: RELATED_IMAGE_INIT_DATABASE_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-database:1.4.0" - - name: RELATED_IMAGE_INIT_OPS_MANAGER_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-ops-manager:1.4.0" - - name: RELATED_IMAGE_INIT_APPDB_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-appdb:1.4.0" + - name: RELATED_IMAGE_MONGODB_ENTERPRISE_DATABASE_IMAGE_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-database:1.5.0" + - name: RELATED_IMAGE_INIT_DATABASE_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-database:1.5.0" + - name: RELATED_IMAGE_INIT_OPS_MANAGER_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-ops-manager:1.5.0" + - name: RELATED_IMAGE_INIT_APPDB_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-appdb:1.5.0" - name: RELATED_IMAGE_AGENT_IMAGE_107_0_12_8669_1 value: "quay.io/mongodb/mongodb-agent:107.0.12.8669-1" - name: RELATED_IMAGE_AGENT_IMAGE_107_0_13_8702_1 diff --git a/config/manifests/bases/mongodb-kubernetes.clusterserviceversion.yaml b/config/manifests/bases/mongodb-kubernetes.clusterserviceversion.yaml index 5ce337f7d..ffcaf3cdc 100644 --- a/config/manifests/bases/mongodb-kubernetes.clusterserviceversion.yaml +++ b/config/manifests/bases/mongodb-kubernetes.clusterserviceversion.yaml @@ -12,7 +12,7 @@ metadata: capabilities: Deep Insights categories: Database certified: "true" - containerImage: quay.io/mongodb/mongodb-kubernetes:1.4.0 + containerImage: quay.io/mongodb/mongodb-kubernetes:1.5.0 createdAt: "" description: The MongoDB Controllers for Kubernetes enable easy deploys of MongoDB into Kubernetes clusters, using our management, monitoring and @@ -462,5 +462,5 @@ spec: maturity: stable provider: name: MongoDB, Inc - replaces: mongodb-kubernetes.v1.3.0 + replaces: mongodb-kubernetes.v1.4.0 version: 0.0.0 diff --git a/docs/search/01-search-community-deploy/env_variables.sh b/docs/search/01-search-community-deploy/env_variables.sh index bd16a26f7..c02aaeb96 100644 --- a/docs/search/01-search-community-deploy/env_variables.sh +++ b/docs/search/01-search-community-deploy/env_variables.sh @@ -4,8 +4,8 @@ export K8S_CTX="" # the following namespace will be created if not exists export MDB_NS="mongodb" -# minimum required MongoDB version for running MongoDB Search is 8.0.10 -export MDB_VERSION="8.0.10" +# minimum required MongoDB version for running MongoDB Search is 8.2.0 +export MDB_VERSION="8.2.0" # root admin user for convenience, not used here at all in this guide export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME" diff --git a/docs/search/02-search-enterprise-deploy/code_snippets/02_0050_create_ops_manager_resources.sh b/docs/search/02-search-enterprise-deploy/code_snippets/02_0300_create_ops_manager_resources.sh similarity index 100% rename from docs/search/02-search-enterprise-deploy/code_snippets/02_0050_create_ops_manager_resources.sh rename to docs/search/02-search-enterprise-deploy/code_snippets/02_0300_create_ops_manager_resources.sh diff --git a/docs/search/02-search-enterprise-deploy/env_variables.sh b/docs/search/02-search-enterprise-deploy/env_variables.sh index 694bdafbd..0a292ff98 100644 --- a/docs/search/02-search-enterprise-deploy/env_variables.sh +++ b/docs/search/02-search-enterprise-deploy/env_variables.sh @@ -19,8 +19,8 @@ export OPS_MANAGER_API_USER="" export OPS_MANAGER_API_KEY="" export OPS_MANAGER_ORG_ID="" -# minimum required MongoDB version for running MongoDB Search is 8.0.10 -export MDB_VERSION="8.0.14-ent" +# minimum required MongoDB version for running MongoDB Search is 8.2.0 +export MDB_VERSION="8.2.0-ent" # root admin user for convenience, not used here at all in this guide export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME" diff --git a/docs/search/02-search-enterprise-deploy/test.sh b/docs/search/02-search-enterprise-deploy/test.sh index 91c5adfbe..022cb0109 100755 --- a/docs/search/02-search-enterprise-deploy/test.sh +++ b/docs/search/02-search-enterprise-deploy/test.sh @@ -13,11 +13,11 @@ prepare_snippets run 02_0045_create_namespaces.sh run 02_0046_create_image_pull_secrets.sh -run 02_0050_create_ops_manager_resources.sh run 02_0048_configure_prerelease_image_pullsecret.sh run_for_output 02_0090_helm_add_mogodb_repo.sh run_for_output 02_0100_install_operator.sh +run 02_0300_create_ops_manager_resources.sh run 02_0305_create_mongodb_database_resource.sh run_for_output 02_0310_wait_for_database_resource.sh run 02_0315_create_mongodb_users.sh diff --git a/helm_chart/Chart.yaml b/helm_chart/Chart.yaml index 27735b47d..b12d6fff9 100644 --- a/helm_chart/Chart.yaml +++ b/helm_chart/Chart.yaml @@ -4,7 +4,7 @@ description: | MongoDB Controllers for Kubernetes translate the human knowledge of creating a MongoDB instance into a scalable, repeatable, and standardized method. -version: 1.4.0 +version: 1.5.0 kubeVersion: '>=1.16-0' type: application keywords: diff --git a/helm_chart/values-openshift.yaml b/helm_chart/values-openshift.yaml index 7975280a3..ffb34f012 100644 --- a/helm_chart/values-openshift.yaml +++ b/helm_chart/values-openshift.yaml @@ -27,7 +27,7 @@ operator: # Environment variables prefixed with RELATED_IMAGE_ are used by operator-sdk to generate relatedImages section # with sha256 digests pinning for the certified operator bundle with disconnected environment feature enabled. # https://docs.openshift.com/container-platform/4.14/operators/operator_sdk/osdk-generating-csvs.html#olm-enabling-operator-for-restricted-network_osdk-generating-csvs - version: 1.4.0 + version: 1.5.0 relatedImages: opsManager: - 6.0.26 diff --git a/helm_chart/values.yaml b/helm_chart/values.yaml index 6fdd8244f..6bd45756e 100644 --- a/helm_chart/values.yaml +++ b/helm_chart/values.yaml @@ -22,7 +22,7 @@ operator: deployment_name: mongodb-kubernetes-operator # Version of mongodb-kubernetes-operator - version: 1.4.0 + version: 1.5.0 # The Custom Resources that will be watched by the Operator. Needs to be changed if only some of the CRDs are installed watchedResources: @@ -123,11 +123,11 @@ operator: ## Database database: name: mongodb-kubernetes-database - version: 1.4.0 + version: 1.5.0 initDatabase: name: mongodb-kubernetes-init-database - version: 1.4.0 + version: 1.5.0 ## Ops Manager opsManager: @@ -135,12 +135,12 @@ opsManager: initOpsManager: name: mongodb-kubernetes-init-ops-manager - version: 1.4.0 + version: 1.5.0 ## Application Database initAppDb: name: mongodb-kubernetes-init-appdb - version: 1.4.0 + version: 1.5.0 agent: name: mongodb-agent diff --git a/public/dockerfiles/mongodb-enterprise-ops-manager/8.0.14/ubi/Dockerfile b/public/dockerfiles/mongodb-enterprise-ops-manager/8.0.14/ubi/Dockerfile new file mode 100644 index 000000000..c54d14a5a --- /dev/null +++ b/public/dockerfiles/mongodb-enterprise-ops-manager/8.0.14/ubi/Dockerfile @@ -0,0 +1,82 @@ +ARG imagebase +FROM ${imagebase} as base + +FROM registry.access.redhat.com/ubi9/ubi-minimal + + +LABEL name="MongoDB Enterprise Ops Manager" \ + maintainer="support@mongodb.com" \ + vendor="MongoDB" \ + version="8.0.14" \ + release="1" \ + summary="MongoDB Enterprise Ops Manager Image" \ + description="MongoDB Enterprise Ops Manager" + + +ENV MMS_HOME /mongodb-ops-manager +ENV MMS_PROP_FILE ${MMS_HOME}/conf/conf-mms.properties +ENV MMS_CONF_FILE ${MMS_HOME}/conf/mms.conf +ENV MMS_LOG_DIR ${MMS_HOME}/logs +ENV MMS_TMP_DIR ${MMS_HOME}/tmp + +EXPOSE 8080 + +# OpsManager docker image needs to have the MongoDB dependencies because the +# backup daemon is running its database locally + + +# Replace libcurl-minimal and curl-minimal with the full versions +# https://bugzilla.redhat.com/show_bug.cgi?id=1994521 +RUN microdnf install -y libssh libpsl libbrotli \ + && microdnf download curl libcurl \ + && rpm -Uvh --nodeps --replacefiles "*curl*$( uname -i ).rpm" \ + && microdnf remove -y libcurl-minimal curl-minimal + +RUN microdnf install --disableplugin=subscription-manager -y \ + cyrus-sasl \ + cyrus-sasl-gssapi \ + cyrus-sasl-plain \ + krb5-libs \ + libpcap \ + lm_sensors-libs \ + net-snmp \ + net-snmp-agent-libs \ + openldap \ + openssl \ + tar \ + rpm-libs \ + net-tools \ + procps-ng \ + ncurses + + +COPY --from=base /data/licenses /licenses/ + +COPY --from=base /data/scripts /opt/scripts + + + +RUN curl --fail -L -o ops_manager.tar.gz https://downloads.mongodb.com/on-prem-mms/tar/mongodb-mms-8.0.14.500.20250915T2014Z.tar.gz \ + && tar -xzf ops_manager.tar.gz \ + && rm ops_manager.tar.gz \ + && mv mongodb-mms* "${MMS_HOME}" + + +# permissions +RUN chmod -R 0777 "${MMS_LOG_DIR}" \ + && chmod -R 0777 "${MMS_TMP_DIR}" \ + && chmod -R 0775 "${MMS_HOME}/conf" \ + && chmod -R 0775 "${MMS_HOME}/jdk" \ + && mkdir "${MMS_HOME}/mongodb-releases/" \ + && chmod -R 0775 "${MMS_HOME}/mongodb-releases" \ + && chmod -R 0777 "${MMS_CONF_FILE}" \ + && chmod -R 0777 "${MMS_PROP_FILE}" + +# The "${MMS_HOME}/conf" will be populated by the docker-entry-point.sh. +# For now we need to move into the templates directory. +RUN cp -r "${MMS_HOME}/conf" "${MMS_HOME}/conf-template" + +USER 2000 + +# operator to change the entrypoint to: /mongodb-ops-manager/bin/mongodb-mms start_mms (or a wrapper around this) +ENTRYPOINT [ "sleep infinity" ] diff --git a/public/dockerfiles/mongodb-kubernetes-database/1.5.0/ubi/Dockerfile b/public/dockerfiles/mongodb-kubernetes-database/1.5.0/ubi/Dockerfile new file mode 100644 index 000000000..9bf3a24bc --- /dev/null +++ b/public/dockerfiles/mongodb-kubernetes-database/1.5.0/ubi/Dockerfile @@ -0,0 +1,71 @@ +FROM scratch AS base + +COPY ./docker/mongodb-kubernetes-database/LICENSE /data/licenses/mongodb-kubernetes-database + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +ENV MMS_HOME=/mongodb-automation +ENV MMS_LOG_DIR=/var/log/mongodb-mms-automation + +RUN microdnf update -y && rm -rf /var/cache/yum + +# these are the packages needed for the agent +RUN microdnf install -y --disableplugin=subscription-manager --setopt=install_weak_deps=0 nss_wrapper +RUN microdnf install -y --disableplugin=subscription-manager \ + hostname \ + procps + +# these are the packages needed for MongoDB +# (https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat-tarball/ "RHEL/CentOS 8" tab) +RUN microdnf install -y --disableplugin=subscription-manager \ + cyrus-sasl \ + cyrus-sasl-gssapi \ + cyrus-sasl-plain \ + krb5-libs \ + libcurl \ + lm_sensors-libs \ + net-snmp \ + net-snmp-agent-libs \ + openldap \ + openssl \ + jq \ + tar \ + xz-libs \ + findutils + +RUN ln -s /usr/lib64/libsasl2.so.3 /usr/lib64/libsasl2.so.2 + +# Set the required perms +RUN mkdir -p "${MMS_LOG_DIR}" \ + && chmod 0775 "${MMS_LOG_DIR}" \ + && mkdir -p /var/lib/mongodb-mms-automation \ + && chmod 0775 /var/lib/mongodb-mms-automation \ + && mkdir -p /data \ + && chmod 0775 /data \ + && mkdir -p /journal \ + && chmod 0775 /journal \ + && mkdir -p "${MMS_HOME}" \ + && chmod -R 0775 "${MMS_HOME}" + +ARG version + +LABEL name="MongoDB Kubernetes Database" \ + version="${version}" \ + summary="MongoDB Kubernetes Database Image" \ + description="MongoDB Kubernetes Database Image" \ + vendor="MongoDB" \ + release="1" \ + maintainer="support@mongodb.com" + +# USER needs to be set for this image to pass RedHat verification. Some customers have these requirements as well +# It does not matter what number it is, as long as it is set to something. +# However, OpenShift will run the container as a random user, +# and the number in this configuration is not relevant. +USER 2000 + +# The docker image doesn't have any scripts so by default does nothing +# The script will be copied in runtime from init containers and the operator is expected +# to override the COMMAND +ENTRYPOINT ["sleep infinity"] + +COPY --from=base /data/licenses/mongodb-kubernetes-database /licenses/mongodb-kubernetes-database diff --git a/public/dockerfiles/mongodb-kubernetes-init-appdb/1.5.0/ubi/Dockerfile b/public/dockerfiles/mongodb-kubernetes-init-appdb/1.5.0/ubi/Dockerfile new file mode 100644 index 000000000..eeb48b288 --- /dev/null +++ b/public/dockerfiles/mongodb-kubernetes-init-appdb/1.5.0/ubi/Dockerfile @@ -0,0 +1,82 @@ +FROM --platform=${BUILDPLATFORM} registry.access.redhat.com/ubi8/ubi-minimal AS tools_downloader + +ARG mongodb_tools_url +ARG mongodb_tools_version_s390x +ARG mongodb_tools_version_ppc64le +ARG mongodb_tools_version_amd64 +ARG mongodb_tools_version_arm64 + +RUN microdnf -y update --nodocs \ + && microdnf -y install --nodocs tar gzip curl \ + && microdnf clean all + +RUN case ${TARGETPLATFORM} in \ + "linux/amd64") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_amd64} ;; \ + "linux/arm64") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_arm64} ;; \ + "linux/s390x") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_s390x} ;; \ + "linux/ppc64le") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_ppc64le} ;; \ + esac \ + && mkdir -p /tools \ + && if [ -n "$MONGODB_TOOLS_VERSION" ]; then \ + curl -o /tools/mongodb_tools.tgz "${mongodb_tools_url}/${MONGODB_TOOLS_VERSION}"; \ + fi + +RUN if [ -f "/tools/mongodb_tools.tgz" ]; then \ + tar xfz /tools/mongodb_tools.tgz --directory /tools \ + && rm /tools/mongodb_tools.tgz; \ + fi + +FROM --platform=$BUILDPLATFORM public.ecr.aws/docker/library/golang:1.24 AS readiness_builder + +WORKDIR /go/src/github.com/mongodb/mongodb-kubernetes/ + +COPY go.mod go.sum ./ + +RUN go mod download + +COPY mongodb-community-operator ./mongodb-community-operator + +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOFLAGS=-buildvcs=false GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /readinessprobe ./mongodb-community-operator/cmd/readiness/main.go +RUN CGO_ENABLED=0 GOFLAGS=-buildvcs=false GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /version-upgrade-hook ./mongodb-community-operator/cmd/versionhook/main.go + +FROM scratch AS base + +COPY --from=readiness_builder /readinessprobe /data/readinessprobe +COPY --from=readiness_builder /version-upgrade-hook /data/version-upgrade-hook + +COPY ./docker/mongodb-kubernetes-init-database/content/probe.sh /data/probe.sh + +COPY ./docker/mongodb-kubernetes-init-database/content/agent-launcher-lib.sh /data/scripts/ +COPY ./docker/mongodb-kubernetes-init-database/content/agent-launcher.sh /data/scripts/ + +COPY ./docker/mongodb-kubernetes-init-database/content/LICENSE /data/licenses/ + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +# Copy the extracted tools from the downloader stage (tools are already extracted there) +COPY --from=tools_downloader /tools/ /tools/ + +COPY --from=base /data/readinessprobe /probes/readinessprobe +COPY --from=base /data/probe.sh /probes/probe.sh +COPY --from=base /data/scripts/ /scripts/ +COPY --from=base /data/licenses /licenses/ +COPY --from=base /data/version-upgrade-hook /probes/version-upgrade-hook + +RUN microdnf -y update --nodocs \ + && microdnf -y install --nodocs tar gzip \ + && microdnf clean all + +ARG version +LABEL name="MongoDB Kubernetes Init AppDB" \ + version="mongodb-kubernetes-init-appdb-${version}" \ + summary="MongoDB Kubernetes AppDB Init Image" \ + description="Startup Scripts for MongoDB Enterprise Application Database for Ops Manager" \ + release="1" \ + vendor="MongoDB" \ + maintainer="support@mongodb.com" + +USER 2000 + +ENTRYPOINT [ "/bin/cp", "-f", "-r", "/scripts/agent-launcher.sh", "/scripts/agent-launcher-lib.sh", "/probes/readinessprobe", "/probes/probe.sh", "/tools", "/opt/scripts/" ] diff --git a/public/dockerfiles/mongodb-kubernetes-init-database/1.5.0/ubi/Dockerfile b/public/dockerfiles/mongodb-kubernetes-init-database/1.5.0/ubi/Dockerfile new file mode 100644 index 000000000..9a0b009fd --- /dev/null +++ b/public/dockerfiles/mongodb-kubernetes-init-database/1.5.0/ubi/Dockerfile @@ -0,0 +1,81 @@ +FROM --platform=${BUILDPLATFORM} registry.access.redhat.com/ubi8/ubi-minimal AS tools_downloader + +ARG mongodb_tools_url +ARG mongodb_tools_version_s390x +ARG mongodb_tools_version_ppc64le +ARG mongodb_tools_version_amd64 +ARG mongodb_tools_version_arm64 + +RUN microdnf -y update --nodocs \ + && microdnf -y install --nodocs tar gzip curl \ + && microdnf clean all + +RUN case ${TARGETPLATFORM} in \ + "linux/amd64") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_amd64} ;; \ + "linux/arm64") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_arm64} ;; \ + "linux/s390x") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_s390x} ;; \ + "linux/ppc64le") export MONGODB_TOOLS_VERSION=${mongodb_tools_version_ppc64le} ;; \ + esac \ + && mkdir -p /tools \ + && if [ -n "$MONGODB_TOOLS_VERSION" ]; then \ + curl -o /tools/mongodb_tools.tgz "${mongodb_tools_url}/${MONGODB_TOOLS_VERSION}"; \ + fi + +RUN if [ -f "/tools/mongodb_tools.tgz" ]; then \ + tar xfz /tools/mongodb_tools.tgz --directory /tools \ + && rm /tools/mongodb_tools.tgz; \ + fi + +FROM --platform=$BUILDPLATFORM public.ecr.aws/docker/library/golang:1.24 AS readiness_builder + +WORKDIR /go/src/github.com/mongodb/mongodb-kubernetes/ + +COPY go.mod go.sum ./ + +RUN go mod download + +COPY mongodb-community-operator ./mongodb-community-operator + +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOFLAGS=-buildvcs=false GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /readinessprobe ./mongodb-community-operator/cmd/readiness/main.go +RUN CGO_ENABLED=0 GOFLAGS=-buildvcs=false GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /version-upgrade-hook ./mongodb-community-operator/cmd/versionhook/main.go + +FROM scratch AS base + +COPY --from=readiness_builder /readinessprobe /data/readinessprobe +COPY --from=readiness_builder /version-upgrade-hook /data/version-upgrade-hook + +COPY ./docker/mongodb-kubernetes-init-database/content/probe.sh /data/probe.sh + +COPY ./docker/mongodb-kubernetes-init-database/content/agent-launcher-lib.sh /data/scripts/ +COPY ./docker/mongodb-kubernetes-init-database/content/agent-launcher.sh /data/scripts/ + +COPY ./docker/mongodb-kubernetes-init-database/content/LICENSE /data/licenses/ + +FROM registry.access.redhat.com/ubi8/ubi-minimal + +# Copy the extracted tools from the downloader stage (tools are already extracted there) +COPY --from=tools_downloader /tools/ /tools/ + +COPY --from=base /data/readinessprobe /probes/readinessprobe +COPY --from=base /data/probe.sh /probes/probe.sh +COPY --from=base /data/scripts/ /scripts/ +COPY --from=base /data/licenses /licenses/ + +RUN microdnf -y update --nodocs \ + && microdnf -y install --nodocs tar gzip \ + && microdnf clean all + +ARG version +LABEL name="MongoDB Kubernetes Init Database" \ + version="mongodb-kubernetes-init-database-${version}" \ + summary="MongoDB Kubernetes Database Init Image" \ + description="Startup Scripts for MongoDB Enterprise Database" \ + release="1" \ + vendor="MongoDB" \ + maintainer="support@mongodb.com" + +USER 2000 + +ENTRYPOINT [ "/bin/cp", "-f", "-r", "/scripts/agent-launcher.sh", "/scripts/agent-launcher-lib.sh", "/probes/readinessprobe", "/probes/probe.sh", "/tools", "/opt/scripts/" ] diff --git a/public/dockerfiles/mongodb-kubernetes-init-ops-manager/1.5.0/ubi/Dockerfile b/public/dockerfiles/mongodb-kubernetes-init-ops-manager/1.5.0/ubi/Dockerfile new file mode 100644 index 000000000..07427ff0f --- /dev/null +++ b/public/dockerfiles/mongodb-kubernetes-init-ops-manager/1.5.0/ubi/Dockerfile @@ -0,0 +1,34 @@ +FROM --platform=${BUILDPLATFORM} public.ecr.aws/docker/library/golang:1.24 AS base + +WORKDIR /go/src +ADD ./docker/mongodb-kubernetes-init-ops-manager . + +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -buildvcs=false -o /data/scripts/mmsconfiguration ./mmsconfiguration +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -buildvcs=false -o /data/scripts/backup-daemon-readiness-probe ./backupdaemon_readinessprobe/ + +COPY ./docker/mongodb-kubernetes-init-ops-manager/scripts/docker-entry-point.sh /data/scripts/ +COPY ./docker/mongodb-kubernetes-init-ops-manager/scripts/backup-daemon-liveness-probe.sh /data/scripts/ +COPY ./docker/mongodb-kubernetes-init-ops-manager/LICENSE /data/licenses/mongodb-enterprise-ops-manager + +FROM registry.access.redhat.com/ubi9/ubi-minimal + +ARG version + +LABEL name="MongoDB Kubernetes Ops Manager Init" \ + maintainer="support@mongodb.com" \ + vendor="MongoDB" \ + version="mongodb-kubernetes-init-ops-manager-${version}" \ + release="1" \ + summary="MongoDB Kubernetes Ops Manager Init Image" \ + description="Startup Scripts for MongoDB Enterprise Ops Manager" + +COPY --from=base /data/scripts /scripts +COPY --from=base /data/licenses /licenses + +RUN microdnf -y update --nodocs \ + && microdnf clean all + +USER 2000 +ENTRYPOINT [ "/bin/cp", "-f", "/scripts/docker-entry-point.sh", "/scripts/backup-daemon-liveness-probe.sh", "/scripts/mmsconfiguration", "/scripts/backup-daemon-readiness-probe", "/opt/scripts/" ] diff --git a/public/dockerfiles/mongodb-kubernetes/1.5.0/ubi/Dockerfile b/public/dockerfiles/mongodb-kubernetes/1.5.0/ubi/Dockerfile new file mode 100644 index 000000000..c08b228f9 --- /dev/null +++ b/public/dockerfiles/mongodb-kubernetes/1.5.0/ubi/Dockerfile @@ -0,0 +1,72 @@ +FROM --platform=${BUILDPLATFORM} public.ecr.aws/docker/library/golang:1.24 AS builder + +ARG BUILDARCH +ADD "https://github.com/stedolan/jq/releases/download/jq-1.8.1/jq-linux-${BUILDARCH}" /usr/local/bin/jq +RUN chmod +x /usr/local/bin/jq + +COPY go.sum go.mod /go/src/github.com/mongodb/mongodb-kubernetes/ + +WORKDIR /go/src/github.com/mongodb/mongodb-kubernetes +RUN go mod download + +COPY . /go/src/github.com/mongodb/mongodb-kubernetes + +ARG version +ARG log_automation_config_diff +ARG use_race +ARG TARGETOS +ARG TARGETARCH + +RUN mkdir /build && \ + if [ $use_race = "true" ]; then \ + echo "Building with race detector" && \ + CGO_ENABLED=1 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /build/mongodb-kubernetes-operator \ + -buildvcs=false \ + -race \ + -ldflags=" -X github.com/mongodb/mongodb-kubernetes/pkg/util.OperatorVersion=${version} \ + -X github.com/mongodb/mongodb-kubernetes/pkg/util.LogAutomationConfigDiff=${log_automation_config_diff}"; \ + else \ + echo "Building without race detector" && \ + CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /build/mongodb-kubernetes-operator \ + -buildvcs=false \ + -ldflags="-s -w -X github.com/mongodb/mongodb-kubernetes/pkg/util.OperatorVersion=${version} \ + -X github.com/mongodb/mongodb-kubernetes/pkg/util.LogAutomationConfigDiff=${log_automation_config_diff}"; \ + fi + +RUN mkdir -p /data +RUN cat release.json | jq -r '.supportedImages."mongodb-agent" | { "supportedImages": { "mongodb-agent": . } }' > /data/om_version_mapping.json +RUN chmod +r /data/om_version_mapping.json + +FROM scratch AS base + +COPY --from=builder /build/mongodb-kubernetes-operator /data/ +COPY --from=builder /data/om_version_mapping.json /data/om_version_mapping.json + +ADD docker/mongodb-kubernetes-operator/licenses /data/licenses/ + +FROM registry.access.redhat.com/ubi9/ubi-minimal + +# Building an UBI-based image: https://red.ht/3n6b9y0 +RUN microdnf update \ + --disableplugin=subscription-manager \ + --disablerepo=* --enablerepo=ubi-9-appstream-rpms --enablerepo=ubi-9-baseos-rpms -y \ + && rm -rf /var/cache/yum +RUN microdnf install -y glibc-langpack-en + +COPY --from=base /data/mongodb-kubernetes-operator /usr/local/bin/mongodb-kubernetes-operator +COPY --from=base /data/om_version_mapping.json /usr/local/om_version_mapping.json +COPY --from=base /data/licenses /licenses/ + +ARG version + +LABEL name="MongoDB Kubernetes Operator" \ + maintainer="support@mongodb.com" \ + vendor="MongoDB" \ + version="${version}" \ + release="1" \ + summary="MongoDB Kubernetes Operator Image" \ + description="MongoDB Kubernetes Operator Image" + +USER 2000 + +ENTRYPOINT exec /usr/local/bin/mongodb-kubernetes-operator diff --git a/public/mongodb-kubernetes-multi-cluster.yaml b/public/mongodb-kubernetes-multi-cluster.yaml index 55292d334..e6d9c5057 100644 --- a/public/mongodb-kubernetes-multi-cluster.yaml +++ b/public/mongodb-kubernetes-multi-cluster.yaml @@ -331,7 +331,7 @@ spec: runAsUser: 2000 containers: - name: mongodb-kubernetes-operator-multi-cluster - image: "quay.io/mongodb/mongodb-kubernetes:1.4.0" + image: "quay.io/mongodb/mongodb-kubernetes:1.5.0" imagePullPolicy: Always args: - -watch-resource=mongodb @@ -380,21 +380,21 @@ spec: - name: INIT_DATABASE_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-database - name: INIT_DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 - name: DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 # Ops Manager - name: OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-enterprise-ops-manager-ubi - name: INIT_OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-ops-manager - name: INIT_OPS_MANAGER_VERSION - value: 1.4.0 + value: 1.5.0 # AppDB - name: INIT_APPDB_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-appdb - name: INIT_APPDB_VERSION - value: 1.4.0 + value: 1.5.0 - name: OPS_MANAGER_IMAGE_PULL_POLICY value: Always - name: AGENT_IMAGE diff --git a/public/mongodb-kubernetes-openshift.yaml b/public/mongodb-kubernetes-openshift.yaml index 5ec4a4d49..6fdace0eb 100644 --- a/public/mongodb-kubernetes-openshift.yaml +++ b/public/mongodb-kubernetes-openshift.yaml @@ -328,7 +328,7 @@ spec: serviceAccountName: mongodb-kubernetes-operator containers: - name: mongodb-kubernetes-operator - image: "quay.io/mongodb/mongodb-kubernetes:1.4.0" + image: "quay.io/mongodb/mongodb-kubernetes:1.5.0" imagePullPolicy: Always args: - -watch-resource=mongodb @@ -375,21 +375,21 @@ spec: - name: INIT_DATABASE_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-database - name: INIT_DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 - name: DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 # Ops Manager - name: OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-enterprise-ops-manager-ubi - name: INIT_OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-ops-manager - name: INIT_OPS_MANAGER_VERSION - value: 1.4.0 + value: 1.5.0 # AppDB - name: INIT_APPDB_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-appdb - name: INIT_APPDB_VERSION - value: 1.4.0 + value: 1.5.0 - name: OPS_MANAGER_IMAGE_PULL_POLICY value: Always - name: AGENT_IMAGE @@ -426,14 +426,14 @@ spec: - name: MDB_COMMUNITY_IMAGE_TYPE value: "ubi8" # Community Env Vars End - - name: RELATED_IMAGE_MONGODB_ENTERPRISE_DATABASE_IMAGE_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-database:1.4.0" - - name: RELATED_IMAGE_INIT_DATABASE_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-database:1.4.0" - - name: RELATED_IMAGE_INIT_OPS_MANAGER_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-ops-manager:1.4.0" - - name: RELATED_IMAGE_INIT_APPDB_IMAGE_REPOSITORY_1_4_0 - value: "quay.io/mongodb/mongodb-kubernetes-init-appdb:1.4.0" + - name: RELATED_IMAGE_MONGODB_ENTERPRISE_DATABASE_IMAGE_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-database:1.5.0" + - name: RELATED_IMAGE_INIT_DATABASE_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-database:1.5.0" + - name: RELATED_IMAGE_INIT_OPS_MANAGER_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-ops-manager:1.5.0" + - name: RELATED_IMAGE_INIT_APPDB_IMAGE_REPOSITORY_1_5_0 + value: "quay.io/mongodb/mongodb-kubernetes-init-appdb:1.5.0" - name: RELATED_IMAGE_AGENT_IMAGE_107_0_12_8669_1 value: "quay.io/mongodb/mongodb-agent:107.0.12.8669-1" - name: RELATED_IMAGE_AGENT_IMAGE_107_0_13_8702_1 diff --git a/public/mongodb-kubernetes.yaml b/public/mongodb-kubernetes.yaml index 6a97c0bcf..ced86abb4 100644 --- a/public/mongodb-kubernetes.yaml +++ b/public/mongodb-kubernetes.yaml @@ -331,7 +331,7 @@ spec: runAsUser: 2000 containers: - name: mongodb-kubernetes-operator - image: "quay.io/mongodb/mongodb-kubernetes:1.4.0" + image: "quay.io/mongodb/mongodb-kubernetes:1.5.0" imagePullPolicy: Always args: - -watch-resource=mongodb @@ -376,21 +376,21 @@ spec: - name: INIT_DATABASE_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-database - name: INIT_DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 - name: DATABASE_VERSION - value: 1.4.0 + value: 1.5.0 # Ops Manager - name: OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-enterprise-ops-manager-ubi - name: INIT_OPS_MANAGER_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-ops-manager - name: INIT_OPS_MANAGER_VERSION - value: 1.4.0 + value: 1.5.0 # AppDB - name: INIT_APPDB_IMAGE_REPOSITORY value: quay.io/mongodb/mongodb-kubernetes-init-appdb - name: INIT_APPDB_VERSION - value: 1.4.0 + value: 1.5.0 - name: OPS_MANAGER_IMAGE_PULL_POLICY value: Always - name: AGENT_IMAGE diff --git a/release.json b/release.json index 828b0a4a3..3d5297338 100644 --- a/release.json +++ b/release.json @@ -2,11 +2,11 @@ "mongodbToolsBundle": { "ubi": "mongodb-database-tools-rhel88-x86_64-100.13.0.tgz" }, - "mongodbOperator": "1.4.0", - "initDatabaseVersion": "1.4.0", - "initOpsManagerVersion": "1.4.0", - "initAppDbVersion": "1.4.0", - "databaseImageVersion": "1.4.0", + "mongodbOperator": "1.5.0", + "initDatabaseVersion": "1.5.0", + "initOpsManagerVersion": "1.5.0", + "initAppDbVersion": "1.5.0", + "databaseImageVersion": "1.5.0", "agentVersion": "108.0.12.8846-1", "readinessProbeVersion": "1.0.23", "versionUpgradeHookVersion": "1.0.10", @@ -54,7 +54,8 @@ "1.1.0", "1.2.0", "1.3.0", - "1.4.0" + "1.4.0", + "1.5.0" ], "variants": [ "ubi" @@ -182,7 +183,8 @@ "1.1.0", "1.2.0", "1.3.0", - "1.4.0" + "1.4.0", + "1.5.0" ], "variants": [ "ubi" @@ -196,7 +198,8 @@ "1.1.0", "1.2.0", "1.3.0", - "1.4.0" + "1.4.0", + "1.5.0" ], "variants": [ "ubi" @@ -210,7 +213,8 @@ "1.1.0", "1.2.0", "1.3.0", - "1.4.0" + "1.4.0", + "1.5.0" ], "variants": [ "ubi" @@ -224,7 +228,8 @@ "1.1.0", "1.2.0", "1.3.0", - "1.4.0" + "1.4.0", + "1.5.0" ], "variants": [ "ubi"