WHITE PAPER AUGUST 2017 AN INTRODUCTION TO BOSH. by VMware

Similar documents
VMWARE PIVOTAL CONTAINER SERVICE

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

VMWARE PKS. What is VMware PKS? VMware PKS Architecture DATASHEET

VMWARE ENTERPRISE PKS

Beyond 1001 Dedicated Data Service Instances

Using PCF Ops Manager to Deploy Hyperledger Fabric

VMware Integrated OpenStack with Kubernetes Getting Started Guide. VMware Integrated OpenStack 4.0

Cloud Foundry and OpenStack

WHITE PAPER. RedHat OpenShift Container Platform. Benefits: Abstract. 1.1 Introduction

Getting Started with VMware Integrated OpenStack with Kubernetes. VMware Integrated OpenStack 5.1

Certified Reference Design for VMware Cloud Providers

What s New in VMware vsphere Availability

CLOUD PROVIDER POD RELEASE NOTES

VMware Integrated OpenStack with Kubernetes Getting Started Guide. VMware Integrated OpenStack 4.1

CLOUD PROVIDER POD RELEASE NOTES

Cloud Computing Introduction to Cloud Foundry

WHITE PAPER SEPTEMBER 2017 VCLOUD DIRECTOR 9.0. What s New

TECHNICAL WHITE PAPER AUGUST 2017 REVIEWER S GUIDE FOR VIEW IN VMWARE HORIZON 7: INSTALLATION AND CONFIGURATION. VMware Horizon 7 version 7.

ARCHITECTURAL OVERVIEW REVISED 6 NOVEMBER 2018

What s New with VMware vcloud Director 8.0

Table of Contents 1.1. Introduction. Overview of vsphere Integrated Containers 1.2

Setting up Kubernetes with Day 2 in Mind. Angela Chin, Senior Software Engineer, Pivotal Urvashi Reddy, Senior Software Engineer, Pivotal

Deploying webmethods Integration Server as Bosh Release

VVD for Cloud Providers: Scale and Performance Guidelines. October 2018

How to Use a Tomcat Stack on vcloud to Develop Optimized Web Applications. A VMware Cloud Evaluation Reference Document

VMware View Upgrade Guide

São Paulo. August,

DEPLOY MODERN APPS WITH KUBERNETES AS A SERVICE

VMWARE VSPHERE FEATURE COMPARISON

DEPLOY MODERN APPS WITH KUBERNETES AS A SERVICE

INSTALLATION AND SETUP VMware Workspace ONE

vrealize Production Test Upgrade Assessment Guide

VMware vcloud Director Configuration Maximums vcloud Director 9.1 and 9.5 October 2018

Table of Contents DevOps Administrators

Cloud Pod Architecture with VMware Horizon 6.1

vrealize Production Test

Single Sign-On for PCF. User's Guide

CLOUD PROVIDER POD. for VMware. Release Notes. VMware Cloud Provider Pod January 2019 Check for additions and updates to these release notes

REVISED 6 NOVEMBER 2018 COMPONENT DESIGN: UNIFIED ACCESS GATEWAY ARCHITECTURE

vcloud Director Administrator's Guide

VMware vsphere Data Protection 5.8 TECHNICAL OVERVIEW REVISED AUGUST 2014

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Table of Contents 1.1. Install, Deploy, Maintain Infrastructure Installation Download Installer. Deployment Prerequisites

Pivotal Cloud Foundry on VMware vsphere using Dell EMC XC Series Hyper-Converged Appliances Deployment Guide

VMware vcloud Director Infrastructure Resiliency Case Study

VMware vrealize Suite and vcloud Suite

vrealize Suite Lifecycle Manager 1.0 Installation and Management vrealize Suite 2017

VMware vcloud Director for Service Providers

Blockchain on Kubernetes

VMware Horizon Migration Tool User Guide

Table of Contents 1.1. Overview. Containers, Docker, Registries vsphere Integrated Containers Engine

Go Further Ford Motor Company. Ford Invests in Making Customer Experience as Strong as Its Vehicles with FordPass

vrealize Orchestrator Load Balancing

Migrating vrealize Automation 6.2 to 7.2

Using the vcenter Orchestrator Plug-In for vcloud Director 5.5. vrealize Orchestrator 5.5

Cloud & container monitoring , Lars Michelsen Check_MK Conference #4

Scalable Licensing with Selective Monitoring in VMware vrealize Operations

VMware Identity Manager Connector Installation and Configuration (Legacy Mode)

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Storage Considerations for VMware vcloud Director. VMware vcloud Director Version 1.0

Multi-Machine Guide vcloud Automation Center 5.2

VMWARE HORIZON CLOUD WITH VMWARE IDENTITY MANAGER QUICK START GUIDE WHITE PAPER MARCH 2018

VMware vfabric Data Director Installation Guide

vrealize Orchestrator Load Balancing

Redis for Pivotal Cloud Foundry Docs

VMware vsphere Data Protection Evaluation Guide REVISED APRIL 2015

Introducing VMware Validated Designs for Software-Defined Data Center

REVISED 6 NOVEMBER 2018 COMPONENT DESIGN: VMWARE IDENTITY MANAGER ARCHITECTURE

OpenNebula on VMware: Cloud Reference Architecture

Service Portal User Guide

Installation and setup guide of 1.1 demonstrator

Using VMware vfabric Application Director

Using the vcenter Orchestrator Plug-In for vcloud Director 1.0

What s New in VMware vsphere 5.1 Platform

Introduction to Cloudbreak

Introducing VMware Validated Designs for Software-Defined Data Center

Developing and Deploying vsphere Solutions, vservices, and ESX Agents

EASILY DEPLOY AND SCALE KUBERNETES WITH RANCHER

Introducing VMware Validated Designs for Software-Defined Data Center

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

What s New in VMware vcloud Automation Center 5.1

OpenShift Roadmap Enterprise Kubernetes for Developers. Clayton Coleman, Architect, OpenShift

Using the vrealize Orchestrator Chef Plug-In 1.0

Blockchain on Kubernetes

STREAMLINING THE DELIVERY, PROTECTION AND MANAGEMENT OF VIRTUAL DESKTOPS. VMware Workstation and Fusion. A White Paper for IT Professionals

Cloud Provider Pod Designer User Guide. November 2018 Cloud Provider Pod 1.0.1

Table of Contents 1.1. Install, Deploy, Maintain Infrastructure Installation Download. Deploy the Appliance

VMware Identity Manager Cloud Deployment. Modified on 01 OCT 2017 VMware Identity Manager

vshield Administration Guide

VMware Identity Manager Cloud Deployment. DEC 2017 VMware AirWatch 9.2 VMware Identity Manager

UDS Enterprise Free & Evaluation Edition. Lab UDS Enterprise + VMware vsphere + RDP/XRDP

Using vrealize Operations Tenant App as a Service Provider

Peco Karayanev Bryan Wynns

Think Small to Scale Big

OpenShift 3 Technical Architecture. Clayton Coleman, Dan McPherson Lead Engineers

VMWARE MICRO-SEGMENTATION AND SECURITY DEPLOY SERVICE

Load Balancing Nginx Web Servers with OWASP Top 10 WAF in AWS

Kuberiter White Paper. Kubernetes. Cloud Provider Comparison Chart. Lawrence Manickam Kuberiter Inc

VMware AppCatalyst Technical Preview June 2015 TECHNICAL WHITE PAPER

Transcription:

WHITE PAPER AUGUST 2017 AN INTRODUCTION TO by ware

Table of Contents What is?...3 Overview...3 What Problems Does Solve?... 4 Use Cases... 6 Deploying...8 Architecture...8 References...8 CookBook: How to deploy Kubo on vsphere...9 Steps to deploy (for Mac OSX):... 9 Steps to deploy Kubo on...10 WHITE PAPER 2

What is? Overview is an open source tool that enables deployment and lifecycle management of distributed systems. It is the primary method used to deploy Cloud Foundry and is contributed to by many key members of the Cloud Foundry Foundation, such as Google, Pivotal, & ware. It can support deployments across many different IaaS providers. Some of these providers are: ware vsphere Google Compute Platform Amazon Web Services EC2 Microsoft Azure OpenStack 4 Manifest 3 Release Stem Cell 2 1 CPI-vSphere Job Network(s) Job Job Job Network(s) Job vsphere Running 5 Figure 1: Overview accomplishes deployments by creating several major abstraction objects that make it easy and repeatable to deploy complex systems. Referencing the figure above, these objects include: 1. CPI: The cloud provider interface, or CPI, is the executable library uses to interact with any given IaaS. One CPI is available for every -supported IaaS, and when you deploy the instance(s) you can define which one(s) it will use. In the image above, a vsphere CPI is shown. It allows to perform all the required IaaS actions, such as creating a or instance, as well as various other instance, network, and storage primitives required to instantiate a deployment. WHITE PAPER 3

2. stemcell: A stemcell is a versioned base operating system image built for each CPI that supports. It is commonly based on Canonical s Ubuntu distribution, but is also available in RHEL and even Windows image ports. Typically, the stemcell is a hardened base OS image with a agent predeployed. will use this agent to install and manage the lifecycle of software on that for instance. 3. release: A release is a versioned tarball containing the complete source code and job definitions required to describe to how that release of software should be deployed on a or instance provisioned from a stemcell. An example is the Kubo release which includes all the packages and details required to allow deploy a fully functional Kubernetes cluster. 4. deployment manifest: needs to receive some declarative information to actually deploy something. This is provided by an operator via a manifest. A manifest defines one or more releases and stemcells to be used in a deployment and provides some key variables like IPstack info, instance count, and advanced configuration of the given release(s) you want to deploy. This manifest is typically written in a YAML format. 5. deployment: needs some declarative information before it can deploy anything. This is provided by an operator via a deployment manifest and a cloudconfig manifest. These manifests are typically written in a YAML format. cloud-config manifest: This YAML is specific to an IaaS as defined by the properties made available in its CPI. It will provide definitions for things like networks, sizes, storage locations, and availability zone mappings. This manifest is global, which means that there can be only one instance per, and can be referred to by multiple deployment manifests. deployment-manifest: This manifest refers to objects in the cloud-config and focuses on properties for the releases. The manifests define one or more releases and stemcells to be used in a deployment and provide some key variables like instance count and advanced configuration of the given release(s) to be deployed. This allows for deployment manifests to be portable across CPIs. What Problems Does Solve? lets release developers 1 easily version, package, and deploy software in a reproducible manner. Operators can consume releases and be guaranteed that deployments are repeatable with predictable results across environments. To accomplish this, lets release developers focus on providing some key abilities when building a release: Identifiability An operator needs to be able to document the deployment of software and its versions. A release, by design, requires the developer to declare and package everything in the release. The release itself must also be versioned. This allows an operator to fully understand what is deployed as well as consistently upgrade or downgrade versions of software in a release. 1 A release developer is a developer who packages software to be deployed by. WHITE PAPER 4

Example: In Figure 2, an operator defining a deployment can refer to one or more versioned releases in a deployment manifest. This allows for identification of the software versions used. In the image above, has two versions of the Kubo release available: versions 0.0.5 and 0.0.6. The operator has defined the use of version 0.0.5 of the release in the deployment manifest, which will enforce the use of Kubernetes version 1.6.6 across the deployment called mykubo-deployment. Release: kubo-release Version: 0.0.5 Package(s): kubernetes: kubernetes-1.6.6/* nginx: nginx/ nginx-release-1.11.4.tar.gz Release: kubo-release Version: 0.0.6 Package(s): kubernetes: kubernetes-1.7.1/* nginx: nginx/nginx-release-1.11.4.tar.gz Manifest CPI-vSphere Name: mykubo-deployment releases: - name: kubo-release version: 0.0.5 - name: docker version: 28.0.1 KBS V1.6.6 Network(s) KBS V1.6.6 vsphere KBS V1.6.6 Running mykubo-deployment Figure 2: Identifiability * Reproducibility Another key tenant in releasing software addressed by is reproducibility. To an operator, this means that software should be deployed in exactly the same way across multiple environments in order to guarantee operational stability. Example: In Figure 3 on the following page, a single manifest can deploy Kubernetes in a consistent way, providing the same functional deployment with the same releases across multiple environments. Those environments can even cross multiple IaaS providers by using the CPI abstraction. The simplified and partial deployment manifest in the image above is declaring which stemcell, Release, and config properties to use to deploy functionally identical Kubernetes clusters in two different environments. WHITE PAPER 5

Name: mykubo-deployment releases: - name: kubo-release version: 0.0.5 - name: docker version: 28.0.1 - name: kubo-etcd version: 2 stemcells: - alias: trusty os: ubuntu-trusty version: latest instance_groups: - name: etcd instances: 2 network: alpha azs: [az1] jobs: alpha - name: etcd release: kubo-etcd properties: [ ] stemcell: trusty - name: master instances: 2 - name: worker instances: 3 A B CPI-AWS Manifest CPI-vSphere etcd etcd master etcd etcd master Running mykubo-deployment vpc network name = alpha master vsphere vsphere port group name = alpha master vsphere Running mykubo-deployment worker worker worker worker worker worker Figure 3: Reproducibility Consistency also enforces consistency in release development to ensure that virtually any software can be packaged, versioned, and deployed in a similar pattern. This also provides operational stability. Use Cases s principal value lies in simplifying the deployment and day 2 lifecycle management of complex systems. It was primarily developed to deploy Cloud Foundry but has been extended by developers to deploy many other environments, both simple and complex. Systems to which can deploy can be found in two primary locations. The first is Pivotal Network, where Pivotal curates commercial releases of Pivotal Cloud Foundry as well as Pivotal services that are typically driven by Pivotal Operations Manager +. The second location is.io, which hosts an OSS community repo of various systems that can be deployed. A prime example of a use case is Kubernetes powered by, aka Kubo. Referencing Figure 4 on the following page, we can see the key benefits that provides the operator. 1. Repeatability: In a cloud native development environment, the operator can generate two or more similar deployment manifests to deploy two or more unique but functionally identical Kubernetes deployments to meet the needs of multiple developer consumers. WHITE PAPER 6

masterhaproxy 0 Developer Developer Team A Platform Operator mykubo-deployment-1 Developer Team A mykubo-deployment-2 Developer Team B Agent master 0 etcd 0 master 1 etcd 1 etcd 2 worker 0 worker 1 worker 2 Availability Zone 1 Availability Zone 2 Availability Zone 3 CPI-vSphere mykubo-deployment-1 Health Manager masterhaproxy 0 Developer Developer Team B Agent master 0 etcd 0 master 1 etcd 1 etcd 2 worker 0 worker 1 worker 2 = persistent_disk Availability Zone 1 Availability Zone 2 Availability Zone 2 mykubo-deployment-2 Figure 4: Use Case: Kubo 2. Day 2 operations: lifecycle management makes it easy to keep all of the Kubernetes deployments healthy. Maintain health: Each or instance deployed by also deploys an agent that communicates health back to. If a Kubo node is unhealthy, will automatically try to repair and or rebuild the affected node. This improves uptime. Increase uptime: Each release job instance type can have multiple s or instances distributed across availability zones to ensure services provided are not affected by physical faults in a given availability zone. Availability zones are only supported on certain CPIs, such as the vsphere CPI where availability zones map to vcenter clusters. Patching: Because uses versioned releases, it is trivial for an operator to upgrade the Kubernetes Kubo release and apply it to all running deployments with little to no interruption of service. will update each deployment as well as maintain its state by: (1) detaching persistent disks, (2) rebuilding the affected s or instances, and then (3) re-attaching persistent disks. WHITE PAPER 7

Deploying Architecture is typically deployed as a single or instance. That /instance has many components that perform vital roles in enabling to manage deployments at scale: NATS: Provides a message bus via which the various services of can interact. POSTGRESQL: writes all of its state into a database. Typically that database is internal to a single deployment and provided by Postgres. This can be modified, however, to use an external data source so that the can be rebuilt and reconnect to the database to reload its persistent state. BLOBSTORE: Each stemcell and release uploaded to is stored in a blobstore. Default deployments of use an internal store (webdav), but, like the Postgresql database, this can also be externalized. Director: The main API that the CLI will interface with to allow an operator to create and manage deployments. Health Monitor: requires that each it deploys have an agent that it can communicate with to assign and deploy jobs from releases that are defined in a deployment manifest. It will also maintain the health of each or instance it has deployed. The agent will report vitals back to and in cases where services in the are faulted, or the agent is unreachable, the Health Monitor can use plugins to restart services and even rebuild the or instance. CPI: The CPI is the IaaS-specific executable binary that uses to interact with the defined IaaS in its deployment YAML. UAA: Provides user access and authentication that allows to authenticate operators via SAML or LDAP backends. CREDHUB: Manages credentials like passwords, certificates, certificate authorities, SSH keys, RSA keys, and arbitrary values (strings and JSON blobs). will leverage credhub to create and store key credentials for deployments, like public certificates and keys. NATS POSTGRESQL masterhaproxy 0 BLOBSTSORE DIRECTOR master 0 master 1 HEALTH MONITOR CPI Agent etcd 0 etcd 1 etcd 2 UAA CREDHUB worker 0 worker 1 worker 2 Availability Zone 1 Availability Zone 2 Availability Zone 3 Kubo on vsphere Figure 5: Architecture References Full reference on can be found here:.io WHITE PAPER 8

CookBook: How to deploy Kubo on vsphere is deployed by using the CLI, passing the correct cmd line arguments, or storing those arguments as variable data within additional YAML files to define how itself will be deployed. This CookBook section outlines the steps required to deploy, and offers guidance for a basic Kubo deployment. Prerequisites include: vsphere vcenter 6.x 1 x vsphere Datastore with adequate space for deployment 1 x vcenter Resource pool for your Kubo deployment Steps to deploy (for Mac OSX): Operating system specific installation instructions for CLI are documented here. Get the CLI This cookbook uses version 2 of the CLI. It is a Go compiled binary, but does have some OS dependencies. 1. sudo wget -O /usr/local/bin/bosh https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-2.0.28-darwin-amd64 && sudo chmod 755 /usr/local/bin/bosh Prepare MAC OS requirements, like Ruby Other OS Specific Instructions can be found here and here. 2. gem update --system 3. xcode-select --install 4. brew install openssl Use GIT client to clone the deployment repo This cookbook assumes you have the git client already installed. This repo contains everything you will need to deploy a instance. 5. git clone https://github.com/cloudfoundry/bosh-deployment 6. cd bosh-deployment Deploy The single CLI command below will deploy the instance. -o flags are one or more YAML files that are composed to form a single manifest. -v flags are the variables that we assign to variable markers in each YAML. The int, or interpolate, command will compose the manifest from the YAML stubs and the variables. 7. /usr/local/bin/bosh create-env bosh.yml \ --state=mystate.json \ --vars-store=mycreds.yml \ -o vsphere/cpi.yml \ -o uaa.yml \ -o misc/powerdns.yml \ -o credhub.yml \ -v director _ name=kubobosh \ -v internal _ cidr=[[cidr-of-network-for--]] \ -v internal _ gw=[[gateway-of-network-for--]] \ WHITE PAPER 9

-v internal _ ip=[[ip-of-network-for--]] \ -v network _ name=[[vcenter-pg-name-network-for--]] \ -v vcenter _ dc=[[vcenter-dc-name]] \ -v vcenter _ ds=[[vcenter-datastore-name]] \ -v vcenter _ ip=[[vcenter-ip]] \ -v vcenter _ user=[[vcenter-user]] \ -v vcenter _ password=[[vcenter-passwd]] \ -v vcenter _ templates=kubobosh-templates \ -v vcenter _ vms=kubobosh-vms \ -v vcenter _ disks=kubobosh-disks \ -v vcenter _ cluster=[[vcenter-cluster]] \ -v dns _ recursor _ ip=[[your-network-dns]] 8. /usr/local/bin/bosh alias-env kubobosh -e [[IP-OF-NETWORK-FOR--]] --cacert <(/usr/local/bin/bosh int./mycreds.yml --path /director _ ssl/ca) 9. export _ CLIENT=admin 10. export _ CLIENT _ SECRET=$(/usr/local/bin/bosh int./mycreds.yml --path /admin _ password) 11. /usr/local/bin/bosh -e kubobosh env Steps to deploy Kubo on Use GIT client to clone the deployment repo This cookbook assumes you have the git client already installed. This repo contains everything you will need to deploy a Kubo with your instance. 1. git clone https://github.com/cloudfoundry-incubator/kubo-deployment 2. cd kubo-deployment Generate cloud-config manifest and update it A cloud-config manifest is specific to each CPI and will map constructs (like availability zones) to vsphere ones. A deployment manifest will reference constructs from the cloud-config. 3. /usr/local/bin/bosh int configurations/vsphere/cloud-config.yml \ -o manifests/ops-files/k8s _ master _ static _ ip _ vsphere.yml \ -v director _ name=bosh \ -v internal _ cidr=[[cidr-of-network-for-kubo-can-be-same-as-]] \ -v internal _ gw=[[gateway-of-network-for-kubo-can-be-same-as-]] \ -v internal _ ip=[[dns-of-network-for-kubo-can-be-same-as-]] \ -v kubernetes _ master _ host=[[ip-for-kubo-master-vip]] \ -v reserved _ ips=[[ip-range-you-dont-want--to-use ex: 192.168.100.10-192.168.100.20]] \ -v network _ name=[[vcenter-pg-name-network-for-kubo-can-be-same-as-]] \ -v deployments _ network=[[vcenter-pg-name-network-for-kubo-can-be-same-as- ]] \ -v vcenter _ cluster=[[vcenter-cluster-for-kubo]] \ -v vcenter _ rp= [[VCENTER-RESOURCE-POOL-FOR-KUBO]] > mycloudconfig.yml 4. bosh -e kubobosh update-cloud-config mycloudconfig.yml WHITE PAPER 10

Generate Kubo deployment manifest 5. /usr/local/bin/bosh int manifests/kubo.yml \ -o manifests/ops-files/master-haproxy-vsphere.yml \ -o manifests/ops-files/worker-haproxy.yml \ -v deployments _ network=[[vcenter-pg-name-network-for-kubo-can-be-same-as- ]] \ -v kubo-admin-password= mykubopasswd \ -v kubelet-password= mykubopasswd \ -v kubernetes _ master _ port=443 \ -v kubernetes _ master _ host=[[ip-for-kubo-master-vip]] \ -v deployment _ name=mykubocluster \ -v worker _ haproxy _ tcp _ frontend _ port=1234 \ -v worker _ haproxy _ tcp _ backend _ port=4231 > mykubo.yml Upload latest stemcell 6. /usr/local/bin/bosh -e kubobosh upload-stemcell https://s3.amazonaws.com/ bosh-core-stemcells/vsphere/bosh-stemcell-3421.11-vsphere-esxi-ubuntu-trusty-go _ agent.tgz Upload Kubo release 7. wget https://github.com/cloudfoundry-incubator/kubo-release/releases/download/ v0.0.5/kubo-release-0.0.5.tgz 8. /usr/local/bin/bosh -e kubobosh upload-release kubo-release-0.0.5.tgz Deploy Kubo :) 9. /usr/local/bin/bosh -e kubobosh -d mykubocluster deploy ~/kubo-deployment/ mykubo.yml The latest version of this document can be found here. About ware ware delivers infrastructure technologies enabling developers and IT to build, run and manage cloud-native applications to increase business agility, security and efficiency. Visit www.vmware.com/solutions/cloudnative.html for more information. Twitter link: https://twitter.com/cloudnativeapps Blog link: https://blogs.vmware.com/cloudnative/ WHITE PAPER 11

ware, Inc. 3401 Hillview Avenue Palo Alto CA 94304 USA Tel 877-486-9273 Fax 650-427-5001 www.vmware.com Copyright 2017 ware, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. ware products are covered by one or more patents listed at http://www.vmware.com/go/patents. ware is a registered trademark or trademark of ware, Inc. in the United States and/or other jurisdictions. All other marks and names mentioned herein may be trademarks of their respective companies. Item No: W_17Q3_WP_Introduction-to-_FINAL_070817 08/17