Glossary

Upwind Glossary

Your hub to learn about the future of cloud security and runtime.
Feed
Grid

Kubernetes & K8s Security

What is microsegmentation? How it works in cloud and Kubernetes environments
October 9, 2026

What is microsegmentation? How it works in cloud and Kubernetes environments

Microsegmentation is a security architecture that divides a network into small, isolated segments, down to individual workloads, and applies a separate access policy to each one so that only explicitly allowed connections can occur. In cloud and Kubernetes environments, workloads scale, move and change IP addresses constantly. For that reason, microsegmentation policies attach to identities…
Kubernetes network policy: how it works, examples, and best practices
October 9, 2026

Kubernetes network policy: how it works, examples, and best practices

A Kubernetes network policy (the NetworkPolicy API object) is a namespaced resource that controls which pods can send traffic to, and receive traffic from, other pods, namespaces, and IP ranges at layers 3 and 4. By default, every pod can reach every other pod, so one compromised container can scan and pivot across namespaces. NetworkPolicy…
Kubernetes security 101: 10 best practices to secure clusters, workloads, and runtime
October 5, 2026

Kubernetes security 101: 10 best practices to secure clusters, workloads, and runtime

Kubernetes security means protecting clusters, workloads, and runtime activity with layered controls. Those controls include a hardened control plane, least-privilege access, trusted images, restricted pods, segmented networks, protected secrets, and continuous detection of what actually runs. Most incidents trace back to a short list of predictable gaps, such as wildcard RBAC, privileged containers, exposed kubelets,…
Illustration of a stylized cargo ship with blue containers on a blue background. The ship has a white hull and red bottom, featuring a blue logo resembling a ships helm. Echoing the focus on Kubernetes Security Posture Management (KSPM), the word Upwind appears in the top right corner in white text.
January 10, 2025

Master Kubernetes Security: Understanding KSPM & CNAPP Solutions

As reliance on cloud-native applications grows, so does reliance on tools like Kubernetes security posture management (KSPM) and cloud security posture management (CSPM). After all, Kubernetes is a necessary component of cloud-native workflows, and managing the security posture of such a critical facet of operations is a business imperative. But what does a Kubernetes-specific solution…
Illustration of a magnifying glass hovering over a Kubernetes logo, set against a blue gradient background. The word upwind appears in the top right corner, subtly hinting at using Kubernetes audit logs for enhanced DevSecOps strategies.
January 10, 2025

Mastering Kubernetes Audit Logs for Enhanced DevSecOps

Kubernetes audit logs are a cornerstone of cluster visibility. They capture the who, what, and when of user and service activity. But their sheer volume and complexity often create bottlenecks for security teams trying to distinguish meaningful anomalies from routine noise. We’re going deeper into the role of Kubernetes audit logs in DevSecOps workflows, exploring…
A blue graphic depicts a book with a white Kubernetes logo on the right page against a gradient blue background. The word upwind is in the top right corner.
December 30, 2024

Secure Your Kubernetes Clusters: Comprehensive Vulnerability Scanning

Containers gained popularity in the 2010s because they allowed developers to run programs across environments, but deploying thousands of them could be chaotic. Enter Kubernetes, an orchestration platform that emerged to manage containers at scale. But Kubernetes itself, not just its containers, needs vulnerability scanning. How? What should that look like? From merging tools to…
Illustration of a container icon on a blue background, featuring a blue toolbox with a wrench beside it. The container is adorned with vertical blue stripes, and Upwind is written in white in the top right corner, subtly hinting at Kubernetes security tools.
December 23, 2024

Top Open-Source Kubernetes Security Tools

Kubernetes is a multi-layered environment. Highly dynamic clusters can be spun up and taken down quickly, making it difficult to track potential threats in real time. But Kubernetes doesn’t exist in a vacuum — it orchestrates containers that run on a complex infrastructure, where misconfigurations, Identity and Access Management (IAM), and network security all come…
Illustration of a brown planter box with orange flowers and bees, subtly hinting at innovation in Kubernetes. A Kubernetes logo graces the side, harmonizing with the light beige background. The word upwind appears in the top right corner, inviting you to explore what is eBPF for Kubernetes.
December 16, 2024

Master eBPF for Enhanced Kubernetes Security and Performance

Extended Berkeley Packet Filter (eBPF) is emerging as a cornerstone of cloud-native management, enhancing observability and enabling sandboxed programs to operate directly within the Linux kernel. For Kubernetes, where managing distributed, ephemeral workloads at scale is inherently complex, eBPF offers a solution to some of the platform’s biggest challenges. By working directly at the kernel…
A digital illustration showcases a grid of blue hexagons with lightning bolt icons, centered around a white hexagon boasting a lock icon. The light blue background complements the Upwind logo in the top right corner, subtly posing the question: "What is Kubernetes Runtime Security?
November 25, 2024

Secure Your Kubernetes Deployments with Real-Time Protection

Kubernetes runtime security is a crucial component of defending cloud environments. Whereas build-time protection secures containers and Kubernetes (often abbreviated K8s) architecture during the development phase, runtime security protects systems during the operation phase when containers are susceptible to some of the most damaging attacks. Do K8s really need specific security? Would it differ from…
Illustration of a blue and white eraser with a Kubernetes logo on one side, set against a light blue background. The word "upwind" appears in the top right corner, subtly hinting at curiosity: What are Kubernetes vulnerabilities?
November 25, 2024

Understanding & Securing Kubernetes: Key Vulnerabilities

For security teams, Kubernetes isn’t just another box to check. While this dynamic system is often the core of modern cloud deployments, its vulnerabilities aren’t static. New issues appear suddenly and from a mix of factors — complexity in configuration, rapid innovation, and a vast ecosystem of tools and extensions. New attack vectors also emerge…
What is microsegmentation? How it works in cloud and Kubernetes environments

What is microsegmentation? How it works in cloud and Kubernetes environments

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Microsegmentation is a security architecture that divides a network into small, isolated segments, down to individual workloads, and applies a separate access policy to each one so that only explicitly allowed connections can occur. In cloud and Kubernetes environments, workloads scale, move and change IP addresses constantly. For that reason, microsegmentation policies attach to identities…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Kubernetes network policy: how it works, examples, and best practices

Kubernetes network policy: how it works, examples, and best practices

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
A Kubernetes network policy (the NetworkPolicy API object) is a namespaced resource that controls which pods can send traffic to, and receive traffic from, other pods, namespaces, and IP ranges at layers 3 and 4. By default, every pod can reach every other pod, so one compromised container can scan and pivot across namespaces. NetworkPolicy…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Kubernetes security 101: 10 best practices to secure clusters, workloads, and runtime

Kubernetes security 101: 10 best practices to secure clusters, workloads, and runtime

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes security means protecting clusters, workloads, and runtime activity with layered controls. Those controls include a hardened control plane, least-privilege access, trusted images, restricted pods, segmented networks, protected secrets, and continuous detection of what actually runs. Most incidents trace back to a short list of predictable gaps, such as wildcard RBAC, privileged containers, exposed kubelets,…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a stylized cargo ship with blue containers on a blue background. The ship has a white hull and red bottom, featuring a blue logo resembling a ships helm. Echoing the focus on Kubernetes Security Posture Management (KSPM), the word Upwind appears in the top right corner in white text.

Master Kubernetes Security: Understanding KSPM & CNAPP Solutions

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
As reliance on cloud-native applications grows, so does reliance on tools like Kubernetes security posture management (KSPM) and cloud security posture management (CSPM). After all, Kubernetes is a necessary component of cloud-native workflows, and managing the security posture of such a critical facet of operations is a business imperative. But what does a Kubernetes-specific solution…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a magnifying glass hovering over a Kubernetes logo, set against a blue gradient background. The word upwind appears in the top right corner, subtly hinting at using Kubernetes audit logs for enhanced DevSecOps strategies.

Mastering Kubernetes Audit Logs for Enhanced DevSecOps

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes audit logs are a cornerstone of cluster visibility. They capture the who, what, and when of user and service activity. But their sheer volume and complexity often create bottlenecks for security teams trying to distinguish meaningful anomalies from routine noise. We’re going deeper into the role of Kubernetes audit logs in DevSecOps workflows, exploring…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
A blue graphic depicts a book with a white Kubernetes logo on the right page against a gradient blue background. The word upwind is in the top right corner.

Secure Your Kubernetes Clusters: Comprehensive Vulnerability Scanning

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Containers gained popularity in the 2010s because they allowed developers to run programs across environments, but deploying thousands of them could be chaotic. Enter Kubernetes, an orchestration platform that emerged to manage containers at scale. But Kubernetes itself, not just its containers, needs vulnerability scanning. How? What should that look like? From merging tools to…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a container icon on a blue background, featuring a blue toolbox with a wrench beside it. The container is adorned with vertical blue stripes, and Upwind is written in white in the top right corner, subtly hinting at Kubernetes security tools.

Top Open-Source Kubernetes Security Tools

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes is a multi-layered environment. Highly dynamic clusters can be spun up and taken down quickly, making it difficult to track potential threats in real time. But Kubernetes doesn’t exist in a vacuum — it orchestrates containers that run on a complex infrastructure, where misconfigurations, Identity and Access Management (IAM), and network security all come…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a brown planter box with orange flowers and bees, subtly hinting at innovation in Kubernetes. A Kubernetes logo graces the side, harmonizing with the light beige background. The word upwind appears in the top right corner, inviting you to explore what is eBPF for Kubernetes.

Master eBPF for Enhanced Kubernetes Security and Performance

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Extended Berkeley Packet Filter (eBPF) is emerging as a cornerstone of cloud-native management, enhancing observability and enabling sandboxed programs to operate directly within the Linux kernel. For Kubernetes, where managing distributed, ephemeral workloads at scale is inherently complex, eBPF offers a solution to some of the platform’s biggest challenges. By working directly at the kernel…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
A digital illustration showcases a grid of blue hexagons with lightning bolt icons, centered around a white hexagon boasting a lock icon. The light blue background complements the Upwind logo in the top right corner, subtly posing the question: "What is Kubernetes Runtime Security?

Secure Your Kubernetes Deployments with Real-Time Protection

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes runtime security is a crucial component of defending cloud environments. Whereas build-time protection secures containers and Kubernetes (often abbreviated K8s) architecture during the development phase, runtime security protects systems during the operation phase when containers are susceptible to some of the most damaging attacks. Do K8s really need specific security? Would it differ from…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a blue and white eraser with a Kubernetes logo on one side, set against a light blue background. The word "upwind" appears in the top right corner, subtly hinting at curiosity: What are Kubernetes vulnerabilities?

Understanding & Securing Kubernetes: Key Vulnerabilities

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
For security teams, Kubernetes isn’t just another box to check. While this dynamic system is often the core of modern cloud deployments, its vulnerabilities aren’t static. New issues appear suddenly and from a mix of factors — complexity in configuration, rapid innovation, and a vast ecosystem of tools and extensions. New attack vectors also emerge…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration of a blue shipping container with a Kubernetes logo, encircled by dashed lines, set against a light blue backdrop. The phrase "What is KaaS?" floats in the top right corner with the word "upwind" subtly integrated nearby.

Unlocking Kubernetes as a Service:  Benefits, Tradeoffs, and Security Implications

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes is the most common container orchestration platform on the market today, deployed at scale in thousands of organizations. Hosting a Kubernetes implementation occurs in two ways: on a company-owned, bare-metal server or outsourced to a cloud provider, also known as Kubernetes as a Service or KaaS. But what is KaaS? This blog will examine…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Illustration showing a grid with Kubernetes logos on containers. A central block features a padlock, symbolizing security, asking "What is Kubernetes Security?" The background is blue, and the Upwind logo is in the top right corner.

Securing Kubernetes: Best Practices and Common Vulnerabilities 

<?php

$post_id = get_the_ID();
$author_terms = get_the_terms( $post_id, 'author_tax' );
$authors = [];

if ( $author_terms && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $photo_id = get_field(
            'author_photo',
            'author_tax_' . $term->term_id
        );

        $authors[] = [
            'name'  => $term->name,
            'url'   => get_term_link( $term->term_id ),
            'photo' => $photo_id
                ? wp_get_attachment_image_url( $photo_id, 'author-image' )
                : '',
        ];
    }
}

?>

<div class="uw-bf-card__meta">
    <?php if ( count( $authors ) > 0 ) { ?>
        <div class="uw-bf-card__author-photos">

            <?php foreach ( $authors as $author ) { ?>
                <a
                    href="<?php echo esc_url( $author['url'] ); ?>"
                    class="uw-bf-card__author-photo-link"
                >
                    <img
                        class="uw-bf-card__author-photo"
                        src="<?php echo esc_url( $author['photo'] ); ?>"
                        alt="<?php echo esc_attr( $author['name'] ); ?>"
                    >
                </a>
            <?php } ?>

        </div>
    <?php } ?>

    <div class="uw-bf-card__meta-sub">
        <span class="uw-bf-card__author-names">
            <?php echo getAuthorNames( $authors ); ?>
        </span>

        <span class="uw-bf-card__date">
            <?php echo get_the_date( 'F d, Y', $post_id ); ?>
        </span>
    </div>
</div>
.brxe-qhtnal{
  .uw-bf-card__author-photo, .uw-bf-card__author-photo-link {
  width: 53px;
  height: 53px;
}
}
Kubernetes has emerged as the leading orchestration platform of containerized applications in the modern cloud ecosystem. This has coincided with a steep increase in container adoption - CNFC’s 2022 annual survey showed that 76% of organizations that employ cloud-native approaches use containers. However, this rise in popularity has also made Kubernetes a target for threat…
Read More
<?php $url = get_permalink(); ?>
<?php $title = get_the_title(); ?>

<div class="uw-bf-card__share">
  <a class="uw-bf-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&url=<?php echo urlencode($url) . '&title=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on LinkedIn"><svg width="12" height="11" viewBox="0 0 12 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.51819 10.9373H0.185826V3.63501H2.51819V10.9373ZM1.35075 2.63892C0.604939 2.63892 0 2.03833 0 1.31323C5.33822e-09 0.964941 0.142311 0.630916 0.395626 0.384637C0.648942 0.138358 0.992511 0 1.35075 0C1.709 0 2.05256 0.138358 2.30588 0.384637C2.5592 0.630916 2.70151 0.964941 2.70151 1.31323C2.70151 2.03833 2.09632 2.63892 1.35075 2.63892ZM11.2475 10.9373H8.92015V7.38257C8.92015 6.5354 8.90257 5.44897 7.70751 5.44897C6.49487 5.44897 6.30904 6.36938 6.30904 7.32153V10.9373H3.97919V3.63501H6.21613V4.6311H6.24877C6.56016 4.05737 7.32079 3.4519 8.45558 3.4519C10.8161 3.4519 11.25 4.96313 11.25 6.92603V10.9373H11.2475Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://twitter.com/intent/tweet?url=<?php echo rawurlencode($url) . '&text=' . urlencode($title); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on X"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.3319 5.92804L13.5437 0H12.3087L7.78327 5.14724L4.16883 0H0L5.46574 7.78354L0 14H1.2351L6.01406 8.56434L9.83117 14H14L8.3316 5.92804H8.3319ZM6.64026 7.85211L6.08647 7.07705L1.68013 0.909776H3.57717L7.13314 5.88696L7.68693 6.66202L12.3093 13.1316H10.4122L6.64026 7.85241V7.85211Z" fill="#75808E"/></svg></a>
  
  <a class="uw-bf-share-btn" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($url); ?>" target="_blank" rel="noopener noreferrer" aria-label="Share on Facebook"><svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.00586 7.73438L6.33914 5.24595H4.25531V3.63113C4.25531 2.95034 4.54641 2.28674 5.47969 2.28674H6.42703V0.168115C6.42703 0.168115 5.56734 0 4.74539 0C3.0293 0 1.90758 1.19185 1.90758 3.34941V5.24595H0V7.73438H1.90758V13.75H4.25531V7.73438H6.00586Z" fill="#75808E"/></svg></a>
  
  <div class="uw-bf-copy-wrap">
    <button class="uw-bf-share-btn uw-bf-copy-btn" data-url="<?php echo get_permalink(); ?>" aria-label="Copy link">
      <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.1713 5.42406C14.4955 4.18261 14.4955 2.17211 13.1713 0.930656C11.9994 -0.167977 10.1525 -0.310799 8.80488 0.592277L8.76738 0.616447C8.42988 0.842765 8.35254 1.28222 8.59394 1.59643C8.83535 1.91064 9.3041 1.98534 9.63926 1.75902L9.67676 1.73485C10.4291 1.23168 11.458 1.31078 12.1096 1.92382C12.8479 2.61596 12.8479 3.73656 12.1096 4.4287L9.47988 6.89843C8.7416 7.59057 7.54629 7.59057 6.80801 6.89843C6.1541 6.28539 6.06973 5.32079 6.60645 4.61767L6.63223 4.58251C6.87363 4.26611 6.79394 3.82665 6.45879 3.60253C6.12363 3.37841 5.65254 3.45092 5.41348 3.76513L5.3877 3.80028C4.42207 5.06152 4.57441 6.79296 5.74629 7.89159C7.07051 9.13305 9.21504 9.13305 10.5393 7.89159L13.1713 5.42406ZM0.993164 4.9099C-0.331055 6.15136 -0.331055 8.16186 0.993164 9.40331C2.16504 10.5019 4.01191 10.6448 5.35957 9.74169L5.39707 9.71752C5.73457 9.4912 5.81191 9.05175 5.57051 8.73754C5.3291 8.42333 4.86035 8.34863 4.5252 8.57494L4.4877 8.59911C3.73535 9.10229 2.70645 9.02319 2.05488 8.41015C1.3166 7.71581 1.3166 6.59521 2.05488 5.90307L4.68457 3.43554C5.42285 2.7434 6.61816 2.7434 7.35645 3.43554C8.01035 4.04858 8.09473 5.01318 7.55801 5.7185L7.53223 5.75365C7.29082 6.07006 7.37051 6.50951 7.70566 6.73363C8.04082 6.95776 8.51191 6.88525 8.75098 6.57104L8.77676 6.53588C9.74238 5.27245 9.59004 3.54101 8.41816 2.44237C7.09395 1.20092 4.94941 1.20092 3.6252 2.44237L0.993164 4.9099Z" fill="#75808E"/></svg>
      <div class="uw-bf-copy-notify">Link copied</div>
    </button>
  </div>
</div>
.uw-bf-copy-notify {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.uw-bf-copy-btn.is-copied .uw-bf-copy-notify {
  opacity: 1;
  visibility: visible;
}
document.addEventListener('click', async (event) => {
    const button = event.target.closest('.uw-bf-copy-btn');

    if (!button) {
        return;
    }

    const url = button.dataset.url;

    try {
        await navigator.clipboard.writeText(url);

        button.classList.add('is-copied');

        setTimeout(() => {
            button.classList.remove('is-copied');
        }, 2000);

    } catch (error) {
        console.error('COPY ERROR:', error);
    }    
});
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Threat RSS
Add the Upwind RSS Feed to Slack
Connect the Upwind RSS Feed to your Slack.
Follow the how-to here.
Main RSS