自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

arnolan的博客

记录走过的弯路

原创 创建一个crontab专用docker容器

背景:K8S的一个POD通过PVC挂在了一个ceph rbd盘,但是希望可以通过脚本定期读取和操作rbd盘里的数据,我们不希望将crontab和app进程放到同一个容器内,并且RBD只支持单个节点的读写挂载,所以没办法通过其它POD来完成这件事。所以方案就是通过sidecar这种形式,在POD里面创建2个容器,一个app容器,一个crontab容器,共享该块rbd盘,然后去执行读取和操作数据。所以,如何创建一个crontab的docker容器?1. 首先定义我们的cron格式文件[root@loca

2020-07-02 21:13:27 102

原创 Kubernetes学习笔记整理之Ingress Controller

Kubernetes学习笔记整理之Ingress Controller概念理解1. 简介Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上2. 两大组件简单来说,Ingress 只有两大组件:Ingress Controller 和 IngressIngress其中,Ingress资源通过yaml文件申明规则配置Ingress ControllerIngre

2020-05-19 19:32:08 161

原创 docker-compose的depends_on在kubernetes中对应什么

文章目录问题分析方案initContainer延伸docker-compose depends_on与Helm dependencies区别参考文章问题docker-compose的yaml描述文件中对于依赖组件容器,我们常常会使用depends_on来申明,非常方便。比如下面这段:service: worker: build: ./worker image: xxxxxxx...

2020-05-05 01:01:13 376

原创 flask-restplus框架swagger页面的Authorizations认证登陆功能

效果对于flask-restplus框架,本身集成了swagger api页面,那么如何在swagger页面当中显示一个“Authorize”模块呢,如下图所示:点击Authorize按钮弹出窗中可以输入Username和Password方案事实上,我们在申明api对象的时候是可以指定Authoritarian的方式的,然后启动主程序即可:# 以下为Basic验证举例# 先声明一...

2020-05-04 00:15:18 249 4

原创 Redhat OS安装docker-ce及docker-compose步骤

1、更换repo源curl -s http://repo.qa.pab.com.cn/scripts/yum_install_docker.sh | bash2、安装container-selinux包yum install -y http://repo.qa.pab.com.cn/centos/7/extras/x86_64/Packages/container-selinux-2.10...

2020-05-01 23:01:32 145

原创 Sentry实时错误追踪系统使用说明

Sentry实时错误追踪系统使用说明一、Sentry简介Sentry(哨兵)是一款应用错误跟踪系统,对软件系统运行过程中产生的错误日志进行收集从而实现监控告警。通过对应用的错误进行实时追踪并统一跟进,提高对错误的治理能力。让业务场景下自己发现Bug的速度快于用户报告Bug的速度。使用场景描述:线上应用程序触发了一个bug,Sentry会立即发现错误,并通过邮件或其他基于通知规则的集成通知...

2020-05-01 19:00:57 271

原创 Harbor仓库Label和Repo驱动的镜像同步机制最佳实践

一、前言Harbor仓库除了直接使用Docker Registry的Tag作为镜像的标签之外,额外还提供了一种Label标签机制,分为全局和项目两种形式,并以此可作为镜像同步的筛选机制。我们可以利用Label来为不同的仓库设定不同的同步机制。这里提供了一套实践方法,大家可以参考并讨论。至于标题“最佳实践”,是噱头,哈哈,看大家自己的理解和适配,欢迎一起讨论优化。二、Label和Repo驱动的...

2020-04-26 11:12:45 140 2

原创 通过Helm Chart在Kubernetes集群Self-Hosted私有化部署Sentry(离线)

我们知道,Sentry是非常优秀的应用错误跟踪系统,还可以支持大多数的语言。不论是用在灰度的时候做验证也好,还是生产上用来快速追踪、定位以及提高对错误的治理能力也好,都非常适合,让运维人员不再依赖和等待用户的报错。在上一篇文章《docker-compose安装sentry 9.1.2不踩坑指南》中我们聊了docker-compose部署Sentry,这次我们尝试下通过Helm Chart的方式在...

2020-04-23 21:11:48 294

原创 docker-compose安装sentry 9.1.2不踩坑指南

目录docker-compose安装sentry 9.1.2关于sentry一、拉取sentry配置二、修改配置文件1、config.yml文件2、requirements.txt文件3、修改sentry.conf.py文件,在头部插入如下两行代码4、docker-compose.yml三、自动安装并启动四、验证邮箱及配置1、调整web ui语言2、验证邮箱3、验证异常捕获及通知附:其它备忘1、集...

2020-04-18 19:12:49 762

原创 在kubernetes集群用helm离线安装harbor

背景说明在公司内部局域网环境kubernetes集群(未连接互联网)通过helm离线安装harbor实施步骤一、kubernetes集群安装helm(已安装的直接跳过此节)1. 关于helm我们知道,容器应用在Kubernetes集群发布实际上需要创建不同的资源,写不同类型的yaml文件,如果应用架构比较庞大复杂,管理起来就更加麻烦。所以这时候Helm应运而生,由CNCF孵化和管理,用于...

2020-04-05 12:10:27 480

原创 MkDocs实现网站访问统计(不蒜子)及添加评论系统模块(livere来必应)实现

关于MkDocs,如果不了解的可以先翻官网,主题我选择的是MkDocs-Material,传送门:https://www.mkdocs.org/https://squidfunk.github.io/mkdocs-material/另外推荐一个MkDocs实例(中文)供参考,上面也提供了很多MkDocs知识点和最佳实践:https://cyent.github.io/markdown-wi...

2020-03-22 16:14:14 376

原创 记录harbor 1.5升级到1.9

(1)停下在运行的harbor[root@bogon ~]# cd harbor[root@bogon harbor]# lscommon docker-compose.notary.yml ha harbor.v1.5.0.tar.gz LICENSE preparedocker-compose.clair.yml dock...

2019-11-25 13:48:33 662

原创 Harbor集成Clair镜像安全扫描原理探知

上一篇文章中我们简单了解了Harbor集成Clair的安装方案及内网模式下CVE漏洞数据的手动导入功能。本篇文章,我们再梳理下漏洞扫描的具体原理和实现。关于clairClair是CoreOS 2016年发布的一款开源容器漏洞扫描工具。该工具可以交叉检查Docker镜像的操作系统以及上面安装的任何包是否与任何已知不安全的包版本相匹配。漏洞是从特定操作系统的通用漏洞披露(CVE)数据库获取。通...

2019-10-22 18:36:26 1070

原创 Harbor集成Clair镜像安全扫描并手动导入漏洞数据

通过这篇文章,你会了解到:harbor启停方法clair镜像扫描原理harbor数据库(MySQL)一览clair数据库(PostgreSql)一览harbor手动导入漏洞数据方法背景先说明下背景和版本公司内网使用(无Internet)Harbor:V1.5.0,没有Clair,没有启用https。需求:开启使用Clair进行镜像安全扫描。PS:harbor介绍及安装可以...

2019-10-21 11:40:43 1933

原创 解决Redis Cluster模式下键空间通知Keyspace notification失效的问题(python实现)

背景在做一个支付订单的CASE,需要对订单进行限定时间内支付,到期未完成支付则该订单失效,商品退库处理。方案这种案例很适合使用redis的keyspace notification键空间通知功能键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。可以通过对redis的redis.conf文件中配置notify-keyspace-events...

2019-10-04 15:52:33 323

原创 sqlalchemy orm复杂查询备忘录

收录一些自己用过的sqlalchemy复杂查询以备忘env: python flask sqlalchemycase 1:搜索今年及去年的数据记录编号格式为:PR-19-00001编号中间的19为年份,需要根据年份来找出所有今年以及去年(18)的记录并排序key point:or_、contains()from sqlalchemy import or_import datetime...

2019-07-22 16:22:54 91

原创 python flask简单文件上传下载实现

功能:用python+flask实现简单的文件上传下载,并简单过滤下文件名的“.”和“/”,同时对文件名进行通过uuid重命名,存到服务器上,并将原文件名、重命名等信息保存到db中,需要时从db查询出来还原即可PS:适合单服务器,不适用于K8S部署,下一篇文章将介绍通过ceph存储文件,适合K8S PVC持久化存储实现:一、在db中定义文件ORM模型:#app/db/orm.pyclas...

2019-06-25 14:04:07 4069

原创 pyecharts指定从本地加载js路径修改默认远程优先拉取

因项目为纯flask开发,用flask-admin作后台管理,其中涉及到报表模块,故使用了百度echarts的python实现,即pyecharts模块这个模块非常好用,感谢开发及维护人员!根据网站资源引用说明:pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中,默认挂载在 https://assets.pyecharts.org/assets/所以p...

2019-06-11 19:48:52 4035 7

原创 CMD/SHELL命令执行python程序报错无法找到自定义项目名模块ModuleNotFoundError: No module named 'XXX' 解决方法

说下背景,python web项目,在本地 IDE执行正常,然后CI/CD编译打镜像,在K8S中想要把项目docker容器拉起来,报错:[root@SY613596 ~]# kubectl -n easyreport logs -f wasp-api-674fd9d84b-g7f2qTraceback (most recent call last):File "/app/wasp/main....

2019-06-04 19:16:04 1437

原创 python不同模块统一管理操作全局变量

全局变量仅限于单实例模式哈,对于多实例集群如k8s docker则建议使用redis来实现以上请特别留意哈,比如docker中多个pod基本上是没有办法共享全局变量的,一直漂,读的值和设的值会有问题OK,言归正传,对于单实例的模式而言要如何做到不同模块统一管理全局变量呢?一、全局变量管理模块首先定义一个全局变量管理模块# common/gloabalvar.py# -*- coding...

2019-04-30 19:14:07 832

原创 python3 flask-restful xlsxwriter模块导出MYSQL数据库查询结果到EXCEL浏览器下载

目录需求1、安装模块包:xlswriter2、视图类3、处理函数注意事项:踩过的坑1、StringIO与BytesIO2、用flask-restful的方式实现需求开发环境:PYTHON3 + MYSQL + FLASK-SQLALCHEMY需求:将mysql数据库查询出来的结果直接转为excel并从浏览器直接下载(不保存在服务器)1、安装模块包:xlswriter这个包的介绍可以自行...

2019-04-26 15:58:55 624 2

原创 Flask Restful API统一异常处理(abort方法)

对于后端API,遵循Restful定义,我们的返回值在异常时候也一定是要json格式的,如何来处理呢?话不多说,主要涉及到两片代码自定义abort函数首先,我们定义abort函数,用来处理中断# -*- coding: utf-8 -*-"""error.pyerror handdler"""from flask import jsonifyfrom werkzeug.http ...

2019-04-04 15:40:03 4444 5

转载 FLASK RESTFUL TOKEN用户验证笔记

笔记1REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码,服务器收集到以后,先验证一下,如果验证通过了,这时候服务器端基于用户名、密码、当前时间戳等内容,用md5或者des或者aes等加密方式,生成一个token值,然后把token值存放到redis里面,...

2019-03-28 11:10:35 4033

原创 Cobbler 登录web界面提示报错“Internal Server Error”

第一部分直接转载摘录JasonMingHao的博客“Cobbler 登录web界面提示报错“Internal Server Error”来说明问题哈在访问cobbler web界面到时候出现以下提示ssl的报错日志如下:[root@Cobbler ~]# tail -f /var/log/httpd/ssl_error_log[Mon Jan 07 16:24:53.363029 20...

2019-03-14 16:36:15 7185

原创 Cobbler自动化装机服务详细介绍

PS:本文为新手根据网络文章梳理而成,便于自己及网友更直观理解哈,参考文章见文末链接及小注标识,侵删目录PXE简介kickstart简介Cobbler简介功能实现一、PXE简介PXE,就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实...

2019-03-13 17:45:59 977 1

原创 Flask-APScheduler定时任务查询操作数据库(多文件/模块)

用Flask-APScheduler写了个定时器,执行时报错:RuntimeError: No application found. Either work inside a view function or push an application context.问描述就是没有找到app。原因也很简单,操作db需要app,而定时器在后台运行实际上是找不到app的,需要push一个app co...

2018-12-18 21:49:04 5803 18

原创 ModuleNotFoundError: No module named 'apscheduler.schedulers'; 'apscheduler' is not a package

这个坑真是个巨坑,掉入了传说中的python陷阱中先说下背景第一次用Flask-APScheduler定时器功能,不太了解,我的框架结构如下:我把相关的两个文件黄色标亮了老司机们可能从这个图就能发现问题了,但是对于flasher来说不知道此处已经有坑。我们继续说:先说main.pyfrom flask_apscheduler import APScheduler...clas...

2018-12-18 00:56:33 4798 2

原创 命令行执行.py文件通过flask-script初始化数据库提示ModuleNotFoundError: No module named 'XXX' 解决方法

项目中需要初始化数据库等操作,我用了flask-script的manage类来完成,所以按照标准的demo样式单独写了manage.py,来执行部署后的初始化工作,先看我的项目结构:代码如下:# -*- coding:utf-8 -*-from flask import Flaskfrom flaskdemo.db import dbfrom flask_script import M...

2018-12-08 15:21:54 2756

原创 flask sqlalchemy 根据日期查询数据库记录

用flask-sqlalchemy以orm模式根据日期查询数据库记录,看似很简单,也很平常的操作呀,硬是搞死我了,花了两个小时才搞定,囧ORZ我数据库mytable中有一个datetime类型字段create_date,然后我们需要查询今天的数据记录,正常我们sql语句来做这个事,非常简单,地球人都知道,用DATE()嘛:select * from mytable where DATE(cre...

2018-12-06 16:51:20 5727

原创 flask-restplus marshal_with()与doc()装饰器位置问题

yourapp.marshal_with(model)必须跟紧youapp.doc()才会在swagger页面上展示model先看这段代码: @api.doc('GetList') @api.param('changenumber', '变更单号') @api.param('mindate', '起始日期') @api.param('maxdate', '截至日期')...

2018-12-05 01:55:51 1408

原创 FLASK-RESTPLUS RequestParser模块报错

使用FLASK-RESTPLUS的RequestParser模块时返回400 BAD REQUEST错误Input payload validation failed : object is not callable{ "errors": { "number": "number 'str' object is not callable" }, "message

2018-11-25 23:57:48 594

原创 flask-SQLAlchemy create_all()创建表失败报错

这里写自定义目录标题create_all()创建表失败报错:'No application found. Either work inside a view function or push an application context.'解决方案create_all()创建表失败报错:‘No application found. Either work inside a view functi...

2018-11-24 20:12:09 1491

提示
确定要删除当前文章?
取消 删除