Pan*_*dar 4 postgresql kubernetes kubernetes-jobs
我有一个在 Kubernetes 集群中运行的 Postgres DB 容器。我需要编写一个 Kubernetes 作业来连接到 Postgres DB 容器并从 SQL 文件运行脚本。我需要在这里了解两件事
这是我用于 Kubernetes 作业的示例 yaml 文件
apiVersion: batch/v1
kind: Job
metadata:
name: init-db
spec:
template:
metadata:
name: init-db
labels:
app: init-postgresdb
spec:
containers:
- image: "docker.io/bitnami/postgresql:11.5.0-debian-9-r60"
name: init-db
command:
- psql -U postgres
env:
- name: DB_HOST
value: "knotted-iguana-postgresql"
- name: DB_DATABASE
value: "postgres"
restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)
您必须从配置映射中将 SQL 文件挂载为卷,并使用psql
cli 从挂载的文件中执行命令。
要从文件执行命令,您可以通过以下方式更改 yaml 上的命令参数:
psql -a -f sqlCommand.sql
Run Code Online (Sandbox Code Playgroud)
需要使用您在此处假装挂载更多信息的文件创建配置映射
kubectl create configmap sqlCommands.sql --from-file=sqlCommands.sql
Run Code Online (Sandbox Code Playgroud)
然后你必须在你的作业 yaml 上添加 configmap 和 mount 语句,并修改命令以使用挂载的文件。
apiVersion: batch/v1
kind: Job
metadata:
name: init-db
spec:
template:
metadata:
name: init-db
labels:
app: init-postgresdb
spec:
containers:
- image: "docker.io/bitnami/postgresql:11.5.0-debian-9-r60"
name: init-db
command: [ "bin/sh", "-c", "psql -a -f /sqlCommand.sql" ]
volumeMounts:
- name: sqlCommand
mountPath: /sqlCommand.sql
env:
- name: DB_HOST
value: "knotted-iguana-postgresql"
- name: DB_DATABASE
value: "postgres"
volumes:
- name: sqlCommand
configMap:
# Provide the name of the ConfigMap containing the files you want
# to add to the container
name: sqlCommand.sql
restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3500 次 |
最近记录: |