yapi部署
起初yapi是单独部署在一台机器上,部署方式docker,最近公司统一账户管理(openldap),所以把yapi部署在k8s里面
mongodb部署在物理机上
添加源
vi /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
安装
yum -y install mongodb-org
启动及配置
- /var/lib/mongo(数据文件所在目录)
- /var/log/mongodb(日志文件所在目录)
- /etc/mongod.conf(配置文件所在目录)
systemctl enable mongod --now
开启认证
mongo
use admin
db.createUser(
{
user: "myki",
pwd: "密码",
roles: [ { role: "root", db: "admin" } ]
}
)
show users;
quit()
修改配置文件
vi /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
yapi安装 yaml文件如下
kind: ConfigMap
apiVersion: v1
metadata:
name: config-json
namespace: tools
labels:
app: yapi
data:
config.json: |-
{
"port": "3000",
"closeRegister": true,
"adminAccount": "admin@admin.com",
"db": {
"servername": "192.168.1.43",
"DATABASE": "yapi",
"port": 27017,
"user": "myki",
"pass": "密码",
"authSource": "admin"
},
"ldapLogin": {
"enable": true,
"server": "ldap://ldap.mvmyun.com",
"baseDn": "cn=manager,dc=mvmyun,dc=com",
"bindPassword": "密码",
"searchDn": "ou=People,dc=mvmyun,dc=com",
"searchStandard": "&(objectClass=posixAccount)(cn=%s)",
"emailPostfix": "@163.com",
"emailKey": "mail",
"usernameKey": "name"
}
}
---
apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: yapi # 资源的名字,在同一个namespace中必须唯一
namespace: tools # 部署在哪个namespace中
labels: # 设定资源的标签
app: yapi
spec: # 资源规范字段
type: ClusterIP # ClusterIP 类型
ports:
- port: 80 # service 端口
targetPort: http # 容器暴露的端口
protocol: TCP # 协议
name: http # 端口名称
selector: # 选择器
app: yapi
---
apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: yapi # 资源的名字,在同一个namespace中必须唯一
namespace: tools # 部署在哪个namespace中
labels: # 设定资源的标签
app: yapi
version: stable
spec: # 资源规范字段
replicas: 1 # 声明副本数目
revisionHistoryLimit: 3 # 保留历史版本
selector: # 选择器
matchLabels: # 匹配标签
app: yapi
version: stable
minReadySeconds: 5 # 最小就绪时间 默认值0
strategy: # 策略
rollingUpdate: # 滚动更新
maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
type: RollingUpdate # 滚动更新策略
template: # 模版
metadata: # 资源的元数据/属性
annotations: # 自定义注解列表
sidecar.istio.io/inject: "false" # 自定义注解名字
myki: "1600000000" # 自定义注解名字
labels: # 设定资源的标签
app: yapi
version: stable
spec: # 资源规范字段
#serviceAccountName: jenkins
#serviceAccount: jenkins
containers:
- name: yapi # 容器的名字
#image: nginx # 容器使用的镜像地址
image: registry.cn-hangzhou.aliyuncs.com/anoyi/yapi # 容器使用的镜像地址
workingDir: /yapi/vendors
command: ["/bin/sh"]
args: ["-c", "node server/app.js"]
volumeMounts: # 定义挂载
- name: config-json
mountPath: /yapi/config.json
subPath: config.json
- name: timezone # 挂载名字
mountPath: "/etc/localtime" # pod 挂载目录
readOnly: true
imagePullPolicy:
# periodSeconds: 10 # 检查间隔时间
ports:
- name: http # 名称
containerPort: 3000 # 容器开发对外的端口
protocol: TCP # 协议
lifecycle:
#优雅关闭容器
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 30"]
imagePullSecrets: # 镜像仓库拉取密钥
- name: aliyun-registry-vpc
hostAliases:
- ip: "192.168.1.26"
hostnames:
- "rc-ws.mymtools.com"
affinity: # 亲和性调试
nodeAffinity: # 节点亲和力
requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
nodeSelectorTerms: # 节点满足任何一个条件就可以
- matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
dnsPolicy: ClusterFirst # Pod 的 DNS 配置可让用户对 Pod 的 DNS 设置进行更多控制
#serviceAccountName: demo #服务账户名称
#serviceAccount: demo #为Pod 配置服务账户
dnsConfig:
options:
- name: single-request-reopen # dns搜索域解决dns 命中低问题
volumes: # 外部挂载
- name: config-json
configMap:
name: config-json
- name: timezone # 挂载名字
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: yapi-https
namespace: tools
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx # 1.18 以上使用
tls:
- hosts:
- yapi.mvmyun.com
secretName: mvmyun-com
rules:
- host: yapi.mvmyun.com
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: yapi
servicePort: 80
文章作者 🐳Myki
上次更新 2021-03-25