<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kecklers.com</title>
	<atom:link href="http://www.kecklers.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kecklers.com</link>
	<description>&#34;Think for yourselves and let others enjoy the privilege to do so, too&#34; - Voltaire</description>
	<lastBuildDate>Fri, 06 Feb 2026 00:13:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>http://www.kecklers.com/wp-content/uploads/2017/02/cropped-mainheader-32x32.jpeg</url>
	<title>Kecklers.com</title>
	<link>http://www.kecklers.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Architectural Resource Budgets: A Developer’s Guide to Namespace Quotas</title>
		<link>http://www.kecklers.com/architectural-resource-budgets-a-developers-guide-to-namespace-quotas/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 21:36:19 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[quotas]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=786</guid>

					<description><![CDATA[To explain namespace quotas to developers, you can describe them as an architectural &#8220;resource budget&#8221; derived from the finite physical capacity of the cluster&#8217;s worker nodes. Administrators use software architecture designs to compute these requirements, ensuring that no single project can aggregate into a systemic failure or starve other critical services. Youtube video https://youtu.be/2RhA3mDBkbg The Architectural &#8220;Guess&#8221;: [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>To explain namespace quotas to developers, you can describe them as an <strong>architectural &#8220;resource budget&#8221;</strong> derived from the finite physical capacity of the cluster&#8217;s worker nodes. Administrators use software architecture designs to compute these requirements, ensuring that no single project can aggregate into a systemic failure or starve other critical services. Youtube video <a href="https://youtu.be/2RhA3mDBkbg?si=qODbp0Pmyba4cnOB">https://youtu.be/2RhA3mDBkbg</a></p>



<p>The Architectural &#8220;Guess&#8221;: How Quotas are Sized</p>



<p>Administrators do not set quotas arbitrarily; they calculate them based on several design factors:</p>



<p>•&nbsp;<strong>Infrastructure Awareness:</strong>&nbsp;Quotas are capped based on the total CPU cores and RAM available on physical worker nodes. Clusters are typically sized to be larger than the maximum requests of the largest project.</p>



<p>•&nbsp;<strong>Stack-Specific Baselines:</strong>&nbsp;Calculations often use industry baselines for different application types. For example,&nbsp;<strong>Java-based applications</strong>&nbsp;typically require at least 512Mi memory requests and 1Gi-2Gi limits due to JVM overhead, whereas&nbsp;<strong>Node.js or Go</strong>&nbsp;microservices are calculated with much lighter footprints (e.g., 100m-250m CPU and 128Mi-512Mi RAM).</p>



<p>•&nbsp;<strong>Deployment Strategy Overhead:</strong>&nbsp;Architects must account for &#8220;upgrade overhead&#8221;. A&nbsp;<strong>Rolling strategy</strong>&nbsp;requires the quota to accommodate at least&nbsp;<strong>double the resources</strong>&nbsp;of a single pod during transition, as old and new pods run simultaneously.</p>



<p>•&nbsp;<strong>Capacity Buffers:</strong>&nbsp;Designs usually include a&nbsp;<strong>25% capacity buffer</strong>&nbsp;over average daily peak loads to allow for high-transaction days and growth without requiring immediate administrative changes.</p>



<p>How This Affects Your Deployment</p>



<p>When developers deploy onto a cluster with active quotas, the namespace acts as a &#8220;defined box of resources&#8221;.</p>



<p>•&nbsp;<strong>Strict Specification Requirement:</strong>&nbsp;If a compute quota is active, the Kubernetes control plane will&nbsp;<strong>reject any pod</strong>&nbsp;that does not explicitly specify resource requests or limits.</p>



<p>•&nbsp;<strong>The Admission Contract:</strong>&nbsp;Your pod specification is your&nbsp;<strong>contract with the scheduler</strong>. If a pod creation request pushes the total namespace usage beyond the hard limit, the API server will block the operation with a&nbsp;<strong>403 Forbidden error</strong>.</p>



<p>•&nbsp;<strong>Performance Constraints:</strong>&nbsp;If your code exceeds the architecture’s memory limit, the kernel will trigger an&nbsp;<strong>Out-Of-Memory (OOM) kill</strong>; if it exceeds the CPU limit, the process will be&nbsp;<strong>throttled</strong>, leading to increased latency.</p>



<p>Visibility for Developers</p>



<p>You do not have to guess your remaining budget. You can inspect the current usage and hard limits calculated for your project by running&nbsp;<code>oc describe quota</code>&nbsp;or by viewing the&nbsp;<strong>AppliedClusterResourceQuota</strong>, which projects cluster-wide departmental budgets directly into your specific namespace.</p>



<p><strong>Analogy:</strong>&nbsp;Imagine the namespace quota is a&nbsp;<strong>pre-paid utility allowance</strong>&nbsp;for a shared apartment. The landlord (admin) calculates the allowance based on the building&#8217;s total electrical capacity and the typical needs of a tenant (the software architecture). If you try to plug in a high-powered appliance that exceeds your room&#8217;s calculated limit, the circuit breaker trips (403 Forbidden) to prevent the whole building from losing power.NotebookLM can be inaccurate; please double check its responses.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Springboot &#038; Kubernetes</title>
		<link>http://www.kecklers.com/springboot-kubernetes/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 21:28:28 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[Liveness probes]]></category>
		<category><![CDATA[Readiness Probes]]></category>
		<category><![CDATA[Springboot]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=782</guid>

					<description><![CDATA[To set up a basic Spring Boot application for Kubernetes, you must integrate the Spring Boot Actuator module, which serves as the internal engine connecting the application&#8217;s state to the Kubernetes orchestration platform. Youtube video link https://youtu.be/7sKsXZah4io 1. Spring Boot Application Setup To enable health probes, follow these steps to configure your application: • Dependency [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>To set up a basic Spring Boot application for Kubernetes, you must integrate the <strong>Spring Boot Actuator</strong> module, which serves as the internal engine connecting the application&#8217;s state to the Kubernetes orchestration platform. Youtube video link <a href="https://youtu.be/7sKsXZah4io">https://youtu.be/7sKsXZah4io</a></p>



<p>1. Spring Boot Application Setup</p>



<p>To enable health probes, follow these steps to configure your application:</p>



<p>• <strong>Dependency Management:</strong> Add the <code>spring-boot-starter-actuator</code> dependency to your project. This provides the necessary infrastructure to track availability states and expose them via web endpoints.</p>



<p>• <strong>Enable Probes:</strong> Spring Boot possesses &#8220;cloud-native&#8221; intelligence; it <strong>automatically activates</strong> liveness and readiness health indicators when it detects it is running in a Kubernetes environment. For local testing outside of Kubernetes, you can manually enable them in your <code>application.properties</code> file:</p>



<p>• <strong>Default Endpoints:</strong> Once enabled, Actuator provides two dedicated health groups:</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;◦ <strong>Liveness:</strong> <code>/actuator/health/liveness</code> (returns 200 OK when the internal state is stable).</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;◦ <strong>Readiness:</strong> <code>/actuator/health/readiness</code> (returns 200 OK when the application is ready to handle traffic).</p>



<p>2. Kubernetes YAML Configuration</p>



<p>In your Kubernetes deployment manifest, you should define three types of probes within the container specification to ensure high availability and self-healing.</p>



<p>Example Configuration</p>



<pre class="wp-block-code"><code>spec:
  containers:
  - name: basic-springboot-app
    image: your-image:latest
    ports:
    - containerPort: 8080
    
    # Startup Probe: Protects the app during the intensive JVM boot phase
    startupProbe:
      httpGet:
        path: /actuator/health/liveness
        port: 8080
      failureThreshold: 30
      periodSeconds: 10 # Gives the app 300 seconds to start
      
    # Liveness Probe: Detects if the app is deadlocked or unrecoverable
    livenessProbe:
      httpGet:
        path: /actuator/health/liveness
        port: 8080
      initialDelaySeconds: 0 # Handled by startupProbe
      periodSeconds: 10
      
    # Readiness Probe: Determines if the app should receive network traffic
    readinessProbe:
      httpGet:
        path: /actuator/health/readiness
        port: 8080
      initialDelaySeconds: 0
      periodSeconds: 10
</code></pre>



<p>3. Key Concepts and Best Practices</p>



<p>• <strong>The Three-Probe Strategy:</strong> Always use all three probes for JVM workloads. The <strong>Startup Probe</strong> is crucial because it suppresses liveness and readiness checks until the application has finished initializing. This prevents the &#8220;restart loop&#8221; where Kubernetes kills a slow-starting container before it can become healthy.</p>



<p>• <strong>Liveness Independence:</strong> The liveness probe should <strong>never</strong> depend on external systems like databases or web APIs. If an external database fails and your liveness probe fails as a result, Kubernetes will restart all your application instances, potentially causing a <strong>cascading failure</strong> across the platform.</p>



<p>• <strong>Readiness Judgment:</strong> Readiness probes <em>may</em> include external checks if the application cannot function without them. If the readiness probe fails, Kubernetes simply stops routing traffic to that pod instead of restarting it.</p>



<p>• <strong>Resource Timing:</strong> Be cautious with aggressive timeouts. A default <code>timeoutSeconds</code> of 1 second can be too short if the JVM experiences garbage collection pauses or CPU throttling, leading to false-positive failures. Increasing this to 3–5 seconds is often recommended for stability.</p>



<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>



<p><strong>Analogy for Understanding Probes:</strong> Think of a <strong>Liveness Probe</strong> as a doctor checking for a heartbeat; if it stops, the system tries to &#8220;resuscitate&#8221; the app by restarting it. The <strong>Readiness Probe</strong> is like a &#8220;Back in 5 Minutes&#8221; sign on a shop door; the shop is still there (it doesn&#8217;t need to be rebuilt), but it isn&#8217;t ready to serve customers yet. Finally, the <strong>Startup Probe</strong> is like a &#8220;Grand Opening Coming Soon&#8221; sign, telling the landlord (Kubernetes) not to evict the tenant just because they haven&#8217;t started selling products while they are still setting up the shelves.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Internal Developer Platform</title>
		<link>http://www.kecklers.com/internal-developer-platform/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sun, 19 Oct 2025 19:22:10 +0000</pubDate>
				<category><![CDATA[Ansible]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Terraform]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=764</guid>

					<description><![CDATA[An Internal Developer Platform (IDP) is a centralized, integrated environment tasked with streamlining and automating the development, deployment, and management of software applications within an organization. While described as centralized, the tools and components of an IDP are inherently loosely coupled, allowing each part to evolve independently. This architecture enables flexibility, scalability, and resilience within [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>An <strong>Internal Developer Platform (IDP)</strong> is a centralized, integrated environment tasked with streamlining and automating the development, deployment, and management of software applications within an organization. While described as centralized, the tools and components of an IDP are inherently <strong>loosely coupled</strong>, allowing each part to evolve independently. This architecture enables flexibility, scalability, and resilience within the platform.</p>



<p>At its core, an IDP abstracts the complex underlying infrastructure — including cloud services, container orchestration, and networking — so developers can focus on writing code rather than managing operations. It provides core functionalities such as building, testing, deploying, and monitoring applications, often through automation and standardized workflows.</p>



<p><strong>Why do businesses need an IDP?</strong></p>



<p>Organizations engaged in software development typically involve multiple teams working on diverse projects. These projects benefit from <strong>standardized workflows</strong>, which help reduce duplicated efforts, streamline collaboration, and minimize configuration errors. Implementing an IDP facilitates <strong>scaling</strong> of development efforts, supporting rapid growth, and increasing the frequency of releases — some organizations achieving <strong>deployment cycles</strong> as short as minutes.</p>



<p>Using <strong>automated CI/CD pipelines</strong>, developers can rapidly move from code commits to production deployments, significantly reducing lead times.</p>



<p>An IDP also enhances <strong>security</strong> and <strong>compliance</strong> through policy enforcement tools, such as <strong>policy-as-code</strong> solutions (e.g., Open Policy Agent), ensuring adherence to security best practices automatically. This not only reduces risks but also simplifies audits and regulatory compliance.</p>



<p><strong>Loosely Coupled Architecture</strong></p>



<p>A key principle of effective IDPs is that they must be <strong>loosely coupled</strong>. This design allows individual components and tools — such as build systems, deployment tools, or policy frameworks — to be added, upgraded, or replaced independently. For example, an organization may start with Terraform for infrastructure provisioning, then later incorporate Pulumi or CloudFormation, without overhauling the entire platform.</p>



<p>This modularity provides several benefits:</p>



<ul class="wp-block-list">
<li><strong>Flexibility &amp; Scalability</strong>: Teams can adopt new tools or technologies as needed, ensuring the platform evolves with industry best practices.</li>



<li><strong>Rapid Iterations</strong>: Developers or platform engineers can fix bugs, add features, or optimize workflows swiftly, similar to how functions or objects are modulated in code.</li>



<li><strong>Resilience</strong>: If one tool or component fails, it limits the potential impact on the entire system, preventing major outages.</li>



<li><strong>Heterogeneous Tooling</strong>: Different teams often have unique requirements, and modularity allows each to use the most suitable tools, whether for container orchestration (e.g., Kubernetes), monitoring (e.g., Prometheus), or security policies.</li>
</ul>



<p><strong>Building and Deploying Infrastructure and Applications</strong></p>



<p>Integrating <strong>GitOps</strong> practices enhances the automation and security of the platform. Infrastructure provisioning can be managed with tools like <strong>Terraform</strong>, <strong>CloudFormation</strong>, or <strong>Pulumi</strong>, where infrastructure code stored in Git repositories is automatically applied, ensuring version control and auditability.</p>



<p>Application objects, such as containers or microservices, are built and deployed through CI/CD pipelines using tools like <strong>Jenkins</strong>, <strong>GitLab CI</strong>, or <strong>Argo CD</strong>. These pipelines can automatically:</p>



<ul class="wp-block-list">
<li>Build container images.</li>



<li>Run tests and security scans.</li>



<li>Deploy updates to staging or production environments.</li>
</ul>



<p>The API-driven nature of these tools allows seamless integration, enabling rapid, automated build and deployment cycles. <strong>Security policies</strong> and <strong>compliance controls</strong> are enforced within the pipelines, ensuring that only compliant code reaches production, reducing risk and manual oversight.</p>



<p>An effective IDP combines <strong>loosely coupled</strong> components, enabling organizations to adapt quickly, scale efficiently, and maintain high availability. Its design supports rapid development cycles, policy enforcement, and infrastructure automation, all critical for competitive, modern software delivery.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Effectiveness and Limitations of AI on Programming Sophisticated Systems</title>
		<link>http://www.kecklers.com/effectiveness-and-limitations-of-ai-on-programming-sophisticated-systems/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sat, 20 Sep 2025 13:11:02 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=754</guid>

					<description><![CDATA[Artificial Intelligence (AI) has transformed numerous industries, promising to revolutionize how we develop, optimize, and maintain complex software systems. From automating code generation to debugging and system optimization, AI tools are increasingly integrated into the programming landscape. However, I have found that AI&#8217;s effectiveness in programming sophisticated programs has both significant strengths and notable limitations. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Artificial Intelligence (AI) has transformed numerous industries, promising to revolutionize how we develop, optimize, and maintain complex software systems. From automating code generation to debugging and system optimization, AI tools are increasingly integrated into the programming landscape. However, I have found that AI&#8217;s effectiveness in programming sophisticated programs has both significant strengths and notable limitations.</p>



<p>AI-powered code generators, such as OpenAI Codex and GitHub Copilot, can assist developers by suggesting snippets, automating routine tasks, and providing boilerplate code. For many standard programming tasks, these tools significantly speed up development processes and reduce manual effort. AI models trained on vast amounts of code can identify potential bugs and vulnerabilities faster than manual reviews. They can predict problematic code patterns and recommend fixes. AI tools can analyze existing codebases and suggest improvements for performance, readability, and maintainability. Machine learning models can adapt to specific codebases over time, becoming more effective in understanding project-specific nuances, coding styles, and architectural patterns.</p>



<p>However, there are limitations and challenges in AI programming.&nbsp; AI models operate based on patterns learned from training data. They lack deep understanding of business logic, domain-specific intricacies, and architectural decisions. With this lack of understanding, the code base developed is not sophisticated and can create security risks in your application. AI suggestions can be incorrect or suboptimal, especially in complex scenarios requiring nuanced judgment. Reliance on AI can introduce bugs or security vulnerabilities if not thoroughly reviewed. AI is not creative. AI excels at pattern recognition but struggles with innovative design or creative problem-solving. Both design and creative problem solving are essential in sophisticated programs. The effectiveness of AI tools depends critically on the quality and diversity of training data. Poor or biased data can lead to ineffective or flawed suggestions. Most data it uses to train is old data and incorrect data.</p>



<p>AI has demonstrated significant effectiveness in augmenting programming tasks for sophisticated programs, especially in automation, bug detection, and optimization. However, it is not a silver bullet; limitations such as lack of contextual understanding and the potential for inaccuracies mean that AI should be viewed as a powerful assistant rather than a replacement for experienced developers.</p>



<p>The future of AI in programming lies in hybrid approaches, leveraging AI to handle routine and pattern-based tasks while human experts focus on strategic, architectural, and innovative aspects of software development.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Critical Need to Modernize Development Foundations Before Application Overhauls</title>
		<link>http://www.kecklers.com/the-critical-need-to-modernize-development-foundations-before-application-overhauls/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sat, 06 Sep 2025 15:53:07 +0000</pubDate>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Containers]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=740</guid>

					<description><![CDATA[Modernizing applications is often perceived as a key strategy to stay competitive, improve efficiency, and enhance user experiences. However, a common pitfall is dedicating significant resources to application overhaul without addressing the underlying infrastructure—particularly the CI/CD (Continuous Integration/Continuous Deployment) tools. When these foundational tools are outdated, bloated, and self-made, efforts to modernize applications may become [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Modernizing applications is often perceived as a key strategy to stay competitive, improve efficiency, and enhance user experiences. However, a common pitfall is dedicating significant resources to application overhaul without addressing the underlying infrastructure—particularly the CI/CD (Continuous Integration/Continuous Deployment) tools. When these foundational tools are outdated, bloated, and self-made, efforts to modernize applications may become futile, or worse, counterproductive.  <a href="https://camillaaraujoonlyfans.blog/" target="_blank">camilla araujo of leak</a></p>



<p>CI/CD pipelines form the backbone of modern software deployment practices. They automate testing, integration, and delivery processes, enabling teams to deliver high-quality updates rapidly. Efficient, reliable CI/CD systems are essential for supporting practices like agile development, microservices architecture, and DevOps culture.&nbsp;</p>



<p>However, many organizations rely on self-made, legacy CI/CD tools that have accumulated over the years. These tools often lack scalability, are riddled with bugs, and are incompatible with current cloud-native technologies. Such outdated systems impose significant constraints on the development lifecycle.</p>



<p>In the beginning, these CI/CD solutions targeted specific needs. However, as time goes by, legacy CI/CD solutions tend to become bloated over time. They are laden with obsolete features, deprecated interfaces, and convoluted workflows. This bloat leads to several issues:</p>



<p>&#8211; Slow Build and Deployment Times: Excessive features and inefficient processes prolong deployment cycles, delaying time-to-market.</p>



<p>&#8211; Higher Failure Rates: Complex, fragile pipelines are more prone to errors, requiring extensive troubleshooting.</p>



<p>&#8211; Increased Maintenance Burden: Technical debt accumulates, demanding ongoing effort to keep the pipeline operational.</p>



<p>These inefficiencies drain resources and distract from core development activities, making modernization at the application level a lost cause if the pipeline itself is a bottleneck.</p>



<p>Continuing to operate legacy CI/CD tools incurs mounting technical debt, requiring frequent workarounds and patches. This maintenance diverts skilled resources from innovation, and upgrading or replacing such systems is often labor-intensive, risky, and expensive. In many cases, organizations find themselves stuck, unable to leverage the latest development practices or cloud-native capabilities because their foundational pipelines are obsolete.</p>



<p>Outdated CI/CD systems rarely integrate seamlessly with modern environments. They pose a significant obstacle to adopting advanced methodologies such as <strong>containerization, serverless deployment, or microservices architecture</strong>. Consequently, organizations face a dilemma: invest heavily in overhauling their pipelines or accept subpar deployment processes that hamper growth and agility.</p>



<p>Investing heavily in application modernization—refactoring code, adopting new frameworks, or redesigning architectures—without concurrently updating the development infrastructure is often a waste of effort. Without reliable, modern deployment pipelines, these modernization efforts are undermined by slow feedback loops, deployment failures, and operational inefficiencies.</p>



<p>The key to successful modernization lies in prioritizing the upgrade or replacement of outdated CI/CD tools. Modern, cloud-native pipelines that are built with scalability, automation, and ease of integration in mind, serve as the enablers for application evolution. When the foundation is solid, organizations can deploy new features faster, reduce errors, and adopt innovative practices with confidence.</p>



<p>Modernization is not solely about updating applications or infrastructure; it begins with transforming the very tools that support development workflows. Legacy, self-made CI/CD systems act as bottlenecks that stifle progress and inflate costs. True potential of modernization initiatives, organizations must invest in modern, reliable, and scalable development foundations first. Only then can they ensure that their application improvements are sustainable, efficient, and capable of meeting future demands.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Helm Chart Part 2 &#8211; Scheduler-form</title>
		<link>http://www.kecklers.com/helm-chart-part-2-scheduler-form/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Sat, 21 Dec 2024 16:49:35 +0000</pubDate>
				<category><![CDATA[Containers]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[Routes]]></category>
		<guid isPermaLink="false">https://www.kecklers.com/?p=721</guid>

					<description><![CDATA[Now that the Scheduler is in place, we have to have a form to send it data and retrieve results.&#160; Before we go into that, lets discuss OpenShift Local and how it sets your computer to get the OpenShift console UI.&#160;&#160; When you install crc it puts in place a Windows service.&#160; This Helper service [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">Now that the Scheduler is in place, we have to have a form to send it data and retrieve results.&nbsp; Before we go into that, lets discuss OpenShift Local and how it sets your computer to get the OpenShift console UI.&nbsp;&nbsp; When you install crc it puts in place a Windows service.&nbsp;</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">Red Hat OpenShift Local Admin Helper</li>
</ul>



<p class="has-medium-font-size">This Helper service allows you to manage and configure the cluster directory from your computer.&nbsp; When you start your&nbsp; OpenShift cluster it also start two other processes.&nbsp;</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">Crc.exe (of course since you ran it)</li>



<li class="has-medium-font-size">Crc-background-launcher.exe (this helps manage the background processes that run and manage containers)</li>
</ul>



<p class="has-medium-font-size">Your host file for windows also gets changed so you can actually use the API and console URLs.&nbsp; This host file also has entries so you can develop routes for you applications.&nbsp; This is important for the scheduler-form.&nbsp; For easy viewing and editing I would recommend getting the PowerToys application.&nbsp;</p>



<ul class="wp-block-list">
<li class="has-medium-font-size"><a href="https://learn.microsoft.com/en-us/windows/powertoys/">https://learn.microsoft.com/en-us/windows/powertoys/</a></li>
</ul>



<p class="has-medium-font-size">The host file has a lot of entries for OpenShift. You will noticed that most use apps-crc.testing as their top level domain.&nbsp; This is important because the Red Hat Windows service handles that top level domain and ensure you application gets to the right destination.&nbsp; We will setup a route named schedulerform.api.crc.testing for the scheduler-form.&nbsp; This will allow you to view the form&nbsp; and submit data to the scheduler.</p>



<p class="has-medium-font-size">To start let clone the scheduler-form form the gitlab.com.</p>



<pre class="wp-block-code has-medium-font-size"><code>$ git clone <a href="https://gitlab.com/keckler-dev/scheduler-form.git">https://gitlab.com/keckler-dev/scheduler-form.git</a></code></pre>



<p class="has-medium-font-size">You will need to start up your OpenShift Local cluster.&nbsp; You will also need to login on the console.</p>



<pre class="wp-block-code has-medium-font-size"><code>$ crc start
$ oc login --token=……. --server=https://api.crc.testing:6443</code></pre>



<p class="has-medium-font-size">Remember you can get your login token from the crc console. Click on Copy login command form the dropdown on your username.</p>



<p class="has-medium-font-size">Once you have cloned the repository, switch to the scheduler-form directory.&nbsp; The organization is similar to the scheduler repository.&nbsp; Since it has a web UI, you will have extra directories.&nbsp; Static and templates are added to handle the static CSS file and templates holds the html files.&nbsp; Take a look at get a feel to how it is setup.&nbsp;</p>



<p class="has-medium-font-size">In the helm directory under the templates is an extra file called route.yaml.&nbsp; This is where you are defining your application&#8217;s URL and how it is attached to the Scheduler-form Service.&nbsp;</p>



<p class="has-medium-font-size">In the spec section file you will have the host line.&nbsp; This is the URL you application is listening on.&nbsp; Noticed that the top lever domain is apps-crc.tesing.&nbsp; The &#8216;to&#8217; sections defines the service that will handle the requests from the route.&nbsp; You can have multiple services to a route by adding alternateBackends to the route.&nbsp; You use the weight line to balance the amount of traffic to each service.&nbsp; You could use this for canary testing.&nbsp;</p>



<p class="has-medium-font-size">Lets get started, and deploy the helm chart for the scheduler-form.&nbsp; Ensure your are in the scheduler-form directory and execute the helm install command</p>



<pre class="wp-block-code has-medium-font-size"><code>$ helm install scheduler-form helm</code></pre>



<p class="has-medium-font-size">You will see a new deployment called schedulerform.&nbsp; It will show 1 pod&nbsp; running.&nbsp; In the networking section you will see e a new service called schedulerform in Services.&nbsp; You can do some testing on the IPs in the pod to ensure everything is working properly.&nbsp; See post Helm Chart Part -1 Scheduler for instructions.&nbsp; Additionally you will see a new entry in the Routes section under Services.</p>



<p class="has-medium-font-size">There will be a route called schedulerform.&nbsp; It will have a location <a href="http://schedulerform.apps-crc.testing">http://schedulerform.apps-crc.testing</a>.&nbsp; You will see that the service it is using is schedulerform.&nbsp; Click on the URL.&nbsp; A new window comes up with a form.&nbsp; You can use this form to input data.&nbsp; Once you click the Generate Scheduler button, the informations is sent in a POST to the scheduler service <a href="http://scheduler:8080/schedule">http://scheduler:8080/schedule</a>. The results will be the json output of the scheduler and a list of the scheduler by week.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="384" height="469" src="https://www.kecklers.com/wp-content/uploads/2024/12/schedulerform.png" alt="" class="wp-image-723" srcset="http://www.kecklers.com/wp-content/uploads/2024/12/schedulerform.png 384w, http://www.kecklers.com/wp-content/uploads/2024/12/schedulerform-246x300.png 246w" sizes="(max-width: 384px) 100vw, 384px" /></figure>



<p class="has-medium-font-size">We do not need a route create for scheduler deployment because OpenShift allow communication in the same namespace.&nbsp; You can call any Service on the port the service is listening on in the same Namespace.&nbsp;</p>



<p class="has-medium-font-size">In conclusion, setting up the Scheduler-form in OpenShift Local involves several key steps, including&nbsp; cloning the scheduler-form repository, and deploying the helm chart. By following these steps, you can effectively manage and configure your OpenShift cluster, ensuring that your applications are routed correctly and can communicate within the same namespace.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Helm Chart Part 1 &#8211; Scheduler</title>
		<link>http://www.kecklers.com/helm-chart-part-1-scheduler/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Fri, 06 Dec 2024 15:08:30 +0000</pubDate>
				<category><![CDATA[Containers]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[Kubetl]]></category>
		<category><![CDATA[Podman]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">http://www.kecklers.com/?p=656</guid>

					<description><![CDATA[Helm&#160; is the package manager for Kubernetes.&#160; You can download Helm from https://helm.sh/docs/ There are tutorials and how-to guides on the Helm site.&#160; Once you have installed Helm, you can create your basic Helm chart.&#160; I have already created and setup the Helm chart in the Gitlab repository for the scheduler, https://gitlab.com/keckler-dev/scheduler $ helm create [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">Helm&nbsp; is the package manager for Kubernetes.&nbsp; You can download Helm from <a href="https://helm.sh/docs/">https://helm.sh/docs/</a> There are tutorials and
how-to guides on the Helm site.&nbsp; </p>



<p class="has-medium-font-size">Once you have installed Helm, you can create your basic Helm chart.&nbsp; I have already created and setup the Helm chart in the Gitlab repository for the scheduler, <a href="https://gitlab.com/keckler-dev/scheduler">https://gitlab.com/keckler-dev/scheduler</a></p>



<pre class="wp-block-preformatted has-medium-font-size">$ helm create scheduler</pre>



<p class="has-medium-font-size">There are sever
basic information that gets created</p>



<p class="has-medium-font-size">Chart.yaml &#8211; use for
versioning your chart</p>



<p class="has-medium-font-size">values.yaml &#8211;
default values for your chart&#8217;s variable</p>



<ul class="wp-block-list">
<li class="has-medium-font-size">You can create other values yaml file such as dev.yaml.</li>
</ul>



<p class="has-medium-font-size">Templates directory
is created and example deployment.yaml and service.yaml file are available.</p>



<p class="has-medium-font-size">Before you run the helm command, create the project and ensure your default project is set to the namespace where the Kubernetes objects will be created</p>



<pre class="wp-block-preformatted has-medium-font-size">$ oc create namespace scheduler<br>$ oc project scheduler<br>$ oc project<br>scheduler</pre>



<p class="has-medium-font-size">In order to run the
Helm command you should be in the Directory where the Helm chart starts.</p>



<pre class="wp-block-preformatted has-medium-font-size">$ helm install scheduler helm<br> </pre>



<ul class="wp-block-list">
<li>Scheduler is the Helm release name. </li>



<li class="has-medium-font-size">helm is the directory of the helm chart </li>
</ul>



<p class="has-medium-font-size">If there is a
mistake in your helm chart, fix the issue and redeploy the helm chart</p>



<pre class="wp-block-preformatted has-medium-font-size">$ helm upgrade
scheduler helm</pre>



<p class="has-medium-font-size">After the Helm
deployment, you will see the OpenShift Project scheduler with Kubernetes
objects created.</p>



<p class="has-medium-font-size">The Deployments will
show scheduler with 1 pod deployed.</p>



<p class="has-medium-font-size">The pod will be
names scheduler-&lt;random letter and numbers&gt;. It should be running and the
logs tab should show the program is running on port 8080.</p>



<p class="has-medium-font-size">In the Services
object you will see the scheduler service. It will have an IP:8080 associate
with it.&nbsp; Click on the service scheduler
and it will take you to the details of the service.&nbsp; </p>



<p class="has-medium-font-size">Testing the install:</p>



<ol class="wp-block-list">
<li class="has-medium-font-size">Go the pods section and click on the scheduler pod.</li>



<li class="has-medium-font-size">Go to the terminal tab</li>



<li class="has-medium-font-size">You should be presented with an terminal &#8216;$&#8217;</li>



<li class="has-medium-font-size">In the directory will be a teams.json file.&nbsp; We will use this file to test the program. Type in the following</li>
</ol>



<pre class="wp-block-preformatted has-medium-font-size">$ curl -X POST -H "Content-Type: application/json" -d @teams.json <a href="http://localhost:8080/schedule">http://localhost:8080/schedule</a></pre>



<p class="has-medium-font-size">You will see the
output of the matches created by the scheduler.&nbsp;
</p>



<pre class="wp-block-preformatted has-medium-font-size">[{"matches":[{"away":"Bye","date":"2024-01-01","home":"Team
A"},{"away":"Team ………….</pre>



<p class="has-medium-font-size">The Pod is working.
Let&#8217;s test the service.&nbsp; From the desktop
we are going to setup a port forward to the service. And query the service.
Ensure you are in the project Scheduler.</p>



<pre class="wp-block-preformatted has-medium-font-size">$ kubectl port-forward service/scheduler&nbsp; 8080:8080 -n scheduler</pre>



<p class="has-medium-font-size">If everything is
correct you will see the port forwarding happening.&nbsp; The desktop localhost on port 8080 is
pointing to the scheduler service in the OpenShift project scheduler.&nbsp; Execute the same curl command as above on
your local desktop.&nbsp; You should see the
same output.&nbsp; </p>



<p class="has-medium-font-size">If you get Failed to
connect to localhost port 8080: Cannot connect to server. You probably killed
the kubectl port forward command.&nbsp; Make
sure it is running and use a different powershell/cmd interface for the curl command.&nbsp; Ensure the teams.json file is in the
directory when you make your curl command.</p>



<p class="has-medium-font-size">By following this
guide, you have successfully set up Helm and deployed a Helm chart for the
Scheduler application on OpenShift. The process included creating the Helm
chart, configuring it with necessary parameters, and deploying it to the
OpenShift project. You also learned how to troubleshoot and upgrade your Helm
chart if any issues arise during deployment. Finally, you validated the
deployment by testing the application within the pod and through the service
using port forwarding.</p>



<p class="has-medium-font-size">This setup ensures
that your Kubernetes objects are properly managed and deployed, providing a
robust environment for your Scheduler application. Whether you&#8217;re managing more
complex applications or scaling your deployments, this foundational knowledge will
be invaluable.</p>



<p class="has-medium-font-size">For more detailed
information and further learning, don&#8217;t forget to explore the tutorials and
guides available on the Helm documentation site.</p>



<p class="has-medium-font-size">Helm Chart Part 2 will be about the Scheduler form and how it interfaces with the scheduler service. We will also discuss the Route object and how it is setup with OpenShift Local.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Install OpenShift Local</title>
		<link>http://www.kecklers.com/install-openshift-local/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Thu, 05 Dec 2024 13:31:41 +0000</pubDate>
				<category><![CDATA[Containers]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[Windows 11]]></category>
		<category><![CDATA[CRC]]></category>
		<guid isPermaLink="false">http://www.kecklers.com/?p=648</guid>

					<description><![CDATA[Setting up a robust local development environment is crucial for developers working with containerized applications. OpenShift Local provides a streamlined, minimal OpenShift Container Platform 4 cluster that can run on your local machine. This guide will walk you through the process of setting up OpenShift Local on Windows 11 with Hyper-V, ensuring your system meets [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Setting up a robust
local development environment is crucial for developers working with
containerized applications. OpenShift Local provides a streamlined, minimal
OpenShift Container Platform 4 cluster that can run on your local machine. This
guide will walk you through the process of setting up OpenShift Local on
Windows 11 with Hyper-V, ensuring your system meets the necessary hardware
requirements, configuring CRC (CodeReady Containers) with optimal resources,
and setting up network access through an external switch. By the end of this
tutorial, you will have a fully functional OpenShift environment ready for
development and testing.</p>



<p><strong>1. How to Get and Deploy OpenShift Local</strong></p>



<ol class="wp-block-list">
<li><strong>In order to download and install OpenShift Local you will need a Red Hat account.&nbsp; This is free.&nbsp; Sign up at </strong><a href="https://developers.redhat.com/">https://developers.redhat.com/</a>. </li>



<li><strong>Download OpenShift Local</strong>: Visit the Red Hat OpenShift Local download page and download the version for your OS. <a href="https://developers.redhat.com/products/openshift-local/overview">https://developers.redhat.com/products/openshift-local/overview</a><strong>&nbsp; Make sure you are on the local tab.</strong></li>



<li><strong>Install CodeReady Containers (CRC)</strong>: Extract the downloaded file.</li>



<li><strong>RUN</strong>: &#8220;crc setup&#8221; (Use Powershell)</li>



<li><strong>Pull Secret</strong>: During the install process, you will need to provide the pull secret.</li>
</ol>



<p><strong>2. How to Set Up CRC to Use 4 CPUs and&nbsp; 12GB of Memory</strong></p>



<pre class="wp-block-preformatted">crc start --cpus 4 --memory 12288</pre>



<ol class="wp-block-list">
<li>If you start you CRC with this, you will have to ALWAYS start it with this command.</li>
</ol>



<p><strong>3. How to Retrieve Users and Passwords After Setup</strong></p>



<ol class="wp-block-list">
<li><strong>Retrieve the Admin Credentials</strong>: Use the command &#8220;crc console&#8221; to access the OpenShift web console.</li>



<li><strong>Find the Admin User and Password</strong>: Look for the credentials in the console or use the command crc config view to view the current configuration, which includes the admin user and password.  &#8220;crc config &#8211;credentials&#8221;</li>
</ol>



<p><strong>4. How to Change the Network in Hyper-V to Use the
External Switch</strong></p>



<ol class="wp-block-list">
<li><strong>Open Hyper-V Manager</strong>: Go to the Hyper-V Manager.</li>



<li><strong>Select Your Virtual Machine</strong>: Right-click on the virtual machine running OpenShift Local and select &#8220;Settings.&#8221;</li>



<li><strong>Change Network Adapter</strong>: Under the &#8220;Hardware&#8221; tab, select the network adapter and click &#8220;Remove.&#8221;</li>



<li><strong>Add a New Network Adapter</strong>: Click &#8220;Add&#8221; and select the external switch you want to use.</li>



<li><strong>Restart the Virtual Machine</strong>: Restart the virtual machine to apply the changes.</li>
</ol>



<pre class="wp-block-preformatted">Note on External switch:  I have seen where the crc virtual machine does not allow connections to it when you start it up.  If the 'crc start' is stuck:<br>1) exit the 'crc start'<br>2) do a 'crc stop'<br>3) edit the crc VM and remove the network adapter<br>4) do a 'crc start (with your aruguements for cpu and memory)'<br>5) when it is up, go back to the VM and add the external network adapter back in</pre>



<p><strong>5. ﻿Log into OpenShift Web Console</strong></p>



<ol class="wp-block-list">
<li>Run: crc console, this will open the OpenShift Web UI in a browser</li>



<li>Login:&nbsp; use the kubeadmin and password from the  crc output to log in.&nbsp; See step 3 on how to retrieve the usernames and passwords if you did not copy the output.</li>



<li>CLI access to OpenShift: In the upper right corner is your username.&nbsp;      The drop down will give you access to your user preference and      &#8220;Copy login Command&#8221;.&nbsp; The Copy Login Command will give you a token and the &#8216;oc&#8217; command to login into the cluster from a command line.&nbsp;      </li>
</ol>



<p><strong>6. Expand the Disk space.</strong></p>



<p>You will need to expand the disk space if you are going to add any projects and pods.  </p>



<ol class="wp-block-list">
<li><strong>Shutodwn CRC VM:</strong> &#8220;crc stop&#8221;</li>



<li><strong>Open Hyper-V Manager</strong>: Launch Hyper-V Manager from the Start menu.</li>



<li><strong>Select Your VM</strong>: Right-click on your CRC VM and select <strong>Settings</strong>.</li>



<li><strong>Edit Virtual Hard Disk</strong>: In the Hardware section, select <strong>Hard Drive</strong> and click <strong>Edit</strong>.</li>



<li><strong>Expand Disk</strong>: In the Edit Virtual Hard Disk Wizard, select <strong>Expand</strong> and specify the new size for your virtual hard disk. Make it 100GB.</li>



<li><strong>Finish</strong>: Click <strong>Finish</strong> to apply the changes.</li>



<li><strong>Start the VM:</strong> &#8220;crc start&#8221; <em>* if you started you orginial crc with crc start &#8211;cpus 6 &#8211;memory 12288, then  start it with the arguments.</em></li>
</ol>



<p>By following the
detailed steps outlined in this guide, you can efficiently set up OpenShift
Local on Windows 11 with Hyper-V, ensuring your system meets the necessary
hardware requirements and configurations. From enabling Hyper-V and creating an
external virtual switch to configuring CRC with the optimal resources and
retrieving user credentials, this setup provides a robust foundation for your
local development environment. With OpenShift Local up and running, you&#8217;re now
ready to deploy and manage containerized applications, making full use of the
powerful features OpenShift offers. Stay tuned for more advanced tutorials and
projects that will take your development skills to the next level.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hardware setup for OpenShift Local and Hyper-V</title>
		<link>http://www.kecklers.com/hardware-setup-for-openshift-local-and-hyper-v/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 19:18:30 +0000</pubDate>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[Windows 11]]></category>
		<guid isPermaLink="false">http://www.kecklers.com/?p=645</guid>

					<description><![CDATA[In this article, we will outline the necessary hardware requirements for running OpenShift Local on Windows 11 and provide a step-by-step guide to setting up Hyper-V with an external switch. This setup will enable your virtual machines (VMs) to access the internet and external networks, preparing your environment for deploying containerized applications. Hardware Requirements In [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In this article, we
will outline the necessary hardware requirements for running OpenShift Local on
Windows 11 and provide a step-by-step guide to setting up Hyper-V with an
external switch. This setup will enable your virtual machines (VMs) to access
the internet and external networks, preparing your environment for deploying
containerized applications.</p>



<p><strong>Hardware Requirements</strong></p>



<p>In the previous article I discussed the requirements.  <a href="https://www.kecklers.com/setting-up-openshift-local-on-windows-11-with-hyper-v/" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">https://www.kecklers.com/setting-up-openshift-local-on-windows-11-with-hyper-v/</a>  Here it is again:</p>



<ul class="wp-block-list"><li><strong>4 virtual CPUs</strong></li><li><strong>10.5 GB memory minimum</strong> –  best to use at least 12GB</li><li><strong>35 GB of storage space</strong><ul><li>This is the minimum. I recommend allocating more space if you plan to do more than what is demonstrated here.</li><li>Adjust this by issuing CRC config commands before running the crc start command.</li></ul></li></ul>



<p><strong>Detailed Hardware Requirements</strong></p>



<p>The following is the
hardware I am using on my desktop to setup Hyper-V and house the OpenShift
Local VM</p>



<ul class="wp-block-list"><li><strong>Operating System</strong>: Windows 11 PRO (Windows Home Edition is not supported)</li><li><strong>CPU</strong>: Intel® Core<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> i7-4700F, 21MHz, 20 Core(s), 28 Logical Processor(s)</li><li><strong>Memory</strong>: 64GB</li><li><strong>Storage</strong>: 2TB drive</li></ul>



<p><strong>Step-by-Step Setup</strong></p>



<p><strong>Step 1: Enable Hyper-V</strong></p>



<ol class="wp-block-list"><li>Press Windows + R, type optionalfeatures.exe, and press Enter.</li><li>In the Windows Features dialog, check the box for Hyper-V and click OK.</li><li>Restart your computer.</li></ol>



<p><strong>Step 2: Create an External Virtual Switch</strong></p>



<ol class="wp-block-list"><li>Open Hyper-V Manager by pressing Windows + R, typing virtmgmt.msc, and pressing Enter.</li><li>In the Actions pane, select Virtual Switch Manager.</li><li>Select External and click Create Virtual Switch.</li><li>Name the switch (e.g.,  &#8220;External Switch&#8221;) and select the network adapter that is connected to your physical network.</li><li>Ensure the checkbox &#8220;Allow management operating system to share this network adapter&#8221; is checked.</li><li>Click Apply and then OK.</li></ol>



<p>By following these steps, you can ensure your Hyper-V environment is properly configured with an external virtual switch, allowing your VMs to access the internet. This foundational setup is crucial for running OpenShift Local efficiently and preparing for advanced containerized application deployments.  The hardware I am using is more than enough, but you are dealing with a Windows setup, not Linux.  More is better.  <a href="https://bhadbhabieonlyfans.blog/" target="_blank">bhad bhabie age</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting Up OpenShift Local on Windows 11 with Hyper-V</title>
		<link>http://www.kecklers.com/setting-up-openshift-local-on-windows-11-with-hyper-v/</link>
		
		<dc:creator><![CDATA[Raymond Keckler]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 18:57:57 +0000</pubDate>
				<category><![CDATA[Containers]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Ingress]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">http://www.kecklers.com/?p=643</guid>

					<description><![CDATA[In this set of articles, I will walk through the process of setting up an OpenShift Local environment on Windows 11 using Hyper-V. This setup will serve as a precursor to more advanced projects, such as creating and managing containerized applications within the same namespace. How the pods communicate in the namespace and how to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In this set of articles, I will walk through the process of setting up an OpenShift Local environment on Windows 11 using Hyper-V. This setup will serve as a precursor to more advanced projects, such as creating and managing containerized applications within the same namespace. How the pods communicate in the namespace and how to setup ingress to the pods. </p>



<p><strong>Hardware Requirements</strong></p>



<p>To get started, OpenShift Local says you need 4 CPUs, 9Gbs of memory and 35Gb of storage space. This will not work.&nbsp; Below is the virtual settings I used on my Hyper-V setup to get OpenShift Local to work.&nbsp; You will need Windows 11 PRO because the Home edition is not supported. </p>



<ul class="wp-block-list">
<li><strong>4 virtual CPU </strong></li>



<li><strong>10.5 GB memory minimum &#8211; best to use at least 12GB</strong></li>



<li><strong>35 GB of storage space</strong>
<ul class="wp-block-list">
<li><strong>This is the  minimum.  I would recommend more space if you are going to do more than what I am demonstrating.</strong></li>



<li><strong>I would do this by issuing crc config commands before doing the &#8216;crc start&#8217;.</strong></li>
</ul>
</li>
</ul>



<p><strong>OpenShift Local Requirements</strong></p>



<p>OpenShift Local is a
minimal OpenShift Container Platform 4 cluster that you can run locally on your
development workstation. It is perfect for development and testing use cases.</p>



<p>&nbsp;Here are the steps to install and set up
OpenShift Local:</p>



<ol class="wp-block-list">
<li><strong>Download OpenShift Local</strong>: Visit the Red Hat Developer website and download the OpenShift Local installer.</li>



<li><strong>Install Hyper-V</strong>: Ensure Hyper-V is enabled on your Windows 11 system. You can do this by running the following PowerShell command:<br>           powershell<br>           &#8216;Enable-WindowsOptionalFeature -Online -FeatureName      Microsoft-Hyper-V-Management-PowerShell&#8217;</li>



<li><strong>Setup External Virtual Switch</strong> for your VMs</li>



<li><strong>Run the Installer</strong>: Unzip the downloaded installer and run the setup. Follow the prompts to complete the installation3.</li>



<li><strong>Start OpenShift Local</strong>:  Use the crc start command to start the OpenShift Local cluster. This will take a few minutes to initialize4.</li>
</ol>



<p><strong>Creating and Managing Applications</strong></p>



<p>Once your OpenShift
Local setup is complete, you can start creating and managing applications.
Here&#8217;s a high-level overview of the process:</p>



<ol class="wp-block-list">
<li><strong>Create Two Programs</strong>: Develop two separate programs that will reside on images in the same namespace.</li>



<li><strong>Deploy the Programs</strong>: Use oc commands to deploy the programs as pods in the OpenShift Local cluster.</li>



<li><strong>Set Up Ingress and Communication</strong>: Configure ingress to allow external access to your applications and set up communication between the pods.
<ol style="list-style-type:lower-alpha" class="wp-block-list">
<li>For the Ingress controller, I will be setting up the Nginx Operator</li>
</ol>
</li>
</ol>



<p>By following these
steps, you can set up an OpenShift Local environment on Windows 11 with
Hyper-V, creating a foundation for more advanced containerized applications.
Stay tuned for future articles where we will dive deeper into creating and
managing these applications.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
