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增加代理,鏡像換成我們自己鏡像倉庫的這種安裝方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM