分类目录归档:DevOps

K8S_应用_Prometheus监控


介绍

此图说明了Prometheus的架构及其生态系统组件:

image-20221122102646122

部署

通过K8S部署,包含node、server、alertmanager和grafana。通过kubectl apply -f [文件名]运行即可。

根据所列出的配置文件部署进行部署,则

  • 30001端口为altermanager
  • 30003端口为Prometheus Server UI
  • 30005端口为Grafana UI

node

使用daemonSet实现每个Node节点均部署node-exporter。server通过自动发现拉取各Node节点暴露出的指标。

node-exporter.yaml

apiVersion:

Read more

K8S_日常问题


证书过期

[root@k8s-master ~]$ kubectl get node 
Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-09-15T10:27:07+08:00 is after 2022-09-15T02:17:20Z
[root@k8s-master ~]$ kubeadm certs renew all  # 更新证书,更新完后会提示重启kube-apiserver, kube-controller-manager, 

Read more

K8S_基础设施_Ingress服务暴露


K8S服务暴露介绍

首先简要了解一下K8S中提供的暴露服务的三种方式

  1. LoadBlancer

该方式是kubernetes深度结合云平台的一个组件。当集群运行在云厂商提供的云平台上时,常用该方式对外暴露服务(收费)。

  1. NodePort

通过在集群的每个NodePort上暴露端口,访问指定端口即可访问到指定服务。一般使用这种方式时,都是选择固定端口,但服务一多就容易产生冲突或者不方便管理的情况。

  1. Ingress(方式)

  2. Ingress Controller

    Ingress Controller 实质上可以理解为是个监视器,Ingress Controller 通过不断地跟 ku

Read more

Jenkins_集成_与OpenLDAP集成实现内部应用权限管理


实现效果

Jenkins集成OpenLDAP使其指定账号只能对指定Job进行操作。

插件安装

Jenkins中安装如下两个插件:

  1. Role-based Authorization Strategy,配置用户权限
  2. LDAP,支持LDAP用户登录

系统配置

Job页面

配置首页只有目录,这些目录的名称是有规范的,以Dir开头,前后端标识,正式测试端标识,以'_'分隔,用于权限管控时配置。

这些具体的Job属于指定的目录,名称也有规范。项目名开头,前后端标识,正式测试端标识,以'_'分隔。前端Job保存在前端目录中,也是以这种方式。

基于角色的授权策略

Manage Roles

配置权限,

Read more

Jenkins_CICD_实现构建即自动测试


需求 & 背景

将自动化测试集成到Jenkins中,最终实现每次构建部署时自动完成基础测试

因为在日常的部署中,有出现Pod和容器正常启动,但运行报错,导致服务不可用的情况。而CI/CD的频率较高,单个项目一天可能更新三到四次,从成本角度来说无法实现每次更新后都有测试工程师进行覆盖。这种情况从运维角度来解决无非是监控指定端口能否访问,但这样实际是脱离业务的,毕竟如果用户访问不了,一切白搭。

翻看了百度和Google的资料,并没有发现能解决该痛点的解决方案。最常见的方案通常是测试工程师从他们的windows本机部署Jenkins使用脚本来完成测试(环境在本机已经配置好)。参考过同事,他

Read more

K8S_基础设施_YAML模板


概述

该文档主要用于记录本人常用的Yaml文件模板

Kubernetes

RBAC

---
apiVersion: v1  # 该模板与template-deployment和template-pv并不关联
kind: ServiceAccount  # 创建一个serviceaccount命令,每个命名空间被创建时其实都会有一个default的serviceaccount.
metadata:
  name: prometheus  # 令牌的名称,该名称是需要被statefulset或者deployment引用的,与containers同级,表达为serviceAccountName: p

Read more

Sonarqube_实现项目质量管理


概述

SonarQube是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。 该文档选用sonarqube长期更新版本8.9.6 LTS。版本推荐与文章示例一致,作者尝试过使用8.9.8-community版本,无法正常启动。 数据库选用postgresQL,因为后续版本Sonarqube不再支持Mysl。 参考Sonarqube官方文档

部署

整个项目完全采用kubernetes进行部署,根据列出的Yaml文件及步骤,调整镜像及持久卷供应就可以实现部署。

目录结构

$ ll /usr/local/wlhiot/container/kubernetes/basic/sonarqube

Read more

Jenkins_集成_与dingtalk集成实现构建即推送钉钉消息


与dingtalk(钉钉)集成

  1. 下载'DingTalk'插件:点击Jenkins'系统管理','插件管理',搜索'DingTalk'
  2. 钉钉添加机器人:进入一个群组,点击'群设置',点击'智能群助手'后'添加机器人',选择'自定义(通过webhook接入自定义服务)' 钉钉创建机器人
  3. 修改'DingTalk'插件配置:在Jenkins'系统管理','系统管理'中,修改配置如下: Jenkins系统配置
  4. 修改Job配置以根据需要自动发送钉钉推送,自定义内容遵循markdown格式 Job任务配置
  5. 实现效果Job集成钉钉实现效果

Read more

Jenkins_CICD_Pipeline工作流


虽然Jenkins推荐的最佳实践是使用Pipeline,但由于Pipeline是将Jenkginsfile侵入到代码中。当项目数量较多时,其实不太方便管理,所以我还是倾向将所有构建由Jenkins来完成(我收回这句话,所以的Jenkinsfile可以统一在一个项目中进行管理,且根据项目不同使用不同的Jenkinsfile),但我还是示范一个Pipeline让大家体验一下。不推荐直接用我的模板,每个公司的流程可能略有不同,需要根据实际情况调整。

pipeline {
    agent any
    tools {
        maven "Maven3.8.2"
  

Read more

Jenkins_CICD_实现CI/CD流程


部署

所有服务均以docker或者kubernetes运行。

$ docker run -d --name jenkins-server -p 8005:8080 -v /usr/local/wlhiot/mount/jenkins:/var/jenkins_home 192.168.254.29:8001/library/jenkins:2.289.3

在宿主机创建1000权限的目录并挂载,正常运行后浏览器输入127.0.0.1:8005访问Jenkins服务。

查看宿主机的/usr/local/wlhiot/mount/jenkins/secrets/initialAdminPassw

Read more