云效发布不同租户 k8s 应用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 开发环境是开发测试人员使用的应用环境,除了应用运行依赖的云产品,还需要购买开发人员使用的云产品和运维产品。

1. 需求

     开发环境是开发测试人员使用的应用环境,除了应用运行依赖的云产品,还需要购买开发人员使用的云产品和运维产品。

主要有:

  • 云效持续集成
  • maven  私有仓库
  • gitlib 代码仓库
  • Node模块仓库
  • 镜像仓库购买
  • 开发环境应用运行环境

2.云效与相关配置

    2.1 maven 代码仓库:

    私有仓库配置:

  1. maven 工具的 profiles 节点,增加私有仓库的 repository; 
  2. settings 文件加入代码库根目录或者根目录下 pom.xml 增加 repository节点,指向私有仓库。

上传私有仓库:

使用migrate-local-repo-tool.jar(来自开源工具) 上传:

$ java -jar migrate-local-repo-tool.jar -cd "/$HOME/.m2/repository/" -t "http://10.21.11.11/repository/releases/" -u admin -p admin123

 

踩坑与优化:

  • 避免使用上传单个文件方式,该方式上传 jar的话,不要使用默认的生成 pom.xml 方式,此方式容易覆盖原来已有 pom.xml 导致依赖问题。
  • 开发人员使用migrate-local-repo-tool.jar 批量上传的时候,可能会把开发人员本地的 老版本的 jar 包直接覆盖仓库的对应 jar,导致其它使用到该依赖 jar 包的系统打包时候,出现故障。

优化:

开发人员使用通用依赖 Jar 使用正式版本,避免使用 snapshot 版本;

优化改造migrate-local-repo-tool.jar 工具,其来自以下开源代码,可以通过修改代码,在运维平台开发对比上传模块,首先比对开发人员本地和线上私有仓库依赖包,经过用户在运维平台确认后发布。

      https://github.com/simpligility/maven-repository-tools/tree/master/maven-repository-provisioner

    2.2 gitlib 代码库:

本地弹内代码迁移:

  1. 从原弹内代码地址克隆一份裸版本库到本地;
    git clone --bare  http://gitlab.xxx-inc.com/****/****.git
  2. 云效上建立项目和应用,并建立git仓库;
  3. 将本地下载的裸版本库 push到新建的政务云 git仓库;
    1. 清理不需要保存到云效的原有分支,批量删除本地分支:
      git branch -a | grep  'release' | xargs git branch -D
      git tag | xargs -I {} git tag -d {}​
    2. 上传本地代码库
      git push --mirror https://xxx.code.aliyun.com/3333-zzzz/*****.git​
    3. 这时可以看到完整的原弹内代码已经迁移到了政务云仓库,并保留了弹内所有的变更提交记录。
  4. 下载政务云到本地开发机器:
git clone -b myTag https://ttt.code.aliyun.com/3333-zzzz/*****.git

    2.3 云效配置

        1. 【云效企业设置】-->【容器服务账号】-->【kubernetes 集群证书导入】-->【手动导入证书】

               从建立的 k8s 集群获取证书信息,导入,注意:k8s 集群的 apiserver 的 公网 slb 访问控制增加云效 IP 段。

       2.【云效企业设置】-->【容器服务账号】-->【docker 镜像账户管理】

              绑定经常仓库的账户与密码,云效通过 docker login 登录镜像仓库来拉取镜像。

       3. 应用 环境配置:

  • 部署方式为 kubernetes 部署,目标集群选择集群证书导入中显示的集群,设置相应命名空间等,配置发布环境
  • 建立流水线,发布应用到各租户的各个环境。

踩坑与优化:

     kubernetes 的命名空间和 Service 尽量使用容器服务控制台建立或者修改为规范命名和设置,如果使用云效生成是默认的模板配置,其设置与生产环境不怎么符合。

3.镜像仓库配置

       镜像仓库有条件的话,尽量采购企业版实例,企业版实例有完整的安全设置和访问控制。

      只要设置有:

          命名空间,设置为私有,授权给专属镜像仓库登录的阿里云子账号;

          设置访问凭证(密码)

          命名空间下的镜像子仓库,云效在 docker push 时会自动建立为私有的镜像仓库

          企业版实例有安全扫描,安全访问控制设置等功能,配置镜像访问控制到办公区域。

 

4.开发环境 Kubernetes

         根据需求建立1-多个 k8s 集群,k8s 集群会默认建立apiserver 的 SLB,默认名称为 K8sMasterSlbIntranet。

        如果需要云效直接发布到 kubernetes 集群,需要 kubernetes 集群必须建立公网 SLB 提供给云效访问,可以设立访问控制,只允许云效的 IP 访问。

 

 

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
20小时前
|
Kubernetes 应用服务中间件 nginx
Kubernetes详解(六)——Pod对象部署和应用
在Kubernetes系列中,本文聚焦Pod对象的部署和管理。首先,通过`kubectl run`命令创建Pod,如`kubectl run pod-test --image=nginx:1.12 --port=80 --replicas=1`。接着,使用`kubectl get deployment`或`kubectl get pods`查看Pod信息,添加`-o wide`参数获取详细详情。然后,利用Pod的IP地址进行访问。最后,用`kubectl delete pods [Pod名]`删除Pod,但因Controller控制器,删除后Pod可能自动重建。了解更多细节,请参阅原文链接。
8 5
|
3天前
|
Kubernetes Cloud Native 持续交付
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
【5月更文挑战第7天】本文探讨了Docker和Kubernetes如何协同构建和管理云原生应用。Docker提供容器化技术,Kubernetes则负责容器的部署和管理。两者结合实现快速部署、自动扩展和高可用性。通过编写Dockerfile创建镜像,然后在Kubernetes中定义部署和服务进行应用暴露。实战部分展示了如何部署简单Web应用,包括编写Dockerfile、构建镜像、创建Kubernetes部署配置以及暴露服务。Kubernetes还具备自动扩展、滚动更新和健康检查等高级特性,为云原生应用管理提供全面支持。
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
|
4天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
27 1
|
13天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:以Kubernetes为核心
【4月更文挑战第27天】 在当今数字化转型的浪潮中,企业急需构建灵活、可扩展的应用来应对不断变化的市场需求。云原生技术以其独特的优势应运而生,成为推动现代应用开发和部署的重要力量。本文深入探讨了云原生的核心组件之一——Kubernetes,解析其如何通过容器编排优化资源利用,提高应用的弹性和可维护性。同时,文章将展示如何在云平台上实现高效的服务发现、自动扩缩容以及持续集成和持续部署(CI/CD),进一步阐述云原生架构下的最佳实践和面临的挑战。
|
19天前
|
运维 Kubernetes JavaScript
云效产品使用报错问题之流水线发布uniapp的应用失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
19天前
|
敏捷开发 测试技术 持续交付
云效产品使用常见问题之应用交付自定义流水线失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
19天前
|
敏捷开发 存储 缓存
云效产品使用常见问题之通过vpc内网部署到ack失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
19天前
|
敏捷开发 Java 机器人
云效产品使用常见问题之打包后的Android应用获取下载地址失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
27天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
23 4
|
28天前
|
JSON Kubernetes Go
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用
36 0
无缝集成:在IntelliJ IDEA中利用Kubernetes插件轻松管理容器化应用