Course Outline
Day 1 – Containers and Image Management
Introduction to Container Platforms
- Comparing traditional application deployment with container-based approaches
- Differentiating containers from virtual machines
- Overview of container runtimes and engines
- The specific roles of Docker, Kubernetes, and OpenShift
- Common architectural patterns in container platforms
- Workflows for development, testing, and production
Interacting with Containers
- Executing and managing container instances
- The container lifecycle
- Starting, stopping, and removing containers
- Running commands within containers
- Managing environment variables
- Port mapping techniques
- Accessing container logs
- Monitoring resource usage and inspecting processes
Constructing Container Images
- Image structure and layering
- Authoring Dockerfiles and Containerfiles
- Choosing appropriate base images
- Incorporating application dependencies
- Defining entry points and commands
- Leveraging image caching
- Strategies for reducing image size
- Creating reproducible images
Container Registries
- Utilizing public and private registries
- Tagging and versioning images
- Pushing and pulling images
- Implementing image authentication
- Image retention and cleanup policies
- Basic security considerations for images
Container Networking and Storage
- Core concepts of container networking
- Bridge networking configurations
- Exposing ports
- Inter-container communication
- Using bind mounts and volumes
- Managing persistent container data
- Backup strategies
Hands-on Exercises
- Run and inspect container instances
- Build a custom application image
- Configure ports and environment variables
- Publish an image to a registry
- Store persistent data externally from the container
Day 2 – Kubernetes Architecture and Workloads
Kubernetes Fundamentals
- The purpose of container orchestration
- Kubernetes architectural overview
- Control plane components
- Worker nodes
- The API server
- The Scheduler
- Controllers
- Cluster state vs. desired state
- Interacting with the cluster via kubectl
Kubernetes Resources
- Pods
- ReplicaSets
- Deployments
- Namespaces
- Labels and annotations
- Selectors
- Declarative resource definitions
- YAML manifests
Application Deployment
- 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
- Separating code from configuration
- Managing environment-specific settings
Resource Management
- CPU and memory requests
- CPU and memory limits
- Resource quotas
- Limit ranges
- Impact on scheduling
- Diagnosing resource-related failures
Hands-on Exercises
- Deploy a containerized application
- Create and modify Kubernetes manifests
- Scale an application
- Perform a rolling update and subsequent rollback
- Configure the application using ConfigMaps and Secrets
- Apply resource requests and limits
Day 3 – Kubernetes Networking, Storage, and Security
Kubernetes Networking
- The cluster networking model
- Pod-to-pod communication
- Service discovery mechanisms
- DNS resolution within the cluster
- ClusterIP services
- NodePort services
- LoadBalancer services
- Ingress concepts
- Application exposure patterns
Network Policies
- Controlling traffic between workloads
- Ingress and egress rules
- Namespace-based traffic management
- Testing network connectivity
- Troubleshooting service communication issues
Persistent Storage
- Ephemeral vs. persistent storage
- Volumes
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Dynamic provisioning
- Access modes
- Reclaim policies
- Storage for stateful applications
Kubernetes Access Control
- Authentication and authorization concepts
- 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
- Read-only filesystems
- Handling secrets securely
- Image provenance
- Common configuration risks
Hands-on Exercises
- Expose an application using Kubernetes services
- Configure ingress rules
- Restrict traffic using network policies
- Provision persistent storage
- Configure RBAC permissions
- Run 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 context
- OpenShift cluster architecture
- 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
- Administrative access controls
- Resource quotas
- Limit ranges
- Service accounts
- Reviewing project resources
Deploying Applications
- Deploying container images
- Creating application workloads
- Managing deployments
- Scaling applications
- Updating application versions
- Executing rollbacks
- Managing application configuration
- Working with secrets
Application Exposure
- Services in OpenShift
- Routes
- TLS concepts
- Internal and external application access
- Hostnames and certificates
- Diagnosing route and service issues
Storage in OpenShift
- Persistent Volume Claims
- StorageClasses
- Attaching storage to workloads
- Stateful workloads
- Storage access permissions
- Troubleshooting volume mounting issues
Scheduling and Node Management
- Labels and selectors
- Node selectors
- Taints and tolerations
- Affinity and anti-affinity concepts
- Workload placement strategies
- Cordoning and draining nodes
- Node maintenance considerations
Hands-on Exercises
- Access an OpenShift environment
- Create and configure a project
- Deploy and expose an application
- Configure user and service-account access
- Attach persistent storage
- Scale and update a running workload
Day 5 – Operations, Monitoring, and Troubleshooting
Platform Monitoring
- Monitoring cluster and application health
- Resource metrics
- Node health status
- Workload status
- Capacity and resource utilization
- Identifying performance constraints
Logging and Events
- Container logs
- Pod logs
- Previous container logs
- Kubernetes events
- Application and platform messages
- Filtering and interpreting operational data
Health Checks
- Startup probes
- Readiness probes
- Liveness probes
- Designing effective health endpoints
- Diagnosing probe failures
- Preventing unnecessary application restarts
Troubleshooting Workloads
- Pending pods
- Image pull failures
- Crash loops
- Misconfigured environment variables
- Failed mounts
- Insufficient resources
- Permission errors
- Service and route connectivity issues
- DNS problems
- Application startup failures
Operational Security
- Reviewing permissions
- Service account usage
- Secure handling of credentials
- Image security practices
- Network isolation
- Platform access auditing
- Applying the principle of least privilege
Maintenance and Lifecycle Management
- Routine platform checks
- Node maintenance
- Application backup strategies
- Configuration backup
- Update planning
- Change management
- Testing updates
- Rollback planning
- Disaster recovery concepts
Final Practical Workshop
Participants will complete an end-to-end operational scenario:
- Build and tag a container image.
- Publish the image to a registry.
- Deploy the application to Kubernetes or OpenShift.
- Configure application settings and credentials.
- Expose the application.
- Attach persistent storage.
- Configure access permissions.
- Add health checks.
- Scale and update the application.
- Diagnose and resolve an introduced failure.
Course Format
- Interactive lectures and technical discussions.
- Instructor-led 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.
- Practical exercises can be tailored to the organization's 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 are expected to have:
- Proficiency with the Linux command line.
- Foundational knowledge of system administration or DevOps practices.
- A general grasp of networking concepts.
- Familiarity with software deployment workflows.
Prior experience with Docker, Kubernetes, or OpenShift is beneficial but not mandatory.
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.