【K8S】【Jenkins】【CI/CD】【一】交付CI/CD工具至k8s 【待写】

news2024/11/19 15:13:20

1 安装Harbor镜像仓库(之前已部署 ,略)

可参考之前的《Kubernetes业务迁移.pdf》

网站-账号密码

http://gitlab.oldxu.net:30080/users/sign_in    ( root/ admin12345 )
http://sonar.oldxu.net:30080/                  (admin / admin12345)  #初始 admin / admin

2 交付GitLab至K8S (sts、svc、ingress)

Gitlab以容器方式运行,需要持久化如下几个目录中的数据
在这里插入图片描述

#拉取 推送
docker pull gitlab/gitlab-ce:14.6.0-ce.0
docker tag gitlab/gitlab-ce:14.6.0-ce.0 harbor.oldxu.net/ops/gitlab-ce:14.6.0
docker push harbor.oldxu.net/ops/gitlab-ce:14.6.0
#创建 ns 、和docker-registry
kubectl create ns ops

kubectl create secret docker-registry harbor-admin \
 --docker-username=admin \
 --docker-password=Harbor12345 \
 --docker-server=harbor.oldxu.net \
 -n ops

1、 gitlab-sts.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: gitlib
  namespace: ops
spec:
  serviceName: "gitlab-svc"
  selector:
    matchLabels:
      app: gitlab
  template:
    metadata:
      labels:
        app: gitlab
    spec:
      imagePullSecrets: 
      - name: harbor-admin
      
      containers:
      - name: gitlab-ce
        image: harbor.oldxu.net/ops/gitlab-ce:14.6.0
        imagePullPolicy: IfNotPresent
        env:
        - name: GITLAB_ROOT_PASSWORD
          value: "admin123"
        - name: GITLAB_OMNIBUS_CONFIG
          value: |
            external_url "http://gitlab.oldxu.net"
            gitlab_rails['time_zone'] = 'Asia/Shanghai'
            node_exporter['enable'] = false
            redis_exporter['enable'] = false
            postgres_exporter['enable'] = false
            gitlab_exporter['enable'] = false
            grafana['enable'] = false
            grafana['reporting_enabled'] = false
            prometheus['enable'] = false
            prometheus['monitor_kubernetes'] = false
        
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443
        volumeMounts:
        - name: data
          mountPath: /etc/gitlab
          subPath: config
          
        - name: data
          mountPath: /var/opt/gitlab
          subPath: data
               
        - name: data
          mountPath: /var/log/gitlab
          subPath: logs
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteMany"]
      storageClassName: "nfs"
      resources:
        requests:
          storage: 25Gi 

2、 gitlab-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: gitlab-svc
  namespace: ops
spec:
  clusterIP: None
  selector:
    app: gitlab
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443  

3、 gitlab-ingress.yaml

#apiVersion: networking.k8s.io/v1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gitlab-ingress
  namespace: ops
spec:
  ingressClassName: "nginx"
  rules:
  - host: "gitlab.oldxu.net"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: gitlab-svc
          servicePotr: 80
          #service:
          #  name: gitlab-svc
          #  port: 
          #    name: http
    

设置gitlab的界面语言为中文
在这里插入图片描述

3 交付PostgreSQL至K8S (sts 、 svc)

部署说明:
在这里插入图片描述

Sonarqube扫描流程:
1、使用SonarScanner客户端工具将代码源文件以http/https方式推送给Sonarqube服务端;
2、Sonarqube服务端基于ElasticSerach对代码进行分析,而后将分析结果存储至Database;
3、Sonarqube服务端读取Database数据,然后将扫描结果进行前端展示;
所以,安装Sonarqube之前需要先安装依赖的数据库,后期进行漏洞扫描时还需要借助SonarScanner客户端;
#Sonarqube需要PostgreSQL
#下载postgresql镜像
docker pull postgres:13.8
docker tag  621268accecf harbor.oldxu.net/ops/postgres:13.8
docker push harbor.oldxu.net/ops/postgres:13.8

1、 pgsql-sts.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgresql
  namespace: ops
spec:
  serviceName: "pgsql-svc"
  selector:
    matchLabels:
      app: pgsql
  template:
    metadata:
      labels:
        app: pgsql
    spec:
      imagePullSecrets:
      - name: harbor-admin
      
      containers:
      - name: postgresql
        image: harbor.oldxu.net/ops/postgres:13.8
        imagePullPolicy: IfNotPresent
        env:
        - name: POSTGRES_DB
          value: sonardb
        - name: POSTGRES_USER
          value: sonar
        - name: POSTGRES_PASSWORD
          value: "123456"
        ports:
        - containerPort: 5432
        volumeMounts:
        - name: db
          mountPath: /var/lib/postgresql/data
          
  volumeClaimTemplates:
  - metadata:
      name: db
    spec:
      accessModes: ["ReadWriteOnce"]
      storageClassName: "nfs"
      resources:
        requests:
          storage: 20Gi

2、 pgsql-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: pgsql-svc
  namespace: ops
spec:
  clusterIP: None
  selector:
    app: pgsql
  ports:
  - port: 5432

3、检查postgresql

kubectl exec -it -n ops postgresql-0 -- bash
root@postgresql-0:/# psql -Usonar -d sonardb

sonardb=# \l+

在这里插入图片描述

4 交付Sonarqube至K8S (sts、svc、ingress)

#下载sonarqube镜像
docker pull sonarqube:9.7-community
docker tag sonarqube:9.7-community harbor.oldxu.net/ops/sonarqube:9.7
docker push harbor.oldxu.net/ops/sonarqube:9.7

1、 sonarqube-sts.yaml

#需要借助busybox调整内核参数


2、 sonarqube-svc.yaml


3、 sonarqube-ingress.yaml


4、 访问sonarqube

安装中文插件,随后出现install pending, 随后点击 “restart server”
在这里插入图片描述

5 交付Jenkins至K8S (rbac 、 sts 、svc 、 ingress)

#下载 ,打tab ,推送
docker pull jenkins/jenkins:2.346.3-2-lts
docker tag jenkins/jenkins:2.346.3-2-lts harbor.oldxu.net/ops/jenkins:2.346
docker push harbor.oldxu.net/ops/jenkins:2.346

创建RBAC (Jenkins) 01-jenkins-rbac.yaml

# serviceaccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: ops

---
# clusterRole
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins
rules:
  - apiGroups: ["extensions", "apps"]
    resources: ["deployments", "ingresses"]
    verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
  - apiGroups: [""]
    resources: ["services"]
    verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
  - apiGroups: [""]
    resources: ["pods/log", "events"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]

---
# clusterrolebinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins
  namespace: ops
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins
    namespace: ops

02-jenkins-sts.yaml

03-jenkins-svc.yaml

04-jenkins-ingress.yaml

访问Jenkins , 安装插件

[root@master01 04-jenkins]# kubectl exec -it -n ops jenkins-0 -- bash
root@jenkins-0:/# cat /var/jenkins_home/secrets/initialAdminPassword
9c6f0d23cc194970a3e8326708dbabbf

6 制作Jenkins pod template

6.1、maven

 wget https://linux.oldxu.net/settings_docker.xml

[root@node4 maven]# cat Dockerfile 
FROM  maven:3.8.6-openjdk-8

ADD ./settings_docker.xml /usr/share/maven/conf/settings.xml
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime



[root@node4 maven]# ls
Dockerfile  settings_docker.xml

#构建推送
docker build -t harbor.oldxu.net/ops/maven:3.8.6 .
docker push harbor.oldxu.net/ops/maven:3.8.6

6.2、sonar

docker pull emeraldsquad/sonar-scanner:2.3.0
docker tag emeraldsquad/sonar-scanner:2.3.0 harbor.oldxu.net/ops/sonar-scanner:2.3.0
docker push harbor.oldxu.net/ops/sonar-scanner:2.3.0

6.3、NodeJs

cat Dockerfile

FROM centos:7
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN curl --silent --location https://rpm.nodesource.com/setup_14.x |bash -
RUN yum install nodejs gcc-c++ make vim -y && \
    yum clean all
[root@node4 nodejs]# ls
Dockerfile

docker build -t harbor.oldxu.net/ops/nodejs:14.20 .
docker push harbor.oldxu.net/ops/nodejs:14.20

6.4、Docker

docker pull docker:20.10
docker tag docker:20.10 harbor.oldxu.net/ops/docker:20.10
docker push harbor.oldxu.net/ops/docker:20.10

6.5、kubelet

[root@node4 kubelet]# cat kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
FROM centos:7
# 1、调整时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo 'Asia/Shanghai' >/etc/timezone

# 2、添加yum源
ADD ./kubernetes.repo /etc/yum.repos.d/kubernetes.repo

# 3、安装Kubectl
RUN yum makecache && yum install kubectl-1.22.3 -y && \
    yum clean all
[root@node4 kubelet]# ls
Dockerfile  kubernetes.repo

docker build -t harbor.oldxu.net/ops/kubectl:1.22.3 .
docker push harbor.oldxu.net/ops/kubectl:1.22.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Type-C显示器是什么,Type-C显示器的5大优势

在显示器领域内,USB Type-C接口还处于发展阶段,目前已经在新推出的一些高端显示器和旗舰显示器中有配置。USB Type-C接口的出现,将会形成以显示器为核心的桌面解决方案,用户可以把任何笔记本、手机、平板等等的画面转移到一台大屏…

使用sklearn,报错Library not loaded: @rpath/libgfortran.3.dylib

因为需要使用sklearn,去做一些数据分析,所以使用conda命令进行安装 conda install scikit-learn 在安装完成之后,导入,并使用拟合优度R2函数评估,发生如下报错; import sklearn as sk r2 sk.metrics.r2_sc…

怎么安全快速地创建Windows7文件差异备份任务?

​什么是差异备份? 差异备份是什么呢?简单来说,差异备份就是一种数据备份类型,它会帮助我们备份自上次完整备份以来已更改的全部文件。 举个例子,假如我们在星期一进行了一次完整备份,那么星…

有数·智享未来 | 新华三重磅发布绿洲平台3.0

5月10日,紫光股份旗下新华三集团以“有数智享未来”为主题,成功举办绿洲平台3.0新品发布会。全新一代绿洲平台实现内核进阶,以五大技术能力升级、五大行业方案沉淀、六类服务能力保障,三位一体构筑更领先的用数底座、更落地的用数…

ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF

编辑:ll ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF 型号:LT8471IFE#PBF 品牌:ADI/亚德诺 封装:TSSOP-20 批号:2023 引脚数量:20 工作温度:-40C~125C 安装类型:表面…

Protobuf:一种轻量级、高效的数据交换格式,附Java与Python数据交换示例

目录 下载安装Protobuf定义数据格式Java代码序列化Python反序列化 Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的数据交换格式 官方文档:https://protobuf.dev/overview/GitHub:https://github.com/protocolb…

佩戴舒适的蓝牙耳机有哪些?蓝牙耳机佩戴舒适度排名

随着技术的成熟,真无线耳机这个市场竞争也越来越激烈,伴随着TWS真无线耳机快速发展,许多耳机品牌凭借着优质的产品抓住了时代机遇,各家无论是手机厂商还是耳机品牌争相布局真无线耳机市场, 下面笔者整理了几款佩戴舒适…

Towards Open World Object Detection(OWOD)代码复现

参考上一篇博客detectron2-入门安装,然后进行以下操作: 1、首先在OWOD文件目录运行以下代码,完成内部构建 python -m pip install -e ./ 2、数据集准备 首先下载数据集Annotations和JPEGImages:下载链接,需要翻墙,下载方法可以…

苹果手机连接电脑没反应怎么办?都进来看一下!

案例:iPhone连接电脑没反应 【盆友们,想要上传照片到电脑上,但是苹果手机连接电脑没反应是咋回事?】 手机连接电脑没反应会影响到您与电脑之间的数据传输和文件管理。本文将为您介绍解决苹果手机连接电脑没反应问题的方法&#x…

RethinkDB成为Linux基金会的一员

导读日前,RethinkDB项目有了新的动态。Cloud Native Computing基金会(CNCF)宣布它购买了NoSQL分布式文件存储数据库RethinkDB的源代码版权,将授权协议从Affero GPLv3改为Apache v2,并将其捐赠给Linux基金会。 2016年1…

多媒体基础

第九章、多媒体基础 1、多媒体技术基本概念 1.1、音频相关概念 超声波的频率通常在20千赫兹以上,无法被人类的耳朵听到,常用于医疗诊断、非破坏性材料测试、清洗、测量等领域 次声波的频率通常在20赫兹以下,同样无法被人类的耳朵听到&…

失败 深度linux社区版 20.8 编译安装 nvidia-docker,启动Stable Deffision WebUI docker 容器

环境 说明: 深度apt 源中无法直接安装nvidia-docker 下载源码 github地址: GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs 下载最新release https://github.com/NVIDIA/nvidia-docker/archive/refs/tags/…

普通人如何抓住AI这个风口?

​ 要抓住AI这个风口,普通人可以从以下几个方面入手: 1. 学习AI相关知识:可以通过自学、参加培训班、参加线上课程等方式学习AI相关知识,掌握AI的基本原理和应用场景。 2. 参与AI开源社区:可以加入AI开源社区&#…

CVPR 2023 | 目标跟踪新框架:用自回归序列生成的方式训练模型读出目标

如果模型知道目标在哪,那么我们只需要教模型读出目标的位置,而不需要显式地进行分类、回归。对于这项工作,研究者们希望可以启发人们探索目标跟踪等视频任务的自回归式序列生成建模。 自回归式的序列生成模型在诸多自然语言处理任务中一直占…

【Midjourney】Midjourney 的 Prompt 指令类型 ( 画风指令 | 人物细节指令 | 灯光镜头指令 | 艺术家风格指令 )

文章目录 一、Midjourney 的 Prompt 详细指令规则二、Midjourney 的画风指令关键词1、超现实主义2、注重细节描写3、Artstation 画风4、数字绘画风格5、漫画风格6、线条艺术 三、Midjourney 的人物细节描写关键词1、面部特征描写2、身体描写3、生成示例 14、生成示例 2 四、Mid…

实在智能与浙江工商大学官宣战略合作,共建人工智能联合实验室和实习基地

5月10日,实在智能与浙江工商大学正式官宣战略合作,并进行“人工智能联合实验室” “大学生实习实践基地”揭牌仪式。躬身入局共筑人工智能人才生态,这是实在智能和浙江工商大学的共同愿景,也是校企双方深度产学研融合、加速科技型…

从10进制到1000进制:一场数字的盛宴

本篇博客会讲解力扣“1920. 基于排列构建数组”的解题思路,这是题目链接。 先来审下题: 以下是输出示例: 以下是提示: 相信读完题的你已经感到没啥意思了,感觉做这道题就是在浪费时间。但是还是建议你看下去&…

git保姆级教程(概述、理论、指令、创建及代码初始化完整步骤、分支与冲突、遇到的问题)

目录 版本控制安装配置理论部分项目创建及克隆创建全新仓库克隆远程仓库 文件操作理论实操 使用码云分支与冲突实操说明 遇到的问题vscode配置问题vscode克隆慢的问题 后记 版本控制 概述: 版本迭代,更新速度快,于是需要版本管理器。 作用&…

Python大厂经典面试题附答案,提前做好准备

对于大部分Python学习者来说,基础核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全掌握Python,还得靠实践应用。 比如面试的时候,面试官会出其不意的问一些问题,今天给大家分…

浅谈月出月落和月相的计算方法以及替代工具 - 月出月落和月相 API

引言 如果你想知道精确的月出月落时间,又或者你想设计一个月出月落时间查询的应用,又或者你只是好奇点进来了,还是可以过来围观一下涨涨知识,今天想跟大家聊一聊的是月出月落的计算方法以及替代工具 - 月出月落和月相 API 。 月…