ebook img

Deploying Rails with Docker, Kubernetes and ECS PDF

138 Pages·2016·1.42 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Deploying Rails with Docker, Kubernetes and ECS

Deploying Rails with Docker, Kubernetes and ECS — Pablo Acuña Deploying Rails with Docker, Kubernetes and ECS Pablo Acuña Deploying Rails with Docker, Kubernetes and ECS Pablo Acuña Providencia, Chile ISBN-13 (pbk): 978-1-4842-2414-4 ISBN-13 (electronic): 978-1-4842-2415-1 DOI 10.1007/978-1-4842-2415-1 Library of Congress Control Number: 2016961433 Copyright © 2016 by Pablo Acuña This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Law of the Publisher’s location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under the respective Copyright Law. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director: Welmoed Spahr Acquisitions Editor: Louise Corrigan Development Editor: James Markham Technical Reviewer: Massimo Nardone Editorial Board: Steve Anglin, Pramila Balan, Laura Berendson, Aaron Black, Louise Corrigan, Jonathan Gennick, Todd Green, Celestin Suresh John, Nikhil Karkal, Robert Hutchinson, James Markham, Matthew Moodie, Natalie Pao, Gwenan Spearing Coordinating Editor: Nancy Chen Copy Editor: Lori Jacobs Compositor: SPi Global Indexer: SPi Global Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springer.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales. Any source code or other supplementary materials referenced by the author in this text is available to readers at www.apress.com. For detailed information about how to locate your book’s source code, go to www.apress.com/source-code/. Printed on acid-free paper To Mamá & Papá. Contents at a Glance About the Author ������������������������������������������������������������������������������xi About the Technical Reviewer ��������������������������������������������������������xiii Acknowledgments ���������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������xvii ■ Chapter 1: Development �����������������������������������������������������������������1 ■ Chapter 2: Setting Up Tools for Production ����������������������������������21 ■ Chapter 3: Kubernetes ������������������������������������������������������������������27 ■ Chapter 4: Amazon EC2 Container Service ����������������������������������69 ■ Chapter 5: Continuous Integration �����������������������������������������������99 Index ����������������������������������������������������������������������������������������������125 v Contents About the Author ������������������������������������������������������������������������������xi About the Technical Reviewer ��������������������������������������������������������xiii Acknowledgments ���������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������xvii ■ Chapter 1: Development �����������������������������������������������������������������1 Dependencies ������������������������������������������������������������������������������������������1 Creating the Application ��������������������������������������������������������������������������1 Dockerizing Rails �������������������������������������������������������������������������������������3 Setup Container ��������������������������������������������������������������������������������������������������������6 Web Application Container ����������������������������������������������������������������������������������������7 Database Container ��������������������������������������������������������������������������������������������������8 Build and Run �����������������������������������������������������������������������������������������������������������9 Adding a Rails Resource �����������������������������������������������������������������������14 Log Issues ���������������������������������������������������������������������������������������������16 Pushing the App to DockerHub ��������������������������������������������������������������18 Summary �����������������������������������������������������������������������������������������������20 ■ Chapter 2: Setting Up Tools for Production ����������������������������������21 Installing the AWS CLI ���������������������������������������������������������������������������21 Configuring the AWS CLI ������������������������������������������������������������������������22 Tips for Using the AWS CLI ��������������������������������������������������������������������23 Summary �����������������������������������������������������������������������������������������������25 vii ■ Contents ■ Chapter 3: Kubernetes ������������������������������������������������������������������27 Introduction �������������������������������������������������������������������������������������������27 Kubernetes Architecture �����������������������������������������������������������������������������������������27 Main Objects �����������������������������������������������������������������������������������������28 Pods ������������������������������������������������������������������������������������������������������28 Replica Set �������������������������������������������������������������������������������������������������������������29 Jobs ������������������������������������������������������������������������������������������������������������������������30 Volumes ������������������������������������������������������������������������������������������������������������������30 Services ������������������������������������������������������������������������������������������������������������������32 Deployments �����������������������������������������������������������������������������������������������������������33 Structuring the Files ������������������������������������������������������������������������������34 Templates ����������������������������������������������������������������������������������������������34 PostgreSQL �������������������������������������������������������������������������������������������������������������34 Setup Container ������������������������������������������������������������������������������������������������������37 Web Application ������������������������������������������������������������������������������������������������������38 Minikube������������������������������������������������������������������������������������������������40 Running Our Templates with Minikube �������������������������������������������������������������������41 Launching an AWS Kubernetes Cluster �������������������������������������������������48 Running the Templates in Production ����������������������������������������������������50 Adding Persistence �������������������������������������������������������������������������������58 Updating the Application �����������������������������������������������������������������������64 Automation Scripts ��������������������������������������������������������������������������������67 Summary �����������������������������������������������������������������������������������������������68 ■ Chapter 4: Amazon EC2 Container Service ����������������������������������69 Concepts �����������������������������������������������������������������������������������������������69 Container Instance ��������������������������������������������������������������������������������������������������69 Task Definition ��������������������������������������������������������������������������������������������������������69 Service ��������������������������������������������������������������������������������������������������������������������71 viii ■ Contents Configuring the ECS-CLI ������������������������������������������������������������������������72 Creating the Cluster Using the Amazon ECS CLI������������������������������������73 DB Configuration �����������������������������������������������������������������������������������75 Creating a RDS Resource ����������������������������������������������������������������������������������������75 Creating the Task Definition ������������������������������������������������������������������81 Creating a Service for Our Application ��������������������������������������������������89 Running Updates to Our Application ������������������������������������������������������94 Summary �����������������������������������������������������������������������������������������������98 ■ Chapter 5: Continuous Integration �����������������������������������������������99 Installing Jenkins ��������������������������������������������������������������������������������100 Creating a Key Pair �����������������������������������������������������������������������������������������������100 Launching the Instance ����������������������������������������������������������������������������������������100 Connecting to the Instance �����������������������������������������������������������������������������������103 Installing Dependencies ���������������������������������������������������������������������������������������103 Configuring a Job for Kubernetes �������������������������������������������������������109 Push to Deploy ������������������������������������������������������������������������������������������������������114 Running the Test Suite ������������������������������������������������������������������������������������������115 Configuring a Job for ECS �������������������������������������������������������������������120 Running the Test Suite ������������������������������������������������������������������������������������������121 Summary ���������������������������������������������������������������������������������������������123 Index ����������������������������������������������������������������������������������������������125 ix About the Author Pablo Acuña is a software engineer from the south of Chile. He specializes in Ruby on Rails applications and containerized systems. He holds a computer engineering degree from Universidad Técnica Federico Santa Maria in Valparaíso, Chile and currently works as a Lead Developer at ArchDaily—the world's most visited architecture website. xi About the Technical Reviewer Massimo Nardone has more than 22 years of experience in Security, Web/Mobile development, and Cloud and IT Architecture. His true information technology (IT) passions are Security and Android. He has been programming and teaching how to program with Android, Perl, PHP, Java, VB, Python, C/C++, and MySQL for more than 20 years. He holds a Master of Science degree in Computing Science from the University of Salerno, Italy. He has worked as a Project Manager, Software Engineer, Research Engineer, Chief Security Architect, Information Security Manager, PCI/SCADA Auditor, and Senior Lead IT Security/Cloud/SCADA Architect for many years. Massimo’s technical skills include: Security, Android, Cloud, Java, MySQL, Drupal, Cobol, Perl, Web and Mobile development, MongoDB, D3, Joomla, Couchbase, C/C++, WebGL, Python, Pro Rails, Django CMS, Jekyll, Scratch, etc. He currently works as Chief Information Security Officer (CISO) for Cargotec Oyj. He worked as visiting lecturer and supervisor for exercises at the Networking Laboratory of the Helsinki University of Technology (Aalto University). He holds four international patents (PKI, SIP, SAML, and Proxy areas). Massimo has reviewed more than 40 IT books for different publishing companies and he is the coauthor of Pro Android Games (Apress, 2015). xiii

Description:
This concise teaches you how to use the power of Docker and Kubernetes to deploy your Rails applications easily and efficiently. Docker and Kubernetes are increasing in popularity every day, but what if you want to leverage their benefits for your Rails application? This is the book you need.Deployi
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.