<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[arnolan的博客]]></title><description><![CDATA[记录走过的弯路]]></description><link>https://blog.youkuaiyun.com/arnolan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; arnolan]]></copyright><item><title><![CDATA[harbor使用过程遇到的一些问题集合]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/106192798</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/106192798</guid><author>arnolan</author><pubDate>Sat, 17 Jul 2021 11:44:59 +0800</pubDate><description><![CDATA[harbor使用过程遇到的一些问题集合

1. harbor降级core无法启动：failed to initialize database: file does not exist
【版本环境】harbor1.8.6
【安装方式】helm
【操作描述】从harbor1.9.4 降级到harbor1.8.6，无法启动core
【报错信息】
2019-09-16T14:02:03Z [ERROR] [/common/config/manager.go:192]: failed to get key admir]]></description><category></category></item><item><title><![CDATA[创建一个crontab专用docker容器]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/107092910</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/107092910</guid><author>arnolan</author><pubDate>Thu, 02 Jul 2020 21:13:27 +0800</pubDate><description><![CDATA[背景：
K8S的一个POD通过PVC挂在了一个ceph rbd盘，但是希望可以通过脚本定期读取和操作rbd盘里的数据，我们不希望将crontab和app进程放到同一个容器内，并且RBD只支持单个节点的读写挂载，所以没办法通过其它POD来完成这件事。所以方案就是通过sidecar这种形式，在POD里面创建2个容器，一个app容器，一个crontab容器，共享该块rbd盘，然后去执行读取和操作数据。
所以，如何创建一个crontab的docker容器？
1. 首先定义我们的cron格式文件
[root@loca]]></description><category></category></item><item><title><![CDATA[Kubernetes学习笔记整理之Ingress Controller]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/106221416</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/106221416</guid><author>arnolan</author><pubDate>Tue, 19 May 2020 19:32:08 +0800</pubDate><description><![CDATA[Kubernetes学习笔记整理之Ingress Controller
概念理解
1. 简介
Ingress 是反向代理规则，用来规定 HTTP/S 请求应该被转发到哪个 Service 上，比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上

2. 两大组件
简单来说，Ingress 只有两大组件：Ingress Controller 和 Ingress
Ingress
其中，Ingress资源通过yaml文件申明规则配置
Ingress Controller
Ingre]]></description><category></category></item><item><title><![CDATA[docker-compose的depends_on在kubernetes中对应什么]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105917310</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105917310</guid><author>arnolan</author><pubDate>Tue, 05 May 2020 01:01:13 +0800</pubDate><description><![CDATA[文章目录问题分析方案initContainer延伸docker-compose depends_on与Helm dependencies区别参考文章
问题
docker-compose的yaml描述文件中对于依赖组件容器，我们常常会使用depends_on来申明，非常方便。比如下面这段：
service:
	worker: 
	  build: ./worker
	  image: xxxxxxx...]]></description><category></category></item><item><title><![CDATA[flask-restplus框架swagger页面的Authorizations认证登陆功能]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105911126</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105911126</guid><author>arnolan</author><pubDate>Mon, 04 May 2020 00:15:18 +0800</pubDate><description><![CDATA[效果
对于flask-restplus框架，本身集成了swagger api页面，那么如何在swagger页面当中显示一个“Authorize”模块呢，如下图所示：

点击Authorize按钮弹出窗中可以输入Username和Password


方案
事实上，我们在申明api对象的时候是可以指定Authoritarian的方式的，然后启动主程序即可：
# 以下为Basic验证举例
# 先声明一...]]></description><category></category></item><item><title><![CDATA[Redhat OS安装docker-ce及docker-compose步骤]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105884202</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105884202</guid><author>arnolan</author><pubDate>Fri, 01 May 2020 23:01:32 +0800</pubDate><description><![CDATA[1、更换repo源
curl -s http://repo.qa.pab.com.cn/scripts/yum_install_docker.sh | bash

2、安装container-selinux包
yum install -y http://repo.qa.pab.com.cn/centos/7/extras/x86_64/Packages/container-selinux-2.10...]]></description><category></category></item><item><title><![CDATA[Sentry实时错误追踪系统使用说明]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105880882</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105880882</guid><author>arnolan</author><pubDate>Fri, 01 May 2020 19:00:57 +0800</pubDate><description><![CDATA[Sentry实时错误追踪系统使用说明

一、Sentry简介
Sentry（哨兵）是一款应用错误跟踪系统，对软件系统运行过程中产生的错误日志进行收集从而实现监控告警。通过对应用的错误进行实时追踪并统一跟进，提高对错误的治理能力。让业务场景下自己发现Bug的速度快于用户报告Bug的速度。

使用场景描述：线上应用程序触发了一个bug，Sentry会立即发现错误，并通过邮件或其他基于通知规则的集成通知...]]></description><category></category></item><item><title><![CDATA[Harbor仓库Label和Repo驱动的镜像同步机制最佳实践]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105763538</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105763538</guid><author>arnolan</author><pubDate>Sun, 26 Apr 2020 11:12:45 +0800</pubDate><description><![CDATA[一、前言
Harbor仓库除了直接使用Docker Registry的Tag作为镜像的标签之外，额外还提供了一种Label标签机制，分为全局和项目两种形式，并以此可作为镜像同步的筛选机制。
我们可以利用Label来为不同的仓库设定不同的同步机制。这里提供了一套实践方法，大家可以参考并讨论。至于标题“最佳实践”，是噱头，哈哈，看大家自己的理解和适配，欢迎一起讨论优化。
二、Label和Repo驱动的...]]></description><category></category></item><item><title><![CDATA[通过Helm Chart在Kubernetes集群Self-Hosted私有化部署Sentry（离线）]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105715163</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105715163</guid><author>arnolan</author><pubDate>Thu, 23 Apr 2020 21:11:48 +0800</pubDate><description><![CDATA[我们知道，Sentry是非常优秀的应用错误跟踪系统，还可以支持大多数的语言。不论是用在灰度的时候做验证也好，还是生产上用来快速追踪、定位以及提高对错误的治理能力也好，都非常适合，让运维人员不再依赖和等待用户的报错。
在上一篇文章《docker-compose安装sentry 9.1.2不踩坑指南》中我们聊了docker-compose部署Sentry，这次我们尝试下通过Helm Chart的方式在...]]></description><category></category></item><item><title><![CDATA[docker-compose安装sentry 9.1.2不踩坑指南]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105595994</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105595994</guid><author>arnolan</author><pubDate>Sat, 18 Apr 2020 19:12:49 +0800</pubDate><description><![CDATA[目录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、集...]]></description><category></category></item><item><title><![CDATA[在kubernetes集群用helm离线安装harbor]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105304711</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105304711</guid><author>arnolan</author><pubDate>Sun, 05 Apr 2020 12:10:27 +0800</pubDate><description><![CDATA[背景说明
在公司内部局域网环境kubernetes集群（未连接互联网）通过helm离线安装harbor
实施步骤
一、kubernetes集群安装helm（已安装的直接跳过此节）
1. 关于helm
我们知道，容器应用在Kubernetes集群发布实际上需要创建不同的资源，写不同类型的yaml文件，如果应用架构比较庞大复杂，管理起来就更加麻烦。所以这时候Helm应运而生，由CNCF孵化和管理，用于...]]></description><category></category></item><item><title><![CDATA[MkDocs实现网站访问统计(不蒜子)及添加评论系统模块(livere来必应)实现]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/105026738</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/105026738</guid><author>arnolan</author><pubDate>Sun, 22 Mar 2020 16:14:14 +0800</pubDate><description><![CDATA[关于MkDocs，如果不了解的可以先翻官网，主题我选择的是MkDocs-Material，传送门：
https://www.mkdocs.org/
https://squidfunk.github.io/mkdocs-material/
另外推荐一个MkDocs实例（中文）供参考，上面也提供了很多MkDocs知识点和最佳实践：
https://cyent.github.io/markdown-wi...]]></description><category></category></item><item><title><![CDATA[记录harbor 1.5升级到1.9]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/103139469</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/103139469</guid><author>arnolan</author><pubDate>Mon, 25 Nov 2019 13:48:33 +0800</pubDate><description><![CDATA[（1）停下在运行的harbor
[root@bogon ~]# cd harbor
[root@bogon harbor]# ls
common                    docker-compose.notary.yml  ha          harbor.v1.5.0.tar.gz  LICENSE  prepare
docker-compose.clair.yml  dock...]]></description><category></category></item><item><title><![CDATA[Harbor集成Clair镜像安全扫描原理探知]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/102666831</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/102666831</guid><author>arnolan</author><pubDate>Tue, 22 Oct 2019 18:36:26 +0800</pubDate><description><![CDATA[上一篇文章中我们简单了解了Harbor集成Clair的安装方案及内网模式下CVE漏洞数据的手动导入功能。本篇文章，我们再梳理下漏洞扫描的具体原理和实现。
关于clair
Clair是CoreOS 2016年发布的一款开源容器漏洞扫描工具。该工具可以交叉检查Docker镜像的操作系统以及上面安装的任何包是否与任何已知不安全的包版本相匹配。漏洞是从特定操作系统的通用漏洞披露（CVE）数据库获取。
通...]]></description><category></category></item><item><title><![CDATA[Harbor集成Clair镜像安全扫描并手动导入漏洞数据]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/102652823</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/102652823</guid><author>arnolan</author><pubDate>Mon, 21 Oct 2019 11:40:43 +0800</pubDate><description><![CDATA[通过这篇文章，你会了解到：

harbor启停方法
clair镜像扫描原理
harbor数据库（MySQL）一览
clair数据库（PostgreSql）一览
harbor手动导入漏洞数据方法

背景
先说明下背景和版本
公司内网使用（无Internet）Harbor：V1.5.0，没有Clair，没有启用https。
需求：开启使用Clair进行镜像安全扫描。

PS：harbor介绍及安装可以...]]></description><category></category></item><item><title><![CDATA[解决Redis  Cluster模式下键空间通知Keyspace notification失效的问题（python实现）]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/102065525</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/102065525</guid><author>arnolan</author><pubDate>Fri, 04 Oct 2019 15:52:33 +0800</pubDate><description><![CDATA[背景
在做一个支付订单的CASE，需要对订单进行限定时间内支付，到期未完成支付则该订单失效，商品退库处理。
方案
这种案例很适合使用redis的keyspace notification键空间通知功能
键空间通知使得客户端可以通过订阅频道或模式， 来接收那些以某种方式改动了 Redis 数据集的事件。
可以通过对redis的redis.conf文件中配置notify-keyspace-events...]]></description><category></category></item><item><title><![CDATA[sqlalchemy orm复杂查询备忘录]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/96868622</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/96868622</guid><author>arnolan</author><pubDate>Mon, 22 Jul 2019 16:22:54 +0800</pubDate><description><![CDATA[收录一些自己用过的sqlalchemy复杂查询以备忘
env: python flask sqlalchemy
case 1：搜索今年及去年的数据记录
编号格式为：PR-19-00001
编号中间的19为年份，需要根据年份来找出所有今年以及去年（18）的记录并排序
key point：or_、contains()
from sqlalchemy import or_
import datetime...]]></description><category></category></item><item><title><![CDATA[python flask简单文件上传下载实现]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/93617198</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/93617198</guid><author>arnolan</author><pubDate>Tue, 25 Jun 2019 14:04:07 +0800</pubDate><description><![CDATA[功能：用python+flask实现简单的文件上传下载，并简单过滤下文件名的“.”和“/”，同时对文件名进行通过uuid重命名，存到服务器上，并将原文件名、重命名等信息保存到db中，需要时从db查询出来还原即可
PS：适合单服务器，不适用于K8S部署，下一篇文章将介绍通过ceph存储文件，适合K8S PVC持久化存储
实现：
一、在db中定义文件ORM模型：
#app/db/orm.py
clas...]]></description><category></category></item><item><title><![CDATA[pyecharts指定从本地加载js路径修改默认远程优先拉取]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/91459831</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/91459831</guid><author>arnolan</author><pubDate>Tue, 11 Jun 2019 19:48:52 +0800</pubDate><description><![CDATA[因项目为纯flask开发，用flask-admin作后台管理，其中涉及到报表模块，故使用了百度echarts的python实现，即pyecharts模块
这个模块非常好用，感谢开发及维护人员！
根据网站资源引用说明：pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中，默认挂载在 https://assets.pyecharts.org/assets/
所以p...]]></description><category></category></item><item><title><![CDATA[CMD/SHELL命令执行python程序报错无法找到自定义项目名模块ModuleNotFoundError: No module named 'XXX' 解决方法]]></title><link>https://blog.youkuaiyun.com/arnolan/article/details/90806243</link><guid>https://blog.youkuaiyun.com/arnolan/article/details/90806243</guid><author>arnolan</author><pubDate>Tue, 04 Jun 2019 19:16:04 +0800</pubDate><description><![CDATA[说下背景，python web项目，在本地 IDE执行正常，然后CI/CD编译打镜像，在K8S中想要把项目docker容器拉起来，报错：
[root@SY613596 ~]# kubectl -n easyreport logs -f wasp-api-674fd9d84b-g7f2q
Traceback (most recent call last):
File "/app/wasp/main....]]></description><category></category></item></channel></rss>