范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

kubernetes上部署xwiki作为团队知识库管理

  背景
  团队计划基于 kubernetes 搭建一套云原生的开发平台,集成项目管理、需求管理、 BUG 管理、在线 IDE 、 gitops 、代码检查 、 自动测试、知识库等功能。
  xwiki 是优秀的开源 wiki 系统,基于 java 开发,目前更新还比较活跃, 正好需要一个 wiki 来做知识库管理,决定选他了。
  以下工作是在 kubernetes 1.23.0 已经部署好的情况下进行的。部署 kubernetes 可以参考我另外的文章 "kubesphere 多节点集群安装"准备storageclass
  我们使用 openebs作为存储,openebs默认安装的 local storageclass 在 pod 销毁后自动删除,不适合用于我的 mysql 存储,我们在 local storageclass 基础上稍作修改,创建新的 storageclass,允许 pod 销毁后,pv 内容继续保留,手动决定怎么处理。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: "" 部署 mysql
  在 kubernetes 环境下,因为 pod 都是动态创建的,采用传统的 ENV 环境变量来传递信息,存在敏感信息泄露的风险,推荐使用 secret 来保存敏感的配置信息,同时也可以方便动态绑定到 pod。
  推荐使用 configmap 保存 pod 需要的其他配置信息。这样可以跟 pod 更好的配合。准备用户名密码配置
  我们使用 secret 保存 mysql 用户名密码等敏感信息。kind: Secret apiVersion: v1 metadata:   name: xwiki-mysql data:   MYSQL_DATABASE: eHdpa2k=   MYSQL_PASSWORD: 自行填写   MYSQL_USER: eHdpa2k=   MYSQL_ROOT_PASSWORD: 自行填写 type: Opaque 创建 configmap
  我们使用 configmap 保存 mysql 的配置文件,以及数据库初始化文件。apiVersion: v1 kind: ConfigMap metadata:   name: xwiki-mysql-cnf data:   xwiki.cnf: |-     [client]     default-character-set = utf8mb4      [mysqld]     character-set-server = utf8mb4     collation-server = utf8mb4_bin     explicit_defaults_for_timestamp = 1      [mysql]     default-character-set = utf8mb4  --- apiVersion: v1 kind: ConfigMap metadata:   name: xwiki-mysql-init data:   init.sql: |-     grant all privileges on *.* to xwiki@"%" 准备存储
  我们使用 openesb 来提供存储服务。可以通过 创建 pvc 来提供持久化存储。
  这里声明一个 10G 的 pvc--- kind: PersistentVolumeClaim apiVersion: v1 metadata:   name: xwiki-db-data   finalizers:     - kubernetes.io/pvc-protection spec:   accessModes:     - ReadWriteOnce   resources:     requests:       storage: 10Gi   storageClassName: localretain   volumeMode: Filesystem 部署 mysql 数据库
  在前面的步骤准备好各种配置信息和存储后,就可以开始部署 mysql 服务了。
  我们的 kubernetes 没有配置 存储阵列,使用的是 openesb 作为存储,我们使用 deployment 来部署 mysql 服务。apiVersion: apps/v1 kind: Deployment metadata:   labels:     app: xwiki-db   name: xwiki-db spec:   replicas: 1   selector:     matchLabels:       app: xwiki-db   template:     metadata:       labels:         app: xwiki-db     spec:       containers:         - name: db           imagePullPolicy: IfNotPresent           image: "mysql:5.7"           ports:             - name: tcp-3306               protocol: TCP               containerPort: 3306           envFrom:           - secretRef:               name: xwiki-mysql           volumeMounts:             - name: xwiki-db-data               readOnly: false               mountPath: /var/lib/mysql             - name: xwiki-mysql-cnf               readOnly: true               mountPath: /etc/mysql/conf.d             - name: xwiki-mysql-init               readOnly: true               mountPath: /docker-entrypoint-initdb.d       volumes:         - name: xwiki-db-data           persistentVolumeClaim:             claimName: xwiki-db-data         - name: xwiki-mysql-cnf           configMap:             name: xwiki-mysql-cnf         - name: xwiki-mysql-init           configMap:             name: xwiki-mysql-init  创建供 xwiki 访问的 serviceapiVersion: v1 kind: Service metadata:   name: xwiki-db spec:   selector:     app: xwiki-db   ports:     - protocol: TCP       port: 3306       targetPort: tcp-3306 完成 mysql 部署。
  测试略部署 xwiki准备用户名密码配置
  我们使用 secret 保存 xwiki 用于连接数据库的用户名密码等敏感信息。apiVersion: v1 kind: Secret apiVersion: v1 metadata:   name: xwiki-web data:   DB_HOST: eHdpa2ktZGI=   DB_PASSWORD: 自行填写   DB_USER: eHdpa2k= type: Opaque  准备存储pvc
  我们使用 openesb 来提供存储服务。可以通过 创建 pvc 来提供持久化存储。
  这里声明一个 50G 的 pvckind: PersistentVolumeClaim apiVersion: v1 metadata:   name: xwiki-web-data   finalizers:     - kubernetes.io/pvc-protection spec:   accessModes:     - ReadWriteOnce   resources:     requests:       storage: 50Gi   storageClassName: localretain   volumeMode: Filesystem 部署 xwiki
  在前面的步骤准备好各种配置信息和存储后,就可以开始部署 xwiki 服务了。apiVersion: apps/v1 kind: Deployment metadata:   labels:     app: xwiki   name: xwiki spec:   replicas: 1   selector:     matchLabels:       app: xwiki   template:     metadata:       labels:         app: xwiki     spec:       containers:         - name: xwiki           image: "xwiki:mysql-tomcat"           ports:             - name: http-8080               protocol: TCP               containerPort: 8080           envFrom:           - secretRef:               name: xwiki-web           volumeMounts:             - name: xwiki-web-data               readOnly: false               mountPath: /usr/local/xwiki       volumes:         - name: xwiki-web-data           persistentVolumeClaim:             claimName: xwiki-web-data  创建供 xwiki 的 serviceapiVersion: v1 kind: Service metadata:   name: xwiki spec:   selector:     app: xwiki   ports:     - protocol: TCP       port: 8080       targetPort: http-8080 创建集群外访问的 Ingresskind: Ingress apiVersion: networking.k8s.io/v1 metadata:   name: xwiki spec:   ingressClassName: nginx   rules:     - host: xwiki.ipincloud.cn       http:         paths:           - path: /             pathType: ImplementationSpecific             backend:               service:                 name: xwiki                 port:                   number: 8080  完整的 yaml 文件
  以下是完整的通过 deployment 部署 mysql 数据库和 xwiki 的 yaml 文件,保存为 xwiki.yaml 。apiVersion: v1 kind: Secret apiVersion: v1 metadata:   name: xwiki-web data:   DB_HOST: eHdpa2ktZGI=   DB_PASSWORD: 自行填写   DB_USER: eHdpa2k= type: Opaque  --- kind: Secret apiVersion: v1 metadata:   name: xwiki-mysql data:   MYSQL_DATABASE: eHdpa2k=   MYSQL_PASSWORD: 自行填写   MYSQL_USER: eHdpa2k=   MYSQL_ROOT_PASSWORD: 自行填写 type: Opaque  --- apiVersion: v1 kind: ConfigMap metadata:   name: xwiki-mysql-cnf data:   xwiki.cnf: |-     [client]     default-character-set = utf8mb4      [mysqld]     character-set-server = utf8mb4     collation-server = utf8mb4_bin     explicit_defaults_for_timestamp = 1      [mysql]     default-character-set = utf8mb4  --- apiVersion: v1 kind: ConfigMap metadata:   name: xwiki-mysql-init data:   init.sql: |-     grant all privileges on *.* to xwiki@"%"  --- kind: PersistentVolumeClaim apiVersion: v1 metadata:   name: xwiki-web-data   finalizers:     - kubernetes.io/pvc-protection spec:   accessModes:     - ReadWriteOnce   resources:     requests:       storage: 50Gi   storageClassName: localretain   volumeMode: Filesystem  --- kind: PersistentVolumeClaim apiVersion: v1 metadata:   name: xwiki-db-data   finalizers:     - kubernetes.io/pvc-protection spec:   accessModes:     - ReadWriteOnce   resources:     requests:       storage: 10Gi   storageClassName: localretain   volumeMode: Filesystem  --- apiVersion: apps/v1 kind: Deployment metadata:   labels:     app: xwiki-db   name: xwiki-db spec:   replicas: 1   selector:     matchLabels:       app: xwiki-db   template:     metadata:       labels:         app: xwiki-db     spec:       containers:         - name: db           imagePullPolicy: IfNotPresent           image: "mysql:5.7"           ports:             - name: tcp-3306               protocol: TCP               containerPort: 3306           envFrom:           - secretRef:               name: xwiki-mysql           volumeMounts:             - name: xwiki-db-data               readOnly: false               mountPath: /var/lib/mysql             - name: xwiki-mysql-cnf               readOnly: true               mountPath: /etc/mysql/conf.d             - name: xwiki-mysql-init               readOnly: true               mountPath: /docker-entrypoint-initdb.d       volumes:         - name: xwiki-db-data           persistentVolumeClaim:             claimName: xwiki-db-data         - name: xwiki-mysql-cnf           configMap:             name: xwiki-mysql-cnf         - name: xwiki-mysql-init           configMap:             name: xwiki-mysql-init  --- apiVersion: v1 kind: Service metadata:   name: xwiki-db spec:   selector:     app: xwiki-db   ports:     - protocol: TCP       port: 3306       targetPort: tcp-3306  --- apiVersion: apps/v1 kind: Deployment metadata:   labels:     app: xwiki   name: xwiki spec:   replicas: 1   selector:     matchLabels:       app: xwiki   template:     metadata:       labels:         app: xwiki     spec:       containers:         - name: xwiki           image: "xwiki:mysql-tomcat"           ports:             - name: http-8080               protocol: TCP               containerPort: 8080           envFrom:           - secretRef:               name: xwiki-web           volumeMounts:             - name: xwiki-web-data               readOnly: false               mountPath: /usr/local/xwiki       volumes:         - name: xwiki-web-data           persistentVolumeClaim:             claimName: xwiki-web-data  --- apiVersion: v1 kind: Service metadata:   name: xwiki spec:   selector:     app: xwiki   ports:     - protocol: TCP       port: 8080       targetPort: http-8080  --- kind: Ingress apiVersion: networking.k8s.io/v1 metadata:   name: xwiki spec:   ingressClassName: nginx   rules:     - host: xwiki.ipincloud.cn       http:         paths:           - path: /             pathType: ImplementationSpecific             backend:               service:                 name: xwiki                 port:                   number: 8080
  直接执行可以创建好 xwikikubectl apply -f xwiki.yaml

三星NOTE7爆炸疑云未定,有用户称华为P9爆炸,被当场打脸今日,一条三星KOL发的一条微博引起轩然大波,该微博称今年4月份发布的P9发生爆炸,并附上三组图片。小编看到这个微博的第一反应就是三星开始洗地反攻了。不少三星粉丝在此微博下拍手称赞华为双摄像头手机的大光圈到底该怎么用?在相机上,一般拍人像都是用定焦镜头,比如佳能的小痰盂50定。为什么用定焦,因为大光圈。大光圈镜头是拍人像的最好的镜头,因为大光圈下拍出来的照片能使主题更加突出,除主题外的都虚化了,荣耀手表S1现代科技与传统美学的完美融合最近比较关注智能穿戴,有没有一款像传统手表样式的智能手表,如去年的荣耀zero,北欧简约风格,加之非常合适的价格当时就毫不犹豫的入手了。但是随着智能穿戴的设备发展,智能手表的功能越华为荣耀引擎耳机2会旋转的耳机,这才是黑科技在100元这个价位上,琳琅满目的耳机,大都是普通至极,没什么能吸引我的地方。其实说白了主要是穷,现在买手机都不送耳机了,在这里强烈鄙视下各大手机厂商。不过呢,最近被一款可以物理调音华为荣耀Magic评测,智慧手机是噱头还是黑科技?16年12月16日下午,华为荣耀Magic发布,官方宣称Magic是一款拥有智慧的手机。本人有幸参加了这次发布会,印象中最深刻的便是荣耀总裁赵明在介绍这款手机时的激情四射,而且我还扫盲华为mate9上的专业模式你会用吗?华为手机的拍照pro,也就是所谓的专业模式。专业模式由来单反相机。很多华为永华对专业模式望而却步,其实掌握了这几点,什么专业模式都是小菜一叠。以华为mate9为例,打开方式,上划相林肯之道2。0跨平台数据共享实现智享便捷随着美式豪华的与时俱进,拥有百年荣耀的林肯,正逐渐吸引更多年轻客户的青睐,在中国市场稳步前行。林肯认为与时俱进的美式豪华不止于优质的驾乘体验,更在于尊贵温暖的服务。林肯之道是林肯对领跑国货之光,索爱在社交平台收获数千万阅读量近日,索爱广州25周年庆领跑活动在网络持续发酵,引爆舆论热烈关注。作为音频数码行业首个登录广州塔的国货品牌,索爱25周年领跑活动吸引了大量的媒体和达人齐聚广州塔,索爱品牌和产品热度自动驾驶,退一步海阔天空中国能诞生自动驾驶领域的博世吗?文东篱对于自动驾驶,太多人瞄准那块万亿美元规模的出行蛋糕。但如果从ADAS出发,一步一步走向L4甚至L5,在Robotaxi时代降临前,更深入参与汽传统车企为什么敌不过特斯拉?华尔街的资本和硅谷的科技创新位于微笑曲线的两头,很多车企沉溺在曲线的底部,在制造中忙碌。文Toretto当我们对特斯拉自造电池习以为常,之于汽车行业,这真是一件可怕的事情。几乎所有车企的出行迷局若不愿冒险,就只能倒在起点。文Toretto车企不能再像过去那样卖车了。当不同赛道各个行业的对手涌入战场,汽车巨头们一旦停步就意味着被淘汰,或者沦为领跑者的附庸。在逐渐成为行业共识
OnexPlayer壹号掌机惊艳亮相微软Windows11媒体品鉴会2021年10月12日,微软在京举行与你所爱,更进一步为主题的Windows11新一代PC媒体品鉴会,现场邀请了包括政府财经科技消费电子等多领域的媒体,通过主题演讲和场景体验等方式最强低功耗CPU酷睿i71195G7,OnexPlaye1S的游戏性能到底如何?怎么衡量一款CPU的性能如何,普通消费者的直观感受就是核芯越多,性能越强。但是不得不说,这种观点过于片面,拿Intel和AMD两大巨头公司来说,AMD喜欢更多的核芯,Intel则相玩游戏除了专业游戏本可以选择WIN10掌机或迷你游戏本吗?现如今,玩PC3A游戏的人越来越多,而对于游戏的设备,一般人都认为要么是台式机,要么是专业的游戏本,其他的任何设备都显得不伦不类,而今天小编恰恰持有不同的看法,给大家推荐两款壹号本OnexPlayer1195G7版本掌机正式发布,随时随地畅玩游戏大作OnexPlayer壹号游戏掌机自今年5月正式发布后,一直受到广大游戏爱好者的持续关注,关于产品的性能提升,也是众望所归。9月5日,官方终于正式发布了升级版本即搭载了第十一代英特尔OnexPlayer壹号游戏掌机受邀参展2021英特尔零售合作伙伴峰会一直以来,英特尔零售合作伙伴峰会不仅是英特尔与全球零售及渠道合作伙伴同心交流共促合作的年度盛会,同时也是PC产业技术创新与营销趋势的风向标。2021英特尔零售合作伙伴峰会将邀请业内电视游戏的王炸来了,真机体验后,根本停不下来周末放假宅在家里,有不少人都喜欢打游戏消磨时间和解压。手游虽然玩的人很多,但手机屏幕小,看起来总归没有那么过瘾,低头玩时间长了肩颈酸痛,仿佛是在公司加班。随着越来越多的智能电视上市如何实现OSM地图本地发布并自定义配图1缘起OpenStreetMap(简称OSM)不仅可以免费在线使用,还可以免费下载原始数据,数据格式有。osm。pbf和shp。我们将OSM原始数据下载下来,处理成矢量瓦片,发布成考个消防证挂靠单位赚不劳之钱?这种歪风该刹刹了最近几年,上网过程中不时会见到消防工程师报考的广告,里面会暗示甚至直接了当地提示考得消防工程师证之后,可以挂靠单位,不用去上班,就可以每年获得多少万的持证躺赚收入,有的甚至呼悠在家OSM地图本地发布如何生成各省市矢量地图1缘起openmaptiles提供了一套OSM数据使用的完整解决方案,在前面文章如何实现OSM地图本地发布并自定义配图中,我们详细介绍了如何安装openmaptiles,并生成了一淘宝的微信小程序版即将上线,两个大佬终于放弃垄断自封了刚刚过去的一天,一则重磅消息进了我的眼阿里和腾讯很有可能要进行合作,淘宝特价版将支持微信支付,同时还计划上线微信小程序。网络的意义在于价值交换其实这一天早应到来的,只是该来的总会来OnexPlayer掌机性能再升级搭载英特尔i71195G7在以前,超薄的平板或是笔记本虽然拥有高颜值,但是在性能方面一直被诟病,因为处理器太弱,只能处理一些轻办公或是影音娱乐,像玩游戏或是图片设计视频剪辑等完全不能胜任。但是随着科技进步,