k8s启动phpmyadmin
前言
phpmyadmin是mysql的一个基于web页面管理工具
容器化方式启动mysql见下边文档:
《docker-compose启动mysql》
《k8s启动单点mysql》
《helm启动单节点mysql》
《helm启动mysql-ha》
1. configmap
说明:从config.inc.php文件创建一个configmap ,为服务提供配置文件
1.1 config.inc.php文件
创建 config.inc.php文件,内容如下:
<?php require('/etc/phpmyadmin/config.secret.inc.php'); /* Ensure we got the environment */ $vars = array( 'PMA_ARBITRARY', 'PMA_HOST', 'PMA_HOSTS', 'PMA_VERBOSE', 'PMA_VERBOSES', 'PMA_PORT', 'PMA_PORTS', 'PMA_SOCKET', 'PMA_SOCKETS', 'PMA_USER', 'PMA_PASSWORD', 'PMA_ABSOLUTE_URI', 'PMA_CONTROLHOST', 'PMA_CONTROLPORT', 'PMA_PMADB', 'PMA_CONTROLUSER', 'PMA_CONTROLPASS', 'PMA_QUERYHISTORYDB' ); foreach ($vars as $var) { $env = getenv($var); if (!isset($_ENV[$var]) && $env !== false) { $_ENV[$var] = $env; } } if (isset($_ENV['PMA_QUERYHISTORYDB'])) { $cfg['QueryHistoryDB'] = boolval($_ENV['PMA_QUERYHISTORYDB']); } /* Arbitrary server connection */ if (isset($_ENV['PMA_ARBITRARY']) && $_ENV['PMA_ARBITRARY'] === '1') { $cfg['AllowArbitraryServer'] = true; } /* Play nice behind reverse proxys */ if (isset($_ENV['PMA_ABSOLUTE_URI'])) { $cfg['PmaAbsoluteUri'] = trim($_ENV['PMA_ABSOLUTE_URI']); } /* Figure out hosts */ /* Fallback to default linked */ $hosts = array('db'); /* Set by environment */ if (!empty($_ENV['PMA_HOST'])) { $hosts = array($_ENV['PMA_HOST']); $verbose = array($_ENV['PMA_VERBOSE']); $ports = array($_ENV['PMA_PORT']); } elseif (!empty($_ENV['PMA_HOSTS'])) { $hosts = array_map('trim', explode(',', $_ENV['PMA_HOSTS'])); $verbose = array_map('trim', explode(',', $_ENV['PMA_VERBOSES'])); $ports = array_map('trim', explode(',', $_ENV['PMA_PORTS'])); } if (!empty($_ENV['PMA_SOCKET'])) { $sockets = array($_ENV['PMA_SOCKET']); } elseif (!empty($_ENV['PMA_SOCKETS'])) { $sockets = explode(',', $_ENV['PMA_SOCKETS']); } /* Server settings */ for ($i = 1; isset($hosts[$i - 1]); $i++) { $cfg['Servers'][$i]['host'] = $hosts[$i - 1]; if (isset($verbose[$i - 1])) { $cfg['Servers'][$i]['verbose'] = $verbose[$i - 1]; } if (isset($ports[$i - 1])) { $cfg['Servers'][$i]['port'] = $ports[$i - 1]; } if (isset($_ENV['PMA_USER'])) { $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = $_ENV['PMA_USER']; $cfg['Servers'][$i]['password'] = isset($_ENV['PMA_PASSWORD']) ? $_ENV['PMA_PASSWORD'] : ''; } else { $cfg['Servers'][$i]['auth_type'] = 'cookie'; } if (isset($_ENV['PMA_PMADB'])) { $cfg['Servers'][$i]['pmadb'] = $_ENV['PMA_PMADB']; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; } if (isset($_ENV['PMA_CONTROLHOST'])) { $cfg['Servers'][$i]['controlhost'] = $_ENV['PMA_CONTROLHOST']; } if (isset($_ENV['PMA_CONTROLPORT'])) { $cfg['Servers'][$i]['controlport'] = $_ENV['PMA_CONTROLPORT']; } if (isset($_ENV['PMA_CONTROLUSER'])) { $cfg['Servers'][$i]['controluser'] = $_ENV['PMA_CONTROLUSER']; } if (isset($_ENV['PMA_CONTROLPASS'])) { $cfg['Servers'][$i]['controlpass'] = $_ENV['PMA_CONTROLPASS']; } $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['AllowNoPassword'] = true; } for ($i = 1; isset($sockets[$i - 1]); $i++) { $cfg['Servers'][$i]['socket'] = $sockets[$i - 1]; $cfg['Servers'][$i]['host'] = 'localhost'; } /* * Revert back to last configured server to make * it easier in config.user.inc.php */ $i--; /* Uploads setup */ $cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; /* Include User Defined Settings Hook */ if (file_exists('/etc/phpmyadmin/config.user.inc.php')) { include('/etc/phpmyadmin/config.user.inc.php'); }
说明:phpmyadmin 默认配置文件认证类型是 ‘config’,需要修改成cookie
$cfg['Servers'][$i]['auth_type'] = 'cookie';
- config 直接登录界面
- http 使用HTTP认证只能在APACHE服务器环境下可用
- cookie 使用Mysql账号密码登录
1.2 创建configmap
# kubectl create configmap config.inc.php --from-file=config.inc.php -n mysql
2. 创建服务
创建 deployment和service的yml文件如下:
kind: Deployment apiVersion: apps/v1 metadata: name: phpmyadmin namespace: mysql spec: replicas: 1 selector: matchLabels: app: phpmyadmin template: metadata: labels: app: phpmyadmin spec: containers: - name: phpmyadmin image: 10.252.97.57/public/phpmyadmin env: - name: PMA_HOST value: mysql - name: PMA_PORT value: "13306" - name: PMA_USER value: root - name: PMA_PASSWORD value: liubei@2021 ports: - containerPort: 80 protocol: TCP volumeMounts: - mountPath: /etc/phpmyadmin/config.inc.php name: config-inc-php subPath: config.inc.php volumes: - name: config-inc-php configMap: name: config.inc.php --- kind: Service apiVersion: v1 metadata: name: phpmyadmin namespace: mysql labels: name: phpmyadmin spec: type: NodePort ports: - protocol: TCP nodePort: 31003 targetPort: 80 port: 80 selector: app: phpmyadmin
3. 测试
使用mysql的账号密码登录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了