{"id":956,"date":"2021-07-15T17:00:16","date_gmt":"2021-07-15T16:00:16","guid":{"rendered":"https:\/\/www.netexpertise.eu\/fr\/?p=956"},"modified":"2021-09-21T07:34:27","modified_gmt":"2021-09-21T06:34:27","slug":"chart-helm-proxysql-charger-les-requetes-sql-au-demarrage","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html","title":{"rendered":"Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage"},"content":{"rendered":"\n<p><a href=\"\/fr\/tag\/proxysql\">ProxySQL<\/a> est un outil puissant qui relaye le trafic \u00e0 des backends Mysql multiples. La configuration est lue dans proxysql.cnf qui est charg\u00e9 au d\u00e9marrage du d\u00e9mon. Ce qui est parfait d&rsquo;un point de vue Docker. Vous pouvez modifier le fichier et relancer avec les nouveaux param\u00e8tres. A pr\u00e9sent, j&rsquo;ai besoin d&rsquo;un chart Hell ProxySQL pour d\u00e9ployer sur mon cluster Kubernetes.<\/p>\n\n\n\n<h2><br>Chart Helm ProxySQL Officiel<\/h2>\n\n\n\n<p>J&rsquo;ai essay\u00e9 d&rsquo;utiliser le chart Helm de l&rsquo;\u00e9quipe ProxySQL mais ai vite rencontr\u00e9 quelques probl\u00e8mes.<br>L&rsquo;image sur docker hub n&rsquo;a pas \u00e9t\u00e9 mise \u00e0 jour depuis quelques temps. Le chart Helm ne semble plus \u00eatre maintenue non plus alors qu&rsquo;ils avaient fait un travail fantastique.<\/p>\n\n\n\n<p>La configuration est lue dans proxysql.cnf. Il serait int\u00e9ressant de la charger depuis Values.yaml, pour la rendre dynamique \u00e0 chaque d\u00e9ploiement.<br>J&rsquo;utilise principalement les r\u00e8gles <strong>mysql_query_rules_fast_routing<\/strong> mais voici le souci: Elles ne peuvent pas \u00eatre configur\u00e9es dans proxysql.cnf et les d\u00e9veloppeurs de ProxySQL ont clairement dit que <a href=\"https:\/\/github.com\/sysown\/proxysql\/issues\/1843\" target=\"_blank\" rel=\"noreferrer noopener\">ce n&rsquo;\u00e9tait pas au programme<\/a>.<\/p>\n\n\n\n<h2><br>Image Docker avec le Client Mysql<\/h2>\n\n\n\n<p>Le <a href=\"https:\/\/hub.docker.com\/r\/proxysql\/proxysql\/tags?page=1&amp;ordering=last_updated\" target=\"_blank\" rel=\"noreferrer noopener\">docker<\/a> ProxySQL ne contient pas le client Mysql probablement pour garder l&rsquo;image plus petite. Vous en aurez besoin pour injecter les requ\u00eates SQL localement quand le pod d\u00e9marre. Le dockerfile est tr\u00e8s simple mais vous oblige \u00e0 maintenir votre propre image.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"docker\" class=\"language-docker\">FROM proxysql\/proxysql:2.2.0\n\nRUN apt update &amp;&amp; apt -y install mysql-client &amp;&amp; apt clean all\n\nENTRYPOINT [\"proxysql\", \"-f\", \"-D\", \"\/var\/lib\/proxysql\"]<\/code><\/pre>\n\n\n\n<p><br>J&rsquo;ai fait une image accessible directement sur <a href=\"https:\/\/hub.docker.com\/r\/netexpertise\/proxysql\" target=\"_blank\" rel=\"noreferrer noopener\">Dockerhub<\/a>. Elle est r\u00e9f\u00e9renc\u00e9e dans le chart helm mais vous pouvez builder la votre si vous souhaitez la stocker sur un d\u00e9p\u00f4t priv\u00e9.<\/p>\n\n\n\n<h2><br>Les R\u00e8gles mysql_query_rules_fast_routing<\/h2>\n\n\n\n<p>J&rsquo;ai d\u00e9cid\u00e9 d&rsquo;apporter quelques changements au template Helm pour qu&rsquo;il puisse lire les r\u00e8gles SQL depuis le fichier Values, et les injecter dans ProxySQL dynamiquement une fois le pod d\u00e9marr\u00e9.<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">sqlqueries: |\n   --\n   SET mysql-have_ssl='true';\n   LOAD MYSQL VARIABLES TO RUNTIME;\n   SET admin-web_enabled='true';\n   LOAD ADMIN VARIABLES TO RUNTIME;\n   --\n   INSERT INTO mysql_servers (hostgroup_id,hostname) VALUES (0,'db1.domain.lan');\n   INSERT INTO mysql_servers (hostgroup_id,hostname) VALUES (1,'db2.domain.lan');\n   --\n   INSERT INTO mysql_users (username,password,use_ssl,default_hostgroup) VALUES ('proxy','*9EF51D21B4A3E7BC7A58925308F229CF4AEEC9E1',1,0);\n   --\n   INSERT INTO mysql_query_rules_fast_routing (username,schemaname,destination_hostgroup, comment) VALUES ('proxy','schema1',0,'');\n   INSERT INTO mysql_query_rules_fast_routing (username,schemaname,destination_hostgroup, comment) VALUES ('proxy','schema2',1,'');\n   --\n   LOAD MYSQL USERS TO RUNTIME;\n   LOAD MYSQL SERVERS TO RUNTIME;\n   LOAD MYSQL QUERY RULES TO RUNTIME;<\/code><\/pre>\n\n\n\n<p><br>Les requ\u00eates SQL sont ajout\u00e9es au fichier Values.yaml, charg\u00e9es dans la configmap et mont\u00e9es en tant que fichier dans \/docker-entrypoint-initdb.d\/sqlqueries. Nous pouvons ensuite les injecter une fois que le d\u00e9mon est lanc\u00e9. C&rsquo;est possible gr\u00e2ce \u00e0 la commande poststart qui est lanc\u00e9e juste apr\u00e8s que la commande de l&rsquo;entrypoint du docker a \u00e9t\u00e9 ex\u00e9cut\u00e9e.<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">lifecycle:\n   postStart:\n     exec:\n       command: [\"\/bin\/sh\", \"-c\", \"sleep 1 &amp;&amp; mysql --show-warnings -uadmin -padmin -h127.0.0.1 -P{{ .Values.pod.adminPort }} &lt; \/docker-entrypoint-initdb.d\/sqlqueries\"]<\/code><\/pre>\n\n\n\n<h2><br>Utiliser le Chart Helm<\/h2>\n\n\n\n<p>Le chart helm est disponible sur <a href=\"https:\/\/github.com\/net-expertise\/helm.proxysql\" target=\"_blank\" rel=\"noreferrer noopener\">github<\/a>. Clonez le repo, cr\u00e9ez votre propre fichier Values en vous basant sur example.yaml et d\u00e9ployez le chart Helm.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">helm install -n my-release -f myconf.yaml .\/proxysql<\/code><\/pre>\n\n\n\n<p><br>Lisez cet <a href=\"\/fr\/docker\/kubernetes\/comment-acceder-a-linterface-web-proxysql-sur-kubernetes.html\">article<\/a> si vous souhaitez activer et acc\u00e9der au serveur de stats ProxySQL.<\/p>\n\n\n\n<h2><br>Importer son Propre Cert Autosign\u00e9<\/h2>\n\n\n\n<p>Proxysql 2.3.0 est maintenant capable de recharger le certificat SSL\/TLS certificate \u00e0 la vol\u00e9e.<br>Avant \u00e7a, vous auriez d\u00fb builder le conteneur proxysql pour embraquer les certificats CA et Mysql, le rendant statique de fait.<br>Avec cette nouvelle fonctionnalit\u00e9, vous avez juste \u00e0 cr\u00e9er un secret TLS Kubernetes comprenant le ca.crt, tls.cert et key.crt qui seront mont\u00e9s par le <a href=\"https:\/\/github.com\/net-expertise\/helm.proxysql\" target=\"_blank\" rel=\"noreferrer noopener\">chart Helm<\/a> ProxySQL.<br><br>D\u00e9commentez la s\u00e9rie de commandes correspondante qui remplaceront les certificats auto-g\u00e9n\u00e9r\u00e9s ProxySQL gr\u00e2ce \u00e0 l&rsquo;instruction SYSTEM de Mysql.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ProxySQL est un outil puissant qui relaye le trafic \u00e0 des backends Mysql multiples. La configuration est lue dans proxysql.cnf qui est charg\u00e9 au d\u00e9marrage du d\u00e9mon. Ce qui est parfait d&rsquo;un point de vue Docker. Vous pouvez modifier le fichier et relancer avec les nouveaux param\u00e8tres. A pr\u00e9sent, j&rsquo;ai besoin d&rsquo;un chart Hell ProxySQL [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[458,459,4],"tags":[460,461,404,462],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage<\/title>\n<meta name=\"description\" content=\"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage\" \/>\n<meta property=\"og:description\" content=\"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-15T16:00:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-21T06:34:27+00:00\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html\",\"url\":\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html\",\"name\":\"Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\"},\"datePublished\":\"2021-07-15T16:00:16+00:00\",\"dateModified\":\"2021-09-21T06:34:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\"},\"description\":\"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.netexpertise.eu\/fr\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/fr\/\",\"name\":\"Netexpertise\",\"description\":\"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"},\"sameAs\":[\"http:\/\/www.netexpertise.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage","description":"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html","og_locale":"fr_FR","og_type":"article","og_title":"Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage","og_description":"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes","og_url":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html","og_site_name":"Netexpertise","article_published_time":"2021-07-15T16:00:16+00:00","article_modified_time":"2021-09-21T06:34:27+00:00","author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html","url":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html","name":"Netexpertise - Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#website"},"datePublished":"2021-07-15T16:00:16+00:00","dateModified":"2021-09-21T06:34:27+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632"},"description":"Chart Helm ProxySQL qui charge sa configuration depuis des requ\u00eates SQL. D\u00e9finissez les r\u00e8gles dans Values et d\u00e9ployez sur Kubernetes","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/fr\/docker\/kubernetes\/chart-helm-proxysql-charger-les-requetes-sql-au-demarrage.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.netexpertise.eu\/fr"},{"@type":"ListItem","position":2,"name":"Chart Helm ProxySQL &#x2388; Charger les Requ\u00eates SQL au D\u00e9marrage"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/fr\/#website","url":"https:\/\/www.netexpertise.eu\/fr\/","name":"Netexpertise","description":"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632","name":"dave","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"},"sameAs":["http:\/\/www.netexpertise.eu"]}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/956"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/comments?post=956"}],"version-history":[{"count":0,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/956\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/media?parent=956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/categories?post=956"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/tags?post=956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}