环境准备
· 一个或多个kubernetes集群环境
· 一台Ubuntu 16.04,用于部署halyard,需要能与master通信
· ss 配置全局代理,用于halyard从google获取信息和docker下载镜像
注意:
如果不用ubuntu主机,可采用docker方式部署,具体参考官网
如果不配置docker代理,也可以在halyard的halyard.yml中配置镜像仓库
环境说明:
ss客户端ip:192.168.1.1
minio存储:192.168.1.9
基础环境配置
· docker 参数配置:
cat /etc/systemd/system/docker.service.d/docker-proxy.conf
[Service]
Environment="ALL_PROXY=socks5://192.168.1.1:1080"
· hal和halyard 参数配置:
DEFAULT_JVM_OPTS='"-Dhttp.proxyHost=192.168.1.1" "-Dhttp.proxyPort=1080" "-Dhttps.proxyHost=192.168.1.1" "-Dhttps.proxyPort=1080" "-Djava.security.egd=file:/dev/./urandom" "-Dspring.config.location=/opt/spinnaker/config/"'
安装halyard
注意:首先创建spinnaker用户,建议ubuntu主机使用root账号安装
root@ubuntu:~# curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/debian/InstallHalyard.sh
root@ubuntu:~# bash InstallHalyard.sh
说明:提示输入一个非root账号,输入spinnaker即可,等待下载完成一路回车就行
配置hal和halyard参数:
安装相关的目录都在/opt/halyard,打开bin下面的hal和halyard文件,找到JAVA_OPTS行,添加上述参数,添加完成以后执行 hal shutdown 关闭,然后执行hal version list 查看spinnaker的版本。
如果此命令失败,请确保hal在您的命令在$PATH中,并检查日志查看是否有错误(/var/log/spinnaker/halyard/halyard.log),大多数的坑都是代理产生的,一定要确保代理可用。
配置kubernetes环境
把kubectl命令和/root/.kube 目录复制到Ubuntu主机上(只留conf即可,其他删除)或者单独进行授权
kubectl ---> /usr/bin/
.kube ---> /root/.kube
操作都在ubuntu主机上:
相关文件和命令都可以去https://www.spinnaker.io/setup/install/providers/kubernetes-v2/ 复制执行,此处可能存在格式问题
创建spinnaker的service-account:
CONTEXT=`grep current-context /root/.kube/config|awk '{print $2}'`
kubectl apply --context $CONTEXT -f https://spinnaker.io/downloads/kubernetes/service-account.yml
TOKEN=$(kubectl get secret --context$CONTEXT\$(kubectl get serviceaccount spinnaker-service-account --context$CONTEXT -n spinnaker -ojsonpath='{.secrets[0].name}') -n spinnaker -ojsonpath='{.data.token}' | base64 --decode)
kubectl config set-credentials ${CONTEXT}-token-user--token$TOKEN
kubectl config set-context $CONTEXT--user${CONTEXT}-token-user
创建spinnaker的rbac:
kubectl apply --context $CONTEXT -f service-rabc.yml
开启spinnaker的kubernetes服务接口:
hal config provider kubernetes enable
添加account:
hal config provider kubernetes account add my-k8s-v2-account --provider-version v2 --context$(kubectl config current-context)
hal config features edit --artifactstrue
hal config deploy edit --type distributed --account-name my-k8s-v2-account
重启hal:
hal shutdown
部署minio
使用helm安装minio,pvc使用的是openebs存储
helm fetch stable/minio
下载chart文件并修改存储类和access key和secret key:
storageClassName: openebs-standard
helm install minio --name=minio namespace=spinnaker
禁用s3存储:
/home/spinnaker/.hal/default/profiles/front50-local.yml
spinnaker.s3.versioning: false
部署spinnaker
获取可用版本号:hal version list
选择使用的版本号:halconfigversionedit--version
部署spinnaker:hal deploy apply
至此,安装完成,修改service类型进行访问
打开浏览器,NodePort方式进行访问:
注意:如果在deploy过程中日志出现Unable to connect to the Server EOF,这便是权限问题,在github提了issue,暂且没人回复
访问方式
官方推荐ssh方式:hal deploy connect
ingress方式:
首先修改服务的绑定地址:
echo "host: 0.0.0.0" | tee \
/home/spinnaker/.hal/default/service-settings/gate.yml \
/home/spinnaker/.hal/default/service-settings/deck.yml
然后配置域名访问的URL:
hal config security ui edit \
--override-base-url https://xxx.xxx.xxx:9000
hal config security api edit \
--override-base-url https://xxx.xxx.xxx:8084
配置修改完成后:hal deploy apply 更新
部署到此为止,后续内容有时间再更新吧
部署有疑问请加微信JieLinux共同讨论