Spinnaker 生產環境安裝部署監控

2020-11-06 DevOps雲學堂


  • 1. 架構分析
  • 2.準備工作
    • 2.1 啟動Halyard容器
    • 2.2 下載所需要的鏡像
    • 2.3 準備bom文件
  • 3.Halyard配置管理
    • 3.1.Halyard初始化配置
    • 3.2 添加鏡像倉庫(harbor)和k8s集群帳戶
    • 3.3 開啟特性功能
    • 3.4 配置JenkinsCI集成
    • 3.5 配置GitHub/GitLab集成
  • 4. 使用外部Redis集群
  • 5. 使用SQL資料庫
    • 5.1 Clouddriver服務
    • 5.2 Front50服務
    • 5.3 Orca服務
  • 6.部署
  • 7. 其他設置
    • 7.1 認證與授權
    • 7.2 郵件通知
    • 7.3 金絲雀分析
    • 7.4 監控Spinnaker


1. 架構分析

Halyard + Kubernetes + Redis + MySQL57 + S3

  • redis: Gate、Orca、Clouddrive、Rosco、Igor、Fiat、Kayenta
  • S3:Front50 、Kayenta


數據持久化

  • Orca 、Clouddriver 默認安裝使用redis存儲數據,轉換為使用SQL資料庫存儲。
  • Front50 默認安裝使用s3持久化存儲,轉換為使用SQL資料庫存儲。
  • 使用k8s外部redis集群。

2.準備工作

  • 包含6個節點的redis集群(3主+3從)。
  • MySQL 5.7資料庫。
  • 部署Minio用於S3存儲。
  • 下載Halyard容器鏡像。
  • 下載Spinnaker集群所需的容器鏡像(阿里雲)。
  • 下載BOM自定義安裝所需的文件。

2.1 啟動Halyard容器

也可以使用二進位安裝。最好將halyard運行在一臺配置好kubectl客戶端的節點上。因為後續需要用到k8s集群帳戶信息。

docker pull registry.cn-beijing.aliyuncs.com/spinnaker-cd/halyard:1.32.0mkdir /root/.haldocker run -itd --name halyard \  -v /root/.hal:/home/spinnaker/.hal \  -v /root/.kube:/home/spinnaker/.kube \  registry.cn-beijing.aliyuncs.com/spinnaker-cd/halyard:1.32.0 ## 以root身份進入容器,修改配置文件docker exec -it -u root halyard bash ## 修改spinnaker.config.input.gcs.enabled = false 。vi /opt/halyard/config/halyard.yml spinnaker:  artifacts:    debian: https://dl.bintray.com/spinnaker-releases/debians    docker: gcr.io/spinnaker-marketplace  config:    input:      gcs:        enabled: false      writerEnabled: false      bucket: halconfig ## 需要重啟容器(如果此命令未重啟,則需要退出容器然後 docker restart halyard)hal shutdown## 啟動docker start halyard

2.2 下載所需要的鏡像

所有的鏡像已經通過GitHub Actions自動同步到阿里雲鏡像倉庫。大家直接下載。為了方便可以直接運行腳本下載當前版本的所有鏡像。


bom文件和下載鏡像的腳本都在這個壓縮包中。

# 上傳到伺服器(運行halyard容器的節點)scp 1.22.1-Image-Script.zip root@master.zy.com:/rootunzip 1.22.1-Image-Script.zipcd 1.22.1[root@master 1.22.1]# ls -a.  ..  .boms  GetImages.sh  tagfile.txt## .boms需要放到.hal目錄下## GetImages.sh 鏡像下載腳本## tagfile.txt 鏡像標籤sh -x GetImages.sh  chmod 777 -R .hal/## 等待鏡像下載完成(這個腳本中做了ssh免密哦)

tagfile.txt

## tagfile[root@master 1.22.1]# cat tagfile.txtecho:2.14.0-20200817170018clouddriver:6.11.0-20200818115831deck:3.3.0-20200818132306fiat:1.13.0-20200817170018front50:0.25.1-20200831095512gate:1.18.1-20200825122721igor:1.12.0-20200817200018kayenta:0.17.0-20200817170018orca:2.16.0-20200817170018rosco:0.21.1-20200827112228

GetImages.sh

## script#!/bin/bashS_REGISTRY="gcr.io/spinnaker-marketplace"T_REGISTRY="registry.cn-beijing.aliyuncs.com/spinnaker-cd"NODES="node01.zy.com node02.zy.com"## 下載鏡像function GetImages(){    echo -e "\033[43;34m =====GetImg===== \033[0m"    IMAGES=$( cat tagfile.txt)    for image in ${IMAGES}    do        for node in ${NODES}        do           echo  -e "\033[32m ${node} ---> pull ---> ${image} \033[0m"           ssh ${node} "docker pull ${T_REGISTRY}/${image}"           echo  -e "\033[32m ${node} ---> tag ---> ${image} \033[0m"           ssh ${node} "docker tag ${T_REGISTRY}/${image} ${S_REGISTRY}/${image}"        done    done    for node in ${NODES}    do       echo -e "\033[43;34m =====${node}===鏡像信息===== \033[0m"       ssh ${node} "docker images | grep 'spinnaker-marketplace' "    done}GetImages

2.3 準備bom文件

[root@master 1.22.1]# mv .boms/ ~/.hal/[root@master 1.22.1]# cd ~/.hal/[root@master .hal]# cd .boms/[root@master .boms]# lsbom  clouddriver  deck  echo  fiat  front50  gate  igor  kayenta  orca  rosco[root@master .boms]# tree.├── bom│   ├── 1.19.4.yml│   └── 1.22.1.yml├── clouddriver│   ├── 6.11.0-20200818115831│   │   └── clouddriver.yml│   ├── 6.7.3-20200401190525│   │   └── clouddriver.yml│   └── clouddriver.yml├── deck│   ├── 3.0.2-20200324040016│   │   └── settings.js│   ├── 3.3.0-20200818132306│   │   └── settings.js│   └── settings.js├── echo│   ├── 2.11.2-20200401121252│   │   └── echo.yml│   ├── 2.14.0-20200817170018│   │   └── echo.yml│   └── echo.yml├── fiat│   ├── 1.10.1-20200401121252│   │   └── fiat.yml│   ├── 1.13.0-20200817170018│   │   └── fiat.yml│   └── fiat.yml├── front50│   ├── 0.22.1-20200401121252│   │   └── front50.yml│   ├── 0.25.1-20200831095512│   │   └── front50.yml│   └── front50.yml├── gate│   ├── 1.15.1-20200403040016│   │   └── gate.yml│   ├── 1.18.1-20200825122721│   │   └── gate.yml│   └── gate.yml├── igor│   ├── 1.12.0-20200817200018│   │   └── igor.yml│   ├── 1.9.2-20200401121252│   │   └── igor.yml│   └── igor.yml├── kayenta│   ├── 0.14.0-20200304112817│   │   └── kayenta.yml│   ├── 0.17.0-20200817170018│   │   └── kayenta.yml│   └── kayenta.yml├── orca│   ├── 2.13.2-20200401144746│   │   └── orca.yml│   ├── 2.16.0-20200817170018│   │   └── orca.yml│   └── orca.yml└── rosco    ├── 0.18.1-20200401121252    │   ├── images.yml    │   ├── packer    │   │   ├── alicloud.json    │   │   ├── alicloud-multi.json    │   │   ├── aws-chroot.json    │   │   ├── aws-ebs.json    │   │   ├── aws-multi-chroot.json    │   │   ├── aws-multi-ebs.json    │   │   ├── aws-windows-2012-r2.json    │   │   ├── azure-linux.json    │   │   ├── azure-windows-2012-r2.json    │   │   ├── docker.json    │   │   ├── gce.json    │   │   ├── huaweicloud.json    │   │   ├── install_packages.sh    │   │   ├── oci.json    │   │   └── scripts    │   │       ├── aws-windows-2012-configure-ec2service.ps1    │   │       ├── aws-windows.userdata    │   │       ├── windows-configure-chocolatey.ps1    │   │       └── windows-install-packages.ps1    │   └── rosco.yml    ├── 0.21.1-20200827112228    │   ├── images.yml    │   ├── packer    │   │   ├── alicloud.json    │   │   ├── alicloud-multi.json    │   │   ├── aws-chroot.json    │   │   ├── aws-ebs.json    │   │   ├── aws-multi-chroot.json    │   │   ├── aws-multi-ebs.json    │   │   ├── aws-windows-2012-r2.json    │   │   ├── azure-linux.json    │   │   ├── azure-windows-2012-r2.json    │   │   ├── docker.json    │   │   ├── gce.json    │   │   ├── huaweicloud.json    │   │   ├── install_packages.sh    │   │   ├── oci.json    │   │   └── scripts    │   │       ├── aws-windows-2012-configure-ec2service.ps1    │   │       ├── aws-windows.userdata    │   │       ├── windows-configure-chocolatey.ps1    │   │       └── windows-install-packages.ps1    │   ├── README.md    │   └── rosco.yml    ├── images.yml    ├── packer    │   ├── alicloud.json    │   ├── alicloud-multi.json    │   ├── aws-chroot.json    │   ├── aws-ebs.json    │   ├── aws-multi-chroot.json    │   ├── aws-multi-ebs.json    │   ├── aws-windows-2012-r2.json    │   ├── azure-linux.json    │   ├── azure-windows-2012-r2.json    │   ├── docker.json    │   ├── gce.json    │   ├── huaweicloud.json    │   ├── install_packages.sh    │   ├── oci.json    │   └── scripts    │       ├── aws-windows-2012-configure-ec2service.ps1    │       ├── aws-windows.userdata    │       ├── windows-configure-chocolatey.ps1    │       └── windows-install-packages.ps1    ├── README.md    └── rosco.yml37 directories, 91 files

3.Halyard配置管理

docker exec -it halyard bash

  • Halyard初始化配置
  • 添加鏡像倉庫(Harbor)和K8s集群帳戶
  • 開啟特性功能(pipeline-templates、artifacts、managed-pipeline-templates-v2-ui)
  • 配置JenkinsCI集成
  • 配置GitHub/GitLab集成

3.1.Halyard初始化配置

# 設置Spinnaker版本,--version 指定版本hal config version edit --version local:1.22.1# 設置時區hal config edit --timezone Asia/Shanghai# 設置存儲為s3(後面不用,但是必須配置bug)hal config storage edit --type s3  --no-validate    # 訪問方式:設置deck與gate的域名hal config security ui edit --override-base-url http://spinnaker.idevops.sitehal config security api edit --override-base-url http://spin-gate.idevops.site

3.2 添加鏡像倉庫(harbor)和k8s集群帳戶

hal config provider docker-registry enable --no-validatehal config provider docker-registry account add my-harbor-registry \    --address http://192.168.1.200:8088 \    --username admin \    --password Harbor12345hal config provider kubernetes enablehal config provider kubernetes account add default \    --docker-registries my-harbor-registry \    --context $(kubectl config current-context) \    --service-account true \    --omit-namespaces=kube-system,kube-public \    --provider-version v2 \    --no-validate    # 部署方式,分布式部署,名稱空間。hal config deploy edit \    --account-name default \    --type distributed \    --location spinnaker 

3.3 開啟特性功能

## 開啟一些主要的功能(後期可以再追加)hal config features edit --pipeline-templates truehal config features edit --artifacts truehal config features edit --managed-pipeline-templates-v2-ui true  

3.4 配置JenkinsCI集成

# 配置Jenkinshal config ci jenkins enable### JenkinsServer 需要用到帳號和密碼hal config ci jenkins master add my-jenkins-master-01 \    --address http://jenkins.idevops.site \    --username admin \    --password admin### 啟用csrfhal config ci jenkins master edit my-jenkins-master-01 --csrf true

3.5 配置GitHub/GitLab集成

# GitHub## 參考:https://spinnaker.io/setup/artifacts/github/## 創建token https://github.com/settings/tokenshal config artifact github enablehal config artifact github account add my-github-account \    --token 02eb8aa1c2cd67af305d1f606  \    --username zey# GitLab## https://spinnaker.io/setup/artifacts/gitlab/## 創建一個個人的token(admin)hal config artifact gitlab enablehal config artifact gitlab account add my-gitlab-account \    --token qqHX8T4VTpozbnX

4. 使用外部Redis集群

## service-settingsmkdir .hal/default/service-settings/vi .hal/default/service-settings/redis.ymloverrideBaseUrl: redis://192.168.1.200:6379skipLifeCycleManagement: true## profiles## /root/.hal/default/profiles[root@master profiles]# ls[root@master profiles]# vi gate-local.ymlredis:    configuration:         secure:              true

5. 使用SQL資料庫

5.1 Clouddriver服務

創建資料庫

CREATE DATABASE `clouddriver` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT  SELECT, INSERT, UPDATE, DELETE, CREATE, EXECUTE, SHOW VIEWON `clouddriver`.*TO 'clouddriver_service'@'%' IDENTIFIED BY 'clouddriver@spinnaker.com';GRANT  SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES, EXECUTE, SHOW VIEWON `clouddriver`.*TO 'clouddriver_migrate'@'%' IDENTIFIED BY 'clouddriver@spinnaker.com';

修改配置文件

## /root/.hal/default/profilesbash-5.0$ cat clouddriver-local.ymlsql:  enabled: true  # read-only boolean toggles `SELECT` or `DELETE` health checks for all pools.  # Especially relevant for clouddriver-ro and clouddriver-ro-deck which can  # target a SQL read replica in their default pools.  read-only: false  taskRepository:    enabled: true  cache:    enabled: true    # These parameters were determined to be optimal via benchmark comparisons    # in the Netflix production environment with Aurora. Setting these too low    # or high may negatively impact performance. These values may be sub-optimal    # in some environments.    readBatchSize: 500    writeBatchSize: 300  scheduler:    enabled: true  # Enable clouddriver-caching's clean up agent to periodically purge old  # clusters and accounts. Set to true when using the Kubernetes provider.  unknown-agent-cleanup-agent:    enabled: false  connectionPools:    default:      # additional connection pool parameters are available here,      # for more detail and to view defaults, see:      # https://github.com/spinnaker/kork/blob/master/kork-sql/src/main/kotlin/com/netflix/spinnaker/kork/sql/config/ConnectionPoolProperties.kt      default: true      jdbcUrl: jdbc:mysql://192.168.1.200:3306/clouddriver      user: clouddriver_service      password: clouddriver@spinnaker.com    # The following tasks connection pool is optional. At Netflix, clouddriver    # instances pointed to Aurora read replicas have a tasks pool pointed at the    # master. Instances where the default pool is pointed to the master omit a    # separate tasks pool.    tasks:      user: clouddriver_service      jdbcUrl: jdbc:mysql://192.168.1.200:3306/clouddriver      password: clouddriver@spinnaker.com  migration:    user: clouddriver_migrate    jdbcUrl: jdbc:mysql://192.168.1.200:3306/clouddriver    password: clouddriver@spinnaker.comredis:  enabled: false  cache:    enabled: false  scheduler:    enabled: false  taskRepository:    enabled: false


5.2 Front50服務

創建資料庫

CREATE DATABASE `front50` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, EXECUTE, SHOW VIEW ON `front50`.*  TO 'front50_service'@'%' IDENTIFIED BY "front50@spinnaker.com";GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES, EXECUTE, SHOW VIEW ON `front50`.* TO 'front50_migrate'@'%' IDENTIFIED BY "front50@spinnaker.com";

修改配置文件

## /root/.hal/default/profilesbash-5.0$ cat front50-local.ymlspinnaker:  s3:    enabled: falsesql:  enabled: true  connectionPools:    default:      # additional connection pool parameters are available here,      # for more detail and to view defaults, see:      # https://github.com/spinnaker/kork/blob/master/kork-sql/src/main/kotlin/com/netflix/spinnaker/kork/sql/config/ConnectionPoolProperties.kt      default: true      jdbcUrl: jdbc:mysql://192.168.1.200:3306/front50      user: front50_service      password: front50@spinnaker.com  migration:    user: front50_migrate    jdbcUrl: jdbc:mysql://192.168.1.200:3306/front50    password: front50@spinnaker.com


5.3 Orca服務

創建資料庫

set tx_isolation = 'REPEATABLE-READ';CREATE SCHEMA `orca` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, EXECUTE, SHOW VIEWON `orca`.* TO 'orca_service'@'%' IDENTIFIED BY "orca@spinnaker.com" ;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES, EXECUTE, SHOW VIEW ON `orca`.* TO 'orca_migrate'@'%'  IDENTIFIED BY "orca@spinnaker.com" ;

修改配置文件

## /root/.hal/default/profilesbash-5.0$ cat orca-local.ymlsql:  enabled: true  connectionPool:    jdbcUrl: jdbc:mysql://192.168.1.200:3306/orca    user: orca_service    password: orca@spinnaker.com    connectionTimeout: 5000    maxLifetime: 30000    # MariaDB-specific:    maxPoolSize: 50  migration:    jdbcUrl: jdbc:mysql://192.168.1.200:3306/orca    user: orca_migrate    password: orca@spinnaker.com# Ensure we're only using SQL for accessing execution stateexecutionRepository:  sql:    enabled: true  redis:    enabled: false# Reporting on active execution metrics will be handled by SQLmonitor:  activeExecutions:    redis: false# Use SQL for Orca's work queue# Settings from Netflix and may require adjustment for your environment# Only validated with AWS Aurora MySQL 5.7# Please PR if you have success with other databaseskeiko:  queue:    sql:      enabled: true    redis:      enabled: falsequeue:  zombieCheck:    enabled: true  pendingExecutionService:    sql:      enabled: true    redis:      enabled: false

6.部署

hal deploy apply --no-validate

創建Ingress訪問

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: spinnaker-service  annotations:    kubernetes.io/ingress.class: nginxspec:  rules:  - host: spinnaker.idevops.site    http:     paths:     - path: /       backend:          serviceName: spin-deck          servicePort: 9000  - host: spin-gate.idevops.site    http:      paths:      - path: /        backend:          serviceName: spin-gate          servicePort: 8084  - host: spin-front50.idevops.site    http:      paths:      - path: /        backend:          serviceName: spin-front50          servicePort: 8080  - host: spin-fiat.idevops.site    http:      paths:      - path: /        backend:          serviceName: spin-fiat          servicePort: 7003

kubectl create -f ingress.yml

7. 其他設置

7.1 認證與授權

  • 認證:LDAP、Oauth2
  • 授權:LDAP、File

開啟認證LDAP/OAuth2(兩者二選一即可,推薦LDAP)

# 開啟LDAP認證hal config security authn ldap edit \    --user-search-base 'ou=devops,dc=zy,dc=com' \    --url 'ldap://192.168.1.200:389' \    --user-search-filter 'cn={0}' \    --manager-dn 'cn=admin,dc=zy,dc=com' \    --manager-password '12345678' hal config security authn ldap enable## --user-search-base  用戶搜索的部分## --url    LDAP伺服器## --user-search-filter  搜索用戶DN時使用的過濾器## --manager-dn   LDAP管理器用戶## --manager-password  LDAP管理器用戶的密碼# GitHub## 首先需要登錄GitHub然後創建一個OAuth APP。## 參考官方:https://spinnaker.io/setup/security/authentication/oauth/github/hal config security authn oauth2 edit --provider github \  --client-id 66826xxxxxxxxe0ecdbd7 \  --client-secret d834851134e80a9xxxxxxe371613f05bc26hal config security authn oauth2 enable

授權管理

角色可以通過LDAP自定義也可以使用文件自定義。兩者二選一。

通過LDAP組定義角色:例如我在LDAP中存在類型為groupOfUniqueName的組yunweizu。則關聯這個組的所有用戶的角色為yunweizu。後續添加權限則根據yunweizu授權。

通過文件自定義:編寫一個靜態的yaml文件,裡面定義每個用戶和其對應的角色。

# 使用Yaml文件##如下配置設置user1為yunweizu、user2為demo。users:  - username: devops    roles:    - yunweizu  - username: user2    roles:    - demo    hal config security authz enable hal config security authz file edit --file-path=$HOME/.hal/userrole.yaml hal config security authz edit --type file## 授權(根據LDAP組進行授權)hal config security authz ldap edit \    --url 'ldap://192.168.1.200:389/dc=zy,dc=com' \    --manager-dn 'cn=admin,dc=zy,dc=com' \    --manager-password '12345678' \    --user-dn-pattern 'cn={0}' \    --group-search-base 'ou=devops' \    --group-search-filter 'uniqueMember={0}' \    --group-role-attributes 'cn' \    --user-search-filter 'cn={0}』          hal config security authz edit --type ldap hal config security authz enable

開啟授權後可以設置哪些用戶可以訪問集群帳戶、鏡像倉庫、應用程式。

## 配置yunweizu和group02角色的用戶可以使用default這個集群帳戶hal config provider kubernetes account edit default \--add-read-permission yunweizu,group02  \--add-write-permission yunweizu  ## 配置yunweizu角色的用戶可以使用my-harbor-registry帳戶hal config provider docker-registry account edit my-harbor-registry \    --read-permissions yunweizu \    --write-permissions yunweizu

開啟管道權限

~/.hal/default/profiles/orca-local.ymltasks:   useManagedServiceAccounts: true~/.hal/default/profiles/settings-local.jswindow.spinnakerSettings.feature.managedServiceAccounts = true;

定義超級管理員

vi ~/.hal/default/profiles/fiat-local.ymlbash-5.0$ cat fiat-local.ymlfiat:  admin:    roles:      - devops-admin   ## 指定的組


7.2 郵件通知

.hal/default/profiles/echo-local.yml

[root@master profiles]# cat echo-local.ymlmail:  enabled: true  from: 250642@qq.comspring:  mail:    host: smtp.qq.com    username: 25642@qq.com    password: ubxijwaah    protocol: smtp    default-encoding: utf-8    properties:      mail:        display:          sendname: SpinnakerAdmin        smtp:          port: 465          auth: true          starttls:            enable: true            required: true          ssl:            enable: true        transport:          protocol: smtp        debug: true

.hal/default/profiles/settings-local.js

window.spinnakerSettings.notifications.email.enabled = true;

更新配置

hal deploy apply --no-validate

7.3 金絲雀分析

配置存儲

hal config canary enable ##aws s3 minio 創建一個bucket spinnaker-canary,賦予讀寫權限。hal config canary aws enablehal config canary aws account add my-canary  \--bucket spinnaker-canary \--endpoint http://minio.idevops.site \--access-key-id AKIAIOSFODNN7EXAMPLE \--secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY hal config canary edit --default-storage-account my-canaryhal config canary aws edit --s3-enabled true

Prometheus集成

## prometheushal config canary prometheus enable## 這裡做了basic認證,無認證忽略username和password選項。hal config canary prometheus account add my-prometheus \--base-url http://prometheus.idevops.site \--username admin \--password admin hal config canary edit --default-metrics-account my-prometheushal config canary edit --default-metrics-store prometheus

hal deploy apply --no-validate

效果



7.4 監控Spinnaker

hal config metric-stores prometheus enablehal deploy apply --no-validate[root@master monitor]# kubectl get pod -n spinnakerNAME                               READY   STATUS    RESTARTS   AGEspin-clouddriver-7cd94f5b9-cn22r   2/2     Running   2          4h4mspin-deck-684854fbd7-cb7wh         1/1     Running   1          4h4mspin-echo-746b45ff98-kcz5m         2/2     Running   2          4h4mspin-front50-66b4f9966-l6r4h       2/2     Running   2          4h4mspin-gate-6788588dfc-q8cpt         2/2     Running   2          4h4mspin-igor-6f6fbbbb75-4b4jd         2/2     Running   2          4h4mspin-kayenta-64fddf7db9-j4pqg      2/2     Running   2          4h4mspin-orca-d5c488b48-5q8sp          2/2     Running   2          4h4mspin-rosco-5f4bcb754c-9kgl9        2/2     Running   2          4h4m# 通過describe可以看到POD中存在一個sidecar容器monitoring-daemonkubectl describe pod spin-gate-6788588dfc-q8cpt -n spinnaker    

正常運行後通過 podID:8008/prometheus_metrics獲取度量數據,需要添加以下服務發現配置。

# prometheus需要添加配置- job_name: 'spinnaker-services'  kubernetes_sd_configs:  - role: pod  metrics_path: "/prometheus_metrics"  relabel_configs:  - source_labels: [__meta_kubernetes_pod_label_app]    action: keep    regex: 'spin'  - source_labels: [__meta_kubernetes_pod_container_name]    action: keep    regex: 'monitoring-daemon'        ## prometheus-operator 按照以下配置,其他方式忽略以下配置。apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:  name: spinnaker-all-metrics  labels:    app: spin    # this label is here to match the prometheus operator serviceMonitorSelector attribute    # prometheus.prometheusSpec.serviceMonitorSelector    # https://github.com/helm/charts/tree/master/stable/prometheus-operator    release: prometheus-operatorspec:  selector:    matchLabels:      app: spin    namespaceSelector:      any: true  endpoints:  # "port" is string only. "targetPort" is integer or string.  - targetPort: 8008    interval: 10s    path: "/prometheus_metrics"

打開prometheus頁面,能夠看到以下信息。


對接Grafana展示數據,Spinnaker官方提供了控制臺模板。


打開Grafana控制臺,開始導入json模板。模板較多,創建一個文件夾管理。


關於我們

澤陽,DevOps領域實踐者。專注於企業級DevOps運維開發技術實踐分享,主要以新Linux運維技術、DevOps技術課程為主。豐富的一線實戰經驗,課程追求實用性獲得多數學員認可。課程內容均來源於企業應用,在這裡既學習技術又能獲取熱門技能,歡迎您的到來!


相關焦點

  • 如何在Kubernetes容器環境下部署Spinnaker?
    那麼,Spinnaker可能是多雲平臺部署工具的最佳選擇。本文重點介紹spinnaker的概念、安裝與踩過的坑,spinnaker在kubernetes的持續部署,以及線上容器服務的選擇與多區容災。 1、關於Spinnaker Spinnaker 是什麼?我們先來了解下它的概念。
  • 在 Kubernetes 上部署 Spinnaker
    很早就想要體驗下 Spinnaker 了,但是由於 GFW 的原因嘗試了很多次都無功而返,這次解決了代理的問題終於順利的在 Kubernetes 集群上成功部署上了 Spinnaker。本文將使用 helm3 來為大家演示在 Kubernetes 集群上安裝 Spinnaker,對應的環境版本如下所示:$ helm versionversion.BuildInfo{Version:"v3.0.1", GitCommit:"7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa",
  • 離線安裝Spinnaker到K8S集群,你真的需要看這篇文章
    但是由於 GFW 的原因導致在國內部署Spinnaker非常困難,當然,你可以使用代理,但這就與本文的初衷不符。經過多次嘗試,終於在不使用代理的情況下安裝spinnaker,廢話不多說,直接進入正題。VS K8Sspinnaker部署環境一共有三種:在k8s分布式安裝(推薦使用)本地單臺機器安裝本地git安裝本文使用K8S方式。
  • 血與淚的總結,使用Helm安裝spinnaker到k8s集群
    在同一個集群上,一個 Chart 可以安裝很多次。每次安裝都會創建一個新的 release。Repository:用於發布和存儲 Chart 的倉庫。charts下載地址:https://github.com/helm/charts/tree/master/stable/spinnaker下載好,需要修改values文件,用來適配我們自己的k8s環境。
  • 在Kubernetes環境中採用Spinnaker的意義
    它簡化了此過程,並幫助組織在Kubernetes集群上部署了生產級的構建工件。Spinnaker還通過其圖形用戶界面(GUI)用於管理Kubernetes集群上部署的應用程式。可以編輯和更新Kubernetes清單文件,以提供動態編輯Kubernetes特定屬性的功能。藉助Spinnaker GUI,您還可以監控Kubernetes對象的運行狀況。
  • 分析Netflix公司產品Spinnaker的微服務實踐
    >Netflix 是業界微服務和 DevOps 組織的楷模,有大規模生產級微服務的成功實踐微服務有些公司甚至比 Netflix 做得更早,但 Netflix 大概是大規模生產級微服務做得最傑出的。Netflix在開源社區有著非常大的貢獻,發布了很多開源工具去做部署、打包等各種功能。Spinnaker 是 Netflix的一個開源項目,來做混合雲環境部署,能夠實現跨雲平臺的部署任務的編排。
  • AppScan在源碼檢測環境中的安裝部署
    本文以AppScan9.0.2版本為例結合項目實踐,為讀者提供一套完整的在源碼檢測環境中AppScan的安裝和部署方案以饗讀者。主要包括以下內容:  AppScan簡介  AppScan部署模型  AppScan安裝配置  AppScan優勢分析  小結  1.
  • Spinnaker實踐教程-Spinnaker基礎簡介
    ,可能很多同學想要學的時候都被安裝卡住了,更甭說上去用了對不對?所以今天我們第三部分就是要教大家怎麼去安裝,全方位的給大家分析每一個步驟怎麼去做,怎麼去實現,最後我會為大家說一下Spinnaker的版本的更新。OK就是這些內容,入門是足夠了。
  • 生產環境部署Loki+grafana+promtail
    Grafana 是一個用於監控和可視化觀測的開源平臺,支持非常豐富的數據源,支持Prometheus 和 Loki 等數據源的時間序列數據。Grafana和Loki的組合使得我們日誌收集聚合簡單高效,而且查看起來更接近在控制臺實時查看日誌。Loki由3個組成部分組成:loki 是主伺服器,負責存儲日誌和處理查詢。
  • 「伺服器部署篇5」Python Web環境安裝
    前言關於Python的雲端生產環境部署,分為兩個部分,第一個部分是部署基於Python+Flask+Nginx+Supervisior的部署,使伺服器支持域名訪問Python的Web服務。第二部分是配置Nginx支持多個Python Flask應用訪問。2.
  • 如何在數據中心中安裝環境監控系統
    這要求數據中心設施管理人員定期監控數據中心關鍵設備的運行狀態及其周圍的環境狀況,尤其是在沒有採用DCIM系統的情況下。 1、選擇監控系統製造商 數據中心運營商採用遠程監控系統的第一步是選擇經驗豐富、並且具有訓練有素的支持團隊的監控系統製造商,可以評估其需求。監控系統廠商將要求提供有關數據中心設施的詳細信息。先進的監控系統支持從安裝在智能控制設備的現有傳感器中提取數據。
  • 為伺服器或網站部署一個狀態監控頁
    創建官方狀態監控頁需要監控的項目添加完成之後還可以設置一個官方的狀態監控頁。然後會有一個唯一的地址,就是你的官方提供的狀態監控頁。也可以用自己的域名綁定官方的狀態頁來使用,畢竟,官方給的地址不容易記住。
  • 第六篇:Java開發環境的安裝與部署
    如果要開發Java程序,還需要安裝Java運行環境和開發工具,本篇和同學們探討Java開發環境的安裝與部署。通過本篇的學習,你將了解到Java運行及開發環境JDK的下載、安裝、檢測及JDK環境變量的配置。1、安裝Java開發環境從編寫Java代碼到運行Java程序,需要安裝JDK和JRE。
  • 在AWS上部署、監控和擴展機器學習模型
    那麼,我們如何才能促進將機器學習模型投入生產的過程呢?Cortex是一個將機器學習模型部署為生產網絡服務的開源平臺。它利用強大的AWS生態系統,根據需要部署、監視和擴展與框架無關的模型。自動縮放:Cortex自動縮放你的api,以處理生產負載。CPU / GPU支持:使用AWS IaaS作為底層基礎架構,Cortex可以在CPU或GPU環境下運行。Spot實例:Cortex支持EC2 Spot實例來降低成本。滾動更新:Cortex對模型應用任何更新,沒有任何停機時間。
  • 給計算機機房安裝動力環境監控系統至少需要花費多少錢?
    我們知道計算機機房內的動力、環境設備必須時時刻刻為計算機系統提供正常的運行環境。否則,一旦機房動力、環境設備出現故障,就會影響計算機系統運行,造成數據傳輸或存儲故障,當嚴重事故時,就可能損壞硬體設備,造成嚴重後果。
  • 安裝配置Icinga用於監控網絡設備
    除前述的功能之外,能夠快速部署,以及容易操作也會是考慮的要點之一。  Icinga 即為一套容易部署以及容易為網管人員短期學習並使用的監控軟體,在此本文以Icinga2為功能安裝,設定及展示之主角,讓讀者可全面了解並可簡單于讀者所使用的網絡環境下應用Icinga 。 本文主要包括以下的內容。
  • CentOS7.x生產環境MySQL社區版yum方式部署
    生產搭建環境:作業系統:CentOS7.5內存大小:16GB硬碟:500G目錄:1、環境準備與清理2、參數調優3、安裝部署1、系統初始化1.1.1.系統主機時間、時區、系統語言 修改時區 echo &34;en_US.UTF-8&39; >> /etc/profile && source /etc/profile2、資料庫安裝2.1 環境準備2.1.1.
  • 易捷行雲EasyStack大規模雲數據中心小時級安裝部署
    在輕運維方面,它可實現超大規模雲計算中心的智能統一運維,不僅實現了日誌、監控、告警的可視化、自動化,還可以自主探測系統拓撲與服務狀態的變化,進而實現基於智能感知的故障預診斷分析和快速自愈。本篇為易捷行雲輕運維繫列之安裝部署篇。
  • 雲計算環境下的監控
    2.1 體系結構2.1.1集中式體系結構在集中式體系結構中,每個監控節點安裝監控代理(Agent),收集節點監控信息,監控伺服器負責匯集以及分析展示監控信息。監控代理以推送方式向監控伺服器發送信息參數,或監控伺服器以拉方式向監控節點索要信息。
  • Kubernetes生產環境最佳實踐
    Kubernetes具有優秀的特性,比如:支持可擴展、零停機部署、服務發現、自動重啟和回滾功能等。要大規模管理容器部署,Kubernetes是必須的。它支持靈活地分配資源和工作負載。毫無疑問,生產環境中的Kubernetes是一個很好的解決方案,但需要花費一些時間來設置和熟悉這個工具。由於現在許多公司都希望在生產中使用Kubernetes,因此有必要考慮一些最佳實踐。