返回

动手打造一个包含自定义rancher/ui的docker镜像

前端

前言

我们知道启动一个rancher服务只需要运行下面这行代码就行了。但如果我们想要对rancher的ui做一些自定义的定制,除了使用官方推荐的修改ui接口外,能否将自定义的UI打也打包成一个镜像。官方推荐的自定义UI部署方式,build时必须确定访问域名,部署到五个机器就要build五次。

本文将指导您如何创建包含自定义rancher/ui的docker镜像。您将学习如何修改rancher ui,以及如何使用docker构建自定义镜像。最后,您还将了解如何部署包含自定义ui的rancher server。

修改rancher UI

  1. 克隆rancher/ui仓库
git clone https://github.com/rancher/ui.git
  1. 进入rancher/ui目录
cd ui
  1. 修改src/app/components/Header/index.js文件
import React from 'react';
import { Link } from 'react-router-dom';
import { Navbar, Nav, NavItem } from 'reactstrap';

const Header = () => (
  <Navbar color="light" light expand="md">
    <Link className="navbar-brand" to="/">Rancher</Link>
    <Nav className="ml-auto" navbar>
      <NavItem>
        <Link className="nav-link" to="/clusters">Clusters</Link>
      </NavItem>
      <NavItem>
        <Link className="nav-link" to="/projects">Projects</Link>
      </NavItem>
      <NavItem>
        <Link className="nav-link" to="/nodes">Nodes</Link>
      </NavItem>
      <NavItem>
        <Link className="nav-link" to="/storage">Storage</Link>
      </NavItem>
      <NavItem>
        <Link className="nav-link" to="/settings">Settings</Link>
      </NavItem>
    </Nav>
  </Navbar>
);

export default Header;
  1. 将修改后的文件提交到git仓库
git add src/app/components/Header/index.js
git commit -m "修改rancher ui"
  1. 推送修改到远程仓库
git push origin master

构建docker镜像

  1. 创建Dockerfile文件
FROM rancher/rancher:latest

RUN mkdir -p /usr/share/nginx/html/static/dist
COPY dist/ /usr/share/nginx/html/static/dist

CMD ["nginx", "-g", "daemon off;"]
  1. 构建docker镜像
docker build -t my-rancher-ui .

部署rancher server

  1. 创建rancher server的yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rancher-server
  namespace: cattle-system
spec:
  selector:
    matchLabels:
      app: rancher-server
  template:
    metadata:
      labels:
        app: rancher-server
    spec:
      containers:
      - name: rancher-server
        image: my-rancher-ui
        ports:
        - containerPort: 8080
          name: http
        - containerPort: 443
          name: https
  1. 部署rancher server
kubectl apply -f rancher-server.yaml

访问rancher server

您可以通过浏览器访问rancher server,默认端口是8080。

结语

本文介绍了如何创建包含自定义rancher/ui的docker镜像。您还学习了如何修改rancher ui,以及如何使用docker构建自定义镜像。最后,您还了解了如何部署包含自定义ui的rancher server。