Slide 1

Slide 1 text

Pivotal Cloud Foundry A Developer’s Perspective

Slide 2

Slide 2 text

Cloud Computing

Slide 3

Slide 3 text

What is Cloud Foundry? • Cloud Foundry is a open source PaaS software. • Cloud Foundry is a platform for developing and running cloud applications. • 12 Factor Apps (http://12factor.net)

Slide 4

Slide 4 text

What is Cloud Foundry? • Works with many languages and frameworks. • A platform that allows you to automatically provision resources. • Enables continuous integration/ continuous delivery. • Allows you to focus on writing cloud native applications.

Slide 5

Slide 5 text

Languages Supported • Java - Grails, Play, Spring, or any other JVM-based language or framework • Ruby - JRuby, Rack, Rails, or Sinatra • Node.js - Node or JavaScript • Binary • Go • PHP - Cake, Symfony, Zend, Nginx, or HTTPD • Python - Django or Flask • Staticfile - HTML, CSS, JavaScript, or Nginx

Slide 6

Slide 6 text

What is Pivotal Cloud Foundry? • Pivotal Cloud Foundry is a reference implementation of Cloud Foundry for the enterprise. • Open source software provides the basis for the Pivotal Cloud Foundry platform. • Pivotal offers additional commercial features, enterprise services, support, docs, certs, etc.

Slide 7

Slide 7 text

Cloud Foundry vs PCF • PCF is easier to install • Has nicer web GUI. • Additional features like auto-scaling, LDAP/AD (SAML) support, metrics server, notifications, Ops Metrics. • Many of the services come installed by default (MongoDB, Neo4J, RabbitMQ, Redis, etc). vs

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Pivotal Web Services (PWS) • Hosted version of PCF. • Exactly the same user experience / features. • Register for a free trial account. • http://run.pivotal.io • (Recommend using Chrome)

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Organization Spaces Logical way of organising users and resources

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Using PCF • Mainly interface using the Command Line Interface (CLI) • Download the CF CLI here: https://console.run.pivotal.io/2/tools • Alternative download: https://github.com/cloudfoundry/ cli#downloads

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Installation (Windows) • Unzip and copy cf to C:\windows • Add the following environment variables: • CF_HOME=C:\Users\\ • https_proxy=http:// :@proxy.singaporepower.com.sg:8080 • Example: • CF_HOME=C:\Users\PMCC749I\ • https_proxy=http://PMCC749I:[email protected]:8080

Slide 25

Slide 25 text

Login to PWS • Start Terminal ( + R, type ‘cmd’) • cf -v (gets version) • cf help (gets list of commands) • cf help • cf login -a api.run.pivotal.io • cf target (find out which server) • You will be prompted for your Email and Password.

Slide 26

Slide 26 text

Create a PHP App • cd \Users\\ • mkdir demo • cd demo • notepad index.php

Slide 27

Slide 27 text

Publish App • cf push • eg. cf push sp-miccheng-demo1 • Visit the website: http://.cfapps.io • eg. http://sp-miccheng-demo1.cfapps.io

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

What happens when you cf push? 1. Files in folder / local build artefacts are uploaded to CF (PWS). 2. Auto detection of type of apps you are deploying, appropriate buildpack is installed and a “droplet” (Cloud Foundry unit of execution) is build. 3. Droplet build in a staging area and stored in blob store. 4. Droplet is deployed to droplet execution agent and application is started (route is allotted).

Slide 33

Slide 33 text

Buildpacks • Buildpacks are used to detect the type of application you are deploying. • It sets up the the proper execution environment on Cloud Foundry. • Only used during the build / staging time - not in the running app. • See available buildpacks: cf buildpacks

Slide 34

Slide 34 text

Hostname & Domains • All CF apps use a shared domain by default (eg. cfapps.io). • When we deploy an app, we also declare a hostname (eg. sp- miccheng-demo1). • The combo and hostname + domain = route • Hostname can be configured in CLI or manifest.yml. • You can also add custom routes manually to apps.

Slide 35

Slide 35 text

Application Start Command • Each buildpack has a default command to start your application. • To override default start command: • cf push my-app -c “node server.js” • To reset to the buildpack start command: • cf push my-app -c “null”

Slide 36

Slide 36 text

Deployment Manifest • Application manifests tell cf push what to do with applications. • This includes everything from how many instances to create and how much memory to allocate to what services applications should use. • YAML format. • Online Generator: http://cfmanigen.mybluemix.net

Slide 37

Slide 37 text

Scaling a CF app • Horizontal scaling - adding more instanced • cf scale -i • Vertical scaling - adjust disk space limit and memory limit • cf scale -k 512M • cf scale -m 1G

Slide 38

Slide 38 text

Scaling Horizontally • cf push • cf scale -i 2

Slide 39

Slide 39 text

Environment Variables • Application configurations as environment variables. • How CF runtime communicates with a deployed app about the environment. • cf env • Use the manifest file to add environments. • You can also set using CLI: cf set-env OMG “oh my god”

Slide 40

Slide 40 text

Using Services • View what kinds of services are available • cf marketplace • Creating a service instance • cf create-service • Example: cf create-service elephantsql turtle miccheng-db

Slide 41

Slide 41 text

Using Services • See created services: cf services • See details of a service: cf service • Bind service instance to app instances: • cf bind-service • This will add env variables to the app instances.

Slide 42

Slide 42 text

Logs / Events • Tailing logs: cf logs • Recent logs: cf logs --recent • Logs can be drained to external log aggregators (eg. PaperTrail, Splunk) • Significant System Events: cf events

Slide 43

Slide 43 text

Login to app container • All apps run in a linux container (LXC) • You can SSH into the container if you need to take a look at what’s going on (eg. troubleshooting, verify file version, etc) • cf ssh -i

Slide 44

Slide 44 text

Hands-On https://github.com/miccheng/rails-guestbook-demo

Slide 45

Slide 45 text

More things… • User-provided services - enable developers to use services that are not available in the marketplace with their applications running on Cloud Foundry.
 (Reference: http://docs.pivotal.io/pivotalcf/1-7/devguide/services/user-provided.html) • Managed Services for Cloud Foundry - services integrated with Cloud Foundry via APIs, and enable end users to provision reserved resources and credentials on demand.
 (Reference: http://docs.pivotal.io/pivotalcf/1-7/services/index.html)

Slide 46

Slide 46 text

Q&A

Slide 47

Slide 47 text

Michael Cheng @CoderKungfu [email protected]