首页 > 社交 > 科普中国

kubernetes上部署

常驻编辑 科普中国 2022-05-05 管理工具   集群   初始化   脚本   步骤   用户名   密码   数据库   数据   信息

背景

wiki.js 是优秀的开源 wiki 系统,相较于 xwiki ,功能目前性上比 xwiki 不够完善,但也在不断进步。 wiki 写作、分项、权限管理功能还是有的,胜在 UI 设计很漂亮,能满足小团队的基本知识管理需求。xWu拜客生活常识网

以下工作是在 kubernetes 1.23.0 + helm 3 已经部署好的情况下进行的。部署 kubernetes 可以参考我另外的文章 “kubesphere 多节点集群安装”xWu拜客生活常识网

准备storageclass

我们使用 openebs 作为存储,openebs 默认安装的 local storageclass 在 pod 销毁后自动删除,不适合用于我的 mysql 存储,我们在 local storageclass 基础上稍作修改,创建新的 storageclass,允许 pod 销毁后,pv 内容继续保留,手动决定怎么处理。xWu拜客生活常识网

apiVersion: v1
items:
- apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    annotations:
      cas.openebs.io/config: |
        - name: StorageType
          value: "hostpath"
        - name: BasePath
          value: "/var/openebs/localretain/"
      openebs.io/cas-type: local
      storageclass.beta.kubernetes.io/is-default-class: "false"
      storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce"]'
    name: localretain
  provisioner: openebs.io/local
  reclaimPolicy: Retain
  volumeBindingMode: WaitForFirstConsumer
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

部署 postgresql

我们团队其他项目中也需要使用 postgresql, 为了提高 postgresql 数据库的利用率和统一管理,我们独立部署 postgresql, 并在安装 wiki.js 时,配置外部数据库。xWu拜客生活常识网

准备用户名密码配置

我们使用 secret 保存 postgres 用户密码等敏感信息。xWu拜客生活常识网

kind: Secret
apiVersion: v1
metadata:
  name: postgres-prod
data:
  POSTGRES_PASSWORD: 自行填写
type: Opaque

准备数据库初始化脚本

使用 configmap 保存数据库初始化脚本,在 数据库创建时,将 configmap 中的数据库初始化脚本挂载到 /docker-entrypoint-initdb.d, 容器初始化时会自动执行该脚本。xWu拜客生活常识网

apiVersion: v1
kind: ConfigMap
metadata:
  name: wikijs-postgres-init
data:
  init.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;
    

准备存储

我们使用 openesb 来提供存储服务。可以通过 创建 pvc 来提供持久化存储。xWu拜客生活常识网

这里声明一个 10G 的 pvcxWu拜客生活常识网

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: postgres-prod-data
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: localretain
  volumeMode: Filesystem

部署 postgresql 数据库

在前面的步骤准备好各种配置信息和存储后,就可以开始部署 postgresql 服务了。
我们的 kubernetes 没有配置 存储阵列,使用的是 openesb 作为存储,我们使用 deployment 来部署 postgresql 服务。xWu拜客生活常识网

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: postgres-prod
  name: postgres-prod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-prod
  template:
    metadata:
      labels:
        app: postgres-prod
    spec:
      containers:
        - name: db
          imagePullPolicy: IfNotPresent
          image: 'postgres:14.2-alpine'
          ports:
            - name: tcp-5432
              protocol: TCP
              containerPort: 5432
          envFrom:
          - secretRef:
              name: postgres-prod
          volumeMounts:
            - name: postgres-prod-data
              readOnly: false
              mountPath: /var/lib/postgresql/data
            - name: wikijs-postgres-init
              readOnly: true
              mountPath: /docker-entrypoint-initdb.d
      volumes:
        - name: postgres-prod-data
          persistentVolumeClaim:
            claimName: postgres-prod-data
        - name: wikijs-postgres-init
          configMap:
            name: wikijs-postgres-init

创建供其他 pod 访问的 service

相关阅读:

  • 抖音背后的“生产线”
  • 首份快递三季报出炉,新阶段价值竞争靠什么|姗言两语
  • 互联网后端技术大全!建议收藏
  • 1.8亿年前蜉蝣婚飞
  • 我科学家揭示最古老昆虫婚飞行为
  • Java后端大神总结的“造火箭”理论,找工作很有用哦
  • “长不大”的寒武纪:收入1.72亿,亏损6.22亿,市值暴跌800
  • 一图读懂《促进中小企业特色产业集群发展暂行办法》↓
  • hadoop、hbase、zookeeper集成kerberos认证
  • 黄河宿集:打动人的不止风景,还有场景
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。