猪齿鱼单代码库多应用

有些情况一个代码库可能有多个应用,本例将指引如何在猪齿鱼中使用该代码库。 一、新建应用 本例中创建一个应用,应用名为all-in-one-demo在该应用中会有两个子应用app1及app2。 二、代码结构 分别在根目录创建两个文件夹app1,app2,并在app1和app2中创建各自的chart。目录结构如下 三、编辑CI文件 先创建一个.gitlab-ci.yml文件,因为有多个子应用,所以设定两个stage分别运行。 image: registry-vpc.cn-zhangjiakou.aliyuncs.com/vinkdong/tinyci:docker-19 stages: - build-app1 - build-app2 build-app1: stage: build-app1 script: - chart_build build-app2: stage: build-app2 script: - chart_build .auto_devops: &auto_devops | curl -o .auto_devops.sh \ "${CHOERODON_URL}/devops/ci?token=${Token}" if [ $? -ne 0 ];then cat .auto_devops.sh exit 1 fi source .auto_devops.sh before_script: - *auto_devops 修改app1构建步骤 build-app1: stage: build-app1 script: - cd app1 # 先进入app1的文件夹中 - export SUB_APP_NAME=app1 # 设定应用名称为app1 - docker build --build-arg commit=${CI_COMMIT_TAG} -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG}-${SUB_APP_NAME} . »

c7nctl详解

c7nctl是Choerodon的一个命令行工具,可以创建k8s,安装Choerodon平台及其他一些平台操作,下边先简单介绍一下安装的配置,先来个例子 version: 0.15 metadata: name: install-choerodon namespace: c7n-system # 指定命名空间安装choerodon spec: persistence: # nfs: # server: cfs-c8AydyqtT6.lb-cd4ce12b.cfs.bj.vinkdong.com # rootPath: / hostPath: rootPath: /u01 # storageClassName: nfs-provisioner 在persistence定义了存储的位置,目前支持storageClass,hostPath和nfs三种方式,由于使用nfs搭建gitlab容易出现问题,我们可以为gitlab单独配置一个存储,如下: version: 0.15 metadata: name: install-choerodon namespace: c7n-system # 指定命名空间安装choerodon spec: persistence: nfs: server: cfs-c8AydyqtT6.lb-cd4ce12b.cfs.bj.vinkdong.com rootPath: / # hostPath: # rootPath: /u01 # storageClassName: nfs-provisioner resources: gitlab-mysql: username: rdsroot password: MPu26L7NJqy2ND mysql: username: rdsroot password: MPu26L7NJqy2ND gitlab: domain: gitlab.vinkdong.com username: root # gitlab 默认用户名为root,不能修改 schema: http persistence: hostPath: path: /u02/gitlab 其他应用统一使用nfs,gitlab绑定到主机的/u02/gitlab路径下,当然前提需要在主机上创建这个文件夹,如果测试情况下可以先执行安装,等待gitlab POD启动创建之后修改gitlab固定主机,并在主机上创建相应的文件夹。也可以使用类似于rsync的应用同步该文件夹。 如果需要ceph或者glusterfs的话可以通过storageClass指定对应的存储类,由于这两种储存方式较nfs和主机存储学习和运维成本高,这里就不深入介绍,在没有相关运维人员时,不建议使用这两种存储。 »

POD跨主机不能访问

最近论坛里面发现有小伙伴POD之间跨主机不能访问,自己使用脚本搭建偶尔也有同样的情况,由于没有多余的时间查看这个问题,就搁置了很久,今天又遇到了这个问题,决定吧这个问题高清楚 先来起个http服务用来测试 kubectl run t-server --image vinkdong/defaultbackend:1.4 --overrides='{"spec":{"template":{"spec":{"nodeName":"vk005"}}}}' 在两个节点上启动测试POD,拆成两个窗口执行 kubectl run t-04 -ti --image vinkdong/net-tools bash --overrides='{"spec":{"template":{"spec":{"nodeName":"vk004"}}}}' kubectl run t-05 -ti --image vinkdong/net-tools bash --overrides='{"spec":{"template":{"spec":{"nodeName":"vk005"}}}}' 效果如图显示t-04无法访问在vk005上的的服务 开始查找问题 根据经验检查Kernel IP forwarding # check that ipv4 forwarding is enabled sysctl net.ipv4.ip_forward # 0 means that forwarding is disabled net.ipv4.ip_forward = 1 sysctl -w net.ipv4.ip_forward=1 测试之后还是无法访问 检查Bridge-netfilter # check that bridge netfilter is enabled sysctl net. »

在主机上安装prometheus

昨天将gitlab迁到主机上,从感觉上性能有了一些提升,今天尝试将prometheus也运行到主机上。 首先要确认在主机上可以访问集群的内网ip,如果用rancher搭的k8s集群默认是不能访问的。用kubeadm则一般是可以的,简单的访问一个svc就可以判断出来。 当确认能够访问内网ip后就可以开始下边的步骤了 下载prometheus二进制文件 https://prometheus.io/download/#prometheus 在如上连接中可以找到具体的下载连接 下载完成后解压,并将原有的配置文件粘贴到prometheus.yml中 创建文件夹 mkdir -p /var/run/secrets/kubernetes.io/serviceaccount/ 将一个具有和cluster-admin相同读权限的token放入此文件夹中 echo your-token > /var/run/secrets/kubernetes.io/serviceaccount/token truncate -s-1 /var/run/secrets/kubernetes.io/serviceaccount/token 将ca.crt也放入次文件夹中,如果不知道文件在哪,随意进入一个pod中进入该目录即可找到 echo your-ca-cert > /var/run/secrets/kubernetes.io/serviceaccount/ca.crt 将kubernetes.default.svc放入hosts文件中,prometheus有时会使用这个地址,如果没有添加解析则会出现no host之类的错误,下边的ip同样可以随意进入一个pod中,选择环境变量KUBERNETES_SERVICE_HOST的值 echo 10.233.0.1 kubernetes.default.svc >> /etc/hosts 启动prometheus测试 export KUBERNETES_SERVICE_PORT=443 export KUBERNETES_SERVICE_HOST=10.233.0.1 ./prometheus 访问主机ip:9090查看target是否都正常 正常之后就可以将prometheus放入到service中 cat >/etc/systemd/system/prometheus.service<<EOF [Unit] Description=auto run prometheus [Service] Environment='KUBERNETES_SERVICE_PORT=443' Environment='KUBERNETES_SERVICE_HOST=10.233.0.1' Environment='ARGS1=--config.file /app/prometheus-2.6.0.linux-amd64/prometheus.yml' Environment='ARGS2=--storage.tsdb.path /data/monitoring/prometheus' Type=simple ExecStart=/app/prometheus-2.6.0.linux-amd64/prometheus $ARGS1 $ARGS2 Restart=always KillMode=process RestartSec=1 User=root [Install] WantedBy=multi-user. »

Gitlab从容器迁移到主机

容器虽然很好用,但在某些低配的机器上也会成为性能的瓶颈,gitlab的反应越来越慢,申请了一台中配的主机,打算将gitlab迁移到这台主机独占资源 首选确定现在使用的gitlab版本,在gitlab package中搜索这个版 https://packages.gitlab.com/app/gitlab/gitlab-ce/search,点进去可以找到安装命令,在安装前先装一下依赖 安装依赖 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates 安装上述的搜索结果执行命令,这里已ubutun16.04+gitlab11.4.7为例 curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash LC_CTYPE="zh_CN.UTF-8" LC_ALL="en_US.UTF-8" EXTERNAL_URL="http://gitlab.cf.vk.vu" apt-get install gitlab-ce=11.4.7-ce.0 耐心等待安装完成,安装完成后访问主机ip能打开重置密码界面说明安装完毕,接下来迁移数据库,原来使用mysql数据库,现在打算使用psql。 安装pgloader pgloader放在postgresql的mirror源中,先添加源 sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' sudo apt-get update 安装pgloader,gitlab要去3.4.1+,安装过程中要确认一下是不是3.4.1以上版本 apt-get install pgloader 开始迁移数据库 先关闭gitlab sudo gitlab-ctl stop 启动unicorn和psql sudo gitlab-ctl start unicorn sudo gitlab-ctl start postgresql 创建配置文件 »