解决了好几个软件的构建问题,在解决部署问题,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=$@
function checkPara(){
local p=$
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 及插件
#
#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 no) | bx login -a https://api.${REGION}.bluemix.net -u $USERNAME -p $PASSWD
bx login -a https://api.${REGION}.bluemix.net
(; ) | bx target --cf
bx cs init
$(bx cs cluster-config $(bx cs clusters | grep 'normal' | awk '{print $1}') | grep 'export')
PPW=$(openssl rand -base64 | md5sum | head -c12)
SPW=$(openssl rand -base64 | md5sum | head -c12)
AKN=del_$(openssl rand -base64 | md5sum | head -c5)
AK=$(bx iam api-key-create $AKN | | awk '{print $3}' | base64)
# 尝试清除以前的构建环境
kubectl delete pod build >/dev/null
kubectl delete deploy kube ss bbr >/dev/null
kubectl delete svc kube ss ss-tcp ss-udp >/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 容器停止
>& | grep -q "NotFound"
do
done
# 创建构建环境
cat << _EOF_ > build.yaml
apiVersion: v1
kind: Pod
metadata:
name: build
spec:
containers:
- name: alpine
image: docker:dind
command: ["sleep"]
args: ["]
securityContext:
privileged: true
restartPolicy: Never
_EOF_
kubectl create -f build.yaml
>/dev/"
do
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:$SPW@$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/>& &
# 安装 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=$
AK=$( | base64 -d)
PPW=$
SPW=$
REGION=$
IP=$
BBR=$
PEM=$
export BLUEMIX_API_KEY=$AK
(; echo no) | bx login -a https://api.${REGION}.bluemix.net
(; ) | 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 | 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服务器。
不懂,继续研究。
怕脚本下载不到,先存一下。
解决了好几个软件的构建问题,在解决部署问题,bluemix部署的更多相关文章
- Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法
Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法 Adobe App Scaling on High DPI Displays (FIX ...
- 解决Genymotion不能安装软件的问题
解决Genymotion不能安装软件的问题 官方取消了with google apps字样的rom,导致安装app不兼容的解决 有些童鞋在兴奋的打开Genymotion模拟器后可能会发现无法安装下载下 ...
- 解决Adobe cs6系列软件在Windows10操作系统中无法正常运行问题
大家好,我是安德风,很高兴今天能给大家一起解决Adobe cs6系列软件在Windows10操作系统中无法正常运行的问题.今天我以Adobe Photoshop cs6在Windows10环境安装运行 ...
- 目录已存在导致Jenkins项目构建失败的解决方法
Jenkins中的项目在下载源代码时,如果Working Directory中存在未加入版本控制的文件或者目录已经存在于SVN库中,会导致更新失败,整个构建终止,解决方法是将SVN的检出策略由&quo ...
- CentOS6安装各种大数据软件 第十章:Spark集群安装和部署
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php
Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...
- CDH构建大数据平台-Kerberos高可用部署【完结篇】
CDH构建大数据平台-Kerberos高可用部署[完结篇] 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Kerberos相关的软件包并同步配置文件 1>.实验环境 ...
- centos7.5 解决缺少libstdc++.so.6库的原因及解决办法
centos7. 解决缺少libstdc++.so.6库的原因及解决办法 执行node -v报错如下: [root@bogon ~]# node -v node: error : cannot ope ...
- 软件测试之构建测试---BVT
1. 构建的基本流程: a. 开发人员在他们的个人计算机上编写源代码文件 b. 他们将编写好的文件存放在一个统一集中的地方,构建组将所有的源代码编译成可以在计算机上运行的二进制文件,且用安装工具把各种 ...
随机推荐
- 消息队列rabitMq
rabbitmq MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息 ...
- Codeforces 841 D - Leha and another game about graph
D - Leha and another game about graph 思路:首先,如果所有点的度数加起来是奇数,且没有-1,那么是不可以的. 其他情况都可以构造,我们先dfs出一个生成树,然后从 ...
- HTML5-用canvas画布rotate字体旋转(中国象棋棋谱)。
一开始我们老师安排我做这个作业,在这个作业我遇到了一个很重大的问题就是,文字旋转这么旋转,我查了很多资料. 1发现绘画正方形,使他正方形中心原点旋转非常容易理解.(我相信这个很多人看一下都会懂,) 1 ...
- 最大频率栈 Maximum Frequency Stack
2018-10-06 22:01:11 问题描述: 问题求解: 为每个频率创建一个栈即可. class FreqStack { Map<Integer, Integer> map; Lis ...
- python爬虫学习(二):定向爬虫例子-->使用BeautifulSoup爬取"软科中国最好大学排名-生源质量排名2018",并把结果写进txt文件
在正式爬取之前,先做一个试验,看一下爬取的数据对象的类型是如何转换为列表的: 写一个html文档: x.html<html><head><title>This is ...
- (转)c# control.Invoke control.BeginInvoke
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...
- hdu-3366 Passage 概率DP 读懂就能AC hhh
http://acm.split.hdu.edu.cn/showproblem.php?pid=3366 读题的时候没发现这个P Q 1-P-Q是全集的划分,以为是独立事件,写错了转移方程233 先贪 ...
- hihocoder-1419 后缀数组四·重复旋律4 求连续重复次数最多的子串
对于重复次数,如果确定了重复子串的长度len,那重复次数k=lcp(start,start+len)/len+1.而暴力枚举start和len的复杂度是O(n^2),不能接受.而有一个规律,若我们只枚 ...
- android -------- ConstraintLayout Group和goneMargin(五)
前面的文章 ConstraintLayout 介绍 (一) ConstraintLayout约束属性 (二) ConstraintLayout 宽高比和偏移量比(三) ConstraintLayout ...
- Confluence 6 空间中的常用宏
小组空间(Team Spaces): 介绍小组:User Profile Macro 将会对 Confluence 的用户显示属性的简单摘要,属性照片,联系方式. 在你小组中分享通知和新闻:The B ...