专栏首页DevOps持续集成OpenShift修改subdomain域名记录

OpenShift修改subdomain域名记录

以下文章来源于阿坡的OpenShift ,作者ragpo

需求

在客户的已经准备好上线的OpenShift 3.9集群中提出修改域名需求,因此先在本人的自己测试环境进行了验证,过程如下,并且还有一些坑,并进行了记录;将ocp6修改为ocp7。

修改方式

修改的方式有两种:

  • 在master节点修改/etc/origin/master/master-config.yaml文件: routingConfig: subdomain: apps.test.ocp6.com
  • 修改deploy节点上的/etc/ansible/hosts文件: openshift_master_default_subdomain=apps.test.ocp6.com

第一种修改方式:

  • 在master节点修改/etc/origin/master/master-config.yaml文件,如果是多个master节点的情况下,每个master节点修需要修改,由原来的apps.test.ocp6.com,修改为apps.test.ocp7.com
routingConfig:
  subdomain: apps.test.ocp7.com
  • 重启master服务
systemctl restart atomic-openshift-master-api.service  atomic-openshift-master-controllers.service
  • 观察此时的route,都还是ocp6.
[root@local2-ocp3.9-master1-test.com ~]# oc get route --all-namespaces
NAMESPACE         NAME               HOST/PORT                                     PATH      SERVICES           PORT      TERMINATION          WILDCARD
default           docker-registry    docker-registry-default.apps.test.ocp6.com              docker-registry    <all>     passthrough          None
default           registry-console   registry-console-default.apps.test.ocp6.com             registry-console   <all>     passthrough          None
jenkins           jenkins            jenkins-jenkins.apps.test.ocp6.com                      jenkins            <all>     edge/Redirect        None
logging           logging-kibana     kibana.apps.test.ocp6.com                               logging-kibana     <all>     reencrypt/Redirect   None
openshift-infra   hawkular-metrics   hawkular-metrics.apps.test.ocp6.com                     hawkular-metrics   <all>     reencrypt            None
  • 此时需要更新对应服务的route,更新有分为两种方式,一种是直接在原来的route上修改,一种是重新创建。
  • 第一种是在原先的route上进行修改,比较方便:
  1. 在界面上进行,修改registry-console的hostname为ocp7,保存:
  1. 在本机增加对应到route节点的域名解析
172.16.37.43 registry-console-default.apps.test.ocp7.com
  1. 到任意master节点上修改oauthclient cockpit-oauth-client,我直接新增了https://registry-console-default.apps.test.ocp7.com,也可以直接修改。这样这个两个地址都能访问,前提是ocp6的route在。
[root@local2-ocp3.9-master1-test.com ~]# oc edit oauthclient cockpit-oauth-client
oauthclient "cockpit-oauth-client" edited
[root@local2-ocp3.9-master1-test.com ~]# oc get  oauthclient cockpit-oauth-client -o yaml
apiVersion: oauth.openshift.io/v1
kind: OAuthClient
metadata:
  annotations:
    openshift.io/generated-by: OpenShiftNewApp
  creationTimestamp: 2018-06-17T00:56:08Z
  labels:
    app: registry-console
    createdBy: registry-console-template
  name: cockpit-oauth-client
  resourceVersion: "31325"
  selfLink: /apis/oauth.openshift.io/v1/oauthclients/cockpit-oauth-client
  uid: 38adc129-71c9-11e8-ad8b-000c2906e131
redirectURIs:
- https://registry-console-default.apps.test.ocp6.com
- https://registry-console-default.apps.test.ocp7.com
secret: userKHwbcoPVQBTJDpiMKOC1BssLpw5Eq7SCKVS5TGC1BtWxbpsRIkj2uwdbhdCSkC7J
  1. 访问域名地址即可。
  • 第二种是为了防止修改错误,而重新创建一个新进行验证,创建新的可以在页面上进行,也可以在命令行里面进行,但是route的名称相关信息不能和原先的route冲突,需要注意的是有的route是带证书的,需要参考原先的route进行复制。
  1. 界面上操作就打开原先的registry-console route,再打开一个窗口进行创建新的route,除了名称不一样,其它的信息从原先的route复制过来即可:
  1. 如果从命令行操作就更方便了,以下命令主要是将原先的原先的route信息通过yaml文件导出,然后修改成现在新的域名,最后通过oc create -f 文件,即可。
[root@local2-ocp3.9-master1-test.com ~]# oc get route
NAME               HOST/PORT                                     PATH      SERVICES           PORT               TERMINATION   WILDCARD
docker-registry    docker-registry-default.apps.test.ocp6.com              docker-registry    <all>              passthrough   None
registry-console   registry-console-default.apps.test.ocp7.com             registry-console   registry-console   passthrough   None
[root@local2-ocp3.9-master1-test.com ~]# oc get route registry-console -o yaml >> registry-console-2.yaml
[root@local2-ocp3.9-master1-test.com ~]# cat registry-console-2.yaml
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  annotations:
    openshift.io/host.generated: "true"
  creationTimestamp: 2018-06-17T03:45:24Z
  name: registry-console
  namespace: default
  resourceVersion: "31000"
  selfLink: /apis/route.openshift.io/v1/namespaces/default/routes/registry-console
  uid: dde737e7-71e0-11e8-a3dd-000c2906e131
spec:
  host: registry-console-default.apps.test.ocp7.com
  port:
    targetPort: registry-console
  tls:
    termination: passthrough
  to:
    kind: Service
    name: registry-console
    weight: 100
  wildcardPolicy: None
status:
  ingress:
  - conditions:
    - lastTransitionTime: 2018-06-17T05:33:31Z
      status: "True"
      type: Admitted
    host: registry-console-default.apps.test.ocp7.com
    routerName: router
    wildcardPolicy: None
[root@local2-ocp3.9-master1-test.com ~]# oc create -f registry-console-2.yaml
  1. 最后还要记得修改oauthclient对应的服务的url,然后就可以访问页面了。

第二种修改方式

  • 直接修改hosts文件中对域名的定义字段,然后重新部署,除了cockpit-oauth-client的oauthclient需要手动修改为最新的域名地址外,其他的都不需要,否则registry-console的域名访问会有问题。
openshift_master_default_subdomain=apps.test.ocp6.com
  • 使用第二种方式进行修改会导致htpasswd的信息被清空,记得备份,等部署结束后再复制到原路径。

遇到的坑

  • 使用第一种方式时,几乎所有route都要手动修改,并且还要修改对应的oauthclient文件,否则无法访问,访问时会出现如下报错:
  • 因为web页面上会加载监控和日志的访问地址,所以第一种方式部署时需要修改openshift-web-console项目里面的configmap信息,修改为ocp7,如果是采用第二种方式修改域名,则web-console的configmap会自动更新。
  • 在使用第二种方式时,openshift安装时会自动修改kibana的oauthclient,添加新的域名地址进去,但是registry-console不会,需要手动更新。

Jenkins页面跳转的问题

  • 当有使用openshift集成的Jenkins时,在openshift上点击pipeline的logs时跳转的页面为为原来域名的Jenkins,改了route也没用,我当时是将pipeline内容保留然后删除重建就可以了
  • 以下是红帽case提供的修改方法,没生效。
Is your jenkins instance deployed inside OpenShift using the Jenkins template or is it an external Jenkins instance? If it is deployed on OpenShift and configured from the Jenkins template, you should be able to set the JENKINS_ROOT_URL by navigating to the Deployments > jenkins  > Actions > Edit YAML and adding a new environment variable and setting it's value to your Jenkins domain name. Please see the attached screenshot [1] for an example of where you can configure the JENKINS_ROOT_URL environment variable.

本文分享自微信公众号 - DevOps持续集成(devopsadmin)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 30分钟安装部署OpenShift okd3.11

    本次试验采用3台虚拟机,每台机器即作为node节点又作为master节点使用。问题最多的是因为镜像下载问题。

    泽阳
  • 实践: Jenkins Core Api & Job DSL创建项目

    在大规模的Jenkins实践中创建项目也是一个问题,如何通过模板自动化的创建Jenkins项目呢? 可以通过安装Job Dsl插件后,通过 Dsl直接创建项目。...

    泽阳
  • 局域网内如何共享HTTP代理?

    泽阳
  • 提高GitHub访问速度及其他DNS优化

    試毅-思伟
  • 首发 | Wannacry勒索软件母体主程序逆向分析(含临时解决方案自动化工具)

    Wannacry勒索软件的背景大家都知道了,就是老美的重武器泄漏出来,结果被其他人捡了便宜所利用。类似这样的事情几年前我在以前的公司也做过,从国外弄来的高级样本...

    FB客服
  • 干货 | 请收下这份机器学习清单

    机器学习的发展可以追溯到1959年,有着丰富的历史。这个领域也正在以前所未有的速度进化。在之前的一篇文章(https://unsupervisedmethods...

    昱良
  • 这枚三拼被榴莲卖了 众安科技收入囊中

    真是令人十分佩服,榴莲卖米的消息真是接连不断!刚报道完榴莲售出yidalian.com三拼,他紧接着又在朋友圈爆料:又卖了一枚三拼连anlianyu...

    躲在树上的域小名
  • 如何获取Android系统应用的Action

    2.此处以获取安装软件应用的action为例,在文件管理器里面随便点击一个安装包(提前下载好一个apk应用),让手机处于安装界面,如下图所示:

    IT大飞说
  • 【一文看尽200篇干货】2018最新机器学习、NLP、Python教程汇总!

    【新智元导读】本文收集并详细筛选出了一系列机器学习、自然语言处理、Python及数学基础知识的相关资源和教程,数目多达200种!来源既包括斯坦福、MIT等名校,...

    新智元
  • 业界 | 今年,25家最有价值的美国初创公司消失了

    即使是知名的私营企业也不断面临着失败的风险,今年一些初创公司的倒闭便印证了这点。PitchBook收集了2018年失败的25家最有价值的初创公司的数据;其中三家...

    大数据文摘

扫码关注云+社区

领取腾讯云代金券