Course Outline
Day 1 – Containers and Image Management
Introduction to Container Platforms
- Comparison of traditional application deployment versus container-based deployment
- Containers compared with virtual machines
- Container runtimes and container engines
- The specific roles of Docker, Kubernetes, and OpenShift
- Common container platform architectures
- Workflows for development, testing, and production
Working with Containers
- Running and managing containers
- The container lifecycle
- Starting, stopping, and removing containers
- Executing commands within containers
- Utilizing environment variables
- Port mapping configurations
- Accessing container logs
- Inspecting resource usage and processes
Building Container Images
- Understanding image structure and layers
- Creating Dockerfiles and Containerfiles
- Selecting appropriate base images
- Incorporating application dependencies
- Configuring entry points and commands
- Leveraging image caching
- Techniques for reducing image size
- Creating reproducible images
Container Registries
- Distinguishing between public and private registries
- Tagging and versioning images
- Pushing and pulling images
- Implementing image authentication
- Managing image retention and cleanup
- Considering basic image security implications
Container Networking and Storage
- Fundamental concepts of container networking
- Bridge networking setups
- Exposing ports
- Facilitating container-to-container communication
- Utilizing bind mounts and volumes
- Managing persistent container data
- Key considerations for backups
Hands-on Exercises
- Running and inspecting containers
- Constructing an application image
- Configuring ports and environment variables
- Publishing an image to a registry
- Storing persistent data external to the container
Day 2 – Kubernetes Architecture and Workloads
Kubernetes Fundamentals
- The purpose of container orchestration
- Overview of Kubernetes architecture
- Control plane components
- Worker nodes
- The API server
- The scheduler
- Controllers
- Distinguishing between cluster state and desired state
- Interacting with the cluster using kubectl
Kubernetes Resources
- Pods
- ReplicaSets
- Deployments
- Namespaces
- Labels and annotations
- Selectors
- Declarative resource definitions
- YAML manifests
Deploying Applications
- Creating and managing Deployments
- Scaling workloads
- Updating container images
- Executing rolling updates
- Performing rollbacks
- Reviewing deployment history
- Restarting workloads
- Managing application replicas
Application Configuration
- ConfigMaps
- Secrets
- Environment variables
- Configuration files
- Decoupling application code from configuration
- Managing environment-specific settings
Resource Management
- Specifying CPU and memory requests
- Setting CPU and memory limits
- Implementing resource quotas
- Applying limit ranges
- Understanding scheduling implications
- Diagnosing resource-related failures
Hands-on Exercises
- Deploying a containerized application
- Creating and updating Kubernetes manifests
- Scaling an application
- Executing a rolling update and rollback
- Configuring the application using ConfigMaps and Secrets
- Applying resource requests and limits
Day 3 – Kubernetes Networking, Storage and Security
Kubernetes Networking
- Cluster networking model
- Pod-to-pod communication protocols
- Service discovery mechanisms
- DNS resolution within the cluster
- ClusterIP services
- NodePort services
- LoadBalancer services
- Ingress concepts
- Patterns for application exposure
Network Policies
- Controlling traffic flow between workloads
- Configuring ingress and egress rules
- Implementing namespace-based traffic control
- Testing network connectivity
- Troubleshooting service communication issues
Persistent Storage
- Differences between ephemeral and persistent storage
- Volumes
- PersistentVolumes (PVs)
- PersistentVolumeClaims (PVCs)
- StorageClasses
- Dynamic provisioning mechanisms
- Understanding access modes
- Reclaim policies
- Utilizing storage for stateful applications
Kubernetes Access Control
- Concepts of authentication and authorization
- Role-Based Access Control (RBAC)
- Roles and ClusterRoles
- RoleBindings and ClusterRoleBindings
- Service accounts
- Implementing least-privilege access
- Inspecting effective permissions
Workload Security
- Security contexts
- Running containers as non-root users
- Linux capabilities management
- Implementing read-only filesystems
- Handling secrets securely
- Ensuring image provenance
- Identifying common configuration risks
Hands-on Exercises
- Exposing an application via Kubernetes services
- Configuring ingress routes
- Restricting traffic using network policies
- Provisioning persistent storage
- Configuring RBAC permissions
- Running a workload with an appropriate security context
Day 4 – Working with OpenShift Environments
Introduction to OpenShift
- OpenShift as a Kubernetes-based application platform
- Kubernetes resources within an OpenShift environment
- OpenShift cluster architecture
- Distinguishing between projects and namespaces
- Platform users and service accounts
- Navigating the web console
- Utilizing the OpenShift CLI
Managing Projects and Access
- Creating and managing projects
- Assigning user permissions
- Project-level roles
- Granting administrative access
- Applying resource quotas
- Defining limit ranges
- Utilizing service accounts
- Reviewing project resources
Deploying Applications
- Deploying container images
- Creating application workloads
- Managing deployments
- Scaling applications
- Updating application versions
- Performing rollbacks
- Managing application configuration
- Working with secrets
Application Exposure
- Understanding services in OpenShift
- Configuring routes
- TLS concepts
- Differentiating between internal and external application access
- Managing hostnames and certificates
- Troubleshooting route and service issues
Storage in OpenShift
- Persistent Volume Claims
- StorageClasses
- Attaching storage to workloads
- Managing stateful workloads
- Configuring storage access permissions
- Troubleshooting volume mounting issues
Scheduling and Node Management
- Using labels and selectors
- Implementing node selectors
- Utilizing taints and tolerations
- Understanding affinity and anti-affinity concepts
- Controlling workload placement
- Cordoning and draining nodes
- Considerations for node maintenance
Hands-on Exercises
- Accessing an OpenShift environment
- Creating and configuring a project
- Deploying and exposing an application
- Configuring user and service-account access
- Attaching persistent storage
- Scaling and updating a running workload
Day 5 – Operations, Monitoring and Troubleshooting
Platform Monitoring
- Monitoring cluster and application health
- Analyzing resource metrics
- Assessing node health
- Evaluating workload status
- Monitoring capacity and resource utilization
- Identifying performance constraints
Logging and Events
- Accessing container logs
- Retrieving pod logs
- Viewing previous container logs
- Monitoring Kubernetes events
- Interpreting application and platform messages
- Filtering and interpreting operational data
Health Checks
- Configuring startup probes
- Setting up readiness probes
- Implementing liveness probes
- Designing effective health endpoints
- Diagnosing probe failures
- Preventing unnecessary application restarts
Troubleshooting Workloads
- Investigating pending pods
- Resolving image pull failures
- Addressing crash loops
- Correcting misconfigured environment variables
- Fixing failed mounts
- Resolving insufficient resource errors
- Addressing permission errors
- Troubleshooting service and route connectivity problems
- Resolving DNS issues
- Diagnosing application startup failures
Operational Security
- Reviewing permissions
- Managing service account usage
- Safely handling credentials
- Adhering to image security practices
- Ensuring network isolation
- Auditing platform access
- Applying the principle of least privilege
Maintenance and Lifecycle Management
- Conducting routine platform checks
- Performing node maintenance
- Considering application backup strategies
- Backing up configurations
- Planning updates
- Managing changes
- Testing updates
- Planning rollbacks
- Understanding disaster recovery concepts
Final Practical Workshop
Participants complete an end-to-end operational scenario involving the following tasks:
- Building and tagging a container image.
- Publishing the image to a registry.
- Deploying the application to Kubernetes or OpenShift.
- Configuring application settings and credentials.
- Exposing the application externally.
- Attaching persistent storage.
- Configuring access permissions.
- Adding health checks.
- Scaling and updating the application.
- Diagnosing and resolving an introduced failure.
Course Format
- Interactive lectures and technical discussions.
- Instructor demonstrations.
- Extensive hands-on exercises.
- Scenario-based administration and troubleshooting workshops.
- Practical work in container, Kubernetes, and OpenShift environments.
Course Customization Options
- The course can be adapted to the participant's existing infrastructure, cloud provider, and container tooling.
- The balance between Docker, Kubernetes, and OpenShift topics can be adjusted according to the team's experience level.
- Practical exercises can be tailored to the organization's specific applications, deployment processes, and operational requirements.
Trademark Notice
OpenShift is a trademark of Red Hat, Inc. This independently developed training is not affiliated with, endorsed by, or authorized by Red Hat.
Requirements
Participants should possess:
- Experience using the Linux command line.
- Foundational knowledge in system administration or DevOps practices.
- A general understanding of networking concepts.
- Familiarity with software deployment processes.
While previous experience with Docker, Kubernetes, or OpenShift is beneficial, it is not a prerequisite.
Testimonials (7)
Reda explanations and he simplified alot of the understanding
Eric Van Wyk
Course - Docker, Kubernetes and OpenShift 3 for Administrators
The labs were the best. Very practical and provides hands-on experience. I personally think that it is the most effective means of truly understanding the course and applying the concepts that were covered.
Hishaam Johnstone
Course - Docker, Kubernetes and OpenShift 3 for Administrators
I loved the willingness to help and explain further when uncertain
Letlotlo Miffi
Course - Docker, Kubernetes and OpenShift 3 for Administrators
Adriano studied the subject very deeply which is the style i mostly prefer ie: less about the commands more on the mechanism behind it. Discussed scenarios were well supported by the practical examples which helped a lot to understand the presented stuff.
Mariusz BANASZCZYK - Sopra Steria
Course - Docker, Kubernetes and OpenShift for Administrators
Deep knowledge of Adriano. Explanation of base concepts
Tomasz Szalankiewicz - LPP SA
Course - Docker, Kubernetes and OpenShift for Administrators
I generally liked the presenter.
Josif Kovacevic - ANZ
Course - Docker, Kubernetes and OpenShift for Administrators
Adrian clearly knows and enjoys this technology.