Helm安装spinnaker到k8s集群

Helm简介

Helm 是 Kubernetes 的软件包管理工具,类似于Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip,能快速查找、下载和安装软件包。包含几个基本概念:

  • Chart:一个 Helm 包,封装kubernetes原生应用程序的yaml文件
  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。
  • Repository:用于发布和存储 Chart 的仓库。
  • config:包含了应用发布配置信息

使用Helm安装spinnaker

开始安装前,默认K8S集群已经准备完毕。

安装Helm


软件包下载地址:https://github.com/helm/helm/releases

$ wget https://get.helm.sh/helm-v3.2.0-linux-amd64.tar.gz
$ tar -zxvf helm-v3.2.0-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/helm
$  helm version
version.BuildInfo{Version:"v3.2.0", GitCommit:"xx", GitTreeState:"clean", GoVersion:"go1.13.5"}

下载spinnaker charts

下载地址:https://github.com/helm/charts/tree/master/stable/spinnaker
下载好,需要修改values文件,用来适配我们自己的k8s环境。
设置挂载
本文k8s集群在阿里云中,所以挂载点选择的云盘,用来放redis缓存及各种配置文件。

  persistence:
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 30Gi  
    storageClass: "alicloud" 

设置additionalProfileConfigMaps
此处设置之后,文件会挂载到/home/spinnaker/.hal/default/profiles目录下,与权限设置有关系。

  additionalProfileConfigMaps:
    data: 
      fiat-local.yml:
        fiat:
          admin:
            roles:
              - administrator
      orca-local.yml:
        tasks:
          useManagedServiceAccounts: true
      settings-local.js:
        window.spinnakerSettings.feature.managedServiceAccounts = true;

设置additionalServiceSettings
此处设置后,文件会挂载到/home/spinnaker/.hal/default/service-settings,将spinnaker需要的镜像设置为自己的镜像仓库地址。

fiat.yml:
      artifactId:  xxxx(你的仓库地址)
      kubernetes:
        imagePullSecrets:
          - (私有仓库设置)
其余配置插件也是同样设置。

设置bom
此处设置后,文件会挂载到/home/spinnaker/.hal/.boms/bom,设置bom,spinnaker就会从你设置的镜像仓库中拉取镜像了。

  bom: |-
     version: 1.19.6
     timestamp: '2020-04-21 08:00:59'
     services:
       echo:
         version: 2.11.3-20200421040016
         commit: 37f1dab07bc77dfd466806d5289a9b890bf75ffa
       clouddriver:
         version: 6.7.3-20200401190525
         commit: 77c774d185de42bb83dffde1f813f719f712994b
       deck:
         version: 3.0.3-20200415122124
         commit: d7fae58cc712674f0f0fe5aa84f5578396afbcad
       fiat:
         version: 1.10.3-20200421040016
         commit: 546552369de7ab108d32f085495166016ba5b019
       front50:
         version: 0.22.1-20200401121252
         commit: ef1e7feff41797beb2d1695c1c3c0face550fe4b
       gate:
         version: 1.15.2-20200415095112
         commit: 14d7678ea7602e7fa2947e0b5650e10e13ba51cd
       igor:
         version: 1.9.2-20200401121252
         commit: 576235bcfce0c48bc139e9c94fe98b3467d3d170
       kayenta:
         version: 0.14.0-20200304112817
         commit: 85f590de74db46d54f016d88862418c990a17747
       orca:
         version: 2.13.4-20200416040016
         commit: 6d92294e8f94df042cd1bf6ae48448ec2ea70a6a
       rosco:
         version: 0.18.1-20200401121252
         commit: 9a20165e9c0d33e538d0038d5d02cb480e27f8c3
       defaultArtifact: {}
       monitoring-third-party:
         version: 0.16.2-20200228142642
         commit: 94c6e9cd3006347efe3101c0e6d8f98ce65f9053
       monitoring-daemon:
         version: 0.16.2-20200228142642
         commit: 94c6e9cd3006347efe3101c0e6d8f98ce65f9053
     dependencies:
       redis:
         version: 2:2.8.4-2
       consul:
         version: 0.7.5
       vault:
         version: 0.7.0
     artifactSources:
       debianRepository: https://dl.bintray.com/spinnaker-releases/debians
       dockerRegistry: xxxxxxx       googleImageProject: marketplace-spinnaker-release
       gitPrefix: https://github.com/spinnaker  

注意,版本需要对应,查看版本方法:hal version bom
设置env代理
halyard在安装的时候,会从gcs拉取配置,比对版本,此处设置代理,使得halyard可以访问外网。当然也可以禁用hal比对,但是就需要将所有的配置文件下载到本地,比较麻烦,具体可以看我上一篇文章。

env:
    - name: JAVA_OPTS
      value: '"-Djava.security.egd=file:/dev/./urandom" "-Dspring.config.additional-location=/opt/spinnaker/config/" "-Dhttp.proxyHost=192.168.xx" "-Dhttp.proxyPort=80" "-Dhttps.proxyHost=192.168.xx" "-Dhttps.proxyPort=80" "-Dhttp.nonProxyHosts=\"localhost|*.example.com\""'  

设置docker仓库
dockerRegistries选项,按照提示输入自己的仓库地址、用户名密码。
设置kubeConfig
设置我们自己的k8s集群,需要提前做secret。

$ kubectl create secret generic kubeconfig --from-file=./config

kubeConfig:
  enabled: true
  secretName: kubeconfig
  secretKey: config
  contexts:
  - spin
  deploymentContext: spin  omittedNameSpaces:
  - kube-system
  - kube-public
  onlySpinnakerManaged:
    enabled: true

设置s3存储
spinnaker各种配置保存的地方。

s3:
  enabled: true
  bucket: "spinnaker"
  rootFolder: xx
  pathStyleAccess: true
  endpoint: http://xx:9000
  accessKey: "xx"
  secretKey: "xx"

做好这一切前置动作之后,就可以直接安装spinnaker了。

$ helm install -n spinnaker stable/spinnaker -f values.yaml --timeout 3600  --namespace spinnaker

-n:spinnaker 指明安装的 Spinnaker 别名为 spinnaker,生成的 Pod 都会以该名称开头。
-f:values.yaml 指明安装时使用 values.yaml 作为默认配置。
–timeout 3600:指明 Helm 安装等待超时时间为 3600s
–namespace:spinnaker 指明本次安装的 Chart 都将在名称为 spinnaker 的命名空间内
若在安装过程中,出现安装失败的情况,可以使用helm delete spinnaker 删除,重新安装。

访问spinnaker

需要为spinnaker创建ingress后,可以访问。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: spinnaker
  namespace: spinnaker
  annotations:
    kubernetes.io/ingress.class: nginx-internet
    nginx.ingress.kubernetes.io/ssl-redirect: "true"

spec:
  tls:
    - secretName: ingress-niucache
      hosts:
        - spinnaker.xx
        - spin-gate.xx
  rules:
    - host: spinnaker.xx
      http:
        paths:
        - path: /
          backend:
            serviceName: spin-deck
            servicePort: 9000
    - host: spin-gate.xx
      http:
        paths:
        - path: /
          backend:
            serviceName: spin-gate
            servicePort: 8084         
$ kubectl create -f ingress.yaml

创建完ingress之后就可以用spinnaker.xx域名来访问spinnaker了。

后记

spinnaker在国内安装一直是个大问题,虽然官方提供了完全离线安装的方法,但是比较繁琐,如果可以,还是建议halyard增加代理,镜像换成我们自己镜像仓库的这种安装方式。

posted @ 2020-06-21 09:40  我是一条最咸的咸鱼  阅读(427)  评论(0编辑  收藏
返回顶部