<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenShift Operations Training</title><link>/</link><description>Recent content on OpenShift Operations Training</description><generator>Hugo</generator><language>en</language><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>Footer</title><link>/pdf/footer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/pdf/footer/</guid><description>&lt;!-- markdownlint-disable MD033 -->
&lt;div class="pdf-footer">
&lt;p>&lt;span class="page">&lt;/span> / &lt;span class="topage">&lt;/span>&lt;/p>
&lt;/div>
&lt;!-- markdownlint-enable MD033 --></description></item><item><title>Header</title><link>/pdf/header/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/pdf/header/</guid><description>&lt;!-- markdownlint-disable MD033 -->
&lt;div class="pdf-header">
&lt;p>
 - acend gmbh&lt;/p>
&lt;/div>
&lt;!-- markdownlint-enable MD033 --></description></item><item><title>1.1 Installation</title><link>/docs/01/01_installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/01_installation/</guid><description>&lt;p>In this lab, you are going to install an OpenShift 4 cluster on AWS.&lt;/p>
&lt;h2 id="task-111-preparing-the-environment">Task 1.1.1: Preparing the environment&lt;/h2>
&lt;p>Using the information provided by your trainer, ssh into your bastion host and change into the &lt;code>ocp4-ops&lt;/code> directory.&lt;/p>
&lt;p>It is best practice to create a timestamped directory for each cluster installation, for example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> ~/ocp4-ops
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mkdir &lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>date +&lt;span style="color:#4e9a06">&amp;#34;%Y-%m-%d&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="task-112-customizing-the-installation">Task 1.1.2: Customizing the installation&lt;/h2>
&lt;p>First, we need an SSH keypair. The public key will be used to grant us access to the OpenShift machines we are going to create. Either use an existing keypair or create a new one by executing:&lt;/p></description></item><item><title>1.2 Cluster inspection</title><link>/docs/01/02_inspection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/02_inspection/</guid><description>&lt;p>Before diving headfirst into configuring the freshly set-up cluster, let&amp;rsquo;s first take a look at certain features.
As we installed the OpenShift cluster on AWS, some components have already been configured for us to use right away, amongst them:&lt;/p>
&lt;ul>
&lt;li>An AWS cloud provider, making it possible for controllers to, e.g., create and update AWS load balancers and do node lifecycle management&lt;/li>
&lt;li>A storage class to provision AWS Elastic Block Store (EBS) volumes&lt;/li>
&lt;/ul>
&lt;h2 id="cloud-provider">Cloud provider&lt;/h2>
&lt;p>In order to understand what a cloud provider is or does, it&amp;rsquo;s easiest to look at the description of the &lt;a href="https://github.com/kubernetes/cloud-provider-aws" target="_blank" rel="noopener">AWS cloud provider&lt;/a>
:&lt;/p></description></item><item><title>1.3 Configuration</title><link>/docs/01/03_configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/03_configuration/</guid><description>&lt;p>After the initial installation, we can start configuring the cluster.
Because of the extended use of operators, nearly everything in OpenShift 4 is configured via custom resources.
In some cases configmaps or templates are used, but this is clearly the minority.&lt;/p>
&lt;p>Most of the configuration is done post-installation and can be used to better adapt the cluster to its environment or change its default behaviour.
We are going to configure our own kubelet arguments and change the default project template in order to automatically create some NetworkPolicy resources.&lt;/p></description></item><item><title>1.4 Additional components</title><link>/docs/01/04_additional-components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/04_additional-components/</guid><description>&lt;p>In this lab, you will install additional components that are commonly used in production.&lt;/p>
&lt;h2 id="task-141-install-cert-manager">Task 1.4.1: Install cert-manager&lt;/h2>
&lt;p>cert-manager massively simplifies certificate management for Kubernetes. It provides easy to use tools to issue, manage and automatically renew certificates and supports the ACME protocol. This allows us to easily and automatically get certificates signed by Let&amp;rsquo;s Encrypt for our cluster.&lt;/p>
&lt;p>Install cert-manager as an Operator using the OperatorHub:&lt;/p>
&lt;ul>
&lt;li>In the &lt;strong>Administrator&lt;/strong> view, navigate to &lt;strong>Operators&lt;/strong> -&amp;gt; &lt;strong>OperatorHub&lt;/strong>&lt;/li>
&lt;li>Enter &lt;strong>cert-manager&lt;/strong> into the filter box&lt;/li>
&lt;li>Select the &lt;strong>cert-manager Operator for Red Hat OpenShift&lt;/strong> and click &lt;strong>Install&lt;/strong>&lt;/li>
&lt;li>Leave everything as it is, except that you set the &lt;strong>Update approval&lt;/strong> to &lt;strong>Manual&lt;/strong>&lt;/li>
&lt;li>Click &lt;strong>Install&lt;/strong>&lt;/li>
&lt;li>As soon as it appears, approve the install plan presented to you by clicking &lt;strong>Approve&lt;/strong>&lt;/li>
&lt;li>Check for the existence of the &lt;code>cert-manager-operator&lt;/code> pod&lt;/li>
&lt;/ul>
&lt;details data-mode="normalexpertmode" class="normalexpertmode">
 &lt;summary>Hints&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc --namespace cert-manager-operator get pods
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;ul>
&lt;li>Also, the Operator should already have created at least the webhook and cainjector pods in the &lt;code>cert-manager&lt;/code> namespace&lt;/li>
&lt;/ul>
&lt;details data-mode="normalexpertmode" class="normalexpertmode">
 &lt;summary>Hints&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc --namespace cert-manager get pods
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;p>The Operator will also automatically create a &lt;code>CertManager&lt;/code> custom resource named &lt;code>cluster&lt;/code>.
In order to use DNS01 challenges on OpenShift clusters installed on AWS, we need to &lt;a href="https://docs.openshift.com/container-platform/latest/security/cert_manager_operator/cert-manager-operator-issuer-acme.html#cert-manager-acme-dns01-explicit-aws_cert-manager-operator-issuer-acme" target="_blank" rel="noopener">add some configuration to cert-manager&amp;rsquo;s configuration&lt;/a>
:&lt;/p></description></item><item><title>1.5 Uptime app</title><link>/docs/01/05_deploy-uptime-app/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/05_deploy-uptime-app/</guid><description>&lt;p>In this lab you&amp;rsquo;re going to deploy an application on your freshly-installed OpenShift cluster.&lt;/p>
&lt;p>The application&amp;rsquo;s availability will be monitored and recorded by an external monitoring system.
Your main goal for the rest of this training is to keep this application up and running, no matter what you do.&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

At any time you can view the availability of your cluster console and the uptime app on &lt;a href="https://grafana-ops.training.acend.ch/d/7KmbRHXGz/ocp4monitoring?orgId=1&amp;amp;refresh=5s&amp;amp;var-userdropdown=&amp;#43;username&amp;#43;" target="_blank" rel="noopener">this&lt;/a>
 dashboard. Credentials to login will be provided by your trainers.

&lt;/div>

&lt;h2 id="uptime-app">Uptime app&lt;/h2>
&lt;p>The application you&amp;rsquo;re going to install is a simple Python app. It&amp;rsquo;s going to be scaled to 2 replicas in order to achieve high availability.&lt;/p></description></item><item><title>1.6 Backup</title><link>/docs/01/06_backup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/01/06_backup/</guid><description>&lt;p>In this lab, you will create scheduled backups for the most important cluster components.&lt;/p>
&lt;h2 id="task-161-create-user-workload-backups">Task 1.6.1: Create user workload backups&lt;/h2>
&lt;p>First, check the &lt;code>backupStorageLocation&lt;/code>&amp;rsquo;s health and name:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc -n openshift-adp get backupstoragelocations.velero.io 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The output should show you that you&amp;rsquo;ve got &lt;code>backupStorageLocation&lt;/code> resource named &lt;code>default&lt;/code> with &lt;code>PHASE&lt;/code> &lt;code>Available&lt;/code>. If the &lt;code>PHASE&lt;/code> shows something else, there&amp;rsquo;s most probably a permissions or typo problem in your &lt;code>dataProtectionApplication&lt;/code> resource.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">NAME PHASE LAST VALIDATED AGE DEFAULT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#000">default Available 4s 3m true&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now, create a daily backup of the resources in namespace &lt;code>uptime-app-prod&lt;/code> with a lifetime of 5 days by creating the following &lt;code>Schedule&lt;/code> manifest:&lt;/p></description></item><item><title>2.1 Infrastructure nodes</title><link>/docs/02/01_infra-nodes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/01_infra-nodes/</guid><description>&lt;p>Not exactly a day 2-operations task, but one that immensily simplifies operations.
The concept of infrastructure nodes was more prominently advertised by Red Hat when OpenShift 3 was the latest and greatest.
This evidently changed somehow for OpenShift 4, but with a bit of legwork we&amp;rsquo;re able to create those, too.&lt;/p>
&lt;p>Infra nodes are dedicated worker nodes intended for infrastructure components such as the image registry, routers or the whole monitoring stack.
Providing dedicated nodes helps ensuring that there&amp;rsquo;s always enough resources for infrastructure components.&lt;/p></description></item><item><title>2.2 Infrastructure components</title><link>/docs/02/02_infra-components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/02_infra-components/</guid><description>&lt;p>Now that we have fresh infra nodes up and running, let&amp;rsquo;s see to it that they have something to do.
The usual suspects to run on infrastructure nodes are:&lt;/p>
&lt;ul>
&lt;li>routers&lt;/li>
&lt;li>registry&lt;/li>
&lt;li>most of the monitoring components&lt;/li>
&lt;li>most of the logging components&lt;/li>
&lt;/ul>
&lt;p>Red Hat provides a detailed &lt;a href="https://docs.openshift.com/container-platform/latest/machine_management/creating-infrastructure-machinesets.html#infrastructure-components_creating-infrastructure-machinesets" target="_blank" rel="noopener">list of what components don&amp;rsquo;t incur OpenShift Container Platform worker subscriptions&lt;/a>
.
So if you have any other components listed there that are not going to be looked at in this training, it could make perfect sense to move these components as well.&lt;/p></description></item><item><title>2.3 Restore</title><link>/docs/02/03_restore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/03_restore/</guid><description>&lt;h2 id="task-231-restoring-user-workload-backups">Task 2.3.1: Restoring user workload backups&lt;/h2>
&lt;p>In the backup lab you created a scheduled backup of all resources in namespace &lt;code>uptime-app-prod&lt;/code>. Now we are going to test the restore procedure.&lt;/p>


&lt;div class="alert alert-secondary" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>

To keep your restore time as short as possible, make sure you read through the whole procedure, understand it and maybe even prepare all resources for the restore before deleting the project!

&lt;/div>

&lt;p>Make sure you read above warning, then go ahead and delete the project &lt;code>uptime-app-prod&lt;/code>.&lt;/p></description></item><item><title>2.4 Update</title><link>/docs/02/04_update/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/04_update/</guid><description>&lt;p>In this lab we will update our OpenShift 4 cluster to the latest stable errata release.&lt;/p>
&lt;p>Updating an OpenShift 4 cluster is a fully automated process that is managed by several cluster operators. If the cluster has Internet access, updates are provided over-the-air, otherwise you need to synchronize the new images to an internal registry prior to starting the update or use a pull-through registry.&lt;/p>
&lt;p>Check &lt;a href="https://docs.openshift.com/container-platform/latest/updating/updating-restricted-network-cluster.html" target="_blank" rel="noopener">&amp;ldquo;Updating a restricted network cluster&amp;rdquo;&lt;/a>
 for details on updating a cluster in a disconnected environment.&lt;/p></description></item><item><title>2.5 Worker nodes</title><link>/docs/02/05_worker-nodes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/05_worker-nodes/</guid><description>&lt;p>We initially installed this cluster using only worker nodes.
We then successfully created infra nodes and moved all infrastructure components onto them.
Now, essentially the only real workload that&amp;rsquo;s running on the 3 worker nodes is our uptime application.&lt;/p>
&lt;p>Without going into detail yet on how and where you can find dashboards and metrics for capacity monitoring, it&amp;rsquo;s safe to say that one small Python app doesn&amp;rsquo;t need 3 worker nodes with 8 CPU cores and 32 GB of memory.
So we are going to decrease the number of worker nodes to 2 and also reduce their size.&lt;/p></description></item><item><title>2.6 Control plane nodes</title><link>/docs/02/06_masters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/02/06_masters/</guid><description>&lt;div class="alert alert-secondary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

While many occurrences of &amp;ldquo;master&amp;rdquo; have been replaced throughout OpenShift and Kubernetes, this is unfortunately not yet the case for &lt;code>Machine&lt;/code> resources. This is why you are going to encounter a mixture of &amp;ldquo;control plane&amp;rdquo; and &amp;ldquo;master&amp;rdquo; terms in this lab.

&lt;/div>

&lt;p>During this lab, we will learn how to replace a failed control plane node. As long as we do not lose the majority of our control plane nodes, we can simply replace those that failed. If we lose the majority (e.g., 2 out of 3), we need to restore the state of &lt;code>etcd&lt;/code> from a previously created snapshot, which will not be covered in this lab.&lt;/p></description></item><item><title>3.1 Rules and dashboards</title><link>/docs/03/01_rules-dashboards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/03/01_rules-dashboards/</guid><description>&lt;h2 id="task-311-provided-dashboards">Task 3.1.1: Provided dashboards&lt;/h2>
&lt;p>OpenShift provides a set of default dashboards for cluster adminstrators and OpenShift users.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cluster dashboards&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>To get a sense of where these dashboards can be found, let&amp;rsquo;s take a look at the performance of the etcd cluster.&lt;/p>
&lt;p>Navigate to &lt;strong>Observe&lt;/strong> -&amp;gt; &lt;strong>Dashboards&lt;/strong> on the web console and select &lt;strong>etcd&lt;/strong> in the dashboard drop-down list.&lt;/p>
&lt;p>&lt;img src="../cluster-dashboard.png" alt="cluster dashboard">&lt;/p>
&lt;ul>
&lt;li>&lt;strong>User dashboards&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Switch to the &lt;strong>Developer&lt;/strong> console and select the &lt;strong>uptime-app-prod&lt;/strong> project. Then navigate to the &lt;strong>Observing&lt;/strong> tab. Select the &lt;strong>uptime-app&lt;/strong> in the &lt;strong>Workload&lt;/strong> drop-down list. This will display a wide selection of different metrics relevant to your app like CPU usage, memory usage and networking performance.&lt;/p></description></item><item><title>3.2 Monitoring stack configuration</title><link>/docs/03/02_monitoring-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/03/02_monitoring-configuration/</guid><description>&lt;h2 id="task-321-enable-alerting">Task 3.2.1: Enable alerting&lt;/h2>
&lt;p>Let&amp;rsquo;s take a look at an example of how you can send alerts to a receiver of your choice.
Configuring a new receiver can either be done using the web console or by directly configuring the appropriate secret.
Before going into detail on where this configuration lies, let&amp;rsquo;s have a look at an example:&lt;/p>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">---&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">v1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Secret&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">alertmanager-main&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">namespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-monitoring&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">stringData&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">alertmanager.yaml&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">|&lt;/span>&lt;span style="color:#8f5902;font-style:italic">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> ---
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> global:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> resolve_timeout: 5m
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_from: monitoring@ops-training.openshift.ch
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_smarthost: smtp.ops-training.openshift.ch:587
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_hello: ops-training.openshift.ch
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_auth_username: test
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_auth_password: test
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> smtp_require_tls: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> inhibit_rules:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - equal:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - namespace
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - alertname
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> source_match:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> severity: critical
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> target_match_re:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> severity: warning|info
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - equal:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - namespace
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - alertname
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> source_match:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> severity: warning
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> target_match_re:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> severity: info
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> receivers:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - name: Default
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - name: Watchdog
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - name: Critical
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - name: mail
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> email_configs:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - to: ops@ops-training.openshift.ch
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> route:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> group_by:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - namespace
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> group_interval: 5m
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> group_wait: 30s
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> receiver: Default
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> repeat_interval: 12h
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> routes:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - match:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> alertname: Watchdog
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> receiver: Watchdog
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> - match:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> severity: critical
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> receiver: mail&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">type&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Opaque&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;p>The main components that can be configured when applying a custom Alertmanager configuration comprise:&lt;/p></description></item><item><title>3.3 User-defined monitoring rules</title><link>/docs/03/03_user-defined-rules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/03/03_user-defined-rules/</guid><description>&lt;h2 id="task-331-enable-the-user-workload-monitoring-stack">Task 3.3.1: Enable the user-workload monitoring stack&lt;/h2>
&lt;p>As mentioned in a lab before, it is not supported to alter the OpenShift-provided monitoring stack. If you want to add additional monitoring targets or add custom Prometheus rules, you need to enable the user-workload monitoring stack.&lt;/p>
&lt;p>And this is exactly what we are going to do. First, edit the &lt;code>cluster-monitoring-config&lt;/code> configmap in the &lt;code>openshift-monitoring&lt;/code> namespace.&lt;/p>
&lt;details data-mode="normalexpertmode" class="normalexpertmode">
 &lt;summary>Hints&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc -n openshift-monitoring edit cm cluster-monitoring-config
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;p>Add the line &lt;code>enableUserWorkload: true&lt;/code> under &lt;code>data/config.yaml&lt;/code> (leave the rest as it is).&lt;/p></description></item><item><title>3.4 Logging</title><link>/docs/03/04_logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/03/04_logging/</guid><description>&lt;p>In this lab we will install and configure the logging stack.&lt;/p>
&lt;h2 id="task-341-install-cluster-logging">Task 3.4.1 Install cluster logging&lt;/h2>
&lt;p>You can install &lt;a href="https://docs.openshift.com/container-platform/latest/logging/cluster-logging.html" target="_blank" rel="noopener">OpenShift Logging&lt;/a>
 to aggregate all the logs from your OpenShift cluster, such as node logs, application logs and infrastructure logs.&lt;/p>
&lt;p>To deploy the cluster logging stack from the CLI, we need to create the following objects. Have a look at them first:&lt;/p>
&lt;ul>
&lt;li>OpenShift Elasticsearch Operator Namespace&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">v1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Namespace&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-operators-redhat &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">annotations&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">openshift.io/node-selector&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">labels&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">openshift.io/cluster-monitoring&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;true&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> 
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;ul>
&lt;li>Red Hat OpenShift Logging Namespace&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">v1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Namespace&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-logging&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">annotations&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">openshift.io/node-selector&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">labels&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">openshift.io/cluster-monitoring&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;true&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;ul>
&lt;li>OpenShift Elasticsearch Operator &lt;code>OperatorGroup&lt;/code>&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">operators.coreos.com/v1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">OperatorGroup&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-operators-redhat&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">namespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-operators-redhat &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">spec&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>{}&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;ul>
&lt;li>Red Hat OpenShift Logging &lt;code>OperatorGroup&lt;/code>&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">operators.coreos.com/v1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">OperatorGroup&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">cluster-logging&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">namespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-logging &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">spec&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">targetNamespaces&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#000">openshift-logging &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;ul>
&lt;li>OpenShift Elasticsearch Operator &lt;code>Subscription&lt;/code>&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">operators.coreos.com/v1alpha1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Subscription&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;elasticsearch-operator&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">namespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;openshift-operators-redhat&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">spec&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">channel&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;stable&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">installPlanApproval&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Automatic&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">source&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;redhat-operators&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sourceNamespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;openshift-marketplace&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;elasticsearch-operator&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;ul>
&lt;li>Red Hat OpenShift Logging &lt;code>Subscription&lt;/code>&lt;/li>
&lt;/ul>


 




	






 






 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">operators.coreos.com/v1alpha1&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Subscription&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">cluster-logging&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">namespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-logging &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">spec&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">channel&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#34;stable&amp;#34;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">cluster-logging&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">source&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">redhat-operators &lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">sourceNamespace&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">openshift-marketplace&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>


&lt;p>Now either copy and paste above resource definitions and then apply them to your cluster or directly use our provided files:&lt;/p></description></item><item><title>4.1 Troubleshooting basics</title><link>/docs/04/01_basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/04/01_basics/</guid><description>&lt;p>In chapter 3 you got to know the monitoring components, its rules and more.
Now, imagine you get an alert.
&amp;ldquo;Where to begin?&amp;rdquo;, you ask.
How do you find out what&amp;rsquo;s amiss and led to the alert?&lt;/p>
&lt;p>That&amp;rsquo;s what we are going to look at in this first lab.&lt;/p>
&lt;h2 id="task-411-cluster-operators">Task 4.1.1: Cluster operators&lt;/h2>
&lt;p>As you already know, OpenShift 4 usually consists of about 30 different operators.
Each operator is responsible that the actual state of the cluster matches the desired, configured state.
If this is not the case, the operator tells us.&lt;/p></description></item><item><title>4.2 Evictions</title><link>/docs/04/02_evictions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/04/02_evictions/</guid><description>&lt;p>This second troubleshooting lab will go into detail on what evictions are, how to analyze and how to avoid them.&lt;/p>
&lt;h2 id="task-421-setup">Task 4.2.1: Setup&lt;/h2>
&lt;p>First, let&amp;rsquo;s get set up.
Create a new namespace using the following command:&lt;/p>


&lt;div class="alert alert-secondary" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>

It is essential that you use this command or else this lab won&amp;rsquo;t work!

&lt;/div>

&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc create namespace &amp;lt;namespace&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now, deploy a test pod into the freshly created namespace using the provided definition:&lt;/p></description></item><item><title>5.1 Setup</title><link>/docs/05/01_setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/05/01_setup/</guid><description>&lt;p>In order to explore GitOps processes, we are going to need appropriate tools: Gitea and ArgoCD.&lt;/p>
&lt;h2 id="task-511-gitea">Task 5.1.1: Gitea&lt;/h2>
&lt;p>Gitea is a lightweight Git server written in Go.
It allows us to easily host a Git repository which we can use as our single source of truth.&lt;/p>
&lt;p>Unfortunately, the default Operator catalog sources don&amp;rsquo;t contain a Gitea operator, but let&amp;rsquo;s change that.&lt;/p>
&lt;p>Create the Gitea Operator by applying the YAML files from the Github repository:&lt;/p></description></item><item><title>5.2 Argo CD</title><link>/docs/05/02_argocd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/05/02_argocd/</guid><description>&lt;h2 id="task-521-argo-cd">Task 5.2.1: Argo CD&lt;/h2>
&lt;p>Go out into the new world of GitOps and explore Argo CD.&lt;/p>
&lt;p>Find out how to access Argo CD&amp;rsquo;s web interface (which is very handy).&lt;/p>
&lt;details data-mode="normalexpertmode" class="normalexpertmode">
 &lt;summary>Hints&lt;/summary>
&lt;p>As usual, there are multiple ways to find out what Argo CD&amp;rsquo;s dashboard URL is:&lt;/p>
&lt;ul>
&lt;li>OpenShift exposes the link via its web console:&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="../argocd_ocpwebconsole.png" alt="Argo CD link in OpenShift&amp;rsquo;s web console">&lt;/p>
&lt;ul>
&lt;li>Or get it via route from the &lt;code>openshift-gitops&lt;/code> namespace:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>oc -n openshift-gitops get routes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;h2 id="task-522-gitea-repository">Task 5.2.2: Gitea repository&lt;/h2>
&lt;p>Create a new Git repository on your Gitea instance.&lt;/p></description></item><item><title>6.1 Destroy the cluster</title><link>/docs/06/01_destroycluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/06/01_destroycluster/</guid><description>&lt;p>Usually our work centers around keeping everything up and running, building and engineering stuff and so on.
This is not always easy, so there&amp;rsquo;s some extra joy when it comes to finally be allowed to do the opposite and destroy something :)&lt;/p>
&lt;h2 id="task-611-destroy-your-cluster">Task 6.1.1: Destroy your cluster&lt;/h2>
&lt;p>Change into the installation directory you created on day 1, it should be under &lt;code>/home/ec2-user/ocp4-ops&lt;/code> and have a timestamp as its name.&lt;/p>
&lt;p>Destroy the cluster:&lt;/p></description></item></channel></rss>