Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intro to Pivotal Cloud Foundry

Intro to Pivotal Cloud Foundry

Michael Cheng

August 05, 2016
Tweet

More Decks by Michael Cheng

Other Decks in Programming

Transcript

  1. 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)
  2. 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.
  3. 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
  4. 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.
  5. 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
  6. 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)
  7. 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
  8. Installation (Windows) • Unzip and copy cf to C:\windows •

    Add the following environment variables: • CF_HOME=C:\Users\<your_AD_user_id>\ • https_proxy=http:// <your_AD_user_id>:<your_AD_password>@proxy.singaporepower.com.sg:8080 • Example: • CF_HOME=C:\Users\PMCC749I\ • https_proxy=http://PMCC749I:[email protected]:8080
  9. Login to PWS • Start Terminal ( + R, type

    ‘cmd’) • cf -v (gets version) • cf help (gets list of commands) • cf help <command> • cf login -a api.run.pivotal.io • cf target (find out which server) • You will be prompted for your Email and Password.
  10. Publish App • cf push <app_name> • eg. cf push

    sp-miccheng-demo1 • Visit the website: http://<app_name>.cfapps.io • eg. http://sp-miccheng-demo1.cfapps.io
  11. 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).
  12. 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
  13. 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.
  14. 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”
  15. 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
  16. Scaling a CF app • Horizontal scaling - adding more

    instanced • cf scale <app_name> -i <number_of_instances> • Vertical scaling - adjust disk space limit and memory limit • cf scale <app_name> -k 512M • cf scale <app_name> -m 1G
  17. Environment Variables • Application configurations as environment variables. • How

    CF runtime communicates with a deployed app about the environment. • cf env <app_name> • Use the manifest file to add environments. • You can also set using CLI: cf set-env OMG “oh my god”
  18. Using Services • View what kinds of services are available

    • cf marketplace • Creating a service instance • cf create-service <service> <plan> <service_instance> • Example: cf create-service elephantsql turtle miccheng-db
  19. Using Services • See created services: cf services • See

    details of a service: cf service <service_instance> • Bind service instance to app instances: • cf bind-service <app_name> <service_instance> • This will add env variables to the app instances.
  20. Logs / Events • Tailing logs: cf logs <app_name> •

    Recent logs: cf logs <app_name> --recent • Logs can be drained to external log aggregators (eg. PaperTrail, Splunk) • Significant System Events: cf events <app_name>
  21. 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 <app_name> -i <instance_number>
  22. 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)
  23. Q&A