范例:部署ms.sh

#!/bin/bash

export AOS_K8S_PATH=$(cd "$(dirname "$0")"; pwd)

cd $AOS_K8S_PATH

echo AOS_K8S_PATH:=$AOS_K8S_PATH

source $AOS_K8S_PATH/env_ms/env_ms.sh

export AOSSCLOUD_JDK_DEBUG=1

export ACLOUD_K8S_PATCH=$(dirname $AOS_K8S_PATH)

echo ACLOUD_K8S_PATCH:=$ACLOUD_K8S_PATCH

find $AOS_K8S_PATH -name '*.sh'|xargs chmod +x

find $AOS_K8S_PATH/../aos_pvc/ -name '*.sh'|xargs chmod +x

#生成编排文件参数

$AOS_K8S_PATH/bin/gen_all_yml.sh

if [ $# -ge 4 ]

then

    printf "USAGE: ./aos_ms.sh [action] [filename]\n"

    printf "[ ERROR ] 请输入正确的参数,形如: ./aos_ms.sh create 或 ./aos_ms.sh create _base_\n"

    printf "[ ERROR ] Please input correct argument, Example: ./aos_ms.sh create or ./aos_ms.sh create _base_\n"

    exit 2

fi

#首先处理容器的操作参数

if [ $# == 0 ]

then

    printf "EFLOW容器相关的操作如下(EFLOW MS Action List):\n"

    printf "    1-全新部署[create]\n"

    printf "    2-卸载容器[delete]\n"

    printf "    3-重建数据库[rundb]\n"

    printf "    4-设置副本数[replicas]\n"

    printf "    5-全部清除[clear]\n"

    printf "    9-日常巡检[check]\n"

    echo -n "请输入操作编号或命令,如1或create(Input action number or command, Example: 1 or create): "

    read arg_action

    case  $arg_action in

        1) arg_action="create"

        ;;

        2) arg_action="delete"

        ;;

        3) arg_action="rundb"

        ;;

        4) arg_action="replicas"

        ;;

        5) arg_action="clear"

        ;;

        9) arg_action="check"

        ;;

    esac

else

    arg_action=$1

    if  [ $arg_action != "delete" ] && [ $arg_action != "replicas" ] \

        && [ $arg_action != "create" ]  && [ $arg_action != "rundb" ] \

        && [ $arg_action != "clear" ]  && [ $arg_action != "check" ]

    then

        printf "[ ERROR ] 请在第一个参数输入正确的操作,例如deploy, down等!\n"

        printf "[ ERROR ] Please input action right at 1st argument, such as create, delete ...\n"

        exit 2

    fi   

fi

#接着处理编排文件参数

if [ $arg_action = "delete" ] || [ $arg_action = "replicas" ] \

        || [ $arg_action = "create" ]

then

    if [ $# -le 1 ]

        then

            printf "编排文件列表(EFlow MS Compose File List):\n"

            find $AOS_K8S_PATH/yml_out/ -name '*.yml'|sed -e 's/^.*\//    /'|sort

            echo -n "请输入编排文件,支持模糊匹配(Input compose files, support fuzzy matching):"

            read arg_filename

        else

            arg_filename=$2

    fi

    echo "Compose yaml files list:"

    find $AOS_K8S_PATH/yml_out/ -name "*$arg_filename*"|sort| sed -e "s/^/  /"

fi

if [ $arg_action == "replicas"  ]

then

    if [ $# -le 2 ]

    then

        echo -n "请输入修改副本数(Input replicas number):"

        read replicas

    else

        replicas=$3

    fi

    if [ ! $replicas ] || [ -z $replicas ] || [ ! -z ${replicas//[0-9]/} ]

    then

        printf "[ ERROR ] 副本数只能为整数!\n"

        printf "[ ERROR ] Replicas number must be integer!\n"

        exit 2

    fi

fi

if [ $arg_action == "check"  ]

then

    if [ $# -le 1 ]

    then

        printf "eFlow云巡检相关的操作如下(eFlow Cloud Action List):\n"

        printf "    0-全面检查[all]\n"

        printf "    1-系统负载[workload]\n"

        printf "    2-检查主控节点[master]\n"

        printf "    3-检查从节点[node]\n"

        printf "    4-检查卷[pvc]\n"

        echo -n "请输入操作编号或命令,如1或workload(Input action number or command, Example: 1 or workload): "

        read chk_action

        case  $chk_action in

            0) chk_action="all"

            ;;

            1) chk_action="workload"

            ;;

            2) chk_action="master"

            ;;

            3) chk_action="node"

            ;;

            4) chk_action="pvc"

            ;;

        esac

    else

        chk_action=$2 

    fi

fi

#正常编排动作处理

if [ $arg_action == "delete" ]

then

    $AOS_K8S_PATH/bin/clear_k8s.sh $arg_filename

elif [ $arg_action == "replicas"  ]

then

    find $AOS_K8S_PATH/yml_out/ -name "*$arg_filename*"|xargs sed -i "s/replicas: .*/replicas: $replicas/g"

    $AOS_K8S_PATH/../aos_pvc/aos_pvc.sh create

    kubectl scale --replicas=$replicas statefulset $arg_filename

    exit 0

elif [ $arg_action == "clear"  ]

then

    $AOS_K8S_PATH/bin/clear_k8s.sh

    exit 0

elif [ $arg_action == "check"  ]

then

    $AOS_K8S_PATH/bin/aos_check.sh $chk_action

    exit 0

elif [ $arg_action == "create"  ]

then

    $AOS_K8S_PATH/bin/clear_k8s.sh $arg_filename

    $AOS_K8S_PATH/../aos_pvc/aos_pvc.sh create

    find $AOS_K8S_PATH/yml_out/ -type f -name "*$arg_filename*"|sort| sed -e "s/^/kubectl create -f/"|bash

    mysql_deployed=$(find $AOS_K8S_PATH/yml_out/ -type f -name "*$arg_filename*"|grep mysql|wc -l)

    if [ $mysql_deployed == "1" ]

    then   

        tenantRunning=$(kubectl get pod tenant1-0|grep Running|wc -l)

        while [ $tenantRunning -ne 1 ]

        do

          echo 'Waitting tenant service ...'

          sleep 2s

          tenantRunning=$(kubectl get pod tenant1-0|grep Running|wc -l)

        done

        kubectl get pods -o wide|grep tenant|grep Running|head -1|awk '{print "kubectl exec -i "$1" /ums-server/utils/dbtool/run.sh"}'

        kubectl get pods -o wide|grep tenant|grep Running|head -1|awk '{print "kubectl exec -i "$1" /ums-server/utils/dbtool/run.sh"}'|bash

    fi

elif [ $arg_action == "rundb"  ]

then

    $AOS_K8S_PATH/../aos_pvc/aos_pvc.sh create

    find $AOS_K8S_PATH/yml_out/ -type f -name "*tenant*"|sort| sed -e "s/^/kubectl create -f/"|bash

    tenantRunning=$(kubectl get pod tenant1-0|grep Running|wc -l)

    while [ $tenantRunning -ne 1 ]

    do

      echo 'Waitting tenant service ...'

      sleep 2s

      tenantRunning=$(kubectl get pod tenant1-0|grep Running|wc -l)

    done

    kubectl get pods -o wide|grep tenant|grep Running|head -1|awk '{print "kubectl exec -i "$1" /ums-server/utils/dbtool/run.sh"}'

    kubectl get pods -o wide|grep tenant|grep Running|head -1|awk '{print "kubectl exec -i "$1" /ums-server/utils/dbtool/run.sh"}'|bash

    exit 0

    #kubectl get pods -o wide|grep tenant|grep Running|head -1|awk -e '{print "kubectl exec -i "$1" /ums-server/utils/dbtool/run.sh"}'|bash

fi

echo "-----------Finish Composing Service----------------"

#更新数据库中服务信息

$AOS_K8S_PATH/bin/insert_msinfo.sh

#刷新nignx缓存

$AOS_K8S_PATH/bin/refresh_nginx.sh

#创建快捷目录访问

$AOS_K8S_PATH/bin/create_link.sh

#测试登录页面是否正常

$AOS_K8S_PATH/bin/login_test.sh

echo "-----------All Finish Successfully-------------------"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355