6 - 其他方法


    Chart地址: https://github.com/xiaoluhong/server-chart.git

    • 本Chart基于 修改,当前支持版本为。
    • 不支持LetsEncrypt、cert-manager提供证书,需手动通过Secret导入证书, 默认开启审计日志功能。
    • 仓库根目录有一键创建自签名证书脚本,会自动创建cacerts.pemtls.keytls.crt
    • 如果使用权威认证证书,需要重命名crt和key为tls.crttls.key

    二、部署架构

    通过集群内安装的ingress服务,使用七层域名转发来访问rancher server,请求流量将转发到rancher server容器的80端口。

    • 把服务证书和CA证书作为密文导入K8S
    1. # 指定kubeconfig配置文件路径
    2. kubeconfig=xxx
    3. # 创建cattle-system命名空间
    4. kubectl --kubeconfig=$kubeconfig \
    5. create namespace cattle-system
    6. # 创建ssl证书密文
    7. kubectl --kubeconfig=$kubeconfig \
    8. -n cattle-system create \
    9. secret tls tls-rancher-ingress \
    10. --cert=./tls.crt --key=./tls.key
    11. # 创建CA证书密文
    12. kubectl --kubeconfig=$kubeconfig \
    13. -n cattle-system create \
    14. secret generic tls-ca \
    15. --from-file=cacerts.pem
    16. # 创建tiller serviceaccount
    17. kubectl --kubeconfig=$kubeconfig \
    18. -n kube-system create \
    19. # 创建tiller clusterrolebinding
    20. kubectl --kubeconfig=$kubeconfig \
    21. create clusterrolebinding \
    22. tiller --clusterrole cluster-admin \
    23. --serviceaccount=kube-system:tiller
    24. # 安装tiller
    25. helm_version=`helm version |grep Client | awk -F""\" '{print $2}'`
    26. --skip-refresh --service-account tiller \
    27. --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version
    • 安装

    有的场景需要使用IP去直接访问rancher server, 因为ingress默认不支持IP访问,所以这里禁用ingress。通过NodePort把rancher server容器端口映射到宿主机的端口上,这个时候rancher server容器作为ssl终止,请求流量转发到rancher server容器的443端口。

    • 把服务证书和CA证书作为密文导入K8S
    1. # 指定kubeconfig配置文件路径
    2. kubeconfig=xxx
    3. # 创建cattle-system命名空间
    4. kubectl --kubeconfig=$kubeconfig create namespace cattle-system
    5. # 创建ssl证书密文
    6. kubectl --kubeconfig=$kubeconfig -n cattle-system create \
    7. secret tls tls-rancher-ingress --cert=./tls.crt --key=./tls.key
    8. # 创建CA证书密文
    9. kubectl --kubeconfig=$kubeconfig -n cattle-system create \
    10. secret generic tls-ca --from-file=cacerts.pem
    11. # 创建tiller serviceaccount
    12. kubectl --kubeconfig=$kubeconfig -n kube-system create \
    13. serviceaccount tiller
    14. # 创建tiller clusterrolebinding
    15. kubectl --kubeconfig=$kubeconfig create clusterrolebinding \
    16. tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
    17. helm_version=`helm version |grep Client | awk -F""\" '{print $2}'`
    18. helm --kubeconfig=$kubeconfig init \
    19. --skip-refresh --service-account tiller \
    20. --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version
    • 安装

    有的场景,外部有七层负载均衡器作为ssl终止,常见用法是把负载均衡器的443端口代理到内部应用的非https端口上,比如80。为了保证网络转发性能,这里禁用了内置的ingress服务,以NodePort方式把rancher server容器的80端口映射到宿主机30303端口上。外部七层负载均衡器再把443端口反向代理到Rancher的NodePort端口上,请求流量将转发到rancher server容器的80端口。

    • 把服务证书放在外部负载均衡器上,比如nginx。配置参考:

    1. # 指定kubeconfig配置文件路径
    2. kubeconfig=xxx
    3. # 创建cattle-system命名空间
    4. kubectl --kubeconfig=$kubeconfig create namespace cattle-system
    5. # 创建ssl证书密文
    6. kubectl --kubeconfig=$kubeconfig -n cattle-system create \
    7. secret tls tls-rancher-ingress --cert=./tls.crt --key=./tls.key
    8. # 创建CA证书密文
    9. kubectl --kubeconfig=$kubeconfig -n cattle-system create \
    10. secret generic tls-ca --from-file=cacerts.pem
    11. # 创建tiller serviceaccount
    12. kubectl --kubeconfig=$kubeconfig -n kube-system create \
    13. serviceaccount tiller
    14. # 创建tiller clusterrolebinding
    15. kubectl --kubeconfig=$kubeconfig create clusterrolebinding \
    16. tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
    17. # 安装tiller
    18. helm_version=`helm version |grep Client | awk -F""\" '{print $2}'`
    19. helm --kubeconfig=$kubeconfig init \
    20. --skip-refresh --service-account tiller \
    21. --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version