1.基本概念 上节在k8s中部署了harbor和ldap,本节将部署harbor使用openLDAP验证,部署方式与之前相同,只是改了adminserver-cm.yaml的AUTH_MODE: "ldap_auth".另外harbor配置ldap登录非必须,按需. 2.部署 下载项目 git clone https://github.com/dotbalo/helm.git [root@k8s-master01 ci]# cd harbor-helm-ldap/ [root@k8s-…
1.基本概念 Jenkins在DevOps工具链中是核心的流程管理中心,负责串联系统的构建流程.测试流程.镜像制作流程.部署流程等,在持续集成中常用到的工具如下: Maven:源代码编译工具 RobotFramework:自动化测试工具 NewMan:接口自动化测试工具 SonarQube Scanner:源代码扫描工具 GitLab:代码仓库工具 Docker:镜像制作工具 kubectl:K8S工具 公司目前使用的流程是通过Redmine和GitLab中创建项目.开发提交代码.触发jenki…
1.基本概念 此次安装的有Jenkins.Gitlab.Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署的openLDAP实现统一认证.之后将进行简单持续集成持续部署的演示,最后再结合我公司的项目进行实战操作,应付出现的各种使用场景. 2.使用Helm安装redmine [root@k8s-master01 ci]# git clone https://github.com/dotbalo/helm.…
1.基本概念 对于复杂的应用中间件,需要设置镜像运行的需求.环境变量,并且需要定制存储.网络等设置,最后设计和编写Deployment.Configmap.Service及Ingress等相关yaml配置文件,再提交给kubernetes进行部署.这些复杂的过程将逐步被Helm应用包管理工具实现. Helm是一个由CNCF孵化和管理的项目,用于对需要在k8s上部署复杂应用进行定义.安装和更新.Helm以Chart的方式对应用软件进行描述,可以方便地创建.版本化.共享和发布复杂的应用软件. Cha…
1.基本概念 使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了openLDAP. 注意:我公司使用的gitlab是独立于k8s集群之外的. 2.安装部署 最一开始使用的是helm安装gitlab,网上的文档应该全部都是使用的这个chart:https://github.com/helm/charts/tree/master/stable/gitlab-ce 但是这个c…
前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn.git的接入,今天我们再下一城接入jenkins. 前情提要:LDAP系列文章 LDAP落地实战(一):OpenLDAP部署及管理维护 LDAP落地实战(二):SVN集成OpenLDAP认证 LDAP落地实战(三):GitLab集成OpenLDAP认证 jenkins集成OpenLDAP认证 1. 安装LDAP插件 使用LDAP认证需要安装LDAP插件,安装插件有两种方法: 方法一:后台插件管理里直接安装 优点:简单方便,不需要考…
目录 1.Helm的概念和架构 2.部署Helm (1)下载helm (2)部署Tiller 3.helm的使用 4.chart 目录结构 5.chart模板 6.定制安装MySQL chart (1)chart安装准备 (2)定制化安装chart (3)升级和回滚release 7.自定义chart (1)创建chart (2)调试chart (3)安装chart (4)将chart添加到仓库 8.总结 1.Helm的概念和架构 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.U…
1.基本概念 为了方便管理和集成jenkins,k8s.harbor.jenkins均使用openLDAP统一认证. 2.部署openLDAP 此处将openLDAP部署在k8s上,openLDAP可以在集群之外存在,不一定非要在k8s上部署openLDAP. 根据之前的文档,openLDAP使用GFS进行数据持久化. 下载对应的openLDAP文件 git clone https://github.com/dotbalo/k8s.git cd k8s/openldap 创建openLDAP […
在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易绕开界面向服务端提交数据,所以服务端…
Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并部署两个应用来演示 Ingress 的具体使用. 阅读本文前你需要先掌握 Helm 和一些 Kubernetes 服务暴露的相关知识点,如果你还不了解可以先读一读我之前写的 「Helm 入门指南」和「浅析从外部访问 Kubernetes 集群中应用的几种方式」这两篇文章. 部署 Ingress Co…
1.镜像下载 所有节点下载镜像 docker pull kibana: docker tag kibana: docker.elastic.co/kibana/kibana: docker pull dotbalo/fluentd-elasticsearch:v2.0.4 docker pull dotbalo/elasticsearch:v5.6.4 docker tag dotbalo/fluentd-elasticsearch:v2.0.4 k8s.gcr.io/fluentd-elast…
1.基本概念 升级之后所有的containers会重启,因为hash值会变. 不可跨版本升级. 2.升级Master节点 当前版本 [root@k8s-master01 ~]# kubeadm version kubeadm version: &version.Info{Major:", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTr…
1.下载文件 https://github.com/dotbalo/k8s/ 2.创建namespace kubectl create namespace public-service 如果不使用public-service,需要更改所有yaml文件的public-service为你namespace. sed -i "s#public-service#YOUR_NAMESPACE#g" *.yaml 3.创建持久化pv 此处采用的是静态PV方式,后端使用的是NFS,为了方便扩展可以使…
说明:部署的过程中请保证每个命令都有在相应的节点执行,并且执行成功,此文档已经帮助几十人(仅包含和我取得联系的)快速部署k8s高可用集群,文档不足之处也已更改,在部署过程中遇到问题请先检查是否遗忘某个步骤,文档中每个步骤都是必须的. 经测验此文档也适合高可用部署k8s v.12,只需修改对应版本号就可. 1.部署架构 详细架构: 2.基本配置 主机名 IP地址 说明 组件 k8s-master01 ~ 03 192.168.20.20 ~ 22 master节点 * 3 keepalived.n…
1.准备工作 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标签 [root@k8s-master01 ~]# kubectl label node k8s-node01 storagenode=glusterfs node/k8s-node01 labeled [root@k8s-master01 ~]# kubectl label node k8s-node02 stor…
1.基本概念 RBAC(Role-Based Access Control,基于角色的访问控制)在k8s v1.5中引入,在v1.6版本时升级为Beta版本,并成为kubeadm安装方式下的默认选项,相对于其他访问控制方式,新的RBAC具有如下优势: - 对集群中的资源和非资源权限均有完整的覆盖  整个RBAC完全由几个API对象完成,同其他API对象一样,可以用kubectl或API进行操作  可以在运行时进行调整,无需重启API Server 要使用RBAC授权模式,需要在API Serve…
1.traefik traefik:HTTP层路由,官网:http://traefik.cn/,文档:https://docs.traefik.io/user-guide/kubernetes/ 功能和nginx ingress类似. 相对于nginx ingress,traefix能够实时跟Kubernetes API 交互,感知后端 Service.Pod 变化,自动更新配置并热重载.Traefik 更快速更方便,同时支持更多的特性,使反向代理.负载均衡更直接更高效. k8s集群部署Trae…
1. 集群调度简介 2. 调度过程 2.1 调度过程概览 2.2 Predicate(预选) 2.3 Priorities(优选) 3. 调度的亲和性 3.1 node亲和性 3.1.1 node亲和性简介 3.1.2 node亲和性硬策略示例 3.1.3 node亲和性软策略示例 3.2 pod亲和性 3.2.1 pod亲和性/反亲和性简介 3.2.2 pod亲和性/反亲和性示例 3.3 亲和性/反亲和性调度策略比较 4. Taint(污点)和Toleration(容忍) 4.1 Taint和…
 package com.roocon.thread.ta1; public class Sequence { private MyLock lock = new MyLock(); private int value; public int getNext() { lock.lock(); value++; lock.unlock(); return value; } public static void main(String[] args) { Sequence s = new Seque…
我们在前面应该写过类似的代码 for i in [1,2,3,4,5]: print(i) for in 语句看起来很直观,很便于理解,比起C++或Java早起的 ; i<n;i++) printf("d\n",a[i]) 是不是简洁清晰的多.但是我们有没有想过Python在处理for in语句的时候,具体发生了什么吗?什么样的对象可以被for in用来枚举呢? 所以,这一节我们就深入到Python的容器类型实现底层看一看,了解一下迭代器和生成器. 前面用过的容器.可迭代对象和迭…
安装Kubernetes “本书准备了4台虚拟机(CentOS 7.0系统)用于部署Kubernetes运行环境,包括一个Etcd.一个Kubernetes Master和三个Kubernetes Node” 由于各种原因限制,今天是第三天,kubernetes依然无法运行. 根据kubernetes官网,安装方案有4种, 单节点的安装方式minikube方案(由于网络原因,建议用阿里的minikube) https://www.cnblogs.com/lakeslove/p/10898174.…
自己主动化集成測试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及详细实践,我们都知道,自己主动化測试是持续集成不可缺少的一部分,基本上,没有自己主动化測试的持续集成,都非常难称之为真正的持续集成.我们希望持续集成可以尽早的暴露问题.但这远非配置一个 Hudson/Jenkinsserver那么简单,仅仅有真正用心编写了较为完整的測试用例.并一直维护它们,持续集成才干孜孜不倦地执行測试并第一时间报告问题. 自己主动化測试这个话题非常大,本文不想争论測试先行还是后行,这里强调的是測…
富文本编辑框,选择UEditor 下载地址:http://ueditor.baidu.com/website/download.html 使用说明:http://fex.baidu.com/ueditor/ 使用 下载下来过后,将指定的几个文件和文件夹拷贝到项目static下 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&g…
上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP认证 修改配置文件gitlab.yml ldap: enabled: true servers: main: label: 'LDAP' host: 'ldap.blz.netease.com' port: 389 uid: 'uid' method: 'plain' bind_dn: 'uid=a…
1.基本配置 基本配置.内核升级.基本服务安装参考https://www.cnblogs.com/dukuan/p/10278637.html,或者参考<再也不踩坑的Kubernetes实战指南>第一章第一节 2.Kubernetes组件安装 所有节点安装Kubeadm.Kubectl.kubelet -.x86_64 kubectl--.x86_64 kubelet--.x86_64 所有节点启动Docker [root@k8s-master01 ~]# systemctl enable -…
1. 基本说明 本文章将演示CentOS 8二进制方式安装高可用k8s 1.17.x,相对于其他版本,二进制安装方式并无太大区别. 2. 基本环境配置 主机信息 192.168.1.19 k8s-master01 192.168.1.18 k8s-master02 192.168.1.20 k8s-master03 192.168.1.88 k8s-master-lb 192.168.1.21 k8s-node01 192.168.1.22 k8s-node02 系统环境 [root@k8s-m…
前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产. 目录 主流云服务容器服务介绍  亚马逊AWS  微软Azure  阿里云  腾讯云  Docker+ Kubernetes已成为云计算的主流  什么是Kubernetes(k8s)  Kubernetes正在塑造应用程序开发和管理的未来  Docker+ Kubernetes已成为云计算的主流 …
1. Ratel是什么? Ratel是一个Kubernetes资源平台,基于管理Kubernetes的资源开发,可以管理Kubernetes的Deployment.DaemonSet.StatefulSet.Service.Ingress.Pods.Nodes.Role.ClusterRole.Rolebinding.ClusterRoleBinding.Secret.ConfigMap.PV.PVC等.主要用于以图形化的方式管理k8s的各类资源,提高维护k8s集群的效率及降低出错的概率. 2.…
一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9bpVKOry 项目资源分配(数据库.中间件除外): 二.部署镜像仓库 1) 部署docker-compose,然后参考下文部署docker. $ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/dock…
Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 <key keyCode="KEYCODE_TV" component="com.thisway.app_0001_leddemo/.MyBroadcastReceiver" /> 1.2 APP应该注册广播消息的接收者 1.2.1 编写BroadcastRe…