Course Outline
Day 1 – Containers and Image Management
Introduction to Container Platforms
- Comparing traditional application deployment with container-based deployment
- Differentiating between containers and virtual machines
- Understanding container runtimes and container engines
- The role of Docker, Kubernetes, and OpenShift
- Overview of 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 inside containers
- Utilizing environment variables
- Configuring port mapping
- 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 for efficiency
- Techniques to reduce image size
- Building reproducible images
Container Registries
- Distinguishing between public and private registries
- Tagging and versioning images
- Pulling and pushing images
- Image authentication mechanisms
- Managing image retention and cleanup
- Basic considerations for image security
Container Networking and Storage
- Fundamentals of container networking
- Bridge networking setups
- Exposing ports
- Facilitating container-to-container communication
- Using bind mounts and volumes
- Managing persistent container data
- Considerations for data backup
Hands-on Exercises
- Running and inspecting containers
- Building an application image
- Configuring ports and environment variables
- Publishing an image to a registry
- Storing persistent data outside the container
Day 2 – Kubernetes Architecture and Workloads
Kubernetes Fundamentals
- The purpose of container orchestration
- Kubernetes architecture overview
- Control plane components
- Worker nodes
- The API server
- The scheduler
- Controllers
- Understanding cluster state versus 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
- Performing rolling updates
- Executing rollbacks
- Reviewing deployment history
- Restarting workloads
- Managing application replicas
Application Configuration
- Utilizing ConfigMaps
- Utilizing Secrets
- Setting environment variables
- Using configuration files
- Separating application code from configuration
- Managing environment-specific settings
Resource Management
- Defining CPU and memory requests
- Setting CPU and memory limits
- Implementing resource quotas
- Configuring limit ranges
- Understanding scheduling implications
- Diagnosing resource-related failures
Hands-on Exercises
- Deploying a containerized application
- Creating and updating Kubernetes manifests
- Scaling an application
- Performing 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
- The cluster networking model
- Facilitating pod-to-pod communication
- Service discovery mechanisms
- DNS resolution inside the cluster
- ClusterIP services
- NodePort services
- LoadBalancer services
- Ingress concepts
- Patterns for application exposure
Network Policies
- Controlling traffic between workloads
- Defining ingress and egress rules
- Implementing namespace-based traffic control
- Testing network connectivity
- Troubleshooting service communication issues
Persistent Storage
- Distinguishing between ephemeral and persistent storage
- Volumes
- PersistentVolumes (PVs)
- PersistentVolumeClaims (PVCs)
- StorageClasses
- Dynamic provisioning
- Access modes
- Reclaim policies
- Utilizing storage for stateful applications
Kubernetes Access Control
- Fundamentals 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
- Understanding security contexts
- Running containers as non-root users
- Managing Linux capabilities
- Implementing read-only filesystems
- Handling Secrets securely
- Verifying image provenance
- Avoiding common configuration risks
Hands-on Exercises
- Exposing an application using Kubernetes services
- Configuring ingress rules
- Restricting traffic using a network policy
- 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
- Differences 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
- Gaining administrative access
- Implementing 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
- Performing rollbacks
- Managing application configuration
- Working with secrets
Application Exposure
- Utilizing services in OpenShift
- Configuring Routes
- TLS concepts
- Facilitating internal and external application access
- Managing hostnames and certificates
- Troubleshooting route and service issues
Storage in OpenShift
- Persistent Volume Claims (PVCs)
- StorageClasses
- Attaching storage to workloads
- Managing stateful workloads
- Configuring storage access permissions
- Troubleshooting volume mounting issues
Scheduling and Node Management
- Utilizing labels and selectors
- Configuring node selectors
- Applying taints and tolerations
- Understanding affinity and anti-affinity concepts
- Strategies for 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
- Checking workload status
- Evaluating capacity and resource utilization
- Identifying performance constraints
Logging and Events
- Accessing container logs
- Accessing pod logs
- Retrieving previous container logs
- Monitoring Kubernetes events
- Reviewing application and platform messages
- Filtering and interpreting operational data
Health Checks
- Configuring startup probes
- Configuring readiness probes
- Configuring liveness probes
- Designing effective health endpoints
- Diagnosing probe failures
- Preventing unnecessary application restarts
Troubleshooting Workloads
- Investigating pending pods
- Addressing image pull failures
- Resolving crash loops
- Correcting misconfigured environment variables
- Troubleshooting failed mounts
- Addressing insufficient resources
- Resolving permission errors
- Troubleshooting service and route connectivity problems
- Resolving DNS issues
- Diagnosing application startup failures
Operational Security
- Reviewing permissions
- Evaluating service account usage
- Secure handling of credentials
- Implementing image security practices
- Ensuring network isolation
- Auditing platform access
- Applying the principle of least privilege
Maintenance and Lifecycle Management
- Performing routine platform checks
- Conducting node maintenance
- Considerations for application backup
- Backing up configuration data
- Planning updates
- Managing changes
- Testing updates
- Planning for rollbacks
- Understanding disaster recovery concepts
Final Practical Workshop
Participants will complete an end-to-end operational scenario:
- 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.
- 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.
- 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 should possess:
- Experience using the Linux command line.
- Basic knowledge of system administration or DevOps practices.
- A general understanding of networking concepts.
- Familiarity with software deployment processes.
Previous 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.