Skip to content

Commit

Permalink
Allow readOnlyRootFilesystem support in UBI8 images (#491)
Browse files Browse the repository at this point in the history
* WIP: Cleanup all the unnecessary stuff for running within K8ssandra system

* Add MGMT_API in the Dockerfile for 4.1 and 5.0 UBI8-OSS

* Add management-api to DSE 6.9 and Debian Cassandra 4.1 also

* Add CHANGELOG
  • Loading branch information
burmanm authored Jul 22, 2024
1 parent aff3a96 commit 54e7b0a
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Changelog for Management API, new PRs should update the `main / unreleased` sect
## unreleased
* [FEATURE] [#517](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/517) Add DSE 6.9.0 to the build matrix
* [ENHANCEMENT] [#516](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/516) Address warnings in Dockerfiles
* [ENHANCEMENT] [#521](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/521) Add management-api to Cassandra conf in the Dockerfile, not entrypoint for DSE 6.9, Cassandra 4.1 and Cassandra 5.0. This allows to run the container with readOnlyRootFilesystem.

## v0.1.83 (2024-07-10)
* [BUGFIX] [#510](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/510) CDC is not working in the OSS images (at least not UBI)
Expand Down
4 changes: 4 additions & 0 deletions cassandra/Dockerfile-4.1
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ ENV MAAC_PATH=/opt/management-api
ENV MCAC_PATH=/opt/metrics-collector
ENV CDC_AGENT_PATH=/opt/cdc_agent
ENV USER_HOME_PATH=/home/cassandra
ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"

ENV CASSANDRA_HOME=${CASSANDRA_PATH}
ENV CASSANDRA_CONF=${CASSANDRA_PATH}/conf
Expand Down Expand Up @@ -109,6 +110,9 @@ RUN set -eux; \
apt-get install -y --no-install-recommends wget iproute2; \
rm -rf /var/lib/apt/lists/*

RUN echo "" >> ${CASSANDRA_CONF}/cassandra-env.sh && \
echo "JVM_OPTS=\"\$JVM_OPTS -javaagent:${MGMT_AGENT_JAR}\"" >> ${CASSANDRA_CONF}/cassandra-env.sh

# backwards compat with upstream ENTRYPOINT
COPY cassandra/scripts/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \
Expand Down
4 changes: 4 additions & 0 deletions cassandra/Dockerfile-4.1.ubi8
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ ENV CASSANDRA_PATH=/opt/cassandra
ENV MAAC_PATH=/opt/management-api
ENV MCAC_PATH=/opt/metrics-collector
ENV CDC_AGENT_PATH=/opt/cdc_agent
ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"

ENV PATH=${CASSANDRA_PATH}/bin:${PATH}
ENV CASSANDRA_HOME=${CASSANDRA_PATH}
Expand Down Expand Up @@ -154,6 +155,9 @@ RUN (for dir in ${CASSANDRA_DATA_DIR} \
# change mode of directories
chmod a+rwX ${MAAC_PATH} ${MCAC_PATH} ${CASSANDRA_PATH} ${CDC_AGENT_PATH} /etc/cassandra

RUN echo "" >> ${CASSANDRA_CONF}/cassandra-env.sh && \
echo "JVM_OPTS=\"\$JVM_OPTS -javaagent:${MGMT_AGENT_JAR}\"" >> ${CASSANDRA_CONF}/cassandra-env.sh

# backwards compat with upstream ENTRYPOINT
COPY cassandra/scripts/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \
Expand Down
4 changes: 4 additions & 0 deletions cassandra/Dockerfile-5.0.ubi8
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV CASSANDRA_PATH=/opt/cassandra
ENV MAAC_PATH=/opt/management-api
ENV CDC_AGENT_PATH=/opt/cdc_agent
ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"

ENV PATH=${CASSANDRA_PATH}/bin:${PATH}
ENV CASSANDRA_HOME=${CASSANDRA_PATH}
Expand Down Expand Up @@ -144,6 +145,9 @@ RUN (for dir in ${CASSANDRA_DATA_DIR} \
# change mode of directories
chmod a+rwX ${MAAC_PATH} ${CASSANDRA_PATH} ${CDC_AGENT_PATH} /etc/cassandra

RUN echo "" >> ${CASSANDRA_CONF}/cassandra-env.sh && \
echo "JVM_OPTS=\"\$JVM_OPTS -javaagent:${MGMT_AGENT_JAR}\"" >> ${CASSANDRA_CONF}/cassandra-env.sh

# backwards compat with upstream ENTRYPOINT
COPY cassandra/scripts/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && \
Expand Down
5 changes: 5 additions & 0 deletions dse/Dockerfile-dse6.9.jdk11
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ ENV DSE_AGENT_HOME=/opt/agent
ENV CASSANDRA_CONF=${DSE_HOME}/resources/cassandra/conf
ENV MAAC_PATH=/opt/management-api
ENV CDC_AGENT_PATH=/opt/cdc_agent
ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"

RUN set -eux; \
apt-get update; \
Expand Down Expand Up @@ -185,6 +186,10 @@ COPY --chown=dse:root --from=mgmtapi-setup $MAAC_PATH $MAAC_PATH
# Add CDC Agent
COPY --chown=dse:root --from=mgmtapi-setup $CDC_AGENT_PATH $CDC_AGENT_PATH

# Add management-api
RUN echo "" >> ${CASSANDRA_CONF}/cassandra-env.sh && \
echo "JVM_OPTS=\"\$JVM_OPTS -javaagent:${MGMT_AGENT_JAR}\"" >> ${CASSANDRA_CONF}/cassandra-env.sh

# Fix COPY directory modes
RUN chmod g+w ${MAAC_PATH} ${MCAC_PATH} ${DSE_HOME} ${DSE_AGENT_HOME} ${CDC_AGENT_PATH}

Expand Down
5 changes: 5 additions & 0 deletions dse/Dockerfile-dse6.9.ubi8
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ RUN chmod 0555 /entrypoint.sh /overwritable-conf-files /licenses /base-checks.sh
# Use OSS Management API
ENV CASSANDRA_CONF=${DSE_HOME}/resources/cassandra/conf
ENV MAAC_PATH=/opt/management-api
ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"
COPY --chown=dse:root --from=mgmtapi-setup $MAAC_PATH $MAAC_PATH
# Add CDC Agent
ENV CDC_AGENT_PATH=/opt/cdc_agent
Expand All @@ -123,6 +124,10 @@ RUN chmod g+w /etc /etc/ld.so.cache && \
# still need to change the mode of the COPY directories, though this does not duplicate layers
chmod g+w ${MAAC_PATH} ${DSE_HOME} ${CDC_AGENT_PATH}

# Add management-api
RUN echo "" >> ${CASSANDRA_CONF}/cassandra-env.sh && \
echo "JVM_OPTS=\"\$JVM_OPTS -javaagent:${MGMT_AGENT_JAR}\"" >> ${CASSANDRA_CONF}/cassandra-env.sh

# Set user to run as
USER dse:root

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public class Cli implements Runnable {
description = "Create a PID file at this file path.")
private String pidfile = null;

@Path(executable = true)
@Path(executable = true, writable = false)
@Option(
name = {"-C", "--cassandra-home", "--db-home"},
arity = 1,
Expand Down

0 comments on commit 54e7b0a

Please sign in to comment.