【CI/CD】Rancher CD过程--20230906

news2025/1/11 8:19:29

gitlab设定CICD的变量

在这里插入图片描述

  1. HARBOR_PASSWORD:密码
  2. HARBOR_USER:工号
  3. K8S_TOKEN:Bearer + rancher key
    在这里插入图片描述
  4. K8S_WORKLOAD_URL:选择【View in API】的URL,并非workload的URL。
    在这里插入图片描述
    在这里插入图片描述

准备json.txt

  1. 选择workload,进入【View in API】
    在这里插入图片描述

  2. right panel >> click edit
    在这里插入图片描述

  3. Move to buttom , and click “Show Request”
    在这里插入图片描述

  4. Copy the highlight area from “-d” parameter content
    在这里插入图片描述

  5. Create json.txt file and paste the content
    在这里插入图片描述

  6. 记得修改image和 “cattle.io/timestamp”: “CHANGEME”。

{
    "actions": {
        "pause": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django?action=pause",
        "redeploy": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django?action=redeploy",
        "resume": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django?action=resume",
        "rollback": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django?action=rollback"
    },
    "annotations": {
        "cattle.io/timestamp": "CHANGEME"
    },
    "baseType": "workload",
    "containers": [
        {
            "allowPrivilegeEscalation": false,
            "image": "harbor-k8s.wzs.wistron.com.cn/season/training_platform_django:0.0.8-build36",
            "imagePullPolicy": "IfNotPresent",
            "initContainer": false,
            "name": "training-platform-django",
            "ports": [
                {
                    "containerPort": 8000,
                    "dnsName": "training-platform-django-nodeport",
                    "hostPort": 0,
                    "kind": "NodePort",
                    "name": "8000tcl",
                    "protocol": "TCP",
                    "sourcePort": 0,
                    "type": "/v3/project/schemas/containerPort"
                }
            ],
            "privileged": false,
            "readOnly": false,
            "resources": {
                "limits": {
                    "cpu": "1",
                    "memory": "1000Mi"
                },
                "requests": {
                    "cpu": "1",
                    "memory": "1000Mi"
                },
                "type": "/v3/project/schemas/resourceRequirements"
            },
            "restartCount": 0,
            "runAsNonRoot": false,
            "stdin": true,
            "stdinOnce": false,
            "terminationMessagePath": "/dev/termination-log",
            "terminationMessagePolicy": "File",
            "tty": true,
            "type": "/v3/project/schemas/container"
        }
    ],
    "created": "2023-06-27T13:13:37Z",
    "createdTS": 1687871617000,
    "creatorId": null,
    "deploymentConfig": {
        "maxSurge": 1,
        "maxUnavailable": 0,
        "minReadySeconds": 0,
        "progressDeadlineSeconds": 600,
        "revisionHistoryLimit": 10,
        "strategy": "RollingUpdate"
    },
    "deploymentStatus": {
        "availableReplicas": 1,
        "conditions": [
            {
                "lastTransitionTime": "2023-06-27T13:13:37Z",
                "lastTransitionTimeTS": 1687871617000,
                "lastUpdateTime": "2023-08-24T05:46:46Z",
                "lastUpdateTimeTS": 1692856006000,
                "message": "ReplicaSet \"training-platform-django-5dc8b9dc9c\" has successfully progressed.",
                "reason": "NewReplicaSetAvailable",
                "status": "True",
                "type": "Progressing"
            },
            {
                "lastTransitionTime": "2023-09-05T09:48:01Z",
                "lastTransitionTimeTS": 1693907281000,
                "lastUpdateTime": "2023-09-05T09:48:01Z",
                "lastUpdateTimeTS": 1693907281000,
                "message": "Deployment has minimum availability.",
                "reason": "MinimumReplicasAvailable",
                "status": "True",
                "type": "Available"
            }
        ],
        "observedGeneration": 67,
        "readyReplicas": 1,
        "replicas": 1,
        "type": "/v3/project/schemas/deploymentStatus",
        "unavailableReplicas": 0,
        "updatedReplicas": 1
    },
    "dnsConfig": {
        "type": "/v3/project/schemas/podDNSConfig"
    },
    "dnsPolicy": "ClusterFirst",
    "hostIPC": false,
    "hostNetwork": false,
    "hostPID": false,
    "id": "deployment:season:training-platform-django",
    "labels": {
        "workload.user.cattle.io/workloadselector": "deployment-season-training-platform-django"
    },
    "links": {
        "remove": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django",
        "revisions": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django/revisions",
        "self": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django",
        "update": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django",
        "yaml": "https://rancher-wzsarm.wistron.com/v3/project/local:p-vhqv2/workloads/deployment:season:training-platform-django/yaml"
    },
    "name": "training-platform-django",
    "namespaceId": "season",
    "paused": false,
    "projectId": "local:p-vhqv2",
    "publicEndpoints": [
        {
            "addresses": [
                "10.41.241.111",
                "10.41.241.112",
                "10.41.241.113",
                "10.41.241.114",
                "10.41.241.115",
                "10.41.241.116"
            ],
            "allNodes": false,
            "hostname": "training-platform-django.k8sprd-wzs.k8s.wistron.com.cn",
            "ingressId": "season:training-platform-django-ingress",
            "nodeId": null,
            "podId": null,
            "port": 80,
            "protocol": "HTTP",
            "serviceId": "season:ingress-053ebdc075a82cf5efbe1ac16b822ab4"
        },
        {
            "addresses": [
                "10.41.241.111"
            ],
            "allNodes": true,
            "ingressId": null,
            "nodeId": null,
            "podId": null,
            "port": 30481,
            "protocol": "TCP",
            "serviceId": "season:training-platform-django-nodeport"
        }
    ],
    "restartPolicy": "Always",
    "scale": 1,
    "scheduling": {
        "scheduler": "default-scheduler"
    },
    "selector": {
        "matchLabels": {
            "workload.user.cattle.io/workloadselector": "deployment-season-training-platform-django"
        },
        "type": "/v3/project/schemas/labelSelector"
    },
    "state": "active",
    "terminationGracePeriodSeconds": 30,
    "transitioning": "no",
    "transitioningMessage": "",
    "type": "deployment",
    "uuid": "ab30eb79-f594-4de1-a615-b042b011b02f",
    "workloadAnnotations": {
        "deployment.kubernetes.io/revision": "12",
        "field.cattle.io/creatorId": "u-mp27e6gufb"
    },
    "workloadLabels": {
        "cattle.io/creator": "norman",
        "workload.user.cattle.io/workloadselector": "deployment-season-training-platform-django"
    }
}

修改.gitlab-ci.yml

format

update:
  stage: deploy
  image: harbor.wistron.com/base_image/alpine:3.10
  before_script:
    - apk add curl
    - export CI_JOB_TIMESTAMP=$(date +"%s")
  tags:
    - prd-runner02  # select your runner
  script:
    - MOVE TO YOUR JSON.TXT PATH
    - sed -i s/CHANGEME/$CI_JOB_TIMESTAMP/g json.txt
    - curl -H "Authorization:${K8S_TOKEN}" -H "Content-Type:application/json" -d "@json.txt" -X PUT ${K8S_WORKLOAD_URL}

我的代码.gitlab-ci.yml

variables:
  DOCKER_IMAGE_NAME: training_platform_django
  DOCKER_IMAGE_TAG: 0.0.8

 
  
services:
  - name: harbor-k8s.wzs.wistron.com.cn/base_image/docker:stable
    entrypoint: []
    command: ["--insecure-registry=harbor-k8s.wistron.com.cn"]

stages:
  - docker_build
  - docker-update

docker-build:
  image: harbor-k8s.wzs.wistron.com.cn/base_image/docker:stable
  stage: docker_build
  tags: 
    - wzs-runner01
  script:
    - docker info
    - echo $DOCKER_IMAGE_NAME
    - echo $DOCKER_IMAGE_TAG
    - docker build -t $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG .
    - docker tag $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG harbor-k8s.wzs.wistron.com.cn/season/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG-build$CI_PIPELINE_IID
    - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER"  --password "$HARBOR_PASSWORD" harbor-k8s.wzs.wistron.com.cn
    - docker push harbor-k8s.wzs.wistron.com.cn/season/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG-build$CI_PIPELINE_IID



docker-update:
  stage: docker-update
  image: harbor.wistron.com/base_image/alpine:3.10
  before_script:
    - apk add curl
    - export CI_JOB_TIMESTAMP=$(date +"%s")
  tags:
    - wzs-runner01
  script:
    - sed -i s/CHANGEME/$CI_JOB_TIMESTAMP/g json.txt
    - curl -H "Authorization:${K8S_TOKEN}" -H "Content-Type:application/json" -d "@json.txt" -X PUT ${K8S_WORKLOAD_URL}

gitlab pipeline

显示成功
在这里插入图片描述

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

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

相关文章

用户案例 | 蜀海供应链基于 Apache DolphinScheduler 的数据表血缘探索与跨大版本升级经验

导读 蜀海供应链是集销售、研发、采购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业。2021年初,蜀海信息技术中心大数据技术研发团队开始测试用DolphinScheduler作为数据中台和各业务产品项目的任务调度系统工具。本文主要分享了蜀海供应链在海…

Linux——(第五章)用户管理

目录 一、概述 二、基本操作 1.添加用户 2.指定/修改密码 3.删除用户 4.查询用户信息 5.切换用户 6.查看创建了那些用户 7.查看登录用户信息 8.设置普通用户具有root权限 9.用户组 10.修改组 11.用户和组的相关文件 一、概述 Linux系统是一个多用户多任务的操作系…

Ubuntu下QT操作Mysql数据库

本篇总结一下一下Ubuntu下QT操作Mysql数据库。 目录 1. 启动Mysql数据库服务器 2.查看QT支持的数据库驱动 3.连接数据库 4. 增加表和记录 5. 删除记录 6. 修改记录 7. 查询记录 8.完整代码和运行效果 常见错误总结: (1) 数据库服务没启动报错信息 (2) 有…

Java实现WebSocket客户端和服务端(简单版)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

自动驾驶(apollo)

💓博主csdn个人主页:小小unicorn 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识 自动驾驶技术 引言自动驾驶的基本原理自动驾驶的技术挑战自动驾驶的潜在影响结…

[BSidesCF 2019]Futurella 1

外星语? 看到这个,我第一时间就是想复制百度一下看是不是什么新编码 结果… 你会发现你粘贴的时候出现的是英文,里面还带着flag 破案 查看源代码 发现根本就没有什么外星语,可能就是style.css在作祟 完整复制内容 Resistanc…

蓝牙协议栈BLE

前言 这阵子用到蓝牙比较多,想写一个专栏专门讲解蓝牙协议及其应用,本篇是第一篇文章,讲解低功耗蓝牙和蓝牙协议栈。 参考网上各大神文章,及瑞萨的文章,参考GPT,并且加入了一些本人的理解。 图片部分源自…

国内的几款强大的智能—AI语言模型

1、Tomchat :Tomchat https://www.tomchat.uk 支持gp4 支持 midjourny绘画 AI绘画功能:点我 介绍 1、4聊天 2、AI绘画 3、头像制作 1、国内百度研发的,文心一言: https://yiyan.baidu.com/welcome 大家如果像我的界面一样有【…

基于SSM的校园驿站管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Nebula数据库安装

1、什么是nebula NebulaGraph是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 2、利用docker-compose安装Nebula数据库 1、前提条件 主机中安装了docker主机中安装了Docke…

opencv旋转图像

0 、使用旋转矩阵旋转 import cv2img cv2.imread(img.jpg, 1) (h, w) img.shape[:2] # 获取图像的宽和高# 定义旋转中心坐标 center (w / 2, h / 2)# 定义旋转角度 angle 90# 定义缩放比例 scale 1# 获得旋转矩阵 M cv2.getRotationMatrix2D(center, angle, scale)# 进行…

STM32使用FAT文件系统-常见概念、代码走读

fat文件系统的所有外部接口都在ff.h中 格式化 挂载 使用文件系统的第一步,就是挂载。 函数原型:FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt); /* Mount/Unmount a logical drive */ static FATFS fs; FRESULT fres f_mo…

Lenovo联想拯救者笔记本Legion Y7000P IRH8 2023款(82YA)原装出厂Win11系统镜像

自带硬件设备的所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小:12.5GB 链接:https://pan.baidu.com/s/1a2lpGlwiJvCF7e0feN2QbA?pwdn4n6 提取码&a…

ELK集群搭建流程(实践可用)

一、概述 ELK 是一个由三个开源软件工具组成的数据处理和可视化平台,包括 Elasticsearch、Logstash 和 Kibana。这些工具都是由 Elastic 公司创建和维护的。 Elasticsearch 是一个分布式的搜索和分析引擎,可以将大量数据存储在一个或多个节点上&#xf…

日常开发小点汇总(2)之防止网络不佳,获取不到css,页面logo做法

防止网络不佳&#xff0c;获取不到css&#xff0c;页面logo做法 <div><a href"//www.baidu.com" class"logo">百度</a></div>.logo {display: inline-block;width: 256px;height: 0;background: url(./logobai.png);background-r…

AndroidStudio最下方显示不出来Terminal等插件

File->Settings->Plugins 然后在上面的输入框中输入Terminal&#xff0c;并将最右侧的对勾打上即可。 安装即可

【快应用】二级页面如何携带参数返回一级页面?

【关键词】 快应用、router、onBackPress 【问题背景】 页面栈有A、B两个页面&#xff0c;怎么在B页面中调A页面的方法或传参&#xff1f;场景是&#xff1a;A页面是列表页&#xff0c;B页面是详情页&#xff0c;B页面状态改变后返回A页面状态也要改变。 【解决方法】 在onB…

ABB 3BHB003688R0101接口模块

通信接口&#xff1a;3BHB003688R0101 接口模块通常具有各种通信接口&#xff0c;例如以太网、串口、CAN总线等&#xff0c;以便与其他设备和系统进行数据交换和通信。 数据传输&#xff1a;它通常用于将数据、信号或控制命令从一个设备传输到另一个设备&#xff0c;以实现设备…

电商系统架构设计系列(十一):在电商的交易类系统中,如何正确地使用 Redis 这样的缓存系统呢?需要考虑哪些问题?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;在电商的交易类系统中&#xff0c;如何正确地使用 Redis 这样的缓存系统呢&#xff1f;需要考虑哪些问题&#xff1f; 这篇文章&#xff0c;我们来聊聊。 引言 我们知道&#xff0c;大部分面向公众用户的互联网系统&a…

LeetCode 202 快乐数

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 法一&#xff1a;哈希 使用哈希表循环判断每次经过平方和的数&#xff0c;如果为1则直接返回true&#xff0c;若之前存在过但不为1则直接返回false 代码 class Solution { public:// 计算…