4 - Helm安装Rancher
注意: 对于离线环境,请参考离线安装Rancher。
一、添加Chart仓库地址
使用helm repo add
命令添加Rancher chart仓库地址,访问Rancher tag和Chart版本
替换<CHART_REPO>
为您要使用的Helm仓库分支(即latest或stable)。
helm repo add rancher-stable \
https://releases.rancher.com/server-charts/stable
二、使用自签名或者权威SSL证书安装Rancher server
Rancher server设计默认需要开启SSL/TLS配置来保证安全,将ssl证书以Kubernetes Secret
卷的形式传递给rancher server或Ingress Controller
。首先创建证书密文,以便Rancher和Ingress Controller
可以使用。
将
服务证书
和CA中间证书链
合并到tls.crt
,将私钥
复制到或者重命名为tls.key
;使用
kubectl
创建tls
类型的secrets
;
注意:
证书、私钥
名称必须是tls.crt、tls.key
。
# 指定配置文件
export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
kubectl --kubeconfig=$kubeconfig \
create namespace cattle-system
kubectl --kubeconfig=$kubeconfig \
-n cattle-system create \
secret tls tls-rancher-ingress \
--cert=./tls.crt \
--key=./tls.key
- 安装rancher server
修改
hostname
# 指定配置文件
export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
helm --kubeconfig=$kubeconfig install \
rancher-stable/rancher \
--name rancher \
--namespace cattle-system \
--set hostname=<您自己的域名> \
--set ingress.tls.source=secret
注意: 1.创建证书对应的
域名
需要与hostname
选项匹配,否则ingress
将无法代理访问Rancher。
如果没有自签名ssl证书,可以参考自签名ssl证书,一键生成ssl证书;
一键生成ssl自签名证书脚本将自动生成
tls.crt、tls.key、cacerts.pem
三个文件,文件名称不能修改。如果使用您自己生成的自签名ssl证书,则需要将服务证书
和CA中间证书链
合并到tls.crt
文件中,将私钥
复制到或者重命名为tls.key
文件,将CA证书
复制到或者重命名为cacerts.pem
。使用
kubectl
在命名空间cattle-system
中创建tls-ca
和tls-rancher-ingress
两个secret
;
注意:
证书、私钥、ca
名称必须是tls.crt、tls.key、cacerts.pem
。
# 指定配置文件
kubeconfig=xxx/xxx/xx.kubeconfig.yaml
# 创建命名空间
kubectl --kubeconfig=$kubeconfig \
create namespace cattle-system
# 服务证书和私钥密文
kubectl --kubeconfig=$kubeconfig \
-n cattle-system create \
secret tls tls-rancher-ingress \
--cert=./tls.crt \
--key=./tls.key
# ca证书密文
kubectl --kubeconfig=$kubeconfig \
-n cattle-system create secret \
generic tls-ca \
--from-file=cacerts.pem
- 安装rancher server
修改
hostname
kubeconfig=xxx/xxx/xx.kubeconfig.yaml
helm --kubeconfig=$kubeconfig install \
rancher-stable/rancher \
--name rancher \
--namespace cattle-system \
--set hostname=<您自己的域名> \
--set ingress.tls.source=secret \
--set privateCA=true
注意: 1.证书对应的
域名
需要与hostname
选项匹配,否则ingress
将无法代理访问Rancher。
4、高级配置
Rancher chart有许多配置选项,可用于自定义安装以适合您的特定环境,点击查看Rancher高级设置
5、保存配置参数
确保保存了所有的配置参数,Rancher下一次升级时,helm需要使用相同的配置参数来运行新版本Rancher。
6、(可选)为Agent Pod添加主机别名(/etc/hosts)
如果您没有内部DNS服务器而是通过添加/etc/hosts
主机别名的方式指定的Rancher server域名,那么不管通过哪种方式(自定义、导入、Host驱动等)创建K8S集群,K8S集群运行起来之后,因为cattle-cluster-agent Pod
和cattle-node-agent
无法通过DNS记录找到Rancher server
,最终导致无法通信。
解决方法可以通过给
cattle-cluster-agent Pod
和cattle-node-agent
添加主机别名(/etc/hosts),让其可以正常通信(前提是IP地址可以互通)
。cattle-cluster-agent pod
export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
kubectl --kubeconfig=$kubeconfig -n cattle-system \
patch deployments cattle-cluster-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"demo.cnrancher.com"
],
"ip": "192.168.1.100"
}
]
}
}
}
}'
- cattle-node-agent pod
export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
kubectl --kubeconfig=$kubeconfig -n cattle-system \
patch daemonsets cattle-node-agent --patch '{
"spec": {
"template": {
"spec": {
"hostAliases": [
{
"hostnames":
[
"xxx.rancher.com"
],
"ip": "192.168.1.100"
}
]
}
}
}
}'
注意1、替换其中的域名和IP 2、别忘记json中的引号。