解决了好几个软件的构建问题,在解决部署问题,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. 他们将编写好的文件存放在一个统一集中的地方,构建组将所有的源代码编译成可以在计算机上运行的二进制文件,且用安装工具把各种 ...
随机推荐
- js,java时间处理
1.JS获取时间格式为“yyyy-MM-dd HH:mm:ss”的字符串 function getTimeStr(){ var myDate = new Date(); var year = myDa ...
- TEA加密/解密算法
在游戏项目中,一般需要对资源或数据进行加密保护,最简单高效的加密算法就是采用位与或之类的,但是比较容易被人分析出来.TEA加密算法不但比较简单,而且有很强的抗差分分析能力,加密速度也比较快.可以根据项 ...
- Codeforces 934D - A Determined Cleanup
934D - A Determined Cleanup 思路: 找规律,和k进制的求法差不多,答案的奇数位是p%k,偶数位如果p%k!=0,那么答案是k-p%k,否则为0. 代码: #include& ...
- Unity --- sharedMaterial 、material
sharedMaterial: 无论如何更新材质的属性,内存中只会存在一份. material: 每次更新材质属性的时候,内存中都会重新new一份material作用于它,直到 Application ...
- XLua与CSharp交互的采坑点 : 热修复返回值为 Int 的CSharp方法
1.假如CS的一个类中有如下逻辑: using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...
- 对nginx进行平滑升级
1.查看服务器当前nginx版本 [root@instance-hwl9ix5l licenses]# nginx -v #查看版本 nginx: nginx version: n ...
- php中文件操作常用函数有哪些
php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...
- JS中如何生成全局变量
JS中如何生成全局变量 一.总结 一句话总结:在函数内部,一般用var声明的为局部变量,没用var声明的一般为全局变量 在函数内没用var声明的一般为全局变量 1.js中的函数中的this指向的是谁? ...
- 接口测试——带token请求post接口(postman学习)
今天遇到一个接口,是添加备注的,post类型,访问参数中需要带上token才行,我在header 中直接加token参数,接口总返回 403,请登陆 1.考虑yapi接口平台集成的是postman的接 ...
- English trip V1 - B 17. Giving Information 提供信息 Teacher:Taylor Key: Person Information
In this lesson you will learn to say your phone number and address. 这节课讲学习说你的手机号码和地址. 课上内容(Lesson) ...