helm基础介绍

helm安装

3.0版本

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

helm仓库

http://mirror.azure.cn/kubernetes/charts/

使用方法

helm repo add azure http://mirror.azure.cn/kubernetes/charts/

阿里云

helm repo add aliyun https://apphub.aliyuncs.com/

搜索公共仓库

仓库地址

helm search hub wordpress

搜索私有仓库

helm search repo wordpress

Helm 如何管理多环境下 (Test、Staging、Production) 的业务配置?

Chart 是支持参数替换的,可以把业务配置相关的参数设置为模板变量。使用 helm install 命令部署的时候指定一个参数值文件,这样就可以把业务参数从 Chart 中剥离了。例如: helm install --values=values-production.yaml wordpress。

helm push 插件

helm plugin install https://github.com/chartmuseum/helm-push

上传包

helm push . http://192.168.1.24:8080
2019/11/22 posted in  Kubernetes

Linux 测试磁盘性能

测试场景:

100%随机,100%读, 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

100%随机,100%写, 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

100%顺序,100%读 ,4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

100%顺序,100%写 ,4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

100%随机,70%读,30%写 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

io=执行了多少M的IO

bw=平均IO带宽
iops=IOPS
runt=线程运行时间
slat=提交延迟
clat=完成延迟
lat=响应时间
bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的IO数
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小.平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率

2019/06/03 posted in  Linux

Confluence安装

  1. 启动镜像

    docker run -d --restart always -v /home/ubuntu/confluence:/var/atlassian/application-data/confluence --name="confluence" -d -p 80:8090 -p 8091:8091 atlassian/confluence-server:6.12
    

下载

官网下载confluence的tar包(v6.12.2)

安装

解压缩(这里解压到/server/confluence目录),打开该目录下confluence/WEB-INF/classes/confluence-init.properties文件,添加行:

confluence.home=/server/confluence

启动

\( cd /server/confluence
\) ./bin/start-confluence.sh

浏览器访问

输入 http://localhost:8090/ 进行安装,期间会要求输入license,导向到官网申请之;进入数据库步骤,如果选择mysql,要依次逆行:

  1. 下载mysql驱动放到WEB-INF/lib目录,重新启动confluence服务器
  2. 创建数据库时,编码COLLATE 应选:utf8_bin,如:

    CREATE DATABASE IF NOT EXISTS confluence DEFAULT CHARSET utf8 COLLATE utf8_bin;
    如果没有创建数据用户,可以创建:
    GRANT ALL ON . TO banyuan@localhost IDENTIFIED BY "Banyuan2019";

  3. 事务默认级别应设置为:READ-COMMITTED。具体操作过程可能如下:

    • a.查看mysql的conf文件所在位置:
      > $ mysqld --verbose --help|grep -A 1 'Default options'
      可能返回结果:/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
    • b. 编辑my.conf,如:/usr/local/etc/my.cnf ,在 [mysqld]节增加行: [mysqld]
      ...
      transaction-isolation=READ-COMMITTED
      然后重启服务。可以进入mysql控制台,执行下面的命令确认是否修改过了。
      > show variables like 'transaction_isolation';

以上这些步骤,在实际安装过程中都是有提示的,所以不必特别担心。

安装完毕后,仍会检查mysql的一些设置,比如可能提示如下两个变量设置值:

成功最大允许数据包 - max_allowed_packet:一般不小于34m
InnoDB 日志文件大小 - innodb_log_file_size:一般不小于256M

character-set-server = utf8
innodb_log_file_size = 256M
max_allowed_packet = 34M

破解

破解需要在安装过程中进行,安装进入到授权码页面时,开始破解:

  1. 使用【附件】目录confluence-crack.zip解压缩,比如解到/cracked目录。
  2. 把confluence的WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar 文件复制到/cracked目录,重命名为atlassian-extras-2.4.jar
  3. 运行/cracked目录下的confluence_keygen.jar,点.patch!,依提示选择atlassian-extras-2.4.jar,就可以在/cracked目录看到atlassian-extras-2.4.jar和atlassian-extras-2.4.bak两个文件,这里atlassian-extras-2.4.jar已经是破解好的了;
  4. 然后在patch软件里输入安装Web页上的Server Id,点击.gen!产生key
  5. 将atlassian-extras-2.4.jar名字改回来:atlassian-extras-decoder-v2-3.4.1,复制回confluence的WEB-INF/lib/目录,重新启动confluence
  6. 复制key到Web页,进行下一步
    ## 邮件服务器配置
    直接填写地址、协议死活不工作,不得已配置了JNDI:

A. 在{confluence-install}/conf/server.xml中的末尾加代码:

<Context path="" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true">
....
<Resource name="mail/BanyuanSMTPServer"
    auth="Container"
    type="javax.mail.Session"
    mail.smtp.host="smtp.banyuan.club"
    mail.smtp.port="465"
    mail.smtp.auth="true"
    mail.smtp.user="admin@banyuan.club"
    password="SemiCircle2019"
    mail.smtp.starttls.enable="true"
    mail.transport.protocol="smtps"
    mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
/>
</Context>

B. 然后移动{confluence-install}/confluence/WEB-INF/lib/mail-x.x.x.jar到{confluence-install}/lib目录(移动不是拷贝)
C. 重启服务器,
D. 进入后台邮件服务器配置JNDI服务名为:java:comp/env/mail/BanyuanSMTPServer,注意:SMTP单独配置选项都要为空(可以只能配置用户名,同mail.smtp.user),然后发送测试邮件,通过。

RestAPI调用

官方文档: https://developer.atlassian.com/server/confluence/confluence-server-rest-api/

例:
获取文章内容:http://localhost:8090/rest/api/content/327696?expand=body.storage
获取文章里宏:http://localhost:8090/rest/api/content/327696/history/2/macro/id/0efe0e6f-e80e-4528-81d8-968f47a87907

2019/03/26 posted in  Docker

Mac 安装MiniKube

  1. 安装kubectl

    brew install kubernetes-cli
    
  2. 安装minikube

    官方原版,需要科学上网

    brew cask install minikube
    

    阿里云的minikube

    curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v0.30.0/minikube-darwin-amd64 && chmod +xminikube && sudo mv minikube /usr/local/bin/
    
  3. minikube 启动命令

    minikube start --docker-env HTTP_PROXY=192.168.2.114:31210 --docker-env HTTPS_PROXY=192.168.2.114:31210
    
2019/03/15 posted in  Kubernetes

Python 单元测试以及单元测试覆盖率

单元测试

  1. 安装nosetest

    pip install nose
    
  2. 执行测试并输出xunit格式xml文件

    nosetest --with-xunit -v
    

    如果你想指定输出的文件名

    nosetest --with-xunit --xunit-file=xunittest.xml -v
    

测试覆盖率

  1. 安装coverage

    pip install coverage
    
  2. 测试指定的测试代码或者模块

    coverage run test.py
    

    以上操作会在当前目录下生成.coverage目录

  3. 生成xml报告或者html报告

    coverage html
    coverage xml
    

在Django 中使用nose和coverage

如果仅仅是使用coverage

coverage run manage.py test #执行django的单元测试
coverage xml #生成xml报告

如果需要同时使用nosetest和coverage

  1. 下载安装django-nose

    pip install django-nose
    
  2. 将django-nose添加到项目的setting.py文件当中

    INSTALLED_APPS = (
    ...
    'django_nose', # Append to INSTALLED_APPS
    ...
    )
    TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
    NOSE_ARGS = [
    '--with-coverage',
    '--with-xunit',
    '--xunit-file=xunittest.xml'
    ]
  3. 执行单元测试

    python manage.py test
    
  4. 生成单元测试覆盖率

    coverage xml
    
2018/12/18 posted in  Python