MariaDB 与 K8s:创建 Secret 并在 MariaDB 部署中使用

在上一篇博客中,我们创建了一个无状态应用程序,使用 K8s 资源 Deployment 进行了部署,并暴露了 root 密码,这当然是不推荐的安全做法。K8s 允许使用特定的 K8s 资源来隐藏敏感数据。

让我们看看如何在 K8s 中使用 Secrets

K8s 中的 Secrets

为了保存敏感数据,可以使用一个名为 Secret 的 K8s 资源。

可以通过运行 kubectl create secret 命令从 CLI 创建 Secret。

这里我们将使用两种方法来创建 secret。

快速预览:MariaDB Galera Cluster 安全讲座

Seppo Jaakola 将在 Security MariaDB Server Fest(2022 年 4 月 6 日星期三)上发表题为“MariaDB Galera Cluster 安全”的讲座。

我目前正在观看他的讲座。让我与您分享一些细节。Seppo 讨论的不是 Galera 默认支持的原生 MariaDB 安全特性,而是由于分布式集群拓扑而需要的额外安全相关措施。他谈论了集群拓扑、集群通信安全、Galera 增强的静态数据加密以及新的 10.9 特性 IP 允许列表节点筛选。

您有问题要问 Seppo 吗?

MariaDB 与 K8s:容器/Deployment 之间的通信

上一篇博客中,我们从 YAML 文件创建了一个后台 Deployment 资源,该资源由一个作为后台容器的单个容器 (MariaDB) 组成。

在本博客中,我们将继续创建前端容器,使其通过 Service 和其他资源与后端通信。

关于 Services

当应用程序通过 Deployment 运行时,Pods 会被动态创建和销毁。创建时,它们会在集群中获得内部 IP 地址,并且由于它们是短暂的,因此需要一种稳定的方式来允许 Pods 之间进行通信。

10.9 预览特性:支持 SHOW ANALYZE 和 EXPLAIN FOR CONNECTION

SHOW ANALYZE

如果您曾经需要对 MariaDB 查询性能进行故障排除,您应该会
熟悉 MariaDB 的语句 ANALYZE 特性。它的作用与某些其他数据库系统中的 EXPLAIN ANALYZE 相同:ANALYZE query 会运行 query 并生成 EXPLAIN 输出,并附带查询执行的数据。

ANALYZE SELECT *
FROM orders, customer
WHERE
customer.c_custkey = orders.o_custkey AND
customer.c_acctbal < 0 AND
orders.o_totalprice > 200*1000
+—-+————-+———-+——+—————+————-+———+——————–+——–+——–+———-+————+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | r_rows | filtered | r_filtered | Extra |
+—-+————-+———-+——+—————+————-+———+——————–+——–+——–+———-+————+————-+
| 1 | SIMPLE | customer | ALL | PRIMARY,…

10.9 预览特性:JSON 路径表达式和 JSON_OVERLAPS()

MariaDB 10.9 预览版引入了 MySQL 兼容的语法扩展,即范围表示法。应 MDEV-22224MDEV-27911 的要求,‘last’ 关键字已添加到 JSON 路径表达式中。此外,现在也支持负索引。使用 ‘to’ 关键字实现的范围表示法和 ‘last’ 关键字本质上是数组元素选择器。

语法:

范围表示法
[M to N] 选择从索引 M 到 N 的一系列元素。
‘last’ 关键字
[last-N] / [last] 分别选择倒数第 N 个元素和最后一个元素。

在 K8s 中启动 MariaDB

这是解释如何在 Kubernetes (K8s) 中使用 MariaDB 的系列博客的第一篇,同时也将解释 K8s 和 MariaDB 的一些重要概念。

这篇博客解释了如何使用 CLI 在 K8s 中将 MariaDB 作为无状态应用程序启动,并探索了您可以在 CLI 上运行的不同命令。

前提条件是您已安装 kubectl(它也将安装 Docker runtime)和 minikube(本地 K8s)。

让我们先启动 minikube

$ minikube start && kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 104d v1.22.2

Pod 是 K8s 资源,也是 K8s 中的最小单元。

创建到远程服务器的链接并使用 CONNECT SE 访问数据

在本博客中,我们将看到如何创建到远程服务器的链接并使用它来一次访问多个表。
上一篇博客中,我们已经看到了如何在 Docker 容器之间建立远程连接。
我们这样做的方式是指定连接字符串仅引用单个表。
但是如果我们需要的不仅仅是单个表,而是整个数据库呢?

解决方案是使用 CREATE SERVER 语句链接到远程数据库。
通过这种方式获得的链接可以传递给存储引擎 (SE) 的 CREATE TABLE 语句以建立连接,通过表发现功能,SE 将发现表的字段并创建该表。

2021 年的 MariaDB

在 Vettabase,我们支持各种数据库,尤其对 MariaDB 充满热情。更重要的是,我们很荣幸成为 MariaDB 基金会技术合作伙伴。因此,我很高兴写下这篇关于 MariaDB 基金会 2021 年公共活动的简短总结!在开始之前先声明一下:这并非官方回顾,而是一篇主观的、带有个人看法的文章。我的观点仅代表我个人。以下是我在 MariaDB 世界中关于 2021 年最喜欢的一些新闻…

MariaDB 10.6 于 11 月正式发布(我在 Vettabase 网站上写了一篇总结)。同时移除了几个不再维护的存储引擎以及 23 个 InnoDB 变量。