变更 Rancher Server IP 或域名
本文永久链接: https://www.xtplayer.cn/rancher/replace-ip-domain/
准备全部集群的直连 kubeconfig 配置文件
默认情况,在 Rancher UI 上复制的 kubeconfig 是通过 cluster agent
代理连接到 K8S 集群的。在变更 SSL 证书后,因为一些参数发送变化,需要通过 kubectl
命令行去修改配置。在变更 SSL 证书后会导致 cluster agent
无法连接 Rancher server,从而导致 kubectl
无法使用 Rancher UI 上复制的 kubeconfig 去操作 K8S 集群。因此,建议在做域名或 IP 变更之前,准备好所有集群的直连 kubeconfig 配置文件。具体可参考:恢复 kubectl 配置文件
提示
2.1.x 以前的版本,可在 Master 节点的
/etc/kubernetes/.tmp
路径下找到kubecfg-kube-admin.yml
,这个是具有集群管理员权限的直连 kubeconfig 配置文件;操作之前备份 Rancher Server
准备证书
SSL 证书与域名或 IP
有绑定关系,客户端在访问 Server 端时,ssl 证书用于客户端访问地址的检验作用。客户端通过域名或 IP
访问 Server 端时,会先进行 SSL 证书验证,如果客户端访问的 IP 或域名
与 SSL 证书中预先绑定的 IP 或域名
不一致,那么 SSL 可以认为 Server 端是伪造了,SSL 验证无法通过从而导致客户端无法连接 Server 端。
因此,如果更换了 Server 端的 IP 或域名
,一般就会涉及到 SSL 证书更换,除非在最开始生成 SSL 证书的时候加入了后期可能需要更换的 IP 或域名
。
自签名 ssl 证书
复制以下代码另存为
create_self-signed-cert.sh
或者其他您喜欢的文件名。修改代码开头的CN
(域名),如果需要使用 ip 去访问 Rancher Server,那么需要给 ssl 证书添加扩展 IP,多个 IP 用逗号隔开。如果想实现多个域名访问 Rancher Server,则添加扩展域名(SSL_DNS),多个SSL_DNS
用逗号隔开。#!/bin/bash -ehelp () {echo ' ================================================================ 'echo ' --ssl-domain: 生成 ssl 证书需要的主域名,如不指定则默认为 www.rancher.local,如果是 ip 访问服务,则可忽略;'echo ' --ssl-trusted-ip: 一般 ssl 证书只信任域名的访问请求,有时候需要使用 ip 去访问 server,那么需要给 ssl 证书添加扩展 IP,多个 IP 用逗号隔开;'echo ' --ssl-trusted-domain: 如果想多个域名访问,则添加扩展域名(SSL_TRUSTED_DOMAIN),多个扩展域名用逗号隔开;'echo ' --ssl-size: ssl 加密位数,默认 2048;'echo ' --ssl-cn: 国家代码(2 个字母的代号),默认 CN;'echo ' 使用示例:'echo ' ./create_self-signed-cert.sh --ssl-domain=www.test.com --ssl-trusted-domain=www.test2.com \ 'echo ' --ssl-trusted-ip=1.1.1.1,2.2.2.2,3.3.3.3 --ssl-size=2048 --ssl-date=3650'echo ' ================================================================' }case "$1" in-h|--help) help; exit;; esacif [[ $1 == '' ]];thenhelp;exit; fiCMDOPTS="$*" for OPTS in $CMDOPTS; dokey=$(echo ${OPTS} | awk -F"=" '{print $1}' )value=$(echo ${OPTS} | awk -F"=" '{print $2}' )case "$key" in--ssl-domain) SSL_DOMAIN=$value ;;--ssl-trusted-ip) SSL_TRUSTED_IP=$value ;;--ssl-trusted-domain) SSL_TRUSTED_DOMAIN=$value ;;--ssl-size) SSL_SIZE=$value ;;--ssl-date) SSL_DATE=$value ;;--ca-date) CA_DATE=$value ;;--ssl-cn) CN=$value ;;esac done# CA 相关配置 CA_DATE=${CA_DATE:-3650} CA_KEY=${CA_KEY:-cakey.pem} CA_CERT=${CA_CERT:-cacerts.pem} CA_DOMAIN=cattle-ca# ssl 相关配置 SSL_CONFIG=${SSL_CONFIG:-$PWD/openssl.cnf} SSL_DOMAIN=${SSL_DOMAIN:-'www.rancher.local'} SSL_DATE=${SSL_DATE:-3650} SSL_SIZE=${SSL_SIZE:-2048}## 国家代码(2 个字母的代号),默认 CN; CN=${CN:-CN}SSL_KEY=$SSL_DOMAIN.key SSL_CSR=$SSL_DOMAIN.csr SSL_CERT=$SSL_DOMAIN.crtecho -e "\033[32m ---------------------------- \033[0m" echo -e "\033[32m | 生成 SSL Cert | \033[0m" echo -e "\033[32m ---------------------------- \033[0m"if [[ -e ./${CA_KEY} ]]; thenecho -e "\033[32m ====> 1. 发现已存在 CA 私钥,备份"${CA_KEY}"为"${CA_KEY}"-bak,然后重新创建 \033[0m"mv ${CA_KEY} "${CA_KEY}"-bakopenssl genrsa -out ${CA_KEY} ${SSL_SIZE} elseecho -e "\033[32m ====> 1. 生成新的 CA 私钥 ${CA_KEY} \033[0m"openssl genrsa -out ${CA_KEY} ${SSL_SIZE} fiif [[ -e ./${CA_CERT} ]]; thenecho -e "\033[32m ====> 2. 发现已存在 CA 证书,先备份"${CA_CERT}"为"${CA_CERT}"-bak,然后重新创建 \033[0m"mv ${CA_CERT} "${CA_CERT}"-bakopenssl req -x509 -sha256 -new -nodes -key ${CA_KEY} -days ${CA_DATE} -out ${CA_CERT} -subj "/C=${CN}/CN=${CA_DOMAIN}" elseecho -e "\033[32m ====> 2. 生成新的 CA 证书 ${CA_CERT} \033[0m"openssl req -x509 -sha256 -new -nodes -key ${CA_KEY} -days ${CA_DATE} -out ${CA_CERT} -subj "/C=${CN}/CN=${CA_DOMAIN}" fiecho -e "\033[32m ====> 3. 生成 Openssl 配置文件 ${SSL_CONFIG} \033[0m" cat > ${SSL_CONFIG} <<EOM [req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth, serverAuth EOMif [[ -n ${SSL_TRUSTED_IP} || -n ${SSL_TRUSTED_DOMAIN} ]]; thencat >> ${SSL_CONFIG} <<EOM subjectAltName = @alt_names [alt_names] EOMIFS=","dns=(${SSL_TRUSTED_DOMAIN})dns+=(${SSL_DOMAIN})for i in "${!dns[@]}"; doecho DNS.$((i+1)) = ${dns[$i]} >> ${SSL_CONFIG}doneif [[ -n ${SSL_TRUSTED_IP} ]]; thenip=(${SSL_TRUSTED_IP})for i in "${!ip[@]}"; doecho IP.$((i+1)) = ${ip[$i]} >> ${SSL_CONFIG}donefi fiecho -e "\033[32m ====> 4. 生成服务 SSL KEY ${SSL_KEY} \033[0m" openssl genrsa -out ${SSL_KEY} ${SSL_SIZE}echo -e "\033[32m ====> 5. 生成服务 SSL CSR ${SSL_CSR} \033[0m" openssl req -sha256 -new -key ${SSL_KEY} -out ${SSL_CSR} -subj "/C=${CN}/CN=${SSL_DOMAIN}" -config ${SSL_CONFIG}echo -e "\033[32m ====> 6. 生成服务 SSL CERT ${SSL_CERT} \033[0m" openssl x509 -sha256 -req -in ${SSL_CSR} -CA ${CA_CERT} \-CAkey ${CA_KEY} -CAcreateserial -out ${SSL_CERT} \-days ${SSL_DATE} -extensions v3_req \-extfile ${SSL_CONFIG}echo -e "\033[32m ====> 7. 证书制作完成 \033[0m" echo echo -e "\033[32m ====> 8. 以 YAML 格式输出结果 \033[0m" echo "----------------------------------------------------------" echo "ca_key: |" cat $CA_KEY | sed 's/^/ /' echo echo "ca_cert: |" cat $CA_CERT | sed 's/^/ /' echo echo "ssl_key: |" cat $SSL_KEY | sed 's/^/ /' echo echo "ssl_csr: |" cat $SSL_CSR | sed 's/^/ /' echo echo "ssl_cert: |" cat $SSL_CERT | sed 's/^/ /' echoecho -e "\033[32m ====> 9. 附加 CA 证书到 Cert 文件 \033[0m" cat ${CA_CERT} >> ${SSL_CERT} echo "ssl_cert: |" cat $SSL_CERT | sed 's/^/ /' echoecho -e "\033[32m ====> 10. 重命名服务证书 \033[0m" echo "cp ${SSL_DOMAIN}.key tls.key" cp ${SSL_DOMAIN}.key tls.key echo "cp ${SSL_DOMAIN}.crt tls.crt" cp ${SSL_DOMAIN}.crt tls.crt
权威认证证书
把权威证书文件重命名为需要的文件名:
cp xxx.key tls.key cp xxx.crt tls.crt
更新证书(可选)
提示
证书与域名或 IP 有绑定关系,一般情况更换域名或 IP 需更换证书。如果之前配置的证书是一个通配证书或者之前配置的证书已经包含了需要变更的域名或 IP,那么证书则可以不用更换。
Rancher 单节点运行(默认容器自动生成自签名 SSL 证书)
完整文章请访问:https://www.xtplayer.cn/rancher/replace-ip-domain/
变更 Rancher Server IP 或域名相关推荐
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- nginx-配置基于ip或域名的虚拟主机
[0]README: nginx 可以配置多种类型的虚拟主机: 类型1) 基于ip的虚拟主机: 类型2)基于域名的虚拟主机: 类型3)基于端口的虚拟主机: [1]配置基于 ip 的虚拟主机的准备工作 ...
- FAQ宝典之Rancher Server
1 Docker运行Rancher Server容器应该注意什么? 需要注意运行rancher server容器时,不要使用host模式.程序中有些地方定义的是localhost或者127.0.0.1 ...
- 搭建个人云服务器ubuntu18+公网ip+免费域名绑定freenom+个人网盘chfs
搭建个人云服务器ubuntu18+公网ip+免费域名绑定freenom+个人网盘chfs 动机:网上看过一个大神用自己的服务器做备份(同时还鄙视了bdyun)正好前段时间下载 ...
- Tomcat配置--如何能够让外网通过公网IP或域名访问到服务器上面的项目
今天突然想到自己还有一台服务器可以使用,于是就准备把之前做的一个网站弄上去玩玩.结果发现不知道是因为太久没用还是什么原因,出问题了.死活连不上,就重装了一下.于是就出现了这个问题,Tomcat忘记怎么 ...
- 制作一个ip多域名访问,或一个ip不同端口访问,或多个ip访问的网站。
环境:windows server 2008 64位 一.在windows2008上安装IIS服务 下一步 安装完成关闭 二.搭建测试网站 127.0.0.1连接测试 域名测试 修改host文件 C: ...
- ASP.NET站点使用IP或域名访问的connectionStrings配置方法
ASP.NET站点使用IP或域名访问时,connectionStrings节的设置方法,域名无需在配置文件中设置,server只在路由器上设置好转发规则(端口)即可,服务器装好域名客户端即可 IP访问 ...
- linux/windows_ip查看(公网ip/私网ip)/通过域名查找ip/解读tracert 的返回结果
linux/windows_ip查看(公网ip/私网ip)/通过域名查找ip/解读tracert 的返回结果 references [How to Check the IP Address in Li ...
- Linux C 获取本地 ip mac 域名对应 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #in ...
- python dig trace 功能实现——通过Querying name server IP来判定是否为dns tunnel
dns tunnel确认方法,查询子域名最终的解析地址: 使用方法:python dig_trace.py "<7cf1e56b 67fc90f8 caaae86e 0787e907 ...
最新文章
- 在Eclipse中导入Java程序
- linux 提取字符串一部分,Linux Shell 截取字符串的方法示例
- 1.MySQL与MongoDB的操作对比,以及区别
- bat脚本注释多行_cmd批处理常用符号详解
- ElementUI el-time-picker-只显示小时、分钟,分并添加范围校验
- TREX搜索的执行最后也是通过HTTP call来完成的
- SAP SD里CDS view对status的设计
- php 获取 table,php – 获取表对象(App_Model_TableName)作为获取结果(Zend Framework)
- 面试精讲之面试考点及大厂真题 - 分布式专栏 17 ElasticSearch解决大数据量检索难题
- AAAI 2020 | 首个使用 NAS 设计的 GCN,达到动作识别SOTA,代码将开源
- 在百度超级链Xuper上部署智能合约并实现存证功能
- 写在前面--点燃酱爆心中的那团火
- POJ NOI0105-43 质因数分解
- jQuery Mobile中弹窗popup的data-*选项
- 对比两个文件内容差异VS Visual Studio Code
- ajax 传文件和参数,Ajax上传文件及携带参数
- [转载]Ext.form.BasicForm getValues()和getFie_-Chaz-_新浪博客
- vue 项目实现短信发送
- Linux工具篇 | Ubuntu安装string命令
- 服务器断电mysql文件丢失_服务器断电了怎么恢复数据?