Skip to content

Commit 10742df

Browse files
committed
K8SPXC-1071 - ProxySQL - Add support for percona-scheduler-admin
1 parent ae86019 commit 10742df

File tree

5 files changed

+53
-31
lines changed

5 files changed

+53
-31
lines changed

proxysql/Dockerfile

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ FROM redhat/ubi8-minimal
1010

1111
LABEL org.opencontainers.image.authors="info@percona.com"
1212

13-
ENV PXC_VERSION 8.0.27-18.1
14-
ENV PROXYSQL_VERSION 2.3.2-1.1
13+
ENV PXC_VERSION 8.0.28-19.1
14+
ENV PROXYSQL_VERSION 2.3.2-1.2
1515
ENV OS_VER el8
1616
ENV FULL_PERCONA_VERSION "$PXC_VERSION.$OS_VER"
1717
ENV FULL_PROXYSQL_VERSION "$PROXYSQL_VERSION.$OS_VER"
@@ -49,10 +49,17 @@ RUN set -ex; \
4949
procps-ng \
5050
perl-DBD-MySQL \
5151
perl-DBI \
52-
tar; \
52+
tar \
53+
cpio; \
5354
microdnf clean all; \
5455
rm -rf /var/cache/dnf /var/cache/yum
5556

57+
RUN set -ex; \
58+
curl -Lf -o /tmp/server.rpm https://repo.percona.com/pxc-80/yum/release/8.0/RPMS/x86_64/percona-xtradb-cluster-server-8.0.28-19.1.el8.x86_64.rpm; \
59+
rpmkeys --checksig /tmp/server.rpm; \
60+
rpm2cpio /tmp/server.rpm | cpio -idmv; \
61+
rm -rf /tmp/server.rpm
62+
5663
RUN groupadd -g 1001 proxysql; \
5764
useradd -u 1001 -r -g 1001 -s /sbin/nologin \
5865
-c "Default Application User" proxysql
@@ -74,8 +81,8 @@ RUN cp /usr/share/doc/proxysql2/LICENSE /licenses/LICENSE.proxysql
7481

7582
COPY dockerdir /
7683
COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list /usr/bin/
77-
RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf; \
78-
chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf
84+
RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml; \
85+
chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml
7986

8087
USER 1001
8188

proxysql/Dockerfile.k8s

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ All the while getting the unlimited freedom that comes with a GPL license."
2424
LABEL org.opencontainers.image.license="GPL+"
2525
LABEL org.opencontainers.image.authors="info@percona.com"
2626

27-
ENV PXC_VERSION 8.0.26-16.1
28-
ENV PROXYSQL_VERSION 2.3.2-1.1
27+
ENV PXC_VERSION 8.0.28-19.1
28+
ENV PROXYSQL_VERSION 2.3.2-1.2
2929
ENV OS_VER el8
3030
ENV FULL_PERCONA_VERSION "$PXC_VERSION.$OS_VER"
3131
ENV FULL_PROXYSQL_VERSION "$PROXYSQL_VERSION.$OS_VER"
@@ -90,8 +90,8 @@ RUN cp /usr/share/doc/proxysql2/LICENSE /licenses/LICENSE.proxysql
9090

9191
COPY dockerdir /
9292
COPY --from=go_builder /go/src/github.com/percona/percona-xtradb-cluster-operator/src/peer-list /usr/bin/
93-
RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf; \
94-
chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf
93+
RUN chown 1001:1001 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml; \
94+
chmod 664 /etc/proxysql/proxysql.cnf /etc/proxysql-admin.cnf /etc/config.toml
9595

9696
USER 1001
9797

proxysql/dockerdir/entrypoint.sh

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
set -o xtrace
44

55
PROXY_CFG=/etc/proxysql/proxysql.cnf
6-
PROXY_ADMIN_CFG=/etc/proxysql-admin.cnf
6+
PROXY_SCHEDULER_CFG=/etc/config.toml
7+
temp_proxy_scheduler_cfg=$(mktemp)
78

89
if [ -n ${PROXYSQL_SERVICE} ]; then
910
MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062'
1011
CLUSTER_PORT='33062'
11-
sed "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
12+
sed "s/^writerIsAlsoReader.*=.*$/writerIsAlsoReader = 1/" ${PROXY_SCHEDULER_CFG} | \
13+
sed "s/^clustered.*=.*false$/clustered = true/" > ${temp_proxy_scheduler_cfg}
14+
cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG}
1215
fi
1316

1417
sed "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG}
@@ -24,13 +27,16 @@ sed "s/\"admin:admin\"/\"${PROXY_ADMIN_USER:-admin}:${PROXY_ADMIN_PASSWORD:-admi
2427
sed "s/cluster_username=\"admin\"/cluster_username=\"${PROXY_ADMIN_USER:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG}
2528
sed "s/cluster_password=\"admin\"/cluster_password=\"${PROXY_ADMIN_PASSWORD:-admin}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG}
2629
sed "s/monitor_password=\"monitor\"/monitor_password=\"${MONITOR_PASSWORD:-monitor}\"/g" ${PROXY_CFG} 1<> ${PROXY_CFG}
27-
sed "s/PROXYSQL_USERNAME='admin'/PROXYSQL_USERNAME='${PROXY_ADMIN_USER:-admin}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
28-
sed "s/PROXYSQL_PASSWORD='admin'/PROXYSQL_PASSWORD='${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
29-
sed "s/CLUSTER_USERNAME='admin'/CLUSTER_USERNAME='operator'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
30-
sed "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_ESCAPED:-operator}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
31-
sed "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
32-
sed "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='monitor'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
33-
sed "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_ADMIN_CFG} 1<> ${PROXY_ADMIN_CFG}
30+
31+
sed "s/^user.*=.*\"$/user = '${PROXY_ADMIN_USER:-admin}'/" ${PROXY_SCHEDULER_CFG} | \
32+
sed "s/^password.*=.*\"$/password = '${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" | \
33+
sed "s/^clusterUserPassword.*=.*\"$/clusterUserPassword='${OPERATOR_PASSWORD_ESCAPED:-operator}'/" | \
34+
sed "s/^clusterUser.*=.*\"$/clusterUser = 'operator'/" | \
35+
sed "s/^clusterPort.*=.*\"$/clusterPort='${CLUSTER_PORT:-3306}'/" | \
36+
sed "s/^monitorUserPassword.*=.*\"$/monitorUserPassword='${MONITOR_PASSWORD_ESCAPED:-monitor}'/" | \
37+
sed "s/^monitorUser.*=.*\"$/monitorUser='monitor'/" > ${temp_proxy_scheduler_cfg}
38+
cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG}
39+
3440
set -o xtrace
3541

3642
## SSL/TLS support
@@ -41,10 +47,14 @@ fi
4147
SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl}
4248
if [ -f "${SSL_DIR}/ca.crt" ]; then
4349
CA=${SSL_DIR}/ca.crt
50+
sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg}
51+
cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG}
4452
fi
4553
SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal}
4654
if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then
4755
CA=${SSL_INTERNAL_DIR}/ca.crt
56+
sed "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PROXY_SCHEDULER_CFG} > ${temp_proxy_scheduler_cfg}
57+
cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG}
4858
fi
4959

5060
KEY=${SSL_DIR}/tls.key
@@ -60,7 +70,12 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the
6070
sed "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG} 1<> ${PROXY_CFG}
6171
sed "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG} 1<> ${PROXY_CFG}
6272
sed "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG} 1<> ${PROXY_CFG}
73+
sed "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PROXY_SCHEDULER_CFG} | \
74+
sed "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" | \
75+
sed "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" > ${temp_proxy_scheduler_cfg}
76+
cp ${temp_proxy_scheduler_cfg} ${PROXY_SCHEDULER_CFG}
6377
fi
78+
rm ${temp_proxy_scheduler_cfg}
6479

6580
if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then
6681
cp "${SSL_DIR}/tls.key" /var/lib/proxysql/proxysql-key.pem

proxysql/dockerdir/usr/bin/add_proxysql_nodes.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function proxysql_admin_exec() {
1515
function wait_for_proxysql() {
1616
local server="$1"
1717
echo "Waiting for host $server to be online..."
18-
while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_mysql_galera_hostgroups')" != "1" ]
18+
while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_scheduler')" != "1" ]
1919
do
2020
echo "ProxySQL is not up yet... sleeping ..."
2121
sleep 1

proxysql/dockerdir/usr/bin/add_pxc_nodes.sh

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,34 +55,34 @@ function main() {
5555
wait_for_proxy
5656

5757
SSL_ARG=""
58+
temp=$(mktemp)
5859
if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then
59-
SSL_ARG="--use-ssl=yes"
60+
sed "s/^useSSL.*=.*$/useSSL=1/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml
6061
fi
6162

62-
sed "s/WRITE_NODE=.*/WRITE_NODE='$pod_zero.$service:3306'/g" /etc/proxysql-admin.cnf 1<> /etc/proxysql-admin.cnf
63+
sed "s/^clusterHost.*=.*\"$/clusterHost=\"$first_host\"/" /etc/config.toml > ${temp} && cp ${temp} /etc/config.toml
64+
rm ${temp}
6365

64-
proxysql-admin \
65-
--config-file=/etc/proxysql-admin.cnf \
66-
--cluster-hostname="$first_host" \
66+
percona-scheduler-admin \
67+
--config-file=/etc/config.toml \
68+
--write-node="$pod_zero.$service:3306" \
6769
--enable \
6870
--update-cluster \
69-
--force \
7071
--remove-all-servers \
7172
--disable-updates \
7273
--force \
7374
$SSL_ARG
7475

75-
proxysql-admin \
76-
--config-file=/etc/proxysql-admin.cnf \
77-
--cluster-hostname="$first_host" \
76+
percona-scheduler-admin \
77+
--config-file=/etc/config.toml \
78+
--write-node="$pod_zero.$service:3306" \
7879
--sync-multi-cluster-users \
7980
--add-query-rule \
8081
--disable-updates \
8182
--force
8283

83-
proxysql-admin \
84-
--config-file=/etc/proxysql-admin.cnf \
85-
--cluster-hostname="$first_host" \
84+
percona-scheduler-admin \
85+
--config-file=/etc/config.toml \
8686
--update-mysql-version
8787

8888
echo "All done!"

0 commit comments

Comments
 (0)