incubator-devlake-helm-chart icon indicating copy to clipboard operation
incubator-devlake-helm-chart copied to clipboard

[Feature Request]: Ability to add an `initContainer` for the MySQL StatefulSet

Open cicdguy opened this issue 1 year ago • 3 comments

I am unable to run the MySQL database on the k8s cluster as the mysql user wherein I set the securityContext to runAsUser with ID 999, as available in the mysql:8 image. Running as root is not an option either, due to security concerns.

This is the log:

2023-10-24 19:36:31+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2023-10-24 19:36:31+00:00 [Note] [Entrypoint]: Initializing database files
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
2023-10-24T19:36:31.447303Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.27) initializing of server in progress as process 22
2023-10-24T19:36:31.448251Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
2023-10-24T19:36:31.448255Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2023-10-24T19:36:31.448284Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-10-24T19:36:31.448376Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete

In order to circumvent this, I need to have an initContainer where I can override the file permissions on /var/lib/mysql to chmod it recursively with 999:999 permissions.

This is a request to add the ability to instantiate a new initContainer for the MySQL DB StatefulSet.

cicdguy avatar Oct 24 '23 19:10 cicdguy

I am unable to run the MySQL database on the k8s cluster as the mysql user wherein I set the securityContext to runAsUser with ID 999, as available in the mysql:8 image. Running as root is not an option either, due to security concerns.

This is the log:

2023-10-24 19:36:31+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2023-10-24 19:36:31+00:00 [Note] [Entrypoint]: Initializing database files
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
2023-10-24T19:36:31.447303Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.27) initializing of server in progress as process 22
2023-10-24T19:36:31.448251Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
2023-10-24T19:36:31.448255Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2023-10-24T19:36:31.448284Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-10-24T19:36:31.448376Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete

In order to circumvent this, I need to have an initContainer where I can override the file permissions on /var/lib/mysql to chmod it recursively with 999:999 permissions.

This is a request to add the ability to instantiate a new initContainer for the MySQL DB StatefulSet.

Hi @cicdguy am I correct assuming that user 999 is mysql user? If so, it seems that’s an issue to report on MySQL’s image. In any case, adding the ability to create an initContainer could be nice. I encourage you to open a pull request adding it to the helm chart.

JorgeGar avatar Oct 24 '23 20:10 JorgeGar

@JorgeGar Can you assign me to fix it? Facing the same issue.

ProjectsOfMLee avatar Oct 24 '23 21:10 ProjectsOfMLee

@JorgeGar Can you assign me to fix it? Facing the same issue.

@ProjectsOfMLee Assigned. Please tag me on the PR too so I can take a closer look.

JorgeGar avatar Oct 25 '23 07:10 JorgeGar