rancher添加服务选择本地镜像 rancher 服务发现_rancher添加服务选择本地镜像


一、Rancher简介

Rancher 最初是为了与多个协调者合作而构建的。随着 Kubernetes 在市场上的兴起,Rancher 2.x 专门部署和管理在任何提供商上随时随地运行的 Kubernetes 群集。

Rancher 提供可以从托管 Kubernetes,计算节点,然后将 Kubernetes 应用安装到这些节点上,或者导入在任何地方运行的现有 Kubernetes 群集。

一个 Rancher 服务器安装可以从同一用户界面管理数千个 Kubernetes 群集和数千个节点。

Rancher 在 Kubernetes 的基础上增加了显著价值,首先通过集中身份验证和基于角色的访问控制 (RBAC) 用于所有群集,使全局管理员能够从一个位置控制群集访问。

然后,它支持对群集及其资源进行详细监视和警报,将日志发送到外部提供程序,并直接通过应用程序目录与 Helm 集成。如果您有外部 CI/CD 系统,可以将其插入 Rancher,但如果没有,Rancher 甚至包括一个管道引擎来帮助您自动部署和升级工作负载。

Rancher 是Kubernetes 的完整容器管理平台,为您提供在任何地方成功运行 Kubernetes 的工具。

二、部署开始

1.集群外部署-Docker部署(最简单实用方便)


docker run -d --restart=unless-stopped 
  -p 80:80 -p 443:443 
  rancher/rancher:latest


一键部署运行Rancher2.x最新版本,将集群导入即可集中管理。

2.集群内部署-Helm3部署自建证书Rancher(HA)

首先安装Helm

使用XCA自建CA证书,注意事项:


推荐 ecc 证书,prime 或 secp 算法,密钥 256 位以上。
强行上 rsa 证书,请选择 2048 位以上。
ca 证书选 ca 模板,时效往长了签,签 10 年 20 年都行。CN 直接填名字即可。
根 ca 用自签,中间 ca 用根 ca 签,普通证书用中间 ca 签。
普通证书选 https_server 模板,有效期不可超过 825 天,否则 macOS 和 iOS 不认。CN 写域名,SAN 里写其他名字,同时也要有 CN 域名。
普通证书 SAN 中可以添加一个通配符域名,以便随时为 ingress-nginx 添加域名映射。本实践使用 *.rancher.foobar.com
将中间 ca 证书与普通证书合并即可配置到需要配置使用证书的地方。密钥用普通证书的密钥。
根 ca 安装到设备中并设置信任即可完美访问。


最后需要的文件:


cacerts.pem         根 ca 证书
ca-additional.pem   根 ca 证书,和 cacerts.pem 相同(重命名)
tls.crt             rancher 服务器证书,需要将裸服务器证书与中间 ca 证书合并
tls.key             服务器证书对应的密钥(也算私钥)


Helm添加rancher仓库:


helm repo add rancher-stable https://releases.rancher.com/server-charts/stable


通过Helm将部署模板下载到本地:


helm fetch rancher-stable/rancher


当前路径将新建一个压缩包:


rancher-2.4.4.tgz


使用以下命令渲染模板:


helm template rancher ./rancher-2.3.5.tgz 
     --namespace cattle-system --output-dir . 
     --set privateCA=true 
     --set additionalTrustedCAs=true 
     --set ingress.tls.source=secret 
     --set hostname=rancher.foobar.com 
     --set useBundledSystemChart=true


渲染模板命令说明:


helm template rancher(名字) ./rancher-2.3.5.tgz(本地模板) 
     --namespace cattle-system                 安装的目标命名空间
     --output-dir .                            渲染输出目录
     --set privateCA=true                      咱们用的证书是自签的
     --set additionalTrustedCAs=true           访问各种 tls (https) 时额外信任的 ca 证书,比												   如自使用签证书的镜像仓库、git仓库、s3 对象存储,												  亦或是类似公司出网白名单代理网关、fiddler 抓 												 https 包之类的需要安装 ca 证书的情况
     --set ingress.tls.source=secret           rancher-server 在 k8s 环境中只提供 http 协议												   端口,tls 证书在ingress 中卸载。配置为 secret 												则使用 k8s secret 中的证书
     --set hostname=rancher.foobar.com      配置访问 rancher-server 的域名,这个域名配置在 												 ingress 中,如果域名没有解析到 ingress 节点,												也可以绑个 host访问
     --set useBundledSystemChart=true           因为是离线安装,所以配置 rancher 使用内置的安装												源。默认为 false,rancher 会去拉去安装源。如果												  集群可以访问互联网,可以把这个去
                                                掉。当然,安装时加上这个参数,也可以在安装完成后,												 在rancher 的catalogs 里手动添加。


在rancher目录中可以看到渲染好的模板文件:


clusterRoleBinding.yaml
deployment.yaml
ingress.yaml
serviceAccount.yaml
service.yaml


导入证书:


# 创建 rancher 的 namespace
kubectl create namespace cattle-system
# namespace/cattle-system created
# helm 渲染中 --set privateCA=true 用到的证书
kubectl -n cattle-system create secret generic tls-ca --from-file=cacerts.pem
# secret/tls-ca created
# helm 渲染中 --set additionalTrustedCAs=true 用到的证书
kubectl -n cattle-system create secret generic tls-ca-additional --from-file=ca-additional.pem
# secret/tls-ca-additional created
# helm 渲染中 --set ingress.tls.source=secret 用到的证书和密钥
kubectl -n cattle-system create secret tls tls-rancher-ingress --cert=tls.crt --key=tls.key
# secret/tls-rancher-ingress created


使用kubectl安装rancher:


kubectl -n cattle-system apply -R -f ./rancher
# clusterrolebinding.rbac.authorization.k8s.io/rancher created
# deployment.apps/rancher created
# ingress.extensions/rancher created
# service/rancher created
# serviceaccount/rancher created


查看安装进度:


kubectl -n cattle-system get all
kubectl -n cattle-system rollout status deploy/rancher
kubectl -n cattle-system get deploy rancher


集群内通过cert-manager统一管理证书

准备cert-manager Chart


helm repo add jetstack https://charts.jetstack.io
helm fetch jetstack/cert-manager --version v0.12.0
 
helm template cert-manager ./cert-manager-v0.12.0.tgz --output-dir . 
>     --namespace cert-manager


下载 cert-manager 所需的 CRD 文件:


curl -L -o cert-manager/cert-manager-crd.yaml https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml


安装 Cert-manager(仅限使用 Rancher 默认自签名证书)


kubectl create namespace cert-manager
kubectl apply -f cert-manager/cert-manager-crd.yaml
kubectl apply -R -f ./cert-manager


3.集群内部署-Helm3部署无证书Rancher(HA)

同第二种部署获取helm部署模板,无需渲染,解压后通过额外创建一个value文件进行部署。

copy一份values.yaml文件后修改自定义参数,如下为常用修改部分:


privateCA: false   # 描述是否使用自建证书,默认为true,修改为false不使用证书加密
rancherImage: rancher/rancher    # 使用的镜像
# rancherImageTag: v2.0.7   #使用镜像的标签
tls: external   # 加密方式,默认为ingress


创建命名空间后,使用helm工具在集群内创建HA rancher:


helm install rancher --namespace cattle-system -f ./value.yaml ./rancher


四、可能遇到的问题

1、若使用helm报错无法连接到集群

添加如下环境变量:


export KUBECONFIG=/etc/rancher/k3s/k3s.yaml