{"id":16491,"date":"2019-06-07T18:00:53","date_gmt":"2019-06-07T09:00:53","guid":{"rendered":"http:\/\/www.skyarch.net\/blog\/?p=16491"},"modified":"2019-10-17T11:12:07","modified_gmt":"2019-10-17T02:12:07","slug":"adminer%e3%81%a7%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e7%ae%a1%e7%90%86-kubernetes%e3%81%abadminer%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%a6","status":"publish","type":"post","link":"https:\/\/www.skyarch.net\/blog\/adminer%e3%81%a7%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e7%ae%a1%e7%90%86-kubernetes%e3%81%abadminer%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%a6\/","title":{"rendered":"Adminer\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406 &#8211; Kubernetes\u306bAdminer\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u307f\u3088\u3046 &#8211;"},"content":{"rendered":"<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7ba1\u7406\u306b\u3069\u306e\u3088\u3046\u306a\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u304b\uff1f\u3088\u304f\u4f7f\u308f\u308c\u3066\u3044\u308b\u306e\u306fphpMyAdmin\u3067\u3057\u3087\u3046\u304b\uff1fphpMyAdmin\u306b\u4ee3\u308f\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u3068\u3057\u3066\u3001<strong>Adminer<\/strong><a href=\"https:\/\/www.adminer.org\/\">(https:\/\/www.adminer.org\/)<\/a>\u304c\u3042\u308a\u307e\u3059\u3002Adminer\u306f1\u3064\u306ePHP\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3084\u8a2d\u5b9a\u304c\u975e\u5e38\u306b\u7c21\u5358\u306b\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u3057\u304b\u3057\u3001Kubernetes\u4e0a\u306a\u3069\u3001\u30b3\u30f3\u30c6\u30ca\u7ba1\u7406\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0a\u306bAdminer\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u3069\u306e\u3088\u3046\u306b\u3057\u305f\u3089\u3088\u3044\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001Adminaer\u3092Kubernetes\u4e0a\u306bHelm\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<h2>Adminer\u3068\u306f\uff1f<\/h2>\n<p>Adminer\u306fphpMyAdmin\u3068\u304a\u306a\u3058PHP\u4e0a\u3067\u52d5\u4f5c\u3059\u308bWebUI\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n<ul>\n<li>MySQL\u4ee5\u5916\u306b\u3082PostgreSQL\u3084Oracle\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u3002<\/li>\n<li>1\u3064\u306ePHP\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u3066\u3001\u30b5\u30a4\u30ba\u3082\u5c0f\u3055\u3044\u3002<\/li>\n<li>1\u3064\u306ePHP\u30d5\u30a1\u30a4\u30eb\u3092\u7f6e\u304f\u3060\u3051\u3067\u3001\u8a2d\u5b9a\u306f\u3044\u3089\u306a\u3044\u3002<\/li>\n<\/ul>\n<p>phpMyAdmin\u3068\u6bd4\u8f03\u3057\u3066\u3001\u6a5f\u80fd\u3084\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306a\u3069\u306b\u5927\u304d\u306a\u9055\u3044\u304c\u3042\u308a\u307e\u3059\u3002\u5c11\u3057\u53e4\u3044\u30c7\u30fc\u30bf\u3067\u3059\u304c\u3001phpMyAdmin\u3068Adminer\u306e\u6a5f\u80fd\u3092\u6bd4\u8f03\u3057\u305f\u8cc7\u6599(<a href=\"https:\/\/www.adminer.org\/en\/phpmyadmin\/\">https:\/\/www.adminer.org\/en\/phpmyadmin\/<\/a>)\u304c\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002phpMyAdmin\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u4e0d\u6e80\u3092\u6301\u3063\u3066\u3044\u308b\u306e\u3067\u3042\u308c\u3070\u3001Adminer\u3092\u691c\u8a0e\u3057\u3066\u307f\u3066\u306f\u3044\u304b\u304c\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n<p>Adminer\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u7c21\u5358\u3067\u3059\u3002Adminer\u306f1\u3064\u306ePHP\u3060\u3051\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u65e2\u5b58\u306ePHP\u304c\u52d5\u4f5c\u3059\u308bWeb\u30b5\u30fc\u30d0\u304c\u3042\u308c\u3070\u3001Adminer\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3001Web\u30b5\u30fc\u30d0\u306b\u914d\u7f6e\u3059\u308b\u3060\u3051\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n<p>\u516c\u5f0f\u3067Docker\u30a4\u30e1\u30fc\u30b8(<a href=\"https:\/\/hub.docker.com\/_\/adminer\">https:\/\/hub.docker.com\/_\/adminer<\/a>)\u3082\u63d0\u4f9b\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3068\u3057\u3066\u52d5\u4f5c\u3055\u305b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001\u516c\u5f0f\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306f\u5229\u7528\u3057\u306a\u3044\u3067\u3001\u72ec\u81ea\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u5229\u7528\u3057\u3066Kubernetes\u4e0a\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<h2>Kubernetes\u306bAdminer\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/h2>\n<h3>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u69cb\u6210<\/h3>\n<p>\u30d5\u30ed\u30f3\u30c8\u306eWeb\u30b5\u30fc\u30d0\u3068\u3057\u3066<strong>Nginx<\/strong>\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306eAP(PHP)\u30b5\u30fc\u30d0\u3068\u3057\u3066<strong>Nginx Unit<\/strong>\u3092\u5229\u7528\u3059\u308b\u69cb\u6210\u3067\u3059\u3002Nginx\u3001Nginx Unit\u30921\u3064\u306ePOD\u3068\u3057\u3066\u52d5\u4f5c\u3055\u305b\u307e\u3059\u3002\u69cb\u6210\u306e\u30a4\u30e1\u30fc\u30b8\u56f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<a href=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer0.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-16492 aligncenter\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer0.png\" alt=\"\" width=\"288\" height=\"397\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer0.png 288w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer0-218x300.png 218w\" sizes=\"auto, (max-width: 288px) 100vw, 288px\" \/><\/a>\n<p>\u4eca\u56de\u306e\u8a18\u4e8b\u3067\u306f\u3001LoadBalancer(Ingress)\u306e\u90e8\u5206\u306f\u8aac\u660e\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u5916\u90e8\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u3067Ingress\u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u5229\u7528\u3059\u308b\u306eKubernetes\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u8a2d\u5b9a\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>Dockerfile\u3092\u4f5c\u308b<\/h3>\n<p>Adminer\u306f\u516c\u5f0f\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4eca\u56de\u306fNginx Unit\u4e0a\u3067Adminer\u3092\u52d5\u304b\u3057\u305f\u3044\u306e\u3067\u3001Nginx Unit\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002Nginx Unit\u3082\u516c\u5f0f\u306eDocker\u30a4\u30e1\u30fc\u30b8\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001PDO\u306a\u3069\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u3053\u306e\u305f\u3081\u3001\u72ec\u81ea\u306eDockerfile\u3092\u4f5c\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002Dockerfile\u306e\u57fa\u672c\u7684\u306a\u5185\u5bb9\u306f\u3001Nginx Unit\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806(<a href=\"http:\/\/unit.nginx.org\/installation\/\">http:\/\/unit.nginx.org\/installation\/<\/a>)\u306b\u5f93\u3063\u3066\u3044\u307e\u3059\u3002\u4f5c\u3063\u305fDockerfile\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre>FROM ubuntu:18.04\n\nRUN set -x \\\n    &amp;&amp; apt update \\\n    &amp;&amp; apt install --no-install-recommends --no-install-suggests -y curl gnupg1 apt-transport-https ca-certificates \\\n    &amp;&amp; curl -O https:\/\/nginx.org\/keys\/nginx_signing.key \\\n    &amp;&amp; apt-key add nginx_signing.key \\\n    &amp;&amp; echo \"deb https:\/\/packages.nginx.org\/unit\/ubuntu\/ bionic unit\" &gt;&gt; \/etc\/apt\/sources.list.d\/unit.list \\\n    &amp;&amp; echo \"deb-src https:\/\/packages.nginx.org\/unit\/ubuntu\/ bionic unit\" &gt;&gt; \/etc\/apt\/sources.list.d\/unit.list \\\n    &amp;&amp; apt update \\\n    &amp;&amp; apt install --no-install-recommends --no-install-suggests -y unit unit-php php7.2-mysql \\\n    &amp;&amp; rm -rf \/var\/lib\/apt\/lists\/* \/etc\/apt\/sources.list.d\/unit.list\n    \nRUN set -x \\\n    &amp;&amp; ln -sf \/dev\/stdout \/var\/log\/unit.log\n\nSTOPSIGNAL SIGTERM\n\nCMD [\"unitd\", \"--no-daemon\", \"--control\", \"unix:\/var\/run\/control.unit.sock\"]\n<\/pre>\n<p>Docker\u30d5\u30a1\u30a4\u30eb\u306f<a href=\"https:\/\/raw.githubusercontent.com\/easydoggie\/EasyDoggie\/master\/adminer\/Dockerfile\">Git Hub<\/a>\u3067\u3082\u516c\u958b\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>Docker\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u305f\u3089\u3001Docker\u306e\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9\u3067Docker\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30bf\u30b0\u540d\u306f\u3054\u5229\u7528\u306e\u74b0\u5883\u3084\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5408\u308f\u305b\u3066\u3001\u5909\u66f4\u3092\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre>$ docker build -t easydoggie\/adminer .<\/pre>\n<p>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u306f<a href=\"https:\/\/cloud.docker.com\/u\/easydoggie\/repository\/docker\/easydoggie\/admine\">Docker Hub<\/a>\u3067\u3082\u914d\u5e03\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>Helm\u306eChart\u3092\u4f5c\u308b<\/h3>\n<p>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092Kubernetes\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u306eHelm Chart\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306fHelm Chart\u306e\u6982\u8981\u3068\u69cb\u6210\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u4f5c\u6210\u3057\u305f\u3059\u3079\u3066\u306eHelm Chart\u306f<a href=\"https:\/\/github.com\/easydoggie\/EasyDoggie\/tree\/master\/adminer\/adminer\">GitHub<\/a>\u3067\u516c\u958b\u3057\u3066\u3044\u308b\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>Helm\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001Helm\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068Helm\u30b5\u30fc\u30d0(Tiller)\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002Helm\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a\u304c\u7d42\u308f\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001Helm\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a\u3092\u5148\u306b\u5b8c\u4e86\u3055\u305b\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002Helm\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a\u65b9\u6cd5\u306f\u3001<a href=\"http:\/\/www.skyarch.net\/blog\/?p=16350\">\u5225\u306e\u30d6\u30ed\u30b0\u8a18\u4e8b<\/a>\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h4>configmap.yaml<\/h4>\n<p>Nginx\u304a\u3088\u3073Nginx Unit\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><code>configmap\/{{ \u30c1\u30e3\u30fc\u30c8\u540d }}-adminer-nginx-conf<\/code>\u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306fNginx\u306e<code>default.conf<\/code>\u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002Nginx\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u30c7\u30fc\u30bf\u90e8\u5206\u3092\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre>apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ .Chart.Name }}-nginx-conf\ndata:\n  default.conf: |-\n    upstream unit_backend {\n       server 127.0.0.1:{{ .Values.appServer.port }};\n    }\n    \n    server {\n        listen       {{ .Values.service.port }};\n        server_name  localhost;\n        \n        location \/index.html {\n            return 200;\n        }\n            \n        location \/ {\n            proxy_pass http:\/\/unit_backend;\n            proxy_set_header Host $host;\n            proxy_set_header X-Forwarded-Prefix \"\/adminer\";\n        }\n        \n        error_page   500 502 503 504  \/50x.html;\n        location = \/50x.html {\n            root   \/usr\/share\/nginx\/html;\n        }\n    \n    }\n<\/pre>\n<p>\u3053\u306e\u4f8b\u3067\u306f\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3068\u3057\u3066<code>\/adminer<\/code>\u306e\u30d1\u30b9(\u4f8b:\u3000http:\/\/localhost\/adminer)\u3067Adminer\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u308b\u60f3\u5b9a\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306a\u3057\u3084\u7570\u306a\u308b\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u30a2\u30af\u30bb\u30b9\u3055\u305b\u308b\u5834\u5408\u306f\u3001<code>proxy_set_header<\/code>\u306e\u90e8\u5206\u3092\u3054\u5229\u7528\u306e\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p><code>configmap\/{{ \u30c1\u30e3\u30fc\u30c8\u540d }}-adminer-conf<\/code>\u306fNginx Unit\u7528\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002Nginx Unit\u306f\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092<strong>API\u306bPUT<\/strong>\u3059\u308b\u3053\u3068\u3067\u8a2d\u5b9a\u3092\u52d5\u7684\u306b\u53cd\u6620\u3055\u305b\u307e\u3059\u3002Nginx Unit\u306eAPI\u3078\u306ePUT\u51e6\u7406\u306f\u3001\u6b21\u306b\u8aac\u660e\u3059\u308bdeployment.yaml\u5185\u3067\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre>apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ .Chart.Name }}-conf\ndata:\n  unit.conf.json: |-\n    {\n      \"listeners\": {\n        \"*:{{ .Values.appServer.port }}\": {\n          \"pass\": \"applications\/adminer\"\n        }\n      },  \n      \"applications\": {\n        \"adminer\": {\n          \"type\": \"php\",\n          \"processes\": 2,\n          \"root\": \"\/app\/adminer\",\n          \"index\": \"adminer.php\",\n          \"limits\": {\n              \"timeout\": 30,\n              \"requests\": 1000\n          }\n        }\n      },\n      \"settings\": {\n          \"http\": {\n              \"header_read_timeout\": 30,\n              \"body_read_timeout\": 30,\n              \"send_timeout\": 30,\n              \"idle_timeout\": 120,\n              \"max_body_size\": 6291456\n          }\n      },\n    }\n<\/pre>\n<p>\u53d6\u5f97\u3059\u308b\u30c7\u30fc\u30bf\u91cf\u304c\u591a\u3044\u306a\u3069\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3059\u308b\u5834\u5408\u306f<code>timeout<\/code>\u306e\u5024\u306a\u3069\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h4>deployment.yaml<\/h4>\n<p>Nginx Unit\u306e\u8a2d\u5b9a\u306f\u5f93\u6765\u306e\u30d5\u30a1\u30a4\u30eb\u30d9\u30fc\u30b9\u306e\u8a2d\u5b9a\u3068\u306f\u7570\u306a\u308a\u3001API\u306bPUT\u3059\u308b\u3053\u3068\u3067\u8a2d\u5b9a\u3092\u52d5\u7684\u306b\u53cd\u6620\u3055\u305b\u307e\u3059\u3002API\u3078\u306ePUT\u306f<strong>Kubernetes<\/strong>\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u306b\u304a\u3051\u308b<strong>postStart<\/strong>\u3092\u5229\u7528\u3057\u3066\u304a\u3053\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001deployment.yaml\u30d5\u30a1\u30a4\u30eb\u306elifecycle\u90e8\u5206\u306e\u629c\u7c8b\u3067\u3059\u3002<\/p>\n<pre>lifecycle:\n  postStart:\n    exec: \n      command:\n        - sh\n        - -c\n        - \"curl -Lo \/app\/adminer\/adminer.php https:\/\/github.com\/vrana\/adminer\/releases\/download\/v4.7.1\/adminer-4.7.1.php \\\n        &amp;&amp; while [ ! -e \/var\/run\/control.unit.sock ]; do sleep 1; done \\\n        &amp;&amp; curl -X PUT --data-binary @\/tmp\/unit\/unit.conf.json --unix-socket \/var\/run\/control.unit.sock http:\/\/localhost\/config\"<\/pre>\n<p><code>postStart<\/code>\u3067\u30b3\u30f3\u30c6\u30ca\u304c\u4f5c\u6210\u3055\u308c\u305f\u5f8c\u306b\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>\u306f\u3058\u3081\u306bAdminer\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u516c\u5f0f\u30da\u30fc\u30b8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002\u6b21\u306ewhile\u30eb\u30fc\u30d7\u3067Nginx Unit\u306e\u30bd\u30b1\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u3001Nginx Unit\u306e\u8d77\u52d5\u307e\u3067\u5f85\u6a5f\u3055\u305b\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u306eEntrypoint\u306e\u5b9f\u884c\u524d\u306bpostStart\u304c\u5b9f\u884c\u3055\u308c\u308b\u4fdd\u8a3c\u304c\u306a\u3044\u304b\u3089\u3067\u3059(<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/container-lifecycle-hooks\/\">\u53c2\u8003\u30ea\u30f3\u30af<\/a>)\u3002<\/p>\n<blockquote><p><code>PostStart<\/code><\/p>\n<p>This hook executes immediately after a container is created. However, there is no guarantee that the hook will execute before the container ENTRYPOINT. No parameters are passed to the handler.<\/p><\/blockquote>\n<p>\u3053\u306e\u305f\u3081\u3001Nginx Unit(Entrypoint)\u304c\u5b9f\u884c\u3055\u308c\u305f\u304b\u306e\u78ba\u8a8d\u3092\u884c\u3046\u305f\u3081\u306b\u30bd\u30b1\u30c3\u30c8\u306e\u5b58\u5728\u78ba\u8a8d\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u30bd\u30b1\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u305f\u5834\u5408\u3001\u305d\u306e\u30bd\u30b1\u30c3\u30c8\u306b\u5bfe\u3057\u3066Nginx Unit\u306e\u8a2d\u5b9a\u5185\u5bb9\u3092PUT\u3057\u3001\u8a2d\u5b9a\u3092\u53cd\u6620\u3055\u305b\u307e\u3059\u3002<\/p>\n<p>deployment.yaml\u306e\u5168\u5185\u5bb9\u306f\u3001<a href=\"https:\/\/github.com\/easydoggie\/EasyDoggie\/tree\/master\/adminer\/adminer\/templates\">GitHub<\/a>\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>Helm\u3067Adminer\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/h3>\n<p>Helm Chart\u306e\u6e96\u5099\u304c\u3067\u304d\u305f\u3089\u3001<code>helm install<\/code>\u30b3\u30de\u30f3\u30c9\u3067adminer\u3092Kubernetes\u4e0a\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002Helm Chart\u306f\u4ee5\u4e0b\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u304a\u3044\u3066\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u521d\u3081\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u767b\u9332\u3092\u304a\u3053\u306a\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre>$ helm repo add easydoggie https:\/\/easydoggie.github.io\/helm-repo\/releases\n<\/pre>\n<p>\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u767b\u9332\u306e\u5b8c\u4e86\u5f8c\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067kubernetes\u4e0a\u306bAdminer\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre>$ helm install --name adminer easydoggie\/adminer\n<\/pre>\n<p>\u30c7\u30d7\u30ed\u30a4\u5f8c\u306bWeb\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3057\u3001\u4ee5\u4e0b\u306e\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u6210\u529f\u3067\u3059\u3002<\/p>\n<a href=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16493\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer1.png\" alt=\"\" width=\"644\" height=\"322\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer1.png 644w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer1-300x150.png 300w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/a>\n<p>\u30b5\u30fc\u30d0\u306b\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u63a5\u7d9a\u3059\u308bKubernetes\u306eService\u540d\u306a\u3069\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<a href=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16494\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2.png\" alt=\"\" width=\"841\" height=\"446\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2.png 841w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2-300x159.png 300w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2-768x407.png 768w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/adminer2-728x386.png 728w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/a>\n<h2>\u3055\u3044\u3054\u306b<\/h2>\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Adminer\u3092Kubernetes\u4e0a\u306bHelm\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002Adminer\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3084\u8a2d\u5b9a\u304c\u975e\u5e38\u306b\u7c21\u5358\u3067\u3001\u8efd\u91cf\u3067\u3042\u308b\u305f\u3081\u3001phpMyAdmin\u306e\u4ee3\u66ff\u3068\u3057\u3066\u5341\u5206\u306a\u529b\u3092\u767a\u63ee\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u305c\u3072Adminer\u3092\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u307e\u305f\u3001Adminer\u3092\u52d5\u304b\u3059AP\u30b5\u30fc\u30d0\u3068\u3057\u3066\u3001Nginx Unit\u3092\u5229\u7528\u3057\u305f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u4eca\u56de\u306e\u8a2d\u5b9a\u4f8b\u306fNginx Unit\u3092Kubernetes\u4e0a\u3067\u52d5\u304b\u3059\u4f8b\u3068\u3057\u3066\u3082\u5229\u7528\u3067\u304d\u307e\u3059\u3002Nginx Unit\u306e\u8a2d\u5b9a\u3084\u52d5\u4f5c\u4e8b\u4f8b\u306f\u5c11\u306a\u3044\u3067\u3059\u304c\u3001\u591a\u8a00\u8a9e\u5bfe\u5fdc\u3092\u5358\u4e00\u306e\u8a2d\u5b9a\u3067\u52d5\u4f5c\u3067\u304d\u308b\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u3068\u306e\u76f8\u6027\u304c\u3088\u3055\u305d\u3046\u3067\u3059\u3002<\/p>\n<p>\u306a\u304a\u3001\u4eca\u56de\u4f5c\u6210\u3057\u305f\u30b3\u30fc\u30c9\u306f<a href=\"https:\/\/github.com\/easydoggie\/EasyDoggie\">GitHub<\/a>\u3067\u3082\u516c\u958b\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div id=\"attachment_17346\" style=\"width: 508px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.skyfantasylab.work\/\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17346\" class=\"size-full wp-image-17346\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512.png\" alt=\"\u30b9\u30ab\u30a4\u30a2\u30fc\u30c1 \u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\u7814\u7a76\u5ba4\" width=\"498\" height=\"498\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512.png 498w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512-150x150.png 150w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512-300x300.png 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/a><p id=\"caption-attachment-17346\" class=\"wp-caption-text\">\u30b9\u30ab\u30a4\u30a2\u30fc\u30c1 \u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\u7814\u7a76\u5ba4<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u7ba1\u7406\u306b\u3069\u306e\u3088\u3046\u306a\u30c4\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u304b\uff1f\u3088\u304f\u4f7f\u308f\u308c\u3066\u3044\u308b\u306e\u306fphpMyAdmin\u3067\u3057\u3087\u3046\u304b\uff1fphpMyAdmin\u306b\u4ee3\u308f\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7ba1\u7406\u30c4\u30fc\u30eb\u3068\u3057\u3066\u3001Adminer(https:\/\/www.adminer&#8230;<\/p>\n","protected":false},"author":1,"featured_media":16493,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"ja","_original_post":"16491","footnotes":""},"categories":[518,83,270,23],"tags":[645,94,521,394,103],"class_list":{"0":"post-16491","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ci-cd","8":"category-devops","9":"category-infrastructure-as-code","10":"category-23","11":"tag-adminer","12":"tag-docker","13":"tag-helm","14":"tag-kubernetes","15":"tag-mysql","16":"ja"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/comments?post=16491"}],"version-history":[{"count":8,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16491\/revisions"}],"predecessor-version":[{"id":17370,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16491\/revisions\/17370"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media\/16493"}],"wp:attachment":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media?parent=16491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/categories?post=16491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/tags?post=16491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}