在一个kubernetes集群里新建2个环境,提示configmap已存在


#1
  • Choerodon平台版本:0.6.0

  • 运行环境:自主搭建

  • 问题描述:

    请尽量详细的描述您遇到的问题,以便我们能更快速的提供解决办法。

    如:kubernetes集群是安装在物理机上的,之前添加过一个开发环境,现在需要添加一个测试环境,在猪齿鱼上新增集群


    然后执行提示configmap已经存在,如下

[root@dongfang bin]# helm install --repo=https://openchart.choerodon.com.cn/choerodon/c7n/ \
>     --namespace=choerodon \
>     --name=choerodon-cluster-agent-dongfang-test \
>     --version=0.16.0 \
>     --set config.connect=ws://devops.dongfang.cn/agent/ \
>     --set config.token=a9c9b3d4-c89a-49e5-aa7e-9870a6ca7e51 \
>     --set config.clusterId=4 \
>     --set config.choerodonId=e500dcbb \
>     --set rbac.create=true \
>     choerodon-cluster-agent
Error: release choerodon-cluster-agent-dongfang-test failed: configmaps "cm-e500dcbb" already exists

可以手动修改这个configmap的名称么?内部是否有什么关联?

  • 执行的操作:
    如:创建了一个新用户并给用户分配了项目管理员权限,使用该用户登录系统

  • 报错信息(请尽量使用代码块的形式展现):

  • 建议:

    提出您认为不合理的地方,帮助我们优化用户操作


#2

你好。同一个集群只允许存在一个agent。

如果你是使用一个集群的话,可以在项目层创建不同的环境,并且选择同一个集群


#3

一个k8s平台对应组织成的一个集群,项目中创建环境时选择需要的集群,一个环境对应一个ns,环境创建不需要重新连接,直接创建并选择对应的集群即可,同一个k8s平台重复连接猪齿鱼会被阻止


#4

好的,我已经在一个集群里创建了2个环境,现在有个疑问,在runner中是通过那个环境变量读取的分支信息?

目前只有一个开发环境,现在开发环境中的应用是这样的

现在新增了一个测试环境,我需要在.gitlab-ci.yml中在PROJECT_NAME添加分支信息,例如开发环境的应用应该是gy-uigl-dev,测试环境的应用应该是gy-uigl-test。
.gitlab-ci.yml文件中制作镜像的是这样的,
docker build -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG} ${1:-“docker”}
在gitlab的runner中如何获取分支信息?


#5

简单通用的ci设置可以参考平台应用模板中的gitlab-ci.yml文件进行修改,基本涵盖常用的ci流程
如果有复杂的ci流程编写可以参考gitlab-ci的官方文档:
•官方文档:https://docs.gitlab.com/ce/ci/yaml/README.html
ci中系统预设的环境变量:
•预定义的环境变量:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html


#6

目前使用的就是平台应用模板中的.gitlab-ci.yml文件,内容如下:

image: registry.dongfang.cn/dongfang/cibase:v1

stages:
  - gradle-package
  - docker-build

maven-test-docker:
  stage: gradle-package
  script:
    - gradle build
    - mkdir -p /cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
    - cp build/libs/*.jar /cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/app.jar
  only:
    - tags
    - dev
    - master
    - /^release-.*$/
    - /^hotfix-.*$/

docker-build:
  stage: docker-build
  script:
    - docker_build
    - chart_build
  only:
    - master
    - tags
    - dev
    - /^hotfix-.*$/
    - /^release-.*$/

.auto_devops: &auto_devops |
    http_status_code=`curl -o .auto_devops.sh -s -m 10 --connect-timeout 10 -w %{http_code} "${CHOERODON_URL}/devops/ci?token=${Token}&type=microservice"`
    if [ "$http_status_code" != "200" ]; then
      cat .auto_devops.sh
      exit 1
    fi
    source .auto_devops.sh
    function docker_build(){
        cp /cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/app.jar ${1:-"docker"}/app.jar || true
        docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY}
        docker build -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG} ${1:-"docker"}
        docker push ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG}
        rm -rf /cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
    }

before_script:
  - *auto_devops

在gitlab的ci文档中找到这样的一个变量

是否只需要将如下内容修改下即可?

docker build -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}-${CI_COMMIT_REF_NAME}:${CI_COMMIT_TAG} ${1:-"docker"}
        docker push ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}-${CI_COMMIT_REF_NAME}:${CI_COMMIT_TAG}

#7

你好,有点没理解,你要修改build镜像的后缀的需求是?

应用和环境没有关系,项目下某个应用的版本可以部署在项目下不同的环境中,没有环境下的应用这一说法