介绍
介绍
在上一节课里面福哥带着大家学会了使用k8s的持久存储卷Volumes(PV/PVC)的使用方法,今天我们要讲讲k8s的配置映射Config的使用方法!
福哥的tfphp服务里面使用PHP程序去操作MySQL数据库,这个MySQL数据库的服务器地址、用户名、密码都是直接写到PHP程序里面的,这样做是不规范的。规范的做法是将这些信息都写到一个配置文件里面,然后PHP程序再从配置文件里面去获取MySQL数据库的信息。
配置文件可以是任何格式的文件,早期的程序通常使用ini格式的文件、xml格式的文件,现在主流的程序更加喜欢用yaml格式的文件,PHP程序也可以直接使用PHP代码定义一个数组用来做配置文件。
环境
镜像版本 | rancher/rancher:v2.5.17-rc4 |
操作系统 | CentOS 7 x86_64 2009 |
服务器 | TFCentOS7x64、TFCentOS7x64Node1 |
IP | 192.168.168.68、192.168.168.69 |
端口 | 9443 |
使用
设计配置
tfphp服务会用到MySQL数据库和Redis数据库,后面还会用到Elasticsearch搜索引擎,所以我们要设计一个配置文件,把MySQL、Redis和Elasticsearch的相关参数都写到里面去才行。
因为tfphp是基于PHP语言的,所以福哥会使用PHP代码建立tfphp服务的配置文件。
config.php
福哥定义了一个数组,在数组里面设置了mysql、redis和elasticsearch的配置信息。
这个config.php配置文件大家先不用管它,后面福哥会以两种不同的方式部署它!
<?php $CONFIG = []; $CONFIG['mysql']['host'] = "tfmysql.database"; $CONFIG['mysql']['port'] = 3306; $CONFIG['mysql']['username'] = "root"; $CONFIG['mysql']['password'] = "abcdef"; $CONFIG['mysql']['db'] = "tfmysql"; $CONFIG['mysql']['charset'] = "utf8mb4"; $CONFIG['redis']['host'] = "tfredis.cache"; $CONFIG['redis']['port'] = 6379; $CONFIG['redis']['password'] = "tongfu.net"; $CONFIG['elasticsearch']['host'] = "tfelasticsearch.database"; $CONFIG['elasticsearch']['port'] = 9200; $CONFIG['elasticsearch']['index'] = "tfes";
tfmysql.php
在TFCentOS7x64Node1的tfmysql.php最前面引入配置文件config.php,并且改造初始化PDO对象的代码,将直接写到代码里的MySQL参数改成变量。
<?php header("Content-Type: text/html; charset=utf-8"); require("../config/config.php"); try{ // 连接数据库 $pdo = new \PDO("mysql:host=". $CONFIG['mysql']['host']. ";port=". $CONFIG['mysql']['port']. ";dbname=". $CONFIG['mysql']['db']. ";charset=". $CONFIG['mysql']['charset'], $CONFIG['mysql']['username'], $CONFIG['mysql']['password']); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); // 获取数据库列表 $rs = $pdo->prepare("show databases"); $rs->execute(); $dbs = $rs->fetchAll(\PDO::FETCH_ASSOC); // 获取数据表列表 $rs = $pdo->prepare("show tables"); $rs->execute(); $tables = $rs->fetchAll(\PDO::FETCH_ASSOC); // 获取数据表数据 $rs = $pdo->prepare("select * from user"); $rs->execute(); $data = $rs->fetchAll(\PDO::FETCH_ASSOC); // 数据库 echo "<table border=\"1\"><tbody>"; echo "<tr><th>Database</th></tr>"; foreach ($dbs as $db){ echo "<tr><td>". $db['Database']. "</td>"; } echo "</tbody></table>"; // 数据表 echo "<table border=\"1\"><tbody>"; echo "<tr><th>Table</th></tr>"; foreach ($tables as $table){ echo "<tr><td>". $table['Tables_in_tfmysql']. "</td>"; } echo "</tbody></table>"; // 数据 echo "<table border=\"1\"><tbody>"; echo "<tr>"; foreach ($data[0] as $field => $value){ echo "<th>". $field. "</th>"; } echo "</tr>"; foreach ($data as $row){ echo "<tr>"; foreach ($row as $field => $value){ echo "<td>". $value. "</td>"; } echo "</tr>"; } echo "</tbody></table>"; } catch (\PDOException $e){ echo $e->getMessage(); }
tfredis.php
在TFCentOS7x64Node1的tfredis.php最前面引入配置文件config.php,并且改造初始化Redis对象的代码,将直接写到代码里的Redis参数改成变量。
<?php header("Content-Type: text/html; charset=utf-8"); require("../config/config.php"); $redis = new \Redis(); $redis->connect($CONFIG['redis']['host'], $CONFIG['redis']['port']); $redis->auth($CONFIG['redis']['password']); echo "<b>String</b><br>"; print_r($redis->get("userNick")); echo "<br><br><b>Hash</b><br>"; print_r($redis->hgetall("user")); echo "<br><br><b>Set inter</b><br>"; print_r($redis->sinter("userTags", "userTags2")); echo "<br><br><b>Set diff</b><br>"; print_r($redis->sdiff("userTags", "userTags2")); echo "<br><br><b>Set union</b><br>"; print_r($redis->sunion("userTags", "userTags2")); echo "<br><br><b>ZSet</b><br>"; print_r($redis->zrevrange("hotSubDomains", 0, -1));
映射主机目录方式
创建config.php
在TFCentOS7x64Node1服务器上建立/tongfu.net/data/docker/data/tfphp/config/目录,在下面建立config.php文件作为配置文件。
mkdir /tongfu.net/data/docker/data/tfphp/config/ vi /tongfu.net/data/docker/data/tfphp/config/config.php
出于安全考虑配置映射建立的配置文件config.php是只读的。
总结
今天福哥带着大家学习了Rancher(k8s)的配置映射Config的使用方法,通过项目配置可以实现将项目程序和项目配置分开来管理,而k8s的配置映射可以把配置信息在部署的时候进行覆盖。不仅可以实现对项目配置进行集中管理,还对项目配置参数有一定的保密作用。
使用k8s的配置映射管理项目的配置信息,更加方便,更加安全!!!