云原生 | 环境配置大全解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 云原生是基于分布部署和统一运管的分布式云,以`容器`、`微服务`、`DevOps`等技术为基础建立的一套云技术产品体系。本文将详细讲解云原生全套配置过程。

在这里插入图片描述
啊我摔倒了..有没有人扶我起来学习....


👱 个人主页: $\color{Darkorange}{《CGod的个人主页》}$交个朋友叭~
💒 个人社区: $\color{Darkorange}{《编程成神技术交流社区》}$加入我们,一起高效学习,收割好Offer叭~
🌱 刷题链接: $\color{Darkorange}{《LeetCode》}$快速成长的渠道哦~

前言

  • 云原生是基于分布部署和统一运管的分布式云,以容器微服务DevOps等技术为基础建立的一套云技术产品体系
  • 本文将详细讲解云原生全套配置过程

一、Code阶段工具

==在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库==

1.1 Git安装

(点击我进行傻瓜式安装)

1.2 GitLab安装

单独准备服务器,采用Docker安装

  • 查看GitLab镜像

    docker search gitlab
  • 拉取GitLab镜像

    docker pull gitlab/gitlab-ce
  • 准备docker-compose.yml文件

    version: '3.1'
    services:
      gitlab:
        image: 'gitlab/gitlab-ce:latest'
        container_name: gitlab
        restart: always
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'http://192.168.11.11:8929'
            gitlab_rails['gitlab_shell_ssh_port'] = 2224
        ports:
          - '8929:8929'
          - '2224:2224'
        volumes:
          - './config:/etc/gitlab'
          - './logs:/var/log/gitlab'
          - './data:/var/opt/gitlab'
  • 启动容器(需要稍等一小会……)

    docker-compose up -d
  • 访问GitLab首页

    首页
    请添加图片描述
  • 查看root用户初始密码

    docker exec -it gitlab cat /etc/gitlab/initial_root_password
    初始密码
    请添加图片描述
  • 登录root用户

    登录成功后跳转页面
    请添加图片描述
  • 第一次登录后需要修改密码

    修改密码
    请添加图片描述

==搞定后,即可像GiteeGitHub一样使用==

二、Build阶段工具

  • 构建Java项目的工具一般有两种选择,一个是Maven,一个是Gradle
  • 这里我们选择Maven作为项目的编译工具
  • 具体安装Maven流程不做阐述,但是需要确保配置好Maven仓库私服以及JDK编译版本

三、Operate阶段工具

部署过程,会采用Docker进行部署,暂时只安装Docker即可,后续还需安装Kubenetes

3.1 Docker安装

  • 准备测试环境&生产环境
  • 下载Docker依赖组件

    yum -y install yum-utils device-mapper-persistent-data lvm2
  • 设置下载Docker的镜像源为阿里云

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装Docker服务

    yum -y install docker-ce
  • 安装成功后,启动Docker并设置开机自启

    # 启动Docker服务
    systemctl start docker
    # 设置开机自动启动
    systemctl enable docker
  • 测试安装成功

    docker version
    效果
    请添加图片描述

3.2 Docker-Compose安装

  • 下载Docker/Composehttps://github.com/docker/compose
  • 将下载好的docker-compose-Linux-x86_64文件移动到Linux操作系统:……
  • 设置docker-compose-Linux-x86_64文件权限,并移动到$PATH目录中

    # 设置文件权限
    chmod a+x docker-compose-Linux-x86_64
    # 移动到/usr/bin目录下,并重命名为docker-compose
    mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
  • 测试安装成功

    docker-compose version
    效果
    请添加图片描述

四、Integrate工具

  • 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台
  • Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务
  • Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins

4.1 Jenkins介绍

  • Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具
  • Jenkins应用广泛,大多数互联网公司都采用Jenkins配合GitLabDockerK8s作为实现DevOps的核心工具
  • Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化CI/CD过程中的各种琐碎功能
请添加图片描述
请添加图片描述

Jenkins最主要的工作就是将GitLab上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境

一般是GitLab上的代码经过大量的测试后,确定发行版本,再发布到生产环境

CI/CD可以理解为:

  • CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试

    • 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试
  • CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署

    • 持续交付:让经过持续集成的代码可以进行手动部署
    • 持续部署:让可以持续交付的代码随时随地的自动化部署
CI、CD
请添加图片描述

4.2 Jenkins安装

  • 拉取Jenkins镜像

    docker pull jenkins/jenkins
  • 编写docker-compose.yml

    version: "3.1"
    services:
      jenkins:
        image: jenkins/jenkins
        container_name: jenkins
        ports:
          - 8080:8080
          - 50000:50000
        volumes:
          - ./data/:/var/jenkins_home/
  • 首次启动会因为数据卷data目录没有权限导致启动失败,设置data目录写权限

    错误日志
    请添加图片描述
    chmod -R a+w data/
  • 重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站

    # 修改数据卷中的hudson.model.UpdateCenter.xml文件
    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
      <site>
        <id>default</id>
        <url>https://updates.jenkins.io/update-center.json</url>
      </site>
    </sites>
    # 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
      <site>
        <id>default</id>
        <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
      </site>
    </sites>
    # 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • 再次重启Jenkins容器,访问Jenkins(需要稍微等会)

    Jenkins首页
    请添加图片描述
    请添加图片描述
  • 查看密码登录Jenkins,并登录下载插件

    docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    登录并下载插件
    请添加图片描述
    请添加图片描述
  • 选择需要安装的插件

    选择需要安装的插件
    请添加图片描述
    请添加图片描述
    请添加图片描述
  • 下载完毕设置信息进入首页(可能会出现下载失败的插件)

    请添加图片描述
    请添加图片描述
    请添加图片描述

4.3 Jenkins入门配置

由于Jenkins需要从Git拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容

4.3.1 构建任务

准备好GitLab仓库中的项目,并且通过Jenkins配置项目的实现当前项目的DevOps基本流程

  • 构建Maven工程发布到GitLabGiteeGithub均可)

    GitLab查看项目
    请添加图片描述
  • Jenkins点击左侧导航新建任务

    新建任务
    请添加图片描述
  • 选择自由风格构建任务

    构建任务
    请添加图片描述

4.3.2 配置源码拉取地址

Jenkins需要将Git上存放的源码存储到Jenkins服务所在磁盘的本地

  • 配置任务源码拉取的地址

    源码管理
    请添加图片描述
  • Jenkins立即构建

    点击任务test中的立即构建
    请添加图片描述
  • 查看构建工程的日志,点击上述$\color{Darkorange}{③}$的任务条即可

    查看任务拉取Git源码日志
    请添加图片描述

    可以看到源码已经拉取带Jenkins本地,可以根据第三行日志信息,查看Jenkins本地拉取到的源码

  • 查看Jenkins容器中/var/jenkins_home/workspace/test的源码

    源码存放位置
    请添加图片描述

4.3.3 配置Maven构建代码

代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDKMaven,并且配置到Jenkins服务。

  • 准备JDKMaven压缩包通过数据卷映射到Jenkins容器内部

    数据卷存放位置
    请添加图片描述
  • 解压压缩包,并配置Mavensettings.xml

    <!-- 阿里云镜像地址 -->
    <mirror>  
        <id>alimaven</id>  
        <name>aliyun maven</name>  
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>          
    </mirror>
    <!-- JDK1.8编译插件 -->
    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>        
    </profile>
  • Jenkins配置JDK&Maven并保存

    请添加图片描述
    请添加图片描述
  • 配置Jenkins任务构建代码

    配置Maven构建代码
    请添加图片描述
    请添加图片描述
  • 立即构建测试,查看target下的jar

    构建源码
    请添加图片描述
    请添加图片描述

4.3.4 配置Publish发布&远程操作

jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH

  • 配置Publish Over SSH连接测试、生产环境

    Publish Over SSH配置
    请添加图片描述
  • 配置任务的构建后操作,发布jar包到目标服务

    配置构建后操作
    请添加图片描述
    请添加图片描述
    请添加图片描述
  • 立即构建任务,并去目标服务查看

    立即构建
    请添加图片描述
    请添加图片描述
好啦,以上就讲解完毕,收获多多哦~感谢坚持看下来的铁汁,只能这么说了,你必成大器!

在这里插入图片描述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 Kubernetes Cloud Native
【云原生】k8s组件&架构介绍与K8s最新版部署
【云原生】k8s组件&架构介绍与K8s最新版部署
471 0
|
Kubernetes Cloud Native 网络协议
云原生下的开发测试实践
近日,阿里巴巴旗下企业级一站式DevOps平台——阿里云·云效正式开启公测,为了让广大开发者更好地了解“新云效”,《云效说码》栏目特别策划了《为云研发而生 解密云效公测版专场》系列分享,邀请了多位阿里巴巴技术专家通过视频直播的方式与大家在线交流,分享云效产品的亮点和技术优势。本系列分享共有五节内容,本文整理自阿里巴巴技术专家林帆(金戟)和郑云龙(砧木)的视频分享《云原生下的开发测试》。
1559 6
云原生下的开发测试实践
|
Web App开发 存储 监控
云原生时代的 Alinode
Alinode 围绕着观测性和调度性做出了哪些努力?
云原生时代的 Alinode
|
1月前
|
Kubernetes 监控 Cloud Native
云原生时代下的应用开发与部署实践
【10月更文挑战第4天】在云原生的浪潮中,开发者和运维人员面临着新的挑战和机遇。本文将通过实际案例,展示如何在云平台上高效地开发、部署和管理应用,同时确保系统的可扩展性和高可用性。我们将深入探讨容器化技术、微服务架构以及持续集成/持续部署(CI/CD)流程的实施策略,旨在为读者提供一套完整的云原生解决方案框架。
|
2月前
|
运维 Cloud Native 开发者
云原生时代的容器化之旅
【9月更文挑战第21天】在数字化浪潮中,云原生技术如同一股清泉,为软件开发带来了前所未有的灵活性和效率。本文将深入浅出地探讨云原生的核心概念——容器化技术,通过实际代码示例,引领读者开启一段探索云原生世界的奇妙旅程。
|
2月前
|
Cloud Native 持续交付 开发者
云端之旅:探索云原生应用的构建与部署
【9月更文挑战第26天】在这篇文章中,我们将一起踏上一段激动人心的旅程,深入探讨云原生应用的构建和部署。通过实际的代码示例和详细的步骤说明,我们将揭开云原生技术的神秘面纱,展示如何利用这些技术来创建灵活、可扩展的应用。无论你是云原生领域的新手还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和技能。
46 0
|
3月前
|
运维 Cloud Native Devops
云原生之旅:探索现代软件部署的未来之路
在数字化时代的浪潮下,云计算已不再是新鲜词汇,而云原生技术作为其进阶形态,正引领着软件开发和运维的全新变革。本文将深入浅出地解析云原生的核心概念、优势以及实践路径,旨在为读者揭示这一技术趋势如何重塑我们的数字世界,同时分享个人从传统IT向云原生转型的真实体验和所思所感。
|
3月前
|
运维 Cloud Native API
云原生之旅:探索现代软件部署的未来
在数字化浪潮中,云原生技术如同一股清流,为软件开发与部署带来了革命性的变革。本文将深入浅出地探讨云原生概念的核心,揭示它如何优化资源利用、提升开发效率,并确保系统的可伸缩性与韧性。通过实际案例,我们一同见证云原生如何在企业中落地生根,助推创新和业务成长。
|
6月前
|
运维 Cloud Native Serverless
【阿里云云原生专栏】阿里云云原生实践:从容器化到Serverless的无缝过渡
【5月更文挑战第20天】本文介绍了如何在阿里云上实现从容器化到Serverless的平滑过渡。首先,通过阿里云容器服务(ACK)创建和管理容器集群,部署应用。接着,利用函数计算(FC)构建Serverless架构,编写和部署函数代码。最后,借助函数工作流(Fn)进行任务编排,实现容器化应用与Serverless应用的统一管理,从而提升应用弹性和可扩展性,降低运维成本,支持企业高效数字化转型。
580 3
|
Cloud Native 网络安全 Docker
云原生之部署webssh工具
云原生之部署webssh工具
342 2