云效发布不同租户 k8s 应用

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 制品仓库,基础版人数 不受限
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 开发环境是开发测试人员使用的应用环境,除了应用运行依赖的云产品,还需要购买开发人员使用的云产品和运维产品。

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 访问。

 

 

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
29天前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
130 3
|
10天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
10天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
18天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
54 1
|
27天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
1月前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
108 1
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
1月前
|
应用服务中间件 调度 nginx
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
Kubernetes的Pod调度:让你的应用像乘坐头等舱!
|
1月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
30 1
|
1月前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
187 0
|
1月前
|
缓存 Kubernetes 负载均衡
k8s学习--sessionAffinity会话保持(又称会话粘滞)详细解释与应用
k8s学习--sessionAffinity会话保持(又称会话粘滞)详细解释与应用
163 0
下一篇
无影云桌面