开发人员需要一个高效、可靠的经营方式Django应用程序提供一个健壮的PostgreSQL。雷竞技下载官网为PostgreSQL Percona运营商提供了一个强大的解决方案来管理和扩展PostgreSQL数据库在Kubernetes环境中,开发人员用例使它理想的选择。在这篇文章中,我们将探索如何运行Django Kubernetes Percona运营商。雷竞技下载官网
设置PostgreSQL
使用你最喜欢的方式来部署PostgreSQL算子。我将使用常规kubectl方法:
|
1
|
美元
kubectl
应用
- - -
服务器
- - - - - -
一边
- - - - - -
f
部署
/
包
。
yaml
|
Django应用程序将需要自己的用户和数据库。改变集群自定义资源(cr.yaml)清单spec.users部分。下面的例子将创建集群appdb,用户djangoapp和数据库页面表。用户将可以访问页面表数据库只有:
|
1
2
3
4
5
6
7
|
元数据
:
的名字
:appdb
规范
:
用户
:
——名字
:djangoapp
数据库
:
- - - - - -页面表
|
现在你可以申请清单提供集群:
|
1
|
美元
kubectl
应用
- - - - - -
f
部署
/
cr
。
yaml
|
操作员将为用户生成的秘密CLUSTERNAME- - - - - -pguser- - - - - -djangoapp。往下读,学习如何获得凭证和连接字符串。
PostgreSQL 15公共模式
PostgreSQL 15删除全球从公众写特权模式。因此,您可能会看到下面的错误在运行Django迁移:
|
1
2
3
4
|
django
。
db
。
迁移
。
异常
。
MigrationSchemaMissing
:
不能
来
创建
的
django_migrations
表
(
许可
否认
为
模式
公共
行
1
:
创建
表
“django_migrations”
(
“id”
长整型数字
不
零
表面上
。
。
。
^
)
|
为了解决这个问题,有必要显式地允许djangoapp权限公共模式。要做到这一点,你需要连接到集群超级用户和运行经费:
|
1
2
|
页面表
=
#格兰特所有模式公众djangoapp;
格兰特
|
学习如何与一个超级用户我们的文档。
Django和PostgreSQL
psycopg2
Psycopg是一个PostgreSQL数据库适配器Python编程语言。Django使用它连接到数据库。您将看到以下错误如果你没有安装并试图连接到PostgreSQL:
|
1
|
django
。
核心
。
异常
。
ImproperlyConfigured
:
错误
加载
psycopg2
或
psycopg
模块
|
安装psycopg2遵循它的文档。如果你安装了皮普,注意,它可能寻找pg_config构建:
|
1
2
3
4
5
6
7
8
9
10
11
|
美元
pip3
安装
psycopg2
…
错误
:
pg_config
可执行的
不
发现
。
pg_config
是
要求
来
构建
psycopg2
从
源
。
请
添加
的
目录
包含
pg_config
来
的
美元
路径
或
指定
的
完整的
可执行的
路径
与
的
选项
:
python
设置
。
py
build_ext
- - -
pg
- - - - - -
配置
/
路径
/
来
/
pg_config
构建
。
。
。
|
最简单的方法修复安装psycopg2- - - - - -二进制而不是:
|
1
|
美元
pip3
安装
psycopg2
- - - - - -
二进制
|
settings.py
设置。py是主要的Django应用程序的配置文件。它就是你应该配置数据库——提供凭证,设置正确的引擎,和更多。你可以阅读更多关于它Django的文档。
没有什么超级特定配置Django和Percona算子。雷竞技下载官网首先,从运营商获取连接字符串和凭证。为集群appdb和用户djangoapp它们存储在一个秘密appdb- - - - - -pguser- - - - - -djangoapp。以下命令将你所需要的:
|
1
2
3
4
5
|
美元
kubectl
得到
秘密
appdb
- - - - - -
pguser
- - - - - -
djangoapp
- - -
模板
=
{{. data。密码| base64decode}}’
4
<
_R
|
8点
/
@
:
。
2
>
PnO
+
DyEW1Kd
美元
kubectl
得到
秘密
appdb
- - - - - -
pguser
- - - - - -
djangoapp
- - -
模板
=
”{{指数. data“pgbouncer-host”| base64decode}}”
appdb
- - - - - -
pgbouncer
。
默认的
。
svc
|
您的设置。py数据库section will look the following way:
|
1
2
3
4
5
6
7
8
9
10
|
数据库
=
{
“默认”
:
{
“引擎”
:
“django.db.backends.postgresql”
,
“名字”
:
“页面表”
,
“用户”
:
“djangoapp”
,
“密码”
:
' 4 < _R | 8 o / @: 2 > PnO + DyEW1Kd '
,
“主机”
:
“appdb-pgbouncer.default.svc”,
”
港口
“:”
5432年”,
}
}
|
settings.py和Kubernetes
凭证传递到容器的推荐方法是通过环境变量。在Kubernetes,它将另外包装到一个秘密的资源。
使它工作,我们将把我们的数据库URI到一个环境变量。你可以得到数据库URI的秘密:
|
1
2
|
美元
kubectl
得到
秘密
appdb
- - - - - -
pguser
- - - - - -
djangoapp
- - -
模板
=
”{{指数. data“pgbouncer-uri”| base64decode}}”
|
Django的推荐方法是将环境变量存储在。env文件:
|
1
|
|
使用数据库的URL,使用dj_database_url。pip安装它像往常一样:
|
1
|
美元
pip3
安装
dj_database_url
|
现在你可以有这样settings.py:
|
1
2
3
4
5
6
7
|
进口
dj_database_url
进口
操作系统
如果
操作系统
。
环境
。
得到
(
“DATABASE_URL”
)
:
数据库
(
“默认”
]
=
dj_database_url
。
配置
(
默认的
=
操作系统
。
环境
(
“DATABASE_URL”
]
)
数据库
(
“默认”
]
(
“引擎”
]
=
“django.db.backends.postgresql”
|
注意引擎,因为dj_database_url不设置它。
你也可以避免使用dj_database_url和每个变量分别穿过操作系统。环境。
在Kubernetes传递一个变量
在Kubernetes,你可以通过的DATABASE_URL通过一个一个容器秘密。你可以安装一个独立的秘密或重用运营商管理。推荐的方法是有一个单独的秘密的对象,作为您的应用程序可能在一个单独的名称空间,你可能没有足够的权限来挂载一个由运营商管理。秘密和部署可能看起来如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
|
apiVersion
:v1
类
:秘密
元数据
:
的名字
:my-db-secret
stringData
:
推荐- - - - - -
apiVersion
:应用程序/ v1
类
:部署
元数据
:
的名字
:django-deploy
规范
:
副本
:3
规范
:
容器
:
——名字
:mydjango
图像
:mydjangoapp
:1.2.3
港口
:
——containerPort
:8000
env
:
——名字
:DATABASE_URL
valueFrom
:
secretKeyRef
:
的名字
:my-db-secret
关键
:pgbouncer-uri
|
结论:部署Django PostgreSQL Percona运营商雷竞技下载官网
上运行Django Kubernetes Percona运营商Pos雷竞技下载官网tgreSQL为开发人员提供了一个有效的和可伸缩的解决方案来管理他们的数据库需要Kubernetes环境中。虽然有一些事项需要注意的和潜在的问题,在这篇文章里提供的配置例子和解释将帮助开发人员克服任何他们可能遇到的挑战。与雷竞技下载官网Percona运营商,开发人员可以专注于自信和轻松地构建和交付他们的应用程序。
了解更多关于Percona Pos雷竞技下载官网tgreSQL的运营商文档。
你可以得到早期获得新产品特性,邀请“问我”与Percona Kubernetes专家,和每月的赃物莱佛士。雷竞技下载官网感兴趣吗?填写表格雷竞技下载官网percona.com/k8s。
随着越来越多的公司看从Oracle迁移或实施的新数据库与应用程序,PostgreSQL通常是最好的选择对于那些想要在开放源代码数据库上运行。
读我们的新白皮书:
为什么客户选择为PostgreSQL Pe雷竞技下载官网rcona吗



