Name
Last commit
Last update
deploy redis
image update
service redis
settings_local passport settings
README.md update
harbor.crt add crt
images fix load_images
init.sh init
load_images.sh init
static_route_table.json remove use test service

【WIP】Mac下搭建本地k8s,并进行开发、调试和部署

环境准备

安装Docker/k8s

  1. 安装 Docker for Mac,Version>=18.06,低版本可能不自带Kubernetes

  2. 设置 Docker 中国官方镜像加速 registry mirror https://registry.docker-cn.com mirror

  3. 预先从阿里云Docker镜像下载 Kubernetes 所需要的镜像, 可以通过修改 ./images 文件定制你自己需要的镜像

    $ ./load_images.sh
  4. Docker for Mac 设置中启用 Kubernetes 选项, 并等待一会儿,直到 Kubernetes 开始运行。

k8s

  1. 切换Kubernetes运行上下文至 docker-for-desktop
# 一般只有在之前用其他方式运行过Kubernetes才需要
$ kubectl config use-context docker-for-desktop
  1. 验证 Kubernetes 集群状态
$ kubectl cluster-info
$ kubectl get nodes
  1. 部署 Kubernetes dashboard
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

# 开启本机访问代理
$ kubectl proxy

通过下面的连接访问 Dashboard: http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 访问时出现下面界面可跳过:

(可选)获取 Dashboard admin 权限: https://github.com/kubernetes/dashboard/wiki/Access-control#admin-privileges

安装Helm

为了之后能够使用 gm-cli 更方便地进行本地环境的搭建与开发,需要安装配置helm

# 用 homebrew 安装 Helm
$ brew install kubernetes-helm

# 初始化本地 CLI 并 将 Tiller 安装到 Kubernetes cluster
$ helm init

# 更新本地 charts repo
$ helm repo update

一些初始化配置

  1. 添加证书:

    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./harbor.crt

    重启docker

  2. docker login

    docker login harbor.test.gengmei
    username: gmuser
    password: Gengmei123!
  3. docker-for-mac上添加File Sharing配置 /srv/apps、/data/log,添加后点击Apply & Restart,若报错如下,可不必添加。

至此就能使用gm-cli构建本地集群了,具体使用参考 gm-cli


下面内容是不用gm-cli的情况下手动搭建本地集群的步骤,直接使用gm-cli的话可忽略

手动部署集群

  1. 备份之前的路由表,用当前目录下的路由表替换之前的路由表

    mv /etc/gm-config/storage/static.dir/helios.dir/static_route_table.json /etc/gm-config/storage/static.dir/helios.dir/static_route_table.json.old
    cp ./static_route_table.json /etc/gm-config/storage/static.dir/helios.dir/static_route_table.json
  2. 创建项目目录,日志目录到指定位置

    sudo mkdir -p /data/log /srv/apps
    sudo chown 自己的用户名 /data/log /srv/apps
    # 约定日志目录
    mkdir -p /data/log/backend/app /data/log/gaia/app /data/log/mimas/app /data/log/doris/app   # ...
    # 约定代码目录
    mkdir -p /srv/apps 
  3. clone 项目代码

    cd /srv/apps
    git clone git@git.wanmeizhensuo.com:backend/backend.git
    git clone git@git.wanmeizhensuo.com:backend/gaia.git
    git clone git@git.wanmeizhensuo.com:backend/Mimas.git
    git clone git@git.wanmeizhensuo.com:rank/doris.git
  4. 每个项目checkout到paas分支,build镜像

    cd 项目目录
    git checkout paas
    docker build --no-cache -t 项目名:local.latest .

    另外需要一个Redis的镜像:

    docker pull redis
  5. 复制 settings_local 到项目目录下

    cp ./settings_local/backend/settings_local.py /srv/apps/backend/gengmei
    cp ./settings_local/gaia/settings_local.py /srv/apps/gaia/gaia
    cp ./settings_local/mimas/settings_local.py /srv/apps/mimas/settings/settings_local.py
    cp ./settings_local/doris/devel.py /srv/apps/doris/doris/devel.py
  6. 设置configmap

    kubectl create configmap static-route-table --from-file=/etc/gm-config/storage/static.dir/helios.dir/static_route_table.json
    kubectl create configmap backend-settings --from-file=/srv/apps/backend/gengmei/settings_local.py
    kubectl create configmap gaia-settings --from-file=/srv/apps/gaia/gaia/settings_local.py
    kubectl create configmap mimas-settings --from-file=/srv/apps/mimas/settings/settings_local.py
    kubectl create configmap doris-settings --from-file=/srv/apps/doris/doris/devel.py
  7. 部署Pod和Service

    # Pod
    kubectl create -f deploy/backend-deploy.yml
    kubectl create -f deploy/gaia-deploy.yml
    kubectl create -f deploy/mimas-deploy.yml
    kubectl create -f deploy/doris-deploy.yml
    kubectl create -f deploy/redis-deploy.yml
    # Service
    kubectl create -f service/backend-service.yml
    kubectl create -f service/gaia-service.yml
    kubectl create -f service/mimas-service.yml
    kubectl create -f service/doris-service.yml
    kubectl create -f service/redis-service.yml
  8. 测试服务是否正常

    kubectl get service -o wide

    找到backend-service的PORTS, 默认30001,访问 localhost:30001 验证服务

服务调试(不使用gm-cli)

  1. 本地开发,对/srv/apps的服务进行开发

  2. (如果涉及依赖的更新,先切到项目目录,执行docker build --no-cache -t 项目名:local.latest .)

  3. 更新服务

    kubectl replace --force -f deploy/backend-service.yml  # 更改了哪个服务,更新时就用deploy目录下的对应文件更新
  4. 测试