Course Outline
Day 1 – Containers and Image Management
Introduction to Container Platforms
- Comparison of traditional application deployment with container-based approaches
- Containers versus virtual machines
- Container runtimes and container engines
- The respective roles of Docker, Kubernetes, and OpenShift
- Common container platform architectures
- Workflows for development, testing, and production
Working with Containers
- Running and managing containers
- Container lifecycle management
- Starting, stopping, and removing containers
- Executing commands within containers
- Environment variables
- Port mapping
- Accessing container logs
- Inspecting resource usage and processes
Building Container Images
- Image structure and layers
- Creating Dockerfiles and Containerfiles
- Selecting appropriate base images
- Incorporating application dependencies
- Configuring entry points and commands
- Leveraging image caching
- Strategies for reducing image size
- Ensuring reproducibility of images
Container Registries
- Distinguishing between public and private registries
- Tagging and versioning images
- Pushing and pulling images
- Image authentication processes
- Managing image retention and cleanup
- Essential security considerations for images
Container Networking and Storage
- Fundamentals of container networking
- Bridge networking configurations
- Port exposure techniques
- Facilitating container-to-container communication
- Utilising bind mounts and volumes
- Maintaining persistent container data
- Considerations for backup procedures
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 objectives of container orchestration
- Understanding Kubernetes architecture
- Components of the control plane
- Worker nodes
- The API server
- The scheduler
- Controllers
- Distinction between cluster state and desired state
- Interacting with the cluster via 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
- Implementing rolling updates
- Performing rollbacks
- Maintaining 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
- CPU and memory requests
- CPU and memory limits
- Resource quotas
- Limit ranges
- 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
- The cluster networking model
- Pod-to-pod communication mechanisms
- Service discovery processes
- DNS integration within the cluster
- ClusterIP services
- NodePort services
- LoadBalancer services
- Ingress concepts
- Patterns for application exposure
Network Policies
- Controlling traffic flow between workloads
- Defining ingress and egress rules
- Namespace-based traffic control
- Testing network connectivity
- Troubleshooting service communication issues
Persistent Storage
- Distinguishing between ephemeral and persistent storage
- Volumes
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Dynamic provisioning
- 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
- Principle of least-privilege access
- Inspecting effective permissions
Workload Security
- Security contexts
- Executing containers as non-root users
- Linux capabilities management
- Implementing read-only filesystems
- Managing secrets securely
- Verifying image provenance
- Identifying common configuration risks
Hands-on Exercises
- Exposing an application via Kubernetes services
- Configuring ingress rules
- 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
- Setting 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
- Services in OpenShift
- Routes
- TLS concepts
- Internal and external application access methods
- Managing hostnames and certificates
- Troubleshooting route and service issues
Storage in OpenShift
- Persistent Volume Claims
- StorageClasses
- Attaching storage to workloads
- Managing stateful workloads
- Handling storage access permissions
- Troubleshooting volume mounting issues
Scheduling and Node Management
- Using labels and selectors
- Node selectors
- Taints and tolerations
- Affinity and anti-affinity concepts
- Workload placement strategies
- 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
- Viewing pod logs
- Retrieving previous container logs
- Reviewing Kubernetes events
- Analyzing 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
- Addressing image pull failures
- Resolving crash loops
- Correcting misconfigured environment variables
- Fixing failed mounts
- Addressing insufficient resources
- Resolving permission errors
- Troubleshooting service and route connectivity problems
- Diagnosing DNS issues
- Investigating 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
- Conducting routine platform checks
- Performing node maintenance
- Considering application backup strategies
- Backing up configuration files
- Planning updates
- Managing changes
- Testing updates rigorously
- Developing rollback plans
- 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 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 within 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.
- Foundational knowledge of system administration or DevOps principles.
- A general understanding of networking concepts.
- Familiarity with software deployment processes.
Previous experience with Docker, Kubernetes, or OpenShift is beneficial but not mandatory.
Custom Corporate Training
Training solutions designed exclusively for businesses.
- Customized Content: We adapt the syllabus and practical exercises to the real goals and needs of your project.
- Flexible Schedule: Dates and times adapted to your team's agenda.
- Format: Online (live), In-company (at your offices), or Hybrid.
Price per private group, online live training, starting from 6500 € + VAT*
Contact us for an exact quote and to hear our latest promotions
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.