美文网首页
Rancher 二次开发之开发环境搭建

Rancher 二次开发之开发环境搭建

作者: 河码匠 | 来源:发表于2023-01-08 10:28 被阅读0次

以下是基于 rancher 2.6.8 版本

一、本地开发环境的搭建

1. 安装 docker

我这里直接安装 docker desktop 最新版本。安装包和方法自行百度

2. 安装 kubectl

kubectl 是管理 Kubernetes 的工具

brew install kubectl
命令
命令 说明
kubectl get pods -A 列出所有 pod
kubectl get crd 列出所有 crd
kubectl get deployments -A 列出所有 deployments
kubectl get services 列出所有 services
kubectl api-resources 列出 api 资源

3. 安装 k3d

k3d 是一个在 docker 上部署 k3s(k3s 是 Rancher Lab 的最小 Kubernetes 发行版,mini 版 k8s) 的工具。
使用 brew 工具安装 k3d

brew install k3d
命令
命令 说明
k3d cluster ls 查看已经创建的 k3s 集群
k3d cluster delete xxx 删除指定的 k3s 集群
k3d cluster create 创建 k3s 集群,示例如下 4
k3d cluster start/stop xxx 启动或关闭 xxx 集群
k3d kubeconfig get xxx 获取 xxx 集群的 kubectl 配置文件
k3d node list 列出当前所有 node
k3d node start/stop xxx 启动或关闭 xxx node
k3d registry list 列出所有注册表信息
k3d version k3d 版本信息

4. 使用 k3d 创建 k3s 集群

如果你运行的是 rancher 的最新版本,直接使用最新 k3s 就行。如果其他版本。查看 rancher 的各种版本支持。我这里用的是 v1.20.14

k3d cluster create mycluster --api-port 127.0.0.1:6443 --port '8080:80@loadbalancer' -i rancher/k3s:v1.20.14-k3s2

创建参数说明

参数 说明
--api-port 定义 Kubernetes API 在负载均衡上面的端口号
--port 将端口从节点容器映射到主机
-i 指定要使用的 k3s 镜像

执行创建命令会有如下输出(第一次时间可能会长一点,因为要下载镜像)

rancher2.6 » k3d cluster create aaa --api-port 127.0.0.1:7443 --port '8089:80@loadbalancer' -i rancher/k3s:v1.20.14-k3s2                                                                                 ~/Desktop/Projects/rancher2.6
INFO[0000] portmapping '8089:80' targets the loadbalancer: defaulting to [servers:*:proxy agents:*:proxy]
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-aaa'
INFO[0000] Created image volume k3d-aaa-images
INFO[0000] Starting new tools node...
INFO[0000] Starting Node 'k3d-aaa-tools'
INFO[0001] Creating node 'k3d-aaa-server-0'
INFO[0001] Creating LoadBalancer 'k3d-aaa-serverlb'
INFO[0001] Using the k3d-tools node to gather environment information
INFO[0001] Starting new tools node...
INFO[0001] Starting Node 'k3d-aaa-tools'
INFO[0002] Starting cluster 'aaa'
INFO[0002] Starting servers...
INFO[0002] Starting Node 'k3d-aaa-server-0'
INFO[0006] All agents already running.
INFO[0006] Starting helpers...
INFO[0006] Starting Node 'k3d-aaa-serverlb'
INFO[0012] Injecting records for hostAliases (incl. host.k3d.internal) and for 3 network members into CoreDNS configmap...
INFO[0014] Cluster 'aaa' created successfully!
INFO[0014] You can now use it like this:
kubectl cluster-info

创建成功后可以看到如下信息(这里如果出现下载镜像失败信息,需要"上网")

# kubectl cluster-info                                                                                             
Kubernetes control plane is running at https://127.0.0.1:7443
CoreDNS is running at https://127.0.0.1:7443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:7443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

#  kubectl get pods -A                                                 ~/Desktop/Projects/rancher2.6
NAMESPACE     NAME                                      READY   STATUS         RESTARTS   AGE
kube-system   local-path-provisioner-5f8bbd68f9-jqg2w   1/1     Running        0          3m19s
kube-system   coredns-5cfbb9f57c-kr688                  1/1     Running        0          3m19s
kube-system   metrics-server-d8ccb79c9-whmwp            1/1     Running        0          3m19s
kube-system   helm-install-traefik-crd-vcljg            0/1     Completed      0          3m20s
kube-system   helm-install-traefik-2vd7f                0/1     Completed      1          3m20s
kube-system   svclb-traefik-bc187feb-6rq57              2/2     Running        0          67s
......

\color{red}{注意}:如果 kubectl 无法链接到 k3d 可能是因为 kube 的 config 没有自动写入,这里执行 k3d kubeconfig get mycluster 将输入的内容复制到 ~/.kube/config 中即可。

5. rancher 代码环境配置

我这里使用的 goland。不同版本的 rancher 代码使用的 go 版本也不同。
查看根目录下的 go.mod 文件中要求的 go 版本。我这里是 1.17

  • 配置 goland 中 GOPATH 环境变量。

我这里自定义了一个 GOPATH 地址

goland GOPATH 配置
  • rancher 项目在本地的目录结构

rancher 的项目放在 rancher/src/github.com/rancher 目录下。

rancher
├── pkg
│   └── mod
└── src
    ├── github.com
    │   └── rancher
    │       └──rancher
    └── k8s.io
  • 配置 build 文件
go build 配置
配置说明
参数 配置
Files 指定到 rancher 项目中的 main.go 文件
Environment CATTLE_DEV_MODE=30
KUBECONFIG=/Users/AAAA/.kube/config 这个是 kubectl 的配置文件地址
CATTLE_SYSTEM_CHART_DEFAULT_BRANCH=dev-v2.6 这里根据使用版本改变如:dev-2.6 dev-2.7
Go tool arguments -gcflags="-N -l"
Program arguments --add-local=true
  • 执行 go mod vendor 下载需要的 go 包(这里可能需要"上网")

执行成功后可以看到 pkg/mod/ 下面会多出来什么包

6. 运行 rancher 代码

这里执行在 goland 中配置的 go build 文件
\color{red}{注意}: 执行完成后在日志中搜索一下 password 会看到第一次执行 rancher 成功后给出的默认密码

2023/01/09 10:07:51 [INFO] Starting management.cattle.io/v3, Kind=Group controller
2023/01/09 10:07:51 [INFO] Creating create-ns
2023/01/09 10:07:51 [INFO] Waiting for initial data to be populated
2023/01/09 10:07:51 [INFO] Creating ingress-manage
2023/01/09 10:07:51 [INFO] Creating admin
2023/01/09 10:07:51 [INFO] 
2023/01/09 10:07:51 [INFO] -----------------------------------------
2023/01/09 10:07:51 [INFO] Welcome to Rancher
2023/01/09 10:07:51 [INFO] A bootstrap password has been generated for your admin user.
2023/01/09 10:07:51 [INFO] 
2023/01/09 10:07:51 [INFO] Bootstrap Password: v4vrq7lnvlzk4k75vgkt4d8lp44hrf47842hdbhc6ng8tbzj76fm5z
2023/01/09 10:07:51 [INFO] 
2023/01/09 10:07:51 [INFO] Use https://172.20.10.3/dashboard/?setup=v4vrq7lnvlzk4k75vgkt4d8lp44hrf47842hdbhc6ng8tbzj76fm5z to complete setup in the UI
2023/01/09 10:07:51 [INFO] -----------------------------------------
  • 访问 https://localhost:8443/ 就可以正常登录了。

他这里的提示也是让你去找密码。因为本地执行的 rancher 代码所以密码查找方式 如上

登录页面
在然后修改密码。登录,就可以看到下图中的集群列表了
集群列表

相关文章

网友评论

      本文标题:Rancher 二次开发之开发环境搭建

      本文链接:https://www.haomeiwen.com/subject/fscucdtx.html