Course Outline
Day 1 – Containers and Image Management
Introduction to Container Platforms
- Comparison of traditional application deployment versus container-based deployment
- Differences between containers and virtual machines
- Container runtimes and container engines
- The specific roles of Docker, Kubernetes, and OpenShift
- Standard container platform architectures
- Workflows for development, testing, and production
Working with Containers
- Executing and managing containers
- The container lifecycle
- Starting, stopping, and deleting containers
- Running commands within containers
- Managing environment variables
- Port mapping techniques
- Reviewing container logs
- Monitoring resource usage and inspecting processes
Building Container Images
- Image structure and layering
- Creating Dockerfiles and Containerfiles
- Choosing appropriate base images
- Installing application dependencies
- Setting entry points and commands
- Implementing image caching
- Optimizing image size
- Creating reproducible images
Container Registries
- Public and private registry options
- Tagging and versioning strategies
- Pushing and pulling images
- Image authentication methods
- Image retention and cleanup policies
- Basic image security considerations
Container Networking and Storage
- Core container network concepts
- Bridge networking configurations
- Exposing ports
- Communication between containers
- Using bind mounts and volumes
- Managing persistent container data
- Backup considerations for data
Hands-on Exercises
- Run and inspect container instances
- Build a custom application image
- Set up ports and environment variables
- Publish an image to a registry
- Store persistent data externally
Day 2 – Kubernetes Architecture and Workloads
Kubernetes Fundamentals
- The purpose of container orchestration
- Overview of Kubernetes architecture
- Control plane components
- Worker node functions
- The API server
- The Scheduler
- Controller managers
- Cluster state versus desired state
- Interacting with the cluster via kubectl
Kubernetes Resources
- Pods
- ReplicaSets
- Deployments
- Namespaces
- Labels and annotations
- Selectors
- Declarative resource definitions
- YAML manifest files
Deploying Applications
- Creating and managing Deployments
- Scaling workloads up and down
- Updating container images
- Implementing rolling updates
- Performing rollbacks
- Reviewing deployment history
- Restarting workloads
- Managing application replicas
Application Configuration
- ConfigMaps
- Secrets management
- Using environment variables
- Managing configuration files
- Separating code from configuration
- Handling 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 instance
- Execute a rolling update and rollback
- Configure settings 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
- Internal DNS resolution
- ClusterIP services
- NodePort services
- LoadBalancer services
- Ingress concepts
- Application exposure patterns
Network Policies
- Controlling traffic between workloads
- Defining ingress and egress rules
- Namespace-based traffic control
- Testing network connectivity
- Troubleshooting service communication issues
Persistent Storage
- Ephemeral versus persistent storage
- Volumes
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Dynamic provisioning
- Access modes
- Reclaim policies
- Storage strategies 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
- Verifying image provenance
- Identifying common configuration risks
Hands-on Exercises
- Expose an application via Kubernetes services
- Configure ingress resources
- Restrict traffic with a network policy
- Provision persistent storage
- Set up RBAC permissions
- Run a workload with a secure context
Day 4 – Working with OpenShift Environments
Introduction to OpenShift
- OpenShift as a Kubernetes-based platform
- Mapping Kubernetes resources in OpenShift
- OpenShift cluster architecture
- Projects and their relation to namespaces
- Platform users and service accounts
- Navigating the web console
- Using the OpenShift CLI
Managing Projects and Access
- Creating and managing projects
- Assigning user permissions
- Project-level role definitions
- Administrative access levels
- Setting resource quotas
- Configuring limit ranges
- Managing 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 the OpenShift context
- Configuring Routes
- TLS concepts
- Internal and external access methods
- Managing hostnames and certificates
- Diagnosing route and service issues
Storage in OpenShift
- Using Persistent Volume Claims
- Utilizing StorageClasses
- Attaching storage to workloads
- Managing stateful workloads
- Setting storage access permissions
- Troubleshooting volume mounting issues
Scheduling and Node Management
- Using labels and selectors
- Applying node selectors
- Taints and tolerations
- Affinity and anti-affinity rules
- Workload placement strategies
- Cordoning and draining nodes
- Considerations for node maintenance
Hands-on Exercises
- Access an OpenShift environment
- Create and configure a project
- Deploy and expose an application
- Set up user and service-account access
- Attach persistent storage
- Scale and update a live workload
Day 5 – Operations, Monitoring, and Troubleshooting
Platform Monitoring
- Monitoring cluster and application health
- Tracking resource metrics
- Assessing node health
- Checking workload status
- Analyzing capacity and resource utilization
- Identifying performance bottlenecks
Logging and Events
- Reviewing container logs
- Analyzing Pod logs
- Accessing previous container logs
- Inspecting Kubernetes events
- Reading 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
- Investigating Pending pods
- Resolving image pull failures
- Addressing Crash loops
- Fixing misconfigured environment variables
- Resolving failed mounts
- Handling insufficient resources
- Correcting permission errors
- Fixing service and route connectivity issues
- Resolving DNS problems
- Diagnosing application startup failures
Operational Security
- Auditing permissions
- Monitoring service account usage
- Securing credential handling
- Implementing image security practices
- Enforcing network isolation
- Auditing platform access
- Applying the principle of least privilege
Maintenance and Lifecycle Management
- Performing routine platform checks
- Managing node maintenance
- Considering application backup strategies
- Backing up configurations
- Planning updates
- Implementing change management
- Testing updates in safe environments
- Planning rollbacks
- Understanding disaster recovery concepts
Final Practical Workshop
Participants will complete an end-to-end operational scenario that includes:
- 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 to users.
- Attaching persistent storage.
- Configuring access permissions.
- Adding health checks.
- Scaling and updating the application.
- Diagnosing and resolving an injected 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 curriculum can be tailored to the participant's existing infrastructure, cloud provider, and container tooling.
- The depth of Docker, Kubernetes, and OpenShift topics can be adjusted based on the team's experience level.
- Practical exercises can be customized to match the organization's specific applications, deployment processes, and operational needs.
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.
- A general understanding of networking concepts.
- Familiarity with software deployment processes.
Prior experience with Docker, Kubernetes, or OpenShift is advantageous 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.