Skip to main content
Yet another useless blog_
  • What's New
    • Helm Charts Repository Updates
    • What's new in OpenShift, 4.20 Edition
  • Compliance
    • oc compliance command line plugin
    • Compliance Operator
  • GitOps Episodes
    • Introducing the GitOps Approach
    • GitOps - Choosing the right Git repository structure
    • Setup OpenShift GitOps/Argo CD
    • Configure App-of-Apps
    • Setup & Configure Compliance Operator using GitOps
    • Setup & Configure Advanced Cluster Security using GitOps
    • Configure Buckets in MinIO using GitOps
    • Installing OpenShift Logging using GitOps
    • Multiple Sources for Applications in Argo CD
    • Update Cluster Version using GitOps approach
    • Managing Certificates using GitOps approach
    • Using Kustomize to post render a Helm Chart
    • Using ApplicationSet with Matrix Generator and define individual Namespaces
    • Reusable Argo CD Application Helm Template
  • OpenShift
    • A second look into the Kubernetes Gateway API on OpenShift
    • A first look into the Kubernetes Gateway API on OpenShift
    • Cert-Manager Policy Approver in OpenShift
    • Single log out from Keycloak and OpenShift
    • Step by Step - Using Keycloak Authentication in OpenShift
    • Introducing AdminNetworkPolicies
    • OpenShift Data Foundation - Noobaa Bucket Data Retention (Lifecycle)
    • Running Falco on OpenShift 4.12
    • Quay Deployment and Configuration using GitOps
    • Setting up Falco on OpenShift 4.12
    • How to force a MachineConfig rollout
    • Operator installation with Argo CD
    • SSL Certificate Management for OpenShift on AWS
    • Using ServerSideApply with ArgoCD
    • Secrets Management - Vault on OpenShift
    • Overview of Red Hat's Multi Cloud Gateway (Noobaa)
    • Secure your secrets with Sealed Secrets
    • Understanding RWO block device handling in OpenShift
    • Writing Operator using Ansible
    • Thanos Querier vs Thanos Querier
    • GitOps - Argo CD
    • OpenShift Pipelines - Tekton Introduction
    • Helpful oc / kubectl commands
  • OpenShift Day-2
    • etcd
      • Automated ETCD Backup
    • Labels & Environments
      • Working with Environments
    • Observability
      • The Hitchhiker's Guide to Observability Introduction - Part 1
      • The Hitchhiker's Guide to Observability - Grafana Tempo - Part 2
      • The Hitchhiker's Guide to Observability - Central Collector - Part 3
      • The Hitchhiker's Guide to Observability - Example Applications - Part 4
      • The Hitchhiker's Guide to Observability - Understanding Traces - Part 5
      • The Hitchhiker's Guide to Observability - Adding A New Tenant - Part 6
      • The Hitchhiker's Guide to Observability - Here Comes Grafana - Part 7
      • The Hitchhiker's Guide to Observability - Limit Read Access to Traces - Part 8
    • Pod Placement
      • Introduction
      • NodeSelector
      • Pod Affinity/Anti-Affinity
      • Node Affinity
      • Taints and Tolerations
      • Topology Spread Constraints
      • Using Descheduler
  • Secure Supply Chain
    • Introduction to a Secure Supply Chain
    • Step 1 - Listen to Events
    • Step 2 - Pipelines
    • Step 3 - SonarQube
    • Step 4 - Verify Git Commit
    • Step 5 - Build and Sign Image
    • Step 6 - Scanning with ACS
    • Step 7 - Generating a SBOM
    • Step 8 - Updating Kubernetes Manifests
    • Step 9 - Linting Kubernetes Manifests
    • Step 10 - The Example Application
    • Step 11 - ACS Deployment Check
    • Step 12 - Verify TLog Signature
    • Step 13 - Bring it to Production
  • General
    • Basic usage of git
    • Red Hat Satellite Cheat Sheet
  • Ansible
    • Ansible Style Guide
    • Automation Controller and LDAP Authentication
    • Ansible Tower and downloading collections
    • Ansible - Azure Resource Manager Example
    • DO410 Ansible and Ansible Tower training notes
  • Service Mesh
    • Enable Automatic Route Creation
    • Authorization (RBAC)
    • Deploy Example Bookinfo Application
    • Service Mesh 1.1 released
    • Authentication JWT
    • Mutual TLS Authentication
    • Fault Injection
    • Limit Egress/External Traffic
    • Advanced Routing Example
    • Routing Example
    • Ingress with custom domain
    • Ingress Traffic
    • Deploy Microservices
    • Installation
  • Advanced Cluster Security
    • Advanced Cluster Security - Authentication
  • Azure
    • Stumbling into Azure Part II: Setting up a private ARO cluster
    • Stumbling into Azure Part I: Building a site-to-site VPN tunnel for testing
  • Java
    • Adventures in Java Land: JPA disconnected entities
  • Quay
    • Red Hat Quay Registry - Integrate Keycloak
    • Stumbling into Quay: Upgrading from 3.3 to 3.4 with the quay-operator
    • Red Hat Quay Registry - Overview and Installation
  • Helm Repository
  • Legal Disclosure
  • RSS Feeds

Saved Articles 0

No saved articles yet.

Click the "Save" button on any article to bookmark it for later.

    • Home
    • About Us
      Thomas Jungbauer Toni Schmidbauer Legal Disclosure
    • Categories
    • Tags
    • History
    • Helm Charts

     navi

    navigation YAUB Yet Another Useless Blog > Authors > Articles by Thomas Jungbauer

    Articles by Thomas Jungbauer

    Articles by Thomas Jungbauer

    OpenShift Pod Placement

    Working with Environments

    January 12, 2022 - Thomas Jungbauer Thomas Jungbauer - 11 min

    Imagine you have one OpenShift cluster and you would like to create 2 or more environments inside this cluster, but also separate them and force the environments to specific nodes, or use specific inbound routers. All this can be achieved using labels, IngressControllers and so on. The following article will guide you to set up dedicated compute nodes for infrastructure, development and test environments as well as the creation of IngressController which are bound to the appropriate nodes.

    Read More ...
    Security Advanced Cluster Security

    Advanced Cluster Security - Authentication

    December 11, 2021 - Thomas Jungbauer Thomas Jungbauer - 5 min

    Red Hat Advanced Cluster Security (RHACS) Central is installed with one administrator user by default. Typically, customers request an integration with existing Identity Provider(s) (IDP). RHACS offers different options for such integration. In this article 2 IDPs will be configured as an example. First OpenShift Auth and second Red Hat Single Sign On (RHSSO) based on Keycloak

    Read More ...
    Ansible

    Ansible Style Guide

    November 30, 2021 - Thomas Jungbauer Thomas Jungbauer - 19 min

    You should always follow the Best Practices and Ansible Lint rules defined by the Ansible documentation when developing playbooks.

    Although very basic, the Best Practices document gives a few guidelines to be able to carry out well-structured playbooks and roles, it contains recommendations that evolve with the project, so it is recommended to review it regularly. It is advisable to review the organization of content in Ansible.

    The Ansible Lint documentation shows us through this tool the syntax rules that will be checked in the testing of roles and playbooks, the rules that will be checked are indicated in this document in their respective section.

    Read More ...
    Ansible

    Automation Controller and LDAP Authentication

    October 25, 2021 - Thomas Jungbauer Thomas Jungbauer - 4 min

    The following article shall quickly, without huge background information, deploy an Identity Management Server (based on FreeIPA) and connect this IDM to an existing Automation Controller so authentication can be tested and verified based on LDAP.

    Read More ...
    OpenShift Security

    Secure your secrets with Sealed Secrets

    September 25, 2021 - Thomas Jungbauer Thomas Jungbauer - 4 min

    Working with a GitOps approach is a good way to keep all configurations and settings versioned and in sync on Git. Sensitive data, such as passwords to a database connection, will quickly come around. Obviously, it is not a idea to store clear text strings in a, maybe even public, Git repository. Therefore, all sensitive information should be stored in a secret object. The problem with secrets in Kubernetes is that they are actually not encrypted. Instead, strings are base64 encoded which can be decoded as well. Thats not good …​ it should not be possible to decrypt secured data. Sealed Secret will help here…​

    Read More ...
    OpenShift Pod Placement

    Introduction

    August 26, 2021 - Thomas Jungbauer Thomas Jungbauer - 2 min

    Pod scheduling is an internal process that determines placement of new pods onto nodes within the cluster. It is probably one of the most important tasks for a Day-2 scenario and should be considered at a very early stage for a new cluster. OpenShift/Kubernetes is already shipped with a default scheduler which schedules pods as they get created accross the cluster, without any manual steps.

    However, there are scenarios where a more advanced approach is required, like for example using a specifc group of nodes for dedicated workload or make sure that certain applications do not run on the same nodes. Kubernetes provides different options:

    • Controlling placement with node selectors

    • Controlling placement with pod/node affinity/anti-affinity rules

    • Controlling placement with taints and tolerations

    • Controlling placement with topology spread constraints

    This series will try to go into the detail of the different options and explains in simple examples how to work with pod placement rules. It is not a replacement for any official documentation, so always check out Kubernetes and or OpenShift documentations.

    Read More ...
    OpenShift Pod Placement

    Node Affinity

    August 26, 2021 - Thomas Jungbauer Thomas Jungbauer - 2 min

    Node Affinity allows to place a pod to a specific group of nodes. For example, it is possible to run a pod only on nodes with a specific CPU or disktype. The disktype was used as an example for the nodeSelector and yes …​ Node Affinity is conceptually similar to nodeSelector but allows a more granular configuration.

    Read More ...
    OpenShift Pod Placement

    NodeSelector

    August 26, 2021 - Thomas Jungbauer Thomas Jungbauer - 5 min

    One of the easiest ways to tell your Kubernetes cluster where to put certain pods is to use a nodeSelector specification. A nodeSelector defines a key-value pair and are defined inside the specification of the pods and as a label on one or multiple nodes (or machine set or machine config). Only if selector matches the node label, the pod is allowed to be scheduled on that node.

    Read More ...
    OpenShift Pod Placement

    Pod Affinity/Anti-Affinity

    August 26, 2021 - Thomas Jungbauer Thomas Jungbauer - 8 min

    While noteSelector provides a very easy way to control where a pod shall be scheduled, the affinity/anti-affinity feature, expands this configuration with more expressive rules like logical AND operators, constraints against labels on other pods or soft rules instead of hard requirements.

    The feature comes with two types:

    • pod affinity/anti-affinity - allows constrains against other pod labels rather than node labels.

    • node affinity - allows pods to specify a group of nodes they can be placed on

    Read More ...
    OpenShift Pod Placement

    Taints and Tolerations

    August 26, 2021 - Thomas Jungbauer Thomas Jungbauer - 6 min

    While Node Affinity is a property of pods that attracts them to a set of nodes, taints are the exact opposite. Nodes can be configured with one or more taints, which mark the node in a way to only accept pods that do tolerate the taints. The tolerations themselves are applied to pods, telling the scheduler to accept a taints and start the workload on a tainted node.

    A common use case would be to mark certain nodes as infrastructure nodes, where only specific pods are allowed to be executed or to taint nodes with a special hardware (i.e. GPU).

    Read More ...
    • « «
    • «
    • 4
    • 5
    • 6
    • 7
    • 8
    • »
    • » »

    Copyright © 2020 - 2025 Toni Schmidbauer & Thomas Jungbauer

    ← Previous
    Use arrow keys to navigate
    Next →
    ←
    →