Cloud native applications with Docker and Kubernetes design and build Cloud architecture and applications with Microservices, EMQ, and multi-site configurations
This book takes developers on a journey into the cloud with Docker and Kubernetes. It walks you through the basics of Docker containers, how they are built, run, and published, and how the Kubernetes system allows you to use containers to better manage a cloud native application. Additionally, it wa...
Other Authors: | |
---|---|
Format: | eBook |
Language: | Inglés |
Published: |
New York, New York :
Apress Media LLC
[2023]
|
Subjects: | |
See on Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009711797206719 |
Table of Contents:
- Intro
- Table of Contents
- About the Author
- About the Technical Reviewer
- Source Code
- Acknowledgments
- Chapter 1: Introduction
- 1.1 A Brief History of Web Service Hosting
- 1.1.1 The Old Way
- 1.1.2 The Virtual Private Server
- 1.1.3 From Virtual Private Servers to Containers
- 1.1.4 Cloud Native Infrastructure
- 1.2 An Overview of This Book
- 1.3 Prerequisites
- 1.4 Typographical Conventions
- Part I: An Introduction to Containers
- Chapter 2: Containers Under the Hood
- 2.1 Answering Basic Questions About Containers
- 2.1.1 What Are Containers?
- 2.1.2 What Problems Do Containers Solve?
- 2.1.3 Does It Use a Lot of Disk Space?
- 2.1.4 What Is the Relationship Between "Docker" and "Containers"?
- 2.2 A Short History of Container Technology
- 2.2.1 From Emulators to Virtual Machines
- 2.2.2 Increasing Isolation Inside the Operating System
- 2.2.3 The Birth of Containers
- 2.2.4 The Union Filesystem
- 2.2.5 The Rise of Docker
- 2.3 Summary
- Chapter 3: A Docker Interactive Tutorial
- 3.1 Registries, Repositories, and Tags
- 3.2 Running Your First Container
- 3.3 Running a Docker Service
- 3.4 Running a Whole Operating System
- 3.5 Copying Files to and from the Container
- 3.6 Creating a New Docker Image
- 3.7 Creating Docker Images Using a Recipe
- 3.8 Pushing the Image to Docker Hub
- 3.9 Logging into a Running Docker Container
- 3.10 Summary
- Chapter 4: Best Practices for Building Containers
- 4.1 How Not to Build a Container
- 4.1.1 Don't Make a Container Perform Multiple Tasks
- 4.1.2 Don't Include an Entire Operating System
- 4.2 Base Images
- 4.3 Alpine Distributions
- 4.4 Avoid Bloated Images from Deleted Files
- 4.5 Make Your Containers Configurable
- 4.6 Be Clear About Your Statefulness
- 4.7 Final Tips
- 4.8 Summary
- Part II: Introducing Kubernetes.
- Chapter 5: The Cloud Native Philosophy
- 5.1 Cloud-Level Operating System
- 5.2 Declarative Infrastructure
- 5.3 Containers Are "Cattle" Not "Pets"
- 5.4 A Note on Costs
- 5.5 Summary
- Chapter 6: Getting Started with Kubernetes
- 6.1 Setting Up Your First Cluster
- 6.2 Deploying Your First Application
- 6.3 Looking Around the Kubernetes Dashboard
- 6.4 Summary
- Chapter 7: Managing Kubernetes with kubectl
- 7.1 Setting Up Your Connection
- 7.2 Basic kubectl Commands
- 7.3 Playing with kubectl
- 7.4 Creating Another Deployment with kubectl
- 7.5 Accessing Multiple Clusters
- 7.6 Summary
- Chapter 8: An Overview of the Kubernetes Environment
- 8.1 Basic Kubernetes Components
- 8.1.1 The Control Plane
- 8.1.2 Nodes and Pods
- 8.1.3 Workloads
- 8.1.4 Kubernetes Services
- 8.1.5 CoreDNS
- 8.1.6 The Structure of a Pod
- 8.2 Kubernetes Storage
- 8.3 Configuring a Kubernetes Cluster
- 8.4 Application Interaction with Kubernetes
- 8.5 Summary
- Chapter 9: Basic Kubernetes Management
- 9.1 Infrastructure as Code
- 9.2 A Short Introduction to YAML
- 9.3 Defining Kubernetes Objects in YAML Manifest Files
- 9.4 Kubernetes Files for Our Walkthrough Deployment
- 9.4.1 Organizing Your Kubernetes Files
- 9.5 Deleting Kubernetes Objects
- 9.6 Summary
- Chapter 10: A Full Kubernetes Cloud Example
- 10.1 The Application Code
- 10.2 The Memcache Service
- 10.3 The Database Service
- 10.4 The Front-End Service
- 10.5 The Message Board API Server
- 10.6 Configurations and Secrets
- 10.7 Making an Ingress
- 10.8 Final Thoughts
- 10.9 Summary
- Chapter 11: Going Further in Kubernetes
- 11.1 Cluster Namespaces
- 11.2 Helm
- 11.3 Capacity Management and Autoscaling
- 11.4 DaemonSets
- 11.5 Jobs
- 11.6 Cluster Security
- 11.7 Customizing Kubernetes
- 11.8 Additional Information
- 11.9 Summary.
- Part III: Architecting for the Cloud
- Chapter 12: A Cloud Architecture Introduction
- 12.1 What Is Cloud Architecture?
- 12.2 Architectural Diagrams
- 12.3 Application Policies
- 12.4 Summary
- Chapter 13: Basic Cloud Architectures
- 13.1 A Basic Load-Balanced Architecture
- 13.2 Adding Caching to the Architecture
- 13.3 An Ingress to Multiple Load-Balanced Systems
- 13.4 Summary
- Chapter 14: A Basic Microservice Architecture
- 14.1 What Is a Microservice Architecture?
- 14.2 Authentication and Authorization
- 14.3 Choosing Where to Cut the Application
- 14.4 URL Path Layout
- 14.5 Quickly Transitioning to a Microservice Architecture
- 14.6 Summary
- Chapter 15: Enterprise Message Queues
- 15.1 Basic Message Queue Components and Terminology
- 15.2 Working with Work Queues
- 15.3 Decoupling Systems with Publish/Subscribe
- 15.4 Event Bus Architecture
- 15.5 Message Streaming for Permanent Replayability
- 15.6 Two-Way Messaging
- 15.7 The Job of the Cloud Architect
- 15.8 Getting Started with Message Queueing
- 15.9 Summary
- Chapter 16: Architecting Data Stores
- 16.1 Types of Data Stores
- 16.1.1 Relational Databases
- 16.1.2 Key/Value Stores
- 16.1.3 Document Databases
- 16.1.4 Full-Text Databases
- 16.1.5 Object/File Stores
- 16.1.6 Specialized Persistent Stores
- 16.2 Implementing Stores Using a Relational Database
- 16.2.1 Document Databases
- 16.2.2 Full-Text Search
- 16.2.3 Object/File Stores
- 16.2.4 Key/Value Stores
- 16.3 Database Topologies
- 16.4 Database Partitioning
- 16.5 Using UUIDs for Primary Keys
- 16.6 Thinking About Sources of Truth
- 16.7 Summary
- Chapter 17: Extended Cloud Topologies
- 17.1 Terminology
- 17.2 How Kubernetes Handles Extended Topologies
- 17.3 Considerations for Multiregion Deployments
- 17.4 Summary
- Chapter 18: Architecture Values
- 18.1 Scalability.
- 18.2 Observability
- 18.3 Traceability
- 18.4 Testability
- 18.5 Predictability
- 18.6 Repeatability
- 18.7 Integrity and Security
- 18.8 Summary
- Chapter 19: Conclusion
- Appendix A: Navigating the Linux Command-Line Shell
- A.1 General Command Format
- A.2 Package Management Commands
- A.2.1 Debian Package Management
- A.2.2 Alpine Package Management
- A.2.3 CentOS/Fedora/RHEL Package Management
- A.3 Basic Linux File Commands
- A.4 System Diagnostic Commands
- A.5 Network Diagnostic Commands
- A.6 Application-Level Diagnostic Commands
- A.7 Permission-Based Commands
- A.8 Basic Linux Filesystem Directories
- Appendix B: Installing Applications
- B.1 Installing Docker
- B.2 Using Podman
- B.3 Using Apple Silicon
- B.4 Installing kubectl
- B.5 Installing Helm
- Appendix C: Common kubectl Commands
- C.1 List Kubernetes Resources and What API Version Defines Them
- C.2 Fire Up a Shell on a Pod
- C.3 Run a Custom Image (and Shell) on a New Pod
- C.4 Attaching to a Pod Container
- C.5 Getting Logs for a Pod
- C.6 Reboot All Pods in a Deployment
- C.7 Forwarding a Local Port to a Port in the Cluster
- C.8 Show Node Health
- C.9 Show All Kubernetes Events
- C.10 Show a Secret
- C.11 Force-Terminate a Pod
- C.12 Some Handy Switches to Remember
- C.13 Accessing the Underlying Node
- Appendix D: More on Kubernetes Storage
- D.1 StorageClasses
- D.2 File System Expansion
- D.3 Preprovisioned Storage
- D.4 StatefulSets
- D.5 A Few Additional Details
- Appendix E: More on Pod Scheduling
- E.1 Readiness Gates
- E.2 Pod Topology: Affinities and Anti-affinities
- E.3 Node Tainting and Cordoning
- Appendix F: Troubleshooting Kubernetes Clusters
- F.1 Connecting to the Cluster
- F.2 Pods Are Not Starting
- F.3 Pods Not Behaving as Expected
- F.4 Pods Can't Reach Service.
- F.5 Ingress Is Not Getting an External IP Address
- F.6 Going Forward
- Index.