解决了好几个软件的构建问题,在解决部署问题,bluemix部署

https://www.puteulanus.com/archives/838#comment-961
新版 Bluemix 一键搭建 SS 脚本

https://blog.feixueacg.com/bluemix-stop-docker/
IBM CLOUD Kubernetes 集群简易教程

磕了几天kubernetes教程,还是云里雾里。

先记录有用的东西吧

#!/bin/bash

# 定义参数检查
paras=[email protected]
function checkPara(){
    local p=$1
    for i in $paras; do if [[ $i == $p ]]; then return; fi; done
    false
}

# 设定区域
REGION=ng
checkPara ‘au‘ && REGION=au-syd # Sydney, Australia
checkPara ‘uk‘ && REGION=eu-gb # London, England
checkPara ‘de‘ && REGION=eu-de # Frankfurt, Germany

# 检查 BBR 参数
BBR=false
checkPara ‘bbr‘ && BBR=true

# 安装 unrar
#wget https://coding.net/u/tprss/p/bluemix-source/git/raw/master/v2/unrar
#chmod +x ./unrar
#sudo mv ./unrar /usr/bin/

# 安装 kubectl
#wget -O kubectl.rar ‘http://detect-10000037.image.myqcloud.com/5c964783-429d-4e31-a286-6580c97d4ac1‘
#unrar x kubectl.rar
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

# 安装 Bluemix CLI 及插件
#wget -O Bluemix_CLI.rar ‘http://detect-10000037.image.myqcloud.com/8e739b20-0b11-424a-95bf-99ec00c29c4a‘ #0.6.1
#unrar x Bluemix_CLI.rar
#cd Bluemix_CLI
#chmod +x install_bluemix_cli
#sudo ./install_bluemix_cli
#bluemix config --usage-stats-collect false
#wget -O container-service-linux-amd64.rar ‘http://detect-10000037.image.myqcloud.com/1eb05dc4-d8ba-4347-b932-30558134d9ee‘
#unrar x container-service-linux-amd64.rar
#bx plugin install ./container-service-linux-amd64
wget -O Bluemix_CLI_amd64.tar.gz ‘https://plugins.ng.bluemix.net/download/bluemix-cli/0.6.5/linux64‘
tar -zxf Bluemix_CLI_amd64.tar.gz
cd Bluemix_CLI
sudo ./install_bluemix_cli
bluemix config --usage-stats-collect false
bx plugin install container-service -r Bluemix

# 初始化
#echo -e -n "\n请输入用户名:"
#read USERNAME
#echo -n ‘请输入密码:‘
#read -s PASSWD
#echo -e ‘\n‘
#(echo 1; echo no) | bx login -a https://api.${REGION}.bluemix.net -u $USERNAME -p $PASSWD
bx login -a https://api.${REGION}.bluemix.net
(echo 1; echo 1) | bx target --cf
bx cs init
$(bx cs cluster-config $(bx cs clusters | grep ‘normal‘ | awk ‘{print $1}‘) | grep ‘export‘)
PPW=$(openssl rand -base64 12 | md5sum | head -c12)
SPW=$(openssl rand -base64 12 | md5sum | head -c12)
AKN=del_$(openssl rand -base64 12 | md5sum | head -c5)
AK=$(bx iam api-key-create $AKN | tail -1 | awk ‘{print $3}‘ | base64)

# 尝试清除以前的构建环境
kubectl delete pod build 2>/dev/null
kubectl delete deploy kube ss bbr 2>/dev/null
kubectl delete svc kube ss ss-tcp ss-udp 2>/dev/null
kubectl delete rs -l run=kube | grep ‘deleted‘ --color=never
kubectl delete rs -l run=ss | grep ‘deleted‘ --color=never
kubectl delete rs -l run=bbr | grep ‘deleted‘ --color=never

# 等待 build 容器停止
while ! kubectl get pod build 2>&1 | grep -q "NotFound"
do
    sleep 5
done

# 创建构建环境
cat << _EOF_ > build.yaml
apiVersion: v1
kind: Pod
metadata:
  name: build
spec:
  containers:
  - name: alpine
    image: docker:dind
    command: ["sleep"]
    args: ["1800"]
    securityContext:
      privileged: true
  restartPolicy: Never
_EOF_
kubectl create -f build.yaml
sleep 3
while ! kubectl exec -it build expr 24 ‘*‘ 24 2>/dev/null | grep -q "576"
do
    sleep 5
done
IP=$(kubectl exec -it build -- wget -qO- whatismyip.akamai.com)
PEM=$(basename $(ls ~/.bluemix/plugins/container-service/clusters/*/*.pem))
kubectl cp ~/.bluemix/plugins/container-service/clusters/*/*.yml build:/root/config
kubectl cp ~/.bluemix/plugins/container-service/clusters/*/*.pem build:/root/"$PEM"
(echo ‘apk add --update curl ca-certificates openssl‘;     echo wget -O build.sh ‘https://gist.githubusercontent.com/anonymous/dcc43cd069ad77453768f8505f73c836/raw/e930391795ea1c7af36306b098285bb12ebc89c4/build.sh‘;     echo sh build.sh "$AKN" "$AK" "$PPW" "$SPW" "$REGION" "$IP" "$BBR" "$PEM") | kubectl exec -it build sh

# 输出信息
#PP=$(kubectl get svc kube -o=custom-columns=Port:.spec.ports\[\*\].nodePort | tail -n1)
#SP=$(kubectl get svc ss -o=custom-columns=Port:.spec.ports\[\*\].nodePort | tail -n1)
SP=443
#IP=$(kubectl get node -o=custom-columns=Port:.metadata.name | tail -n1)
wget https://coding.net/u/tprss/p/bluemix-source/git/raw/master/v2/cowsay
chmod +x cowsay
cat << _EOF_ > default.cow
\$the_cow = <<"EOC";
        \$thoughts   ^__^
         \$thoughts  (\$eyes)\\\\_______
            (__)\\       )\\\\/\\\             \$tongue ||----w |
                ||     ||
EOC
_EOF_
clear
echo
./cowsay -f ./default.cow 惊不惊喜,意不意外
echo
echo ‘ 管理面板地址: ‘ http://$IP/$PPW/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
echo
echo ‘ SS:‘
echo ‘  IP: ‘$IP
echo ‘  Port: ‘$SP
echo ‘  Password: ‘$SPW
echo ‘  Method: aes-256-cfb‘
ADDR=‘ss://‘$(echo -n "aes-256-cfb:[email protected]$IP:$SP" | base64)
echo
echo ‘  快速添加: ‘$ADDR
echo ‘  二维码: http://qr.liantu.com/api.php?text=‘$ADDR
echo 
#!/bin/sh

# 安装 docker
#yum install -y yum-utils device-mapper-persistent-data lvm2 wget openssl
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#yum install docker-ce -y
dockerd >/dev/null 2>&1 &
sleep 3

# 安装 kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl

# 安装 Bluemix CLI 及插件
wget -O Bluemix_CLI_amd64.tar.gz ‘https://plugins.ng.bluemix.net/download/bluemix-cli/0.6.5/linux64‘
tar -zxf Bluemix_CLI_amd64.tar.gz
cd Bluemix_CLI
sh ./install_bluemix_cli
bluemix config --usage-stats-collect false
#bx plugin install container-service -r Bluemix

# 初始化
AKN=$1
AK=$(echo $2 | base64 -d)
PPW=$3
SPW=$4
REGION=$5
IP=$6
BBR=$7
PEM=$8
export BLUEMIX_API_KEY=$AK
(echo 1; echo no) | bx login -a https://api.${REGION}.bluemix.net
(echo 1; echo 1) | bx target --cf
#bx cs init
#$(bx cs cluster-config $(bx cs clusters | grep ‘normal‘ | awk ‘{print $1}‘) | grep ‘export‘)
bx iam api-key-delete $AKN

# 初始化镜像库
bx plugin install container-registry -r Bluemix
bx cr login
for name in $(bx cr namespace-list | grep del_); do (echo y) | bx cr namespace-rm $name; done
NS=del_$(openssl rand -base64 16 | md5sum | head -c16)
bx cr namespace-add $NS

# 构建面板容器
#cp /root/.bluemix/plugins/container-service/clusters/*/*.yml ./config
#cp /root/.bluemix/plugins/container-service/clusters/*/*.pem ./
#PEM=$(basename $(ls /root/.bluemix/plugins/container-service/clusters/*/*.pem))
cd /root/

wget -O caddy.tar.gz https://caddyserver.com/download/linux/amd64
tar -zxf caddy.tar.gz
chmod +x ./caddy

cp /usr/local/bin/kubectl ./

cat << _EOF_ > Caddyfile
0.0.0.0:80
gzip
proxy /$PPW/ 127.0.0.1:8001
_EOF_

cat << _EOF_ > run.sh
kubectl proxy --accept-hosts ‘.*‘ --api-prefix=/$PPW/ &
caddy -conf /etc/caddy/Caddyfile
_EOF_

cat << _EOF_ > Dockerfile
FROM alpine:latest
RUN apk add --update ca-certificates
ADD kubectl /usr/local/bin/
RUN mkdir /root/.kube
ADD config /root/.kube/config
ADD $PEM /root/.kube/
ADD caddy /usr/local/bin/
RUN mkdir /etc/caddy
ADD Caddyfile /etc/caddy/
ADD run.sh /root/
CMD sh /root/run.sh
_EOF_

docker build -t registry.${REGION}.bluemix.net/$NS/kube .
while ! bx cr image-list | grep -q "registry.${REGION}.bluemix.net/$NS/kube"
do
    docker push registry.${REGION}.bluemix.net/$NS/kube
done

# 创建面板运行环境
kubectl run kube --image=registry.${REGION}.bluemix.net/$NS/kube --port=80
kubectl expose deployment kube --type=LoadBalancer --name=kube --external-ip $IP

# 构建 SS 容器
cat << _EOF_ >Dockerfile
FROM easypi/shadowsocks-libev
ENV SERVER_PORT 443
ENV METHOD aes-256-cfb
ENV PASSWORD $SPW
_EOF_
docker build -t registry.${REGION}.bluemix.net/$NS/ss .
while ! bx cr image-list | grep -q "registry.${REGION}.bluemix.net/$NS/ss"
do
    docker push registry.${REGION}.bluemix.net/$NS/ss
done

# 创建 BBR 构建文件
cat << _EOF_ > bbr.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: bbr
  name: bbr
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bbr
  template:
    metadata:
      labels:
        app: bbr
      name: bbr
    spec:
      containers:
      - env:
        - name: TARGET_HOST
          value: SS_IP
        - name: TARGET_PORT
          value: "443"
        - name: BIND_PORT
          value: "443"
        image: wuqz/lkl:latest
        name: bbr
        securityContext:
          privileged: true
      restartPolicy: Always
_EOF_

# 创建 SS 运行环境
kubectl run ss --image=registry.${REGION}.bluemix.net/$NS/ss --port=443
if $BBR; then
    kubectl expose deployment ss --name=ss
    sed -i "s/SS_IP/$(kubectl get svc ss -o=custom-columns=IP:.spec.clusterIP | tail -n1)/g" bbr.yaml
    kubectl create -f bbr.yaml
    kubectl expose deployment bbr --type=LoadBalancer --port=443 --name=ss-tcp --external-ip $IP
else
    kubectl expose deployment ss --type=LoadBalancer --name=ss-tcp --external-ip $IP
fi
kubectl expose deployment ss --type=LoadBalancer --name=ss-udp --external-ip $IP --protocol="UDP"

# 删除构建环境
kubectl delete pod build

这两个脚本是一键搭建 SS 脚本中用到的脚本。

意思还不是很理解。

大概是第一个脚本,安装了一个alpine。

第二个脚本又构建一个SS服务器。

不懂,继续研究。

怕脚本下载不到,先存一下。

原文地址:https://www.cnblogs.com/jackadam/p/8452090.html

时间: 2024-11-05 15:18:45

解决了好几个软件的构建问题,在解决部署问题,bluemix部署的相关文章

平台软件每日构建总结

作者:朱金灿 来源:http://blog.csdn.net/clever101 1.背景 在以往的软件研发过程中,存在一个比较严重的问题:测试版本发布周期长,严重时长达两个月无法发布测试版本.为了有效解决这个问题,我在主持开发公司平台软件的过程中采用了现代软件工程的每日构建.这里简要介绍下公司平台软件.公司平台软件不仅仅是作为公司的拳头产品去销售,而且需要提供SDK供项目部同事去做系统定制开发.每日构建(daily builds)是指每天自动地在指定时间完整地构建整个软件代码.之所以采用每日构

让你提前认识软件开发(44):如何解决软件故障?

第3部分 软件研发工作总结 如何解决软件故障? 在软件产品的运营维护阶段,软件工程师的一项重要工作就是解决软件的bug.在学校的时候,大家学完一门课程,然后考试通过就万事大吉了.但在实际的软件开发项目中,将软件成功交付给客户,只是"万里长征走完了第一步",后面还有大量的工作要做,例如:解决软件故障.新增功能.版本升级等.作为一名合格的软件工程师,一定要学会准确.迅速地解决软件出现的各种问题. 为什么解决软件问题的能力如此重要?因为软件项目的成功率不容乐观.国内某IT公司对本公司内软件项

一键解决win10驱动+装机软件的方法

此前,微软推出了Win10预览版.开放下载的消息一经放出,相信很多普通用户都将要体验一番.为帮助用户解决初装Windows10系统,安装驱动不便的问题,驱动人生在6.2.27.106这版更新中终于完美契合Windows10. 软件名称: 驱动人生66.2.28.108官方版 软件大小: 13M  下载地址: http://www.iwin10.com/lh/ 小编的电脑初装win10系统就遇到了,图标显示不完全,电脑没有声音的苦恼,于是在线下载了一个驱动人生,它很快就检测出了小编的电脑系统. 当

解决安装VC6.0后出现MSDEV.EXE错误解决方法

问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一种方法 1.在下面的网站下载FileTool.exe http://support.microsoft.com/kb/241396/en-us      2.FileTool.exe是个自解压文件,执行它,解压到某个目录下 3.解压后的文件是一个VC工程,在VC6中编译它 4. 在dsw文件上右键“

【Android】eclipse打不开的解决办法和“Jar mismatch! Fix your dependencies”的解决

JDK1.7能用,cmd下输入java,javac,java -version,javaw配置和环境都没问题的话,有可能是工作空间的问题,就是一般在D盘下的workspace..那个文件夹,删除了,再打开eclipse. 换了工作空间之后,有的项目重新导入有时会出现"Jar mismatch! Fix your dependencies"错误.,这时就需要选择要改的项目的首选项,然后删除Android选项下的带X的Library,这是因为两个项目的jar包(android-suppor

Host is not allowed to connect to this MySQL server解决方法 可以访问局域网的数据库! 完美解决!

0. http://blog.csdn.net/flyyhz/article/details/77100243 1. 2. 3. 4. 5. 6. 7. 8. 9. 今天在Linux上面装完MySQL,却发现在本地登录可以,但是远程登录却报错Host is not allowed to connect to this mysql server,找了半天试了网上的一些方法都没有解决,最终在一篇文章里找到了解决方法,特意记录一下. 先说说这个错误,其实就是我们的MySQL不允许远程登录,所以远程登录

【已解决】Failed to Initialize Windows Azure Storage Emulator解决方法

错误代码: Failed to Initialize Windows Azure Storage Emulator Added reservation for http://127.0.0.1:10000/ in user account Richard-PC\Richard.Added reservation for http://127.0.0.1:10001/ in user account Richard-PC\Richard.Added reservation for http://1

【解决】SharePoint 2013 with SP1安装问题及解决

安装环境 操作系统:Windows Server 2008 R2 SP1 安装包:SharePoint Server 2013 with SP1 问题及解决 I. 必备组件(prerequisiteinstaller.exe)安装 1. AppFabric安装失败 解决办法: 1)修改环境变量(系统变量):PSModulePath,在其后面添加如下路径: %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\ 修改后的环境变量应该为如下内容: C:\Windo

Validation failed for one or more entities. See &lsquo;EntityValidationErrors&rsquo;解决方法;关于如何查看 EntityValidationErrors 详细信息的解决方法

我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 "See 'EntityValidationErrors' property for more details." 去 Exception 中查看,却只能看到 并不能看到具体的是那个属性为什么验证不通过,也许不少人都遇到这种情况. 这里给大家介绍一个Exception类,让我们能够轻松的知道具体的哪一个字段出了什么问题. 那就是 System.Data.Entity.Validation.DbEntityValid