实例介绍
Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。Spinnaker 组件:Spinnaker 最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交付平台,能够实现:通过灵活和可配置的管道实现可重复的自动部署提供一个所有环境的全局视图,一个应用程序可以看见自己的在所属管道中的状态通过一致且可靠的API,提供可编程配置易于配置、维护和扩展兼容Asgard特性同时,Spinnaker作为云平台部署工具,Spinnaker团队和Google、微软、Pivotal等公司合作,致力于提供在多种平台上实现开箱即用的集群管理和部署功能。目前,Spinnaker可以部署管理AWS和Google云平台(GCP),针对Azure等平台的支持也在进行中。Spinnaker主要包含2块内容,集群管理和部署管理。集群管理功能,主要用于管理云上的资源。集群管理将云上资源做了逻辑划分:机器组:机器组是Spinnaker管理资源的单位。机器组标识了机器实例,并且关联了一个负载均衡器和安全组。每个机器组都拥有独立的配置信息(如机器帐号等);安全组:安全组定义了网络访问权限,也就是一般意义上的一组防火墙规则;负载均衡器:负载均衡器用于将网络流量重定向到机器组中的机器实例,负载均衡器还可以指定一系列规则,用于对机器组中的机器实例做健康检查;集群:集群是由用户定义的,对机器组的逻辑分组;部署管理功能用于创建一个持续交付流程。部署管理的核心是管道,在Spinnaker的定义中,管道由一系列的阶段(stages)组成。管道可以 由Jenkins、定时器、其他管道或者人工触发。同时,管道可以配置参数和通知,可以在管道一些节点上发出消息。Spinnaker已经内置了一些阶 段,如执行自定义脚本、触发Jenkins任务等。介绍来自 InfoQ 标签:Spinnaker
【实例截图】
【核心代码】
weixin_39840924-11368248-spinnaker-master.zip
└── spinnaker-master
├── approvers.md
├── AUTHORS
├── build.gradle
├── codelabs
│ ├── cicd-k8s-best-practice
│ │ └── app
│ │ ├── manifests
│ │ │ ├── demo
│ │ │ │ ├── Chart.yaml
│ │ │ │ ├── templates
│ │ │ │ │ ├── configmap.yaml
│ │ │ │ │ ├── deployment.yaml
│ │ │ │ │ ├── _helpers.tpl
│ │ │ │ │ └── service.yaml
│ │ │ │ └── values.yaml
│ │ │ ├── production
│ │ │ │ ├── env.yaml
│ │ │ │ └── values.yaml
│ │ │ └── staging
│ │ │ ├── env.yaml
│ │ │ └── values.yaml
│ │ ├── scripts
│ │ │ ├── build-image.sh
│ │ │ ├── update-chart.sh
│ │ │ ├── update-production-env.sh
│ │ │ └── update-staging-env.sh
│ │ └── src
│ │ ├── content
│ │ │ └── index.html
│ │ ├── Dockerfile
│ │ └── main.go
│ ├── gke-base
│ │ ├── install
│ │ │ ├── cleanup.sh
│ │ │ ├── connect.sh
│ │ │ ├── enable_apis.sh
│ │ │ ├── manifests.yml
│ │ │ ├── properties
│ │ │ └── setup.sh
│ │ ├── publish
│ │ └── README.md
│ ├── gke-kayenta-workshop
│ │ ├── Automated Canary Analysis Workshop - Spinnaker Summit 2018.pdf
│ │ ├── front50
│ │ │ ├── demo-application.json
│ │ │ ├── deploy-canary-pipeline.json
│ │ │ ├── deploy-to-staging-pipeline.json
│ │ │ └── promotion-pipeline.json
│ │ ├── overrides
│ │ │ ├── enable_kayenta.sh
│ │ │ ├── postdeploy.sh
│ │ │ ├── properties
│ │ │ └── publish_samples.sh
│ │ ├── publish
│ │ └── services
│ │ ├── backend
│ │ │ ├── build.sh
│ │ │ ├── Dockerfile
│ │ │ └── main.go
│ │ ├── frontend
│ │ │ ├── build.sh
│ │ │ ├── check.sh
│ │ │ ├── content
│ │ │ │ └── index.html
│ │ │ ├── Dockerfile
│ │ │ ├── get-ingress.sh
│ │ │ └── main.go
│ │ ├── LICENSE.txt
│ │ ├── manifests
│ │ │ ├── backend.yml
│ │ │ ├── frontend.yml
│ │ │ ├── seeding.yml
│ │ │ ├── update-backend.sh
│ │ │ └── update-frontend.sh
│ │ └── README.md
│ ├── gke-source-to-prod
│ │ ├── front50
│ │ │ ├── applications
│ │ │ │ ├── demo
│ │ │ │ │ ├── permission.json
│ │ │ │ │ └── specification.json
│ │ │ │ └── last-modified
│ │ │ ├── pipelines
│ │ │ │ ├── 205a774a-2869-452a-9050-5fb95ae6624a
│ │ │ │ │ └── specification.json
│ │ │ │ ├── 349cbc61-72c9-4720-9c4a-f9fab60afece
│ │ │ │ │ └── specification.json
│ │ │ │ ├── f1d724be-7f75-43fc-b0f5-d7efa4b173af
│ │ │ │ │ └── specification.json
│ │ │ │ └── last-modified
│ │ │ └── pipeline-strategies
│ │ │ └── last-modified
│ │ ├── install
│ │ │ ├── cleanup.sh
│ │ │ ├── connect.sh
│ │ │ ├── manifests.yml
│ │ │ ├── properties
│ │ │ └── setup.sh
│ │ ├── publish
│ │ └── services
│ │ ├── backend
│ │ │ ├── build.sh
│ │ │ ├── Dockerfile
│ │ │ └── main.go
│ │ ├── frontend
│ │ │ ├── build.sh
│ │ │ ├── check.sh
│ │ │ ├── content
│ │ │ │ └── index.html
│ │ │ ├── Dockerfile
│ │ │ ├── get-ingress.sh
│ │ │ └── main.go
│ │ ├── LICENSE.txt
│ │ ├── manifests
│ │ │ ├── backend.yml
│ │ │ ├── frontend.yml
│ │ │ ├── seeding.yml
│ │ │ ├── update-backend.sh
│ │ │ └── update-frontend.sh
│ │ └── README.md
│ ├── gke-sponnet
│ │ ├── overrides
│ │ │ ├── precleanup.sh
│ │ │ └── predeploy.sh
│ │ └── publish
│ └── README.md
├── consul
│ ├── codelab
│ │ └── README.md
│ ├── config
│ │ ├── bootstrap-consul.sh
│ │ ├── client
│ │ │ └── config.json
│ │ └── server
│ │ └── config.json
│ ├── install
│ │ └── install.sh
│ ├── README.md
│ └── upstart
│ ├── consul.client.conf
│ └── consul.server.conf
├── dev
│ ├── all_tests.yaml
│ ├── bootstrap_dev.sh
│ ├── build_and_publish.dot
│ ├── build_and_publish.dot.png
│ ├── build_google_component_image.sh
│ ├── build_google_component_images.py
│ ├── build_google_image_functions.sh
│ ├── build_halyard_image.sh
│ ├── buildtool
│ │ ├── apidocs_commands.py
│ │ ├── base_metrics.py
│ │ ├── bom_commands.py
│ │ ├── bom_dependencies.yml
│ │ ├── bom_scm.py
│ │ ├── branch_scm.py
│ │ ├── changelog_commands.py
│ │ ├── command.py
│ │ ├── config-template.yml
│ │ ├── container_commands.py
│ │ ├── debian_commands.py
│ │ ├── errors.py
│ │ ├── flow_build.sh
│ │ ├── flow_publish.sh
│ │ ├── ga-defaults.yml
│ │ ├── git_support.py
│ │ ├── gradle_support.py
│ │ ├── hal_support.py
│ │ ├── halyard_commands.py
│ │ ├── image_commands.py
│ │ ├── influxdb_metrics.py
│ │ ├── __init__.py
│ │ ├── inmemory_metrics.py
│ │ ├── inspection_commands.py
│ │ ├── __main__.py
│ │ ├── metrics.py
│ │ ├── repository_command.py
│ │ ├── requirements.txt
│ │ ├── rpm_commands.py
│ │ ├── scm.py
│ │ ├── source_commands.py
│ │ ├── spin_commands.py
│ │ ├── spinnaker_commands.py
│ │ ├── subprocess_support.py
│ │ ├── support_functions.sh
│ │ └── util.py
│ ├── buildtool.sh
│ ├── clean_google_image.sh
│ ├── create_google_dev_vm.py
│ ├── create_google_dev_vm.sh
│ ├── extract_disk_to_gcs.sh
│ ├── halyard_base_install.sh
│ ├── halyard_install_component.sh
│ ├── iap_generate_google_auth_token.py
│ ├── __init__.py
│ ├── install_development.sh
│ ├── maven-init.gradle
│ ├── publish_halyard.py
│ ├── publish_test_results.py
│ ├── requirements.txt
│ ├── validate_bom__config.py
│ ├── validate_bom__deploy.py
│ ├── validate_bom__main.py
│ ├── validate_bom.sh
│ ├── validate_bom__test.py
│ └── validate-config-template.yml
├── etc
│ ├── apache2
│ │ └── sites-available
│ │ └── spinnaker.conf
│ ├── default
│ │ └── spinnaker
│ └── init
│ └── spinnaker.conf
├── experimental
│ ├── docker-compose
│ │ ├── compose.env
│ │ ├── docker-compose.dev.yml
│ │ ├── docker-compose.override.yml
│ │ ├── docker-compose.remote.yml
│ │ ├── docker-compose.yml
│ │ └── README.md
│ └── packer
│ ├── aws.json
│ ├── configure.sh
│ ├── install.sh
│ └── README.md
│ ├── codelab
│ │ ├── create_codelab_image_wrapper.sh
│ │ ├── first_codelab_boot.sh
│ │ └── provision_spinnaker_codelab_image.sh
│ ├── dev
│ │ ├── delete_resources.py
│ │ ├── google_install_loader.py
│ │ └── publish_gce_release.sh
│ ├── google_cloud_logging
│ │ ├── add_google_cloud_logging.sh
│ │ └── spinnaker.conf
│ ├── __init__.py
│ └── release
│ ├── gradle_cache_base_image.docker
│ ├── ha_image_janitor.py
│ └── requirements.txt
├── gradle
│ ├── buildViaTravis.sh
│ ├── installViaTravis.sh
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── install
│ ├── first_google_boot.sh
│ ├── first_halyard_boot.sh
│ ├── __init__.py
│ └── install_fake_openjdk8.sh
├── LICENSE.txt
├── packer
│ ├── 99-footer
│ ├── aws_ubuntu.json
│ ├── aws_ubuntu_release.json
│ ├── init.aws.region
│ └── parse_output.py
├── pkg_scripts
│ ├── postInstall.sh
│ ├── postUninstall.sh
│ └── preInstall.sh
├── README.adoc
├── reviewers.md
├── settings.gradle
├── solutions
│ ├── bluegreen
│ │ ├── app
│ │ │ ├── Dockerfile
│ │ │ └── main.go
│ │ ├── manifests
│ │ │ ├── hellosvc.yaml
│ │ │ └── replicaset-v1.yaml
│ │ ├── pipelines
│ │ │ └── pipeline.json
│ │ └── README.md
│ └── kayenta
│ ├── app
│ │ ├── app.py
│ │ └── Dockerfile
│ ├── ci
│ │ ├── pipeline.yaml
│ │ ├── scripts
│ │ │ ├── automated-canary.sh
│ │ │ ├── canary-deployment.sh
│ │ │ ├── cleanup.sh
│ │ │ ├── first-deployment.sh
│ │ │ └── setup.sh
│ │ └── tasks
│ │ ├── automated-canary.yaml
│ │ ├── canary-deployment.yaml
│ │ ├── cleanup.yaml
│ │ ├── first-deployment.yaml
│ │ └── setup.yaml
│ ├── pipelines
│ │ ├── automated-canary-1-10.json
│ │ ├── automated-canary-1-9.json
│ │ ├── canary-deploy.json
│ │ └── simple-deploy.json
│ └── README.md
├── spinbot
│ ├── config.py
│ ├── Dockerfile
│ ├── event
│ │ ├── args.py
│ │ ├── command.py
│ │ ├── executor.py
│ │ ├── filetype_check_pull_request_handler.py
│ │ ├── handler.py
│ │ ├── handler_registry.py
│ │ ├── __init__.py
│ │ ├── issue_comment_assign_handler.py
│ │ ├── issue_comment_handler.py
│ │ ├── issue_event.py
│ │ ├── label_issue_comment_event_handler.py
│ │ ├── log_event_handler.py
│ │ ├── master_branch_pull_request_handler.py
│ │ ├── pull_request_cherry_pick_event_handler.py
│ │ ├── pull_request_closed_event_handler.py
│ │ ├── pull_request_event.py
│ │ ├── pull_request_message_handler.py
│ │ └── release_branch_pull_request_handler.py
│ ├── gh
│ │ ├── client.py
│ │ ├── conventions.py
│ │ ├── __init__.py
│ │ ├── repo.py
│ │ └── util.py
│ ├── Makefile
│ ├── manifests
│ │ ├── create.sh
│ │ └── deploy.yml
│ ├── monitoring
│ │ ├── build_database.py
│ │ ├── config.py
│ │ ├── database.py
│ │ ├── influx_database.py
│ │ ├── __init__.py
│ │ └── noop_database.py
│ ├── policy
│ │ ├── args.py
│ │ ├── executor.py
│ │ ├── __init__.py
│ │ ├── log_issue_policy.py
│ │ ├── log_pull_request_policy.py
│ │ ├── log_repository_policy.py
│ │ ├── policy.py
│ │ ├── policy_registry.py
│ │ └── stale_issue_policy.py
│ ├── README.md
│ ├── requirements.txt
│ ├── spinbot.py
│ └── storage
│ ├── build_storage.py
│ ├── gcs_storage.py
│ ├── __init__.py
│ ├── local_storage.py
│ └── storage.py
├── sponnet
│ ├── application.libsonnet
│ ├── demo
│ │ ├── demo-app.jsonnet
│ │ ├── demo-pipeline.jsonnet
│ │ ├── demo-v2-config.jsonnet
│ │ ├── demo-v2-mpt.jsonnet
│ │ ├── deployment.json
│ │ ├── kubeutils.libsonnet
│ │ └── README.md
│ ├── pipeline.libsonnet
│ ├── publish.sh
│ └── v2PipelineTemplate.libsonnet
├── testing
│ └── citest
│ ├── citest_contrib
│ │ ├── dcos_testing
│ │ │ ├── dcoscli_agent.py
│ │ │ ├── dcos_contract.py
│ │ │ └── __init__.py
│ │ └── __init__.py
│ ├── Dockerfile
│ ├── README.md
│ ├── requirements.txt
│ ├── spinnaker_testing
│ │ ├── appengine_scenario_support.py
│ │ ├── aws_scenario_support.py
│ │ ├── azure_scenario_support.py
│ │ ├── base_scenario_support.py
│ │ ├── dcos_scenario_support.py
│ │ ├── expression_dict.py
│ │ ├── frigga.py
│ │ ├── front50.py
│ │ ├── gate.py
│ │ ├── gcs_pubsub_trigger_agent.py
│ │ ├── google_scenario_support.py
│ │ ├── __init__.py
│ │ ├── jenkins_agent.py
│ │ ├── kato.py
│ │ ├── kubernetes_manifests.py
│ │ ├── kubernetes_scenario_support.py
│ │ ├── kubernetes_v2_scenario_support.py
│ │ ├── pipeline_support.py
│ │ ├── scrape_spring_config.py
│ │ ├── spinnaker.py
│ │ ├── spinnaker_test_scenario.py
│ │ └── yaml_accumulator.py
│ ├── tests
│ │ ├── appengine_gcs_pubsub_test.py
│ │ ├── appengine_smoke_test.py
│ │ ├── aws_kato_test.py
│ │ ├── aws_smoke_test.py
│ │ ├── azure_bake_and_deploy_test.py
│ │ ├── azure_smoke_test.py
│ │ ├── bake_and_deploy_test.py
│ │ ├── dcos_smoke_test.py
│ │ ├── gcs_front50_test.py
│ │ ├── google_http_lb_upsert_scenario.py
│ │ ├── google_http_lb_upsert_server_test.py
│ │ ├── google_http_lb_upsert_test.py
│ │ ├── google_kato_test.py
│ │ ├── google_server_group_test.py
│ │ ├── google_smoke_test.py
│ │ ├── helm_test-0.1.0.tgz
│ │ ├── kube_smoke_test.py
│ │ ├── kube_v2_artifact_test.py
│ │ ├── kube_v2_cache_test.py
│ │ ├── kube_v2_data
│ │ │ └── helm-test
│ │ │ ├── Chart.yaml
│ │ │ ├── templates
│ │ │ │ ├── deployment.yaml
│ │ │ │ └── _helpers.tpl
│ │ │ └── values.yaml
│ │ ├── kube_v2_gcs_test.py
│ │ ├── kube_v2_helm_test.py
│ │ └── kube_v2_smoke_test.py
│ └── unittests
│ ├── expression_dict_test.py
│ └── yaml_accumulator_test.py
└── unittest
├── buildtool
│ ├── bom_command_test.py
│ ├── bom_repository_command_test.py
│ ├── bom_scm_test.py
│ ├── branch_scm_test.py
│ ├── custom_test_command.py
│ ├── git_support_test.py
│ ├── gradle_support_test.py
│ ├── main_test.py
│ ├── repository_command_test.py
│ ├── spinnaker_commands_test.py
│ ├── standard_test_bom.yml
│ ├── subprocess_test.py
│ ├── test_util.py
│ └── util_test.py
└── run_tests.sh
98 directories, 365 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论