天天看点

云效发布不同租户 k8s 应用1. 需求2.云效与相关配置3.镜像仓库配置4.开发环境 Kubernetes

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