apiVersion: v1
kind: Service
metadata:
name: postgres-prod
spec:
selector:
app: postgres-prod
ports:
- protocol: TCP
port: 5432
targetPort: tcp-5432
完成 postgres 部署。
测试略
安装 adminer
adminer 是 php 语言的 数据库管理工具,可以在浏览器上管理数据库,因为我们的数据库部署在 kubernetes ,配套使用基于浏览器的 数据库管理工具,可以更方便的管理,而且不需要把安装在 kubernetes 集群里的数据库暴露出来,提高了数据保密性。
准备配置文件
我们使用 configmap 保存 adminer 需要的环境变量。比如通过 ADMINER_DESIGN 设置皮肤,通过 ADMINER_PLUGINS 设置需要加载的插件。
apiVersion: v1
kind: ConfigMap
metadata:
name: adminer
data:
ADMINER_DESIGN: pappu687
ADMINER_PLUGINS: tables-filter
在前面的步骤准备好各种配置信息和存储后,就可以开始部署 adminer 服务了。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: adminer
name: adminer
spec:
replicas: 1
selector:
matchLabels:
app: adminer
template:
metadata:
labels:
app: adminer
spec:
containers:
- name: adminer
image: 'adminer'
ports:
- name: http-9000
protocol: TCP
containerPort: 9000
envFrom:
- configMapRef:
name: adminer
创建供集群内访问的 service
apiVersion: v1
kind: Service
metadata:
name: adminer
spec:
selector:
app: adminer
ports:
- protocol: TCP
port: 9000
targetPort: http-9000
创建集群外访问的 Ingress
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: adminer
spec:
ingressClassName: nginx
rules:
- host: adminer.ipincloud.cn
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: adminer
port:
number: 9000
验证
略
部署 wiki.js
准备用户名密码配置
我们使用 secret 保存 wiki.js 用于连接数据库的用户名密码等敏感信息。
apiVersion: v1
kind: Secret
metadata:
name: wikijs
data:
DB_USER: d2lraWpz
DB_PASS: 自行填写
type: Opaque
准备数据库连接配置
我们使用 configmap 保存 wiki.js 的数据库连接信息。
apiVersion: v1
kind: ConfigMap
metadata:
name: wikijs
data:
DB_TYPE: postgres
DB_HOST: postgres-prod.infra
DB_PORT: "5432"
DB_NAME: wikijs
HA_ACTIVE: "true"
创建数据库用户和数据库
如果 postgresql 数据库里没有创建 wikijs 用户和数据 ,需要手工完成一下工作:
通过 adminer 连接 postgresql 数据库,执行一下 sql 语句,完成数据库和用户的创建、授权
CREATE DATABASE wikijs;
CREATE USER wikijs with password '自行填写';
GRANT CONNECT ON DATABASE wikijs to wikijs;
GRANT USAGE ON SCHEMA public TO wikijs;
GRANT SELECT,update,INSERT,delete ON ALL TABLES IN SCHEMA public TO wikijs;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO wikijs;
部署 wiki.js
在前面的步骤准备好各种配置信息和存储后,就可以开始部署 wiki.js 服务了。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: wikijs
name: wikijs
spec:
replicas: 1
selector:
matchLabels:
app: wikijs
template:
metadata:
labels:
app: wikijs
spec:
containers:
- name: wikijs
image: 'requarks/wiki:2'
ports:
- name: http-3000
protocol: TCP
containerPort: 3000
envFrom:
- secretRef:
name: wikijs
- configMapRef:
name: wikijs
创建供 wiki.js 的 service
apiVersion: v1
kind: Service
metadata:
name: wikijs
spec:
selector:
app: wikijs
ports:
- protocol: TCP
port: 3000
targetPort: http-3000