gitlab+jenkins+k8s+harbor如何打通运用

现在有用到gitlab+jenkins+k8s+harbor等知识,现在想将他们的运用打通,联合使用,应该怎么做

将 GitLab、Jenkins、Kubernetes 和 Harbor 结合起来,可以构建一个完整的 DevOps 流水线,用于开发、构建、测试和部署应用程序。下面是一个简单的步骤指南:

首先,在 GitLab 上创建一个新的项目,并将其与 Jenkins 集成。在 GitLab 上,您需要为项目创建一个 CI/CD 配置文件 (例如 .gitlab-ci.yml ),以便在代码推送到 GitLab 时触发 Jenkins 构建。

在 Jenkins 中,您需要创建一个新的 Pipeline 项目,并与 GitLab 集成。在 Jenkins 上,您需要使用 Jenkinsfile 定义您的 CI/CD 流水线,包括从 GitLab 获取代码、运行构建、运行测试等操作。

将 Kubernetes 集成到 Jenkins 中,以便在构建成功后将应用程序部署到 Kubernetes 集群。您可以使用 Kubernetes 插件或 kubectl 命令行工具来实现。

最后,将 Harbor 集成到 Jenkins 中,以便在构建成功后将镜像上传到 Harbor 中。您可以使用 Docker 插件或 Docker CLI 工具来实现。
您还需要考虑如何在整个流程中管理和监控日志和度量,以确保您的 DevOps 流水线始终保持健康。这可以使用各种日志记录和监控工具来实现,例如 Prometheus、Grafana、ELK 等等。

请注意,这只是一个概述,并且在实践中可能需要更多的步骤和配置。此外,您还需要确保您的系统配置和安全性策略得到了充分考虑,并根据您的具体需求进行调整。

以下答案引用自GPT-3大模型,请合理使用:

```
或者操作步骤

1、在Gitlab中提交应用代码,并设置Gitlab-CI构建流水线(.gitlab-ci.yml),完成代码构建、分析、部署等过程;

2、Jenkins服务器根据Gitlab提交的代码触发自动构建,然后生成docker镜像;

3、将生成的docker镜像push到harbor仓库;

4、使用K8s将docker镜像部署到K8s集群环境,完成应用发布。

代码及操作步骤:

  1. 在Gitlab上提交代码:

在本地创建一个应用

$ npm init

添加.gitlab-ci.yml文件

image: node:8

stages:

  • build
  • test
  • deploy

build:
stage: build
script:
- npm install

test:
stage: test
script:
- npm test

deploy:
stage: deploy
script:
- echo "Deploying to k8s cluster"

提交代码至Gitlab

$ git add .
$ git commit -m "Add Gitlab CI file"
$ git push origin master

  1. 在Jenkins上配置自动构建任务:

在Jenkins管理界面新建一个Job,配置Gitlab仓库连接和构建触发方式,并在构建脚本中添加如下代码:

拉取代码

git clone https://gitlab.com/%7Byour_repo_name%7D.git

构建Docker镜像

docker build -t {your_docker_image_name}:latest .

  • 你看下这篇博客吧, 应该有用👉 :gitlab+k8s+jenkins+rancher部署
  • 除此之外, 这篇博客: Linux——k8s、Jenkins、Gitlab、Harbor实现CI/CD中的 1.2 k8s连接Harbor 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 创建证书

    PS:在节点服务器和jenkins服务器也需要添加仓库地址!!!!

    [root@master ~]# vim /usr/lib/systemd/system/docker.service
    
    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.40
    [root@master ~]# systemctl  daemon-reload 
    [root@master ~]# systemctl  restart docker
    [root@master ~]# docker login -u admin -p Harbor12345 192.168.1.40
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    [root@master ~]#  cat ~/.docker/config.json
    {
    	"auths": {
    		"192.168.1.40": {
    			"auth": "YWRtaW46SGFyYm9yMTIzNDU="
    		}
    	},
    	"HttpHeaders": {
    		"User-Agent": "Docker-Client/18.09.0 (linux)"
    	}
    }
    

    进行base加密

    [root@master ~]# cat .docker/config.json | base64
    ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEuNDAiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dG
    eVltOXlNVEl6TkRVPSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50Ijog
    IkRvY2tlci1DbGllbnQvMTguMDkuMCAobGludXgpIgoJfQp9
    

    创建Secret资源

    [root@master ~]#  vim secret.yaml 
    apiVersion: v1
    kind: Secret
    metadata:
      name: registry-secret
    data:
      .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEuNDAiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTguMDkuMCAobGludXgpIgoJfQp9
    type: kubernetes.io/dockerconfigjson
    [root@master ~]# kubectl apply -f secret.yaml
    secret/registry-secret created