4 - Helm安装Rancher


注意: 对于离线环境,请参考离线安装Rancher

一、添加Chart仓库地址

使用helm repo add命令添加Rancher chart仓库地址,访问Rancher tag和Chart版本

替换<CHART_REPO>为您要使用的Helm仓库分支(即latest或stable)。

  1. helm repo add rancher-stable \
  2. 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

  1. # 指定配置文件
  2. export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  3. kubectl --kubeconfig=$kubeconfig \
  4. create namespace cattle-system
  5. kubectl --kubeconfig=$kubeconfig \
  6. -n cattle-system create \
  7. secret tls tls-rancher-ingress \
  8. --cert=./tls.crt \
  9. --key=./tls.key
  • 安装rancher server

修改hostname

  1. # 指定配置文件
  2. export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  3. helm --kubeconfig=$kubeconfig install \
  4. rancher-stable/rancher \
  5. --name rancher \
  6. --namespace cattle-system \
  7. --set hostname=<您自己的域名> \
  8. --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-catls-rancher-ingress两个secret;

注意: 证书、私钥、ca名称必须是tls.crt、tls.key、cacerts.pem

  1. # 指定配置文件
  2. kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  3. # 创建命名空间
  4. kubectl --kubeconfig=$kubeconfig \
  5. create namespace cattle-system
  6. # 服务证书和私钥密文
  7. kubectl --kubeconfig=$kubeconfig \
  8. -n cattle-system create \
  9. secret tls tls-rancher-ingress \
  10. --cert=./tls.crt \
  11. --key=./tls.key
  12. # ca证书密文
  13. kubectl --kubeconfig=$kubeconfig \
  14. -n cattle-system create secret \
  15. generic tls-ca \
  16. --from-file=cacerts.pem
  • 安装rancher server

修改hostname

  1. kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  2. helm --kubeconfig=$kubeconfig install \
  3. rancher-stable/rancher \
  4. --name rancher \
  5. --namespace cattle-system \
  6. --set hostname=<您自己的域名> \
  7. --set ingress.tls.source=secret \
  8. --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 Podcattle-node-agent无法通过DNS记录找到Rancher server,最终导致无法通信。

  • 解决方法可以通过给cattle-cluster-agent Podcattle-node-agent添加主机别名(/etc/hosts),让其可以正常通信(前提是IP地址可以互通)

  • cattle-cluster-agent pod

  1. export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  2. kubectl --kubeconfig=$kubeconfig -n cattle-system \
  3. patch deployments cattle-cluster-agent --patch '{
  4. "spec": {
  5. "template": {
  6. "spec": {
  7. "hostAliases": [
  8. {
  9. "hostnames":
  10. [
  11. "demo.cnrancher.com"
  12. ],
  13. "ip": "192.168.1.100"
  14. }
  15. ]
  16. }
  17. }
  18. }
  19. }'
  • cattle-node-agent pod
  1. export kubeconfig=xxx/xxx/xx.kubeconfig.yaml
  2. kubectl --kubeconfig=$kubeconfig -n cattle-system \
  3. patch daemonsets cattle-node-agent --patch '{
  4. "spec": {
  5. "template": {
  6. "spec": {
  7. "hostAliases": [
  8. {
  9. "hostnames":
  10. [
  11. "xxx.rancher.com"
  12. ],
  13. "ip": "192.168.1.100"
  14. }
  15. ]
  16. }
  17. }
  18. }
  19. }'

注意1、替换其中的域名和IP 2、别忘记json中的引号。

三、故障排除

故障排除