<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SyedAsadRazaDevops</title>
    <description>The latest articles on DEV Community by SyedAsadRazaDevops (@syedasadrazadevops).</description>
    <link>https://dev.to/syedasadrazadevops</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F798283%2F952eacb1-1c6a-4675-9097-b91a8ef31112.jpg</url>
      <title>DEV Community: SyedAsadRazaDevops</title>
      <link>https://dev.to/syedasadrazadevops</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/syedasadrazadevops"/>
    <language>en</language>
    <item>
      <title>Automating Daily Cost Reports in Azure for Your Production Subscription</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 16 Jan 2025 14:28:40 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/automating-daily-cost-reports-in-azure-for-your-production-subscription-4778</link>
      <guid>https://dev.to/syedasadrazadevops/automating-daily-cost-reports-in-azure-for-your-production-subscription-4778</guid>
      <description>&lt;p&gt;Managing costs effectively is one of the key aspects of optimizing your cloud resources. If you're like me, you want to stay informed about your daily Azure subscription expenses, especially for production environments. In this guide, I’ll show you how to set up automated daily cost emails for your production subscription in Azure. This setup is similar to the emails I receive for my development subscription, which provide clear insights into daily expenses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Automate Daily Cost Reports?
&lt;/h2&gt;

&lt;p&gt;Daily cost reports help you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Track your spending trends and identify anomalies.&lt;/li&gt;
&lt;li&gt;Stay within budget by monitoring expenses regularly.&lt;/li&gt;
&lt;li&gt;Take proactive actions to optimize resource usage.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s how you can set it up for your production environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Access Azure Cost Management
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In the search bar, type &lt;strong&gt;Cost Management + Billing&lt;/strong&gt; and select it.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 2: Navigate to Your Production Subscription
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;From the &lt;strong&gt;Cost Management&lt;/strong&gt; dashboard, select &lt;strong&gt;Cost analysis&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ensure the selected subscription is your production subscription.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lilmfw5d1d9b00i32vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lilmfw5d1d9b00i32vz.png" alt="Image description" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Configure a Custom Cost View
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Use the filters in &lt;strong&gt;Cost analysis&lt;/strong&gt; to tailor a view for your production subscription.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; Set it to your production subscription or resource group.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Granularity:&lt;/strong&gt; Select &lt;strong&gt;Daily&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group By:&lt;/strong&gt; Choose options like resource group, service name, or location to analyze costs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save this custom view for quick access later.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 4: Set Up Scheduled Export
&lt;/h2&gt;

&lt;p&gt;To automatically export your cost data daily:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Exports&lt;/strong&gt; section under &lt;strong&gt;Cost Management&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add export&lt;/strong&gt; and fill in the details:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; Enter a name like “Daily Costs - Prod”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Select your production subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; Choose the desired scope (e.g., resource group or full subscription).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Granularity:&lt;/strong&gt; Choose &lt;strong&gt;Daily&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage Account:&lt;/strong&gt; Provide a storage account where the data will be saved.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; If you don’t have a storage account, create one under &lt;strong&gt;Storage Accounts&lt;/strong&gt; in the Azure Portal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Save the export. Azure will now automatically export daily cost data to your storage account.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Step 5: Enable Email Alerts
&lt;/h2&gt;

&lt;p&gt;To receive daily cost emails like the one shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92y114xr181skgvzyk1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92y114xr181skgvzyk1j.png" alt="Image description" width="800" height="681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Budgets&lt;/strong&gt; section under &lt;strong&gt;Cost Management&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt; to create a new budget.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; Enter a name for the budget (e.g., “Prod Daily Costs”).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amount:&lt;/strong&gt; Set a budget limit (e.g., $1000).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification Threshold:&lt;/strong&gt; Choose a percentage (e.g., 100% for daily updates).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email Recipients:&lt;/strong&gt; Add your email address.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the budget.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Azure will now email you whenever the specified conditions are met.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Optional - Use Logic Apps for Custom Email Reports
&lt;/h2&gt;

&lt;p&gt;If you need more customization, use &lt;strong&gt;Azure Logic Apps&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a Logic App to query the Cost Management API daily.&lt;/li&gt;
&lt;li&gt;Format the data as an email.&lt;/li&gt;
&lt;li&gt;Send the email to your recipients.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach gives you greater flexibility, such as adding charts or filtering specific services.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By following these steps, you can automate daily cost emails for your production subscription, helping you monitor expenses effortlessly. This setup ensures transparency and allows you to manage resources proactively.&lt;/p&gt;

&lt;p&gt;Do you use other methods to monitor your Azure costs? Share your insights in the comments below!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>costmanagement</category>
      <category>daily</category>
      <category>cost</category>
    </item>
    <item>
      <title>Exploring AI Services on AWS: A Comprehensive Overview</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 09 Jan 2025 13:17:17 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/exploring-ai-services-on-aws-a-comprehensive-overview-e7p</link>
      <guid>https://dev.to/syedasadrazadevops/exploring-ai-services-on-aws-a-comprehensive-overview-e7p</guid>
      <description>&lt;p&gt;Here is an image of an artistic representation of multiple hands interacting with the AWS console, showcasing various AWS services related to AI. The image depicts a collaborative lab setting where individuals are actively engaging with the AWS platform on different screens, highlighting services like Amazon SageMaker, Amazon Lex, Amazon Personalize, and Amazon Comprehend, among others. Elements reflect innovation, teamwork, and the practical application of AI in a cloud environment, including visual cues of AI, such as data visualizations or robotic elements, to emphasize the theme:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rl482ydc9vna5p2eswr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rl482ydc9vna5p2eswr.jpg" alt="An artistic representation of multiple hands interacting with the AWS console, showcasing various AWS services related to AI. The image should depict a collaborative lab setting where individuals are actively engaging with the AWS platform on different screens, highlighting services like Amazon SageMaker, Amazon Lex, Amazon Personalize, Amazon Comprehend, and more. Elements should reflect innovation, teamwork, and the practical application of AI in a cloud environment. Include visual cues of AI, like data visualizations or robotic elements, to emphasize the theme." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploring AI Services on AWS: A Comprehensive Overview
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As artificial intelligence (AI) continues to revolutionize industries, AWS provides a robust suite of services to help developers and organizations harness AI capabilities effectively. This article delves into key AWS services for AI, empowering you to build intelligent applications and drive innovation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Amazon SageMaker: Building and Training Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon SageMaker is a fully managed service that enables you to build, train, and deploy machine learning models. It simplifies the process by providing a suite of tools to streamline each step, from data labeling to model evaluation. With SageMaker, developers can quickly prototype and iterate on machine learning applications, making it a cornerstone for AI development on AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Amazon Rekognition: Image and Video Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Rekognition offers advanced image and video analysis capabilities, providing features like facial recognition, object detection, and scene recognition. This service can be integrated into applications to enhance security, improve user experiences, and automate processes such as content moderation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Amazon Lex: Conversational Interfaces&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Amazon Lex, you can create conversational interfaces for applications using voice and text. It enables developers to build chatbots and voice applications that deliver rich user experiences. Lex leverages the same technologies that power Amazon Alexa, making it an excellent choice for enhancing interactions within community platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Amazon Personalize: Tailored Recommendations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Personalize allows you to create individualized user experiences by providing real-time product and content recommendations. Using machine learning, it analyzes user interactions and preferences to deliver customized suggestions, enhancing user engagement and satisfaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Amazon Comprehend: Natural Language Processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Comprehend is a natural language processing (NLP) service that enables you to derive insights from text. It performs tasks like sentiment analysis, entity recognition, and topic modeling. By integrating Comprehend into your applications, you can gain valuable insights from user feedback, reviews, and discussions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Amazon Translate: Multi-Language Support&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To build global communities, Amazon Translate offers real-time, high-quality language translation for applications, enabling you to connect with users across different regions. This service supports numerous languages and helps facilitate better communication within diverse community settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS offers a powerful set of AI services that enable developers to build intelligent, user-centered applications. By leveraging services like Amazon SageMaker, Lex, Rekognition, and more, you can create innovative solutions that enhance user experience and drive engagement within your community. Embrace these technologies to stay ahead in the digital landscape and foster meaningful connections among users. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to View WAF Logs and Add Custom Rules in Azure Front Door</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 09 Jan 2025 09:16:43 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/how-to-view-waf-logs-and-add-custom-rules-in-azure-front-door-1bkc</link>
      <guid>https://dev.to/syedasadrazadevops/how-to-view-waf-logs-and-add-custom-rules-in-azure-front-door-1bkc</guid>
      <description>&lt;p&gt;Azure Front Door's Web Application Firewall (WAF) is a powerful tool for protecting your applications from malicious traffic. However, effectively managing your WAF configuration is key to maintaining a balance between security and usability. In this blog post, we’ll explore two essential aspects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How to view WAF logs in Azure Front Door&lt;/strong&gt; to troubleshoot issues and gain insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to add custom rules for specific URLs&lt;/strong&gt; to ensure precise traffic control and enhanced security.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Real-World Scenario: The Importance of Logs and Custom Rules
&lt;/h3&gt;

&lt;p&gt;In today’s interconnected world, even minor service disruptions can lead to significant setbacks. Recently, we encountered a "Service Unavailable" issue caused by blocked requests on a specific API, affecting critical operations. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happened?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A routine API request was blocked, resulting in an error message: &lt;em&gt;"The request is blocked."&lt;/em&gt; Users were unable to proceed with their tasks. A reference ID was provided, pointing to the Web Application Firewall (WAF) as the culprit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Error:&lt;/strong&gt; Unexpected character encountered while parsing value: &amp;lt;. Path , line 0, position 0.&lt;br&gt;
an unexpected character &amp;lt; while trying to parse a JSON value. This suggests that the response being parsed is an XML or HTML document, not JSON.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Possible Causes:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Firewall or Bot Protection Rules&lt;/strong&gt;: Strict rules flagged legitimate traffic as suspicious.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Overload&lt;/strong&gt;: High traffic triggered rate-limiting mechanisms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration Errors&lt;/strong&gt;: Misconfigured rules led to unnecessary blockages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This incident highlighted the need for effective troubleshooting using WAF logs and the ability to add custom rules to avoid false positives.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Viewing WAF Logs in Azure Front Door
&lt;/h2&gt;

&lt;p&gt;When WAF blocks requests, logs provide invaluable insights, helping you understand the reasons behind the blockage and take corrective actions.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to Access WAF Logs
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enable Diagnostic Logging:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Azure portal, navigate to &lt;strong&gt;Front Door&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under the &lt;strong&gt;Monitoring&lt;/strong&gt; section, select &lt;strong&gt;Diagnostics settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create a new diagnostic setting and enable WAF logs.&lt;/li&gt;
&lt;li&gt;Send these logs to one of the following destinations:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Log Analytics Workspace&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Storage Account&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Hub&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analyze Logs in Log Analytics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your &lt;strong&gt;Log Analytics Workspace&lt;/strong&gt; and use the following query to filter WAF logs:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; AzureDiagnostics
 | where ResourceType == "FRONTDOOR_WAF"
 | project TimeGenerated, clientIP_s, requestUri_s, ruleName_s, action_s
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Key fields to analyze include:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;requestUri_s&lt;/code&gt;: The URL of the request.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;clientIP_s&lt;/code&gt;: The client’s IP address.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ruleName_s&lt;/code&gt;: The WAF rule triggered (e.g., Bot300100).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;action_s&lt;/code&gt;: The action taken (e.g., BLOCK, ALLOW).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example log entry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   TimeGenerated: 2025-01-08T12:34:56Z
   clientIP_s: 192.168.1.1
   requestUri_s: /api/AddDevice
   ruleName_s: Bot300100
   action_s: BLOCK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;View Logs Through Security Analytics:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Front Door&lt;/strong&gt; in the Azure portal.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Analytics&lt;/strong&gt; section and open the &lt;strong&gt;Security Report&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The Security Report provides a summary of blocked requests, allowed traffic, and matched rules.&lt;/li&gt;
&lt;li&gt;For a deeper dive, download the &lt;strong&gt;CSV report&lt;/strong&gt; for a detailed view of WAF activities. This is especially useful for quick audits and trend analysis without requiring advanced configurations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Adding Custom Rules for Specific URLs
&lt;/h2&gt;

&lt;p&gt;Default WAF rules might not always align with your application's unique requirements. For example, you may want to allow specific API endpoints while maintaining strict rules for others. Custom rules give you the flexibility to tailor WAF behavior to your needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Create a Custom Rule
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Navigate to the WAF Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Azure portal, go to &lt;strong&gt;Front Door and CDN profiles&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select your Front Door profile and open the &lt;strong&gt;Web Application Firewall&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Access the WAF policy attached to your Front Door.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add a Custom Rule:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Custom Rules&lt;/strong&gt; and select &lt;strong&gt;Add Custom Rule&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Configure the rule with the following parameters:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: A descriptive name (e.g., AllowSpecificAPI).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Priority&lt;/strong&gt;: Lower numbers indicate higher priority (e.g., 100).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action&lt;/strong&gt;: Choose &lt;strong&gt;Allow&lt;/strong&gt; or &lt;strong&gt;Block&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Match Conditions&lt;/strong&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Match Type&lt;/strong&gt;: Use “URL path.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operator&lt;/strong&gt;: Use “Contains” or “Equals.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value&lt;/strong&gt;: Enter the specific URL (e.g., &lt;code&gt;/api/AddDevice&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test the Rule:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save and deploy the rule.&lt;/li&gt;
&lt;li&gt;Use tools like &lt;code&gt;curl&lt;/code&gt; or Postman to test the custom rule.&lt;/li&gt;
&lt;li&gt;Check logs to confirm the rule is applied correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Regularly Review and Update Rules:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor WAF logs to ensure the custom rule is functioning as intended.&lt;/li&gt;
&lt;li&gt;Modify rules based on new traffic patterns or security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Example: Allowing a Specific API Endpoint
&lt;/h3&gt;

&lt;p&gt;If an endpoint like &lt;code&gt;/api/AddDevice&lt;/code&gt; is frequently blocked but used by legitimate clients, you can create a custom rule as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Match Conditions:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;URL Path = &lt;code&gt;/api/AddDevice&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;IP Address = Whitelisted IPs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Action&lt;/strong&gt;: &lt;strong&gt;Allow&lt;/strong&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This ensures seamless access to the endpoint without compromising the security of other URLs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Practices for Managing Azure Front Door WAF
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular Log Reviews:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Analyze logs frequently to identify false positives and refine rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Detection Mode for Testing:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Test new rules in &lt;strong&gt;Detection&lt;/strong&gt; mode before enforcing them to prevent unintended disruptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Leverage Rate Limiting:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Implement rate-limiting rules to protect against abusive traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable Geo-Blocking:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Restrict traffic from regions that don’t require access to your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Custom Rules Sparingly:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Keep custom rules targeted and simple to avoid performance impacts.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Azure Front Door’s WAF is a robust tool for securing your applications. By learning to view logs effectively and create custom rules, you can fine-tune its behavior to suit your application’s specific needs. Regularly monitor, adapt, and optimize your WAF configuration to stay ahead of evolving threats.&lt;/p&gt;

&lt;p&gt;Have you configured custom rules or analyzed logs in Azure Front Door WAF? Share your insights and tips in the comments below!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>webapp</category>
      <category>logs</category>
      <category>url</category>
    </item>
    <item>
      <title>Unlocking Cloud-Native Security with Cilium and eBPF</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 19 Dec 2024 07:50:30 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/unlocking-cloud-native-security-with-cilium-and-ebpf-40an</link>
      <guid>https://dev.to/syedasadrazadevops/unlocking-cloud-native-security-with-cilium-and-ebpf-40an</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 🌐🔒🚀
&lt;/h2&gt;

&lt;p&gt;As cloud-native applications scale, securing workloads while maintaining performance becomes critical. This is where Cilium, an open-source networking, observability, and security tool, shines. Backed by the power of eBPF (Extended Berkeley Packet Filter), Cilium provides secure, high-performance communication between microservices in Kubernetes environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cilium? 🔍💻🔧
&lt;/h2&gt;

&lt;p&gt;Cilium is a cloud-native networking solution that secures and monitors service-to-service communication. It leverages eBPF to operate within the Linux kernel, enabling dynamic programmability and reducing the performance overhead associated with traditional firewalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Cilium
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Network Security:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Identity-aware security policies based on Kubernetes labels.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Transparent encryption for secure data transport.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observability:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fine-grained visibility into network traffic using Hubble, Cilium's observability platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-time service dependency maps and network flow monitoring.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability and Performance:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kernel-level packet processing with eBPF for low latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scales seamlessly in large Kubernetes clusters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Mesh Integration:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service mesh capabilities like traffic management, load balancing, and security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works alongside existing tools like Istio and Envoy.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How Cilium Works ⚙️📡📈
&lt;/h2&gt;

&lt;p&gt;Cilium uses eBPF programs attached to various points in the Linux kernel, such as network interfaces and system calls. This allows it to inspect, modify, and route network packets in real-time. Kubernetes network policies are automatically translated into eBPF code, ensuring secure communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying Cilium 🚀📦🔧
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Prepare Your Environment:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Ensure you have a running Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;Install kubectl and helm if not already installed.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Add the Cilium Helm Repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add cilium https://helm.cilium.io/
helm repo update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Deploy Cilium Using Helm:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install cilium cilium/cilium --version &amp;lt;latest-version&amp;gt; \
  --namespace kube-system \
  --set kubeProxyReplacement=strict \
  --set k8sServiceHost=&amp;lt;your-k8s-api-server&amp;gt; \
  --set k8sServicePort=&amp;lt;your-k8s-api-port&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verify Deployment:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods -n kube-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure that all Cilium-related pods are running.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable Hubble (Optional for Observability):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm upgrade cilium cilium/cilium --namespace kube-system \
  --set hubble.enabled=true \
  --set hubble.relay.enabled=true \
  --set hubble.ui.enabled=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Getting Started with Cilium 🛡️👨‍💻📊
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define Policies:&lt;/strong&gt; Create Kubernetes NetworkPolicies or Cilium-specific policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor Traffic:&lt;/strong&gt; Use Hubble UI or CLI for observability.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Choose Cilium? ⚡🔐👀
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Kernel-level processing ensures minimal performance impact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Built-in encryption and identity-aware access controls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visibility:&lt;/strong&gt; Deep observability into cloud-native workloads.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases 🌍🏦🛒
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;- &lt;strong&gt;Financial Services:&lt;/strong&gt; Enforcing strict network security for sensitive workloads.&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;E-commerce:&lt;/strong&gt; Scaling secure and reliable microservices.&lt;/li&gt;
&lt;li&gt;- &lt;strong&gt;Healthcare:&lt;/strong&gt; Ensuring data compliance and observability.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion 🎯✅📈
&lt;/h2&gt;

&lt;p&gt;Cilium is redefining cloud-native security and observability with eBPF. Its seamless integration with Kubernetes, superior performance, and deep visibility make it a go-to solution for modern cloud-native architectures. Whether securing a microservices-based application or building a scalable Kubernetes platform, Cilium offers the best of both worlds: powerful security and unmatched performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Call to Action: 📢📚✨
&lt;/h2&gt;

&lt;p&gt;Ready to enhance your Kubernetes security? Explore the official Cilium documentation and start your journey toward a more secure and observable cloud-native environment.&lt;/p&gt;

&lt;p&gt;THANK'S FOR READING&lt;/p&gt;

</description>
      <category>cilium</category>
      <category>cloudnative</category>
      <category>ebpf</category>
      <category>kubernetessecurity</category>
    </item>
    <item>
      <title>How to Install Plugins in Kubernetes and Essential Plugins to Get Started</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Tue, 27 Aug 2024 11:37:49 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/how-to-install-plugins-in-kubernetes-and-essential-plugins-to-get-started-355k</link>
      <guid>https://dev.to/syedasadrazadevops/how-to-install-plugins-in-kubernetes-and-essential-plugins-to-get-started-355k</guid>
      <description>&lt;p&gt;&lt;strong&gt;Kubernetes is a powerful container orchestration platform, but its capabilities can be significantly extended with plugins. Plugins provide additional functionality that can enhance the operational capabilities of your Kubernetes clusters, streamline workflows, and add features not available out of the box. In this guide, we'll explore how to install plugins in Kubernetes and discuss some essential plugins to help you get started.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Kubernetes Plugins?
&lt;/h2&gt;

&lt;p&gt;Kubernetes plugins, or "kubectl plugins," are tools that extend the functionality of the kubectl command-line tool. These plugins can be developed by the community or Kubernetes administrators to add specific features or automate tasks. They are designed to be seamlessly integrated into your existing Kubernetes setup, providing extra capabilities while maintaining the core functionality of Kubernetes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Kubernetes Plugins?
&lt;/h2&gt;

&lt;p&gt;Plugins can help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automate repetitive tasks: Speed up your workflows by automating common actions.&lt;/li&gt;
&lt;li&gt;Enhance security: Integrate security tools to better manage and monitor your clusters.&lt;/li&gt;
&lt;li&gt;Simplify management: Make cluster management easier with tools that provide additional insights or simplify complex commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing Plugins in Kubernetes
&lt;/h2&gt;

&lt;p&gt;To install plugins in Kubernetes, follow these steps:&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up Your Environment
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ensure you have the following prerequisites:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kubectl: The command-line tool for Kubernetes.&lt;/li&gt;
&lt;li&gt;krew: A package manager for kubectl plugins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Install Krew
&lt;/h2&gt;

&lt;p&gt;Krew is a plugin manager for kubectl that makes it easy to discover and install plugins. Follow these steps to install Krew:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download Krew:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(
  set -x; cd "$(mktemp -d)" &amp;amp;&amp;amp;
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &amp;amp;&amp;amp;
  ARCH="$(uname -m | sed 's/x86_64/amd64/;s/arm.*/arm/;s/aarch64$/arm64/')" &amp;amp;&amp;amp;
  KREW="krew-${OS}_${ARCH}" &amp;amp;&amp;amp;
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &amp;amp;&amp;amp;
  tar zxvf "${KREW}.tar.gz" &amp;amp;&amp;amp;
  ./"${KREW}" install krew
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Add Krew to your PATH:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verify the installation:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see a list of Krew commands if the installation was successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Install Plugins Using Krew
&lt;/h2&gt;

&lt;p&gt;With Krew installed, you can now search for and install plugins. Here’s how:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for plugins:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command lists all available plugins.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install a plugin:
For example, to install the kubectl neat plugin, which cleans up Kubernetes manifests to make them more readable, run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install neat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Use the installed plugin:
You can now use the plugin by prefixing the command with kubectl. For example:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl neat -f my-pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will clean up the my-pod.yaml file to make it more readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Kubernetes Plugins to Get Started
&lt;/h2&gt;

&lt;p&gt;Here are some essential plugins that every Kubernetes user should consider installing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;kubectl-neat
Purpose: Simplifies Kubernetes manifests by removing clutter, such as managed fields and default values, making them easier to read and understand.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install neat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pod my-pod -o yaml | kubectl neat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;kubectl-ctx and kubectl-ns
Purpose: Quickly switch between different Kubernetes contexts and namespaces. These plugins help manage multiple clusters and namespaces efficiently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install ctx
kubectl krew install ns
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl ctx    # List all contexts
kubectl ctx my-context    # Switch to 'my-context'
kubectl ns my-namespace   # Switch to 'my-namespace'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;kubectl-who-can
Purpose: Helps identify which users or service accounts have permission to perform specific actions in the cluster. This is particularly useful for debugging RBAC issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install who-can
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl who-can create pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;kubectl-view-secret
Purpose: It makes it easier to view Kubernetes secrets. The plugin decodes base64-encoded secrets in a human-readable format.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install view-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl view-secret my-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;kubectl-replace-image
Purpose: Allows for easy replacement of container images in a running Kubernetes Deployment. This is useful when you want to quickly change the image of a deployment without editing the manifest file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl krew install replace-image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl replace-image deployment/my-deployment container-name=new-image:tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Plugins are a powerful way to extend Kubernetes' functionality and streamline workflows. Using Krew to install and manage plugins, you can easily add new features to your Kubernetes toolkit and improve your cluster management capabilities. Start with the essential plugins mentioned in this guide and explore the extensive list of available plugins to find tools that best suit your needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share Your Experience&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Have you used any other Kubernetes plugins that you find indispensable? Share your experiences and recommendations in the comments below!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>cloudnative</category>
      <category>kubernetesplugins</category>
    </item>
    <item>
      <title>Deploying a Microservices Application Using Helm on Kubernetes</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Sun, 28 Jul 2024 08:05:40 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/deploying-a-microservices-application-using-helm-on-kubernetes-3h22</link>
      <guid>https://dev.to/syedasadrazadevops/deploying-a-microservices-application-using-helm-on-kubernetes-3h22</guid>
      <description>&lt;p&gt;Helm, often described as the package manager for Kubernetes, simplifies the deployment and management of applications within Kubernetes clusters. This guide will walk you through deploying a microservices application using Helm, illustrating key concepts such as creating Helm charts, managing dependencies, and deploying a multi-service application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we begin, ensure you have the following tools installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kubectl&lt;/strong&gt;: Kubernetes command-line tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;minikube&lt;/strong&gt;: Local Kubernetes cluster for development and testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt;: For building container images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Helm&lt;/strong&gt;: Kubernetes package manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;We will deploy a sample application consisting of two microservices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Service&lt;/strong&gt;: A simple web application that communicates with the backend service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend Service&lt;/strong&gt;: An API that returns a message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We'll use Helm to package these services into charts, manage their dependencies, and deploy them to a Kubernetes cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Build Docker Images
&lt;/h2&gt;

&lt;p&gt;First, we need to create Docker images for our frontend and backend services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend Service&lt;/strong&gt;&lt;br&gt;
Create a simple &lt;code&gt;Node.js&lt;/code&gt; backend service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// backend/server.js
const express = require('express');
const app = express();

app.get('/api/message', (req, res) =&amp;gt; {
    res.json({ message: 'Hello from the backend!' });
});

const port = 3000;
app.listen(port, () =&amp;gt; {
    console.log(`Backend service running on port ${port}`);
});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a &lt;code&gt;Dockerfile&lt;/code&gt; for the backend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# backend/Dockerfile
FROM node:14
WORKDIR /app
COPY server.js .
RUN npm install express
EXPOSE 3000
CMD ["node", "server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Frontend Service&lt;/strong&gt;&lt;br&gt;
Create a simple HTML file for the frontend service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- frontend/index.html --&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;title&amp;gt;Frontend Service&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;Frontend Service&amp;lt;/h1&amp;gt;
    &amp;lt;div id="message"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
        fetch('/api/message')
            .then(response =&amp;gt; response.json())
            .then(data =&amp;gt; {
                document.getElementById('message').innerText = data.message;
            });
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a Dockerfile for the frontend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# frontend/Dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Build Docker Images&lt;/strong&gt;&lt;br&gt;
Navigate to each service directory and build the &lt;code&gt;Docker images&lt;/code&gt;:&lt;br&gt;
&lt;em&gt;In backend directory&lt;/em&gt;&lt;br&gt;
&lt;code&gt;docker build -t backend-service&lt;/code&gt;&lt;br&gt;
&lt;em&gt;In frontend directory&lt;/em&gt;&lt;br&gt;
&lt;code&gt;docker build -t frontend-service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Create Helm Charts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Create a Helm Chart for the Backend Service&lt;/strong&gt;&lt;br&gt;
Navigate to a working directory and create a new Helm chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm create backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command generates a basic Helm chart structure. Modify the &lt;code&gt;backend/templates/deployment.yaml&lt;/code&gt; file to suit our backend service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: {{ .Release.Name }}-backend
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-backend
    spec:
      containers:
      - name: backend
        image: backend-service
        ports:
        - containerPort: 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modify the &lt;code&gt;backend/templates/service.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-backend
spec:
  selector:
    app: {{ .Release.Name }}-backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a Helm Chart for the Frontend Service
&lt;/h2&gt;

&lt;p&gt;Similarly, create a Helm chart for the frontend service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm create frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modify the &lt;code&gt;frontend/templates/deployment.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-frontend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: {{ .Release.Name }}-frontend
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-frontend
    spec:
      containers:
      - name: frontend
        image: frontend-service
        ports:
        - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modify the &lt;code&gt;frontend/templates/service.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-frontend
spec:
  selector:
    app: {{ .Release.Name }}-frontend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Deploy Using Helm
&lt;/h2&gt;

&lt;p&gt;Start your Minikube cluster:&lt;br&gt;
&lt;code&gt;minikube start&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy the Backend Service&lt;/strong&gt;&lt;br&gt;
Navigate to the backend directory and install the chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install backend ./backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deploy the Frontend Service&lt;/strong&gt;&lt;br&gt;
Navigate to the frontend directory and install the chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install frontend ./frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Set Up Ingress
&lt;/h2&gt;

&lt;p&gt;To expose the frontend service externally, we will set up an ingress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable Ingress in Minikube&lt;/strong&gt;&lt;br&gt;
Enable the ingress addon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube addons enable ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create Ingress Resource&lt;/strong&gt;&lt;br&gt;
Create an &lt;code&gt;ingress&lt;/code&gt; resource to route traffic to the frontend service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: frontend-ingress
spec:
  rules:
  - host: frontend.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend
            port:
              number: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the ingress configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add an entry to your &lt;code&gt;/etc/hosts&lt;/code&gt; file to map &lt;code&gt;frontend.local&lt;/code&gt; to the Minikube IP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "$(minikube ip) frontend.local" | sudo tee -a /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Verify the Deployment
&lt;/h2&gt;

&lt;p&gt;Access the frontend service in your browser by navigating to &lt;code&gt;http://frontend.local&lt;/code&gt;. You should see the frontend page displaying the message fetched from the backend service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this guide, we've deployed a microservices application using Helm on Kubernetes, demonstrating intermediate concepts like creating Helm charts, managing dependencies, and setting up ingress. Helm simplifies the deployment and management of Kubernetes applications, making it a powerful tool for cloud-native development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;By sharing this tutorial, you're providing valuable technical content to the CNCF community, helping others understand and leverage Helm for their Kubernetes deployments.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>helm</category>
      <category>microservices</category>
      <category>kubernetes</category>
      <category>k8s</category>
    </item>
    <item>
      <title>Deploy Teleport on a Linux ubuntu Server</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Mon, 12 Feb 2024 08:13:18 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/deploy-teleport-on-a-linux-ubuntu-server-2he7</link>
      <guid>https://dev.to/syedasadrazadevops/deploy-teleport-on-a-linux-ubuntu-server-2he7</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykve23afyblsfsx1rkmd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykve23afyblsfsx1rkmd.jpg" alt="Image description"&gt;&lt;/a&gt;## Deploying Teleport on a Linux Ubuntu Server: A Step-by-Step Guide&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Teleport is an open-source platform designed to secure and manage access to infrastructure. In this guide, we'll walk through the process of deploying Teleport on a Linux Ubuntu Server. By the end of this tutorial, you'll have a robust access management solution for your infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;br&gt;
Before we begin, make sure you have the following:&lt;/p&gt;

&lt;p&gt;A Linux Ubuntu Server (18.04 LTS or later).&lt;br&gt;
SSH access to your server with sudo privileges.&lt;br&gt;
A domain or subdomain pointing to your server's IP address.&lt;br&gt;
Step 1: Update and Upgrade Packages&lt;br&gt;
Ensure that your server is up to date by running the following commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Install Docker and Docker Compose&lt;/strong&gt;&lt;br&gt;
Teleport relies on Docker, so let's install it along with Docker Compose:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;docker.io docker-compose


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Start and enable the Docker service:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;docker


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create Teleport Configuration&lt;/strong&gt;&lt;br&gt;
Create a directory to store your Teleport configuration:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/teleport


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now, create a teleport.yaml configuration file. You can use a text editor of your choice:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/teleport/teleport.yaml


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Copy and paste the following example, replacing  with your actual domain:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;


&lt;span class="na"&gt;teleport&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;nodename&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;teleport-node&lt;/span&gt;
  &lt;span class="na"&gt;data_dir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/var/lib/teleport&lt;/span&gt;
  &lt;span class="na"&gt;ca_pin&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
&lt;span class="na"&gt;auth_service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yes"&lt;/span&gt;
  &lt;span class="na"&gt;listen_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0:3025&lt;/span&gt;
  &lt;span class="na"&gt;tokens&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;your_secure_token&amp;gt;"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;cluster_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;your_cluster_name&amp;gt;"&lt;/span&gt;
  &lt;span class="na"&gt;authentication&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;oidc_connectors&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;
&lt;span class="na"&gt;ssh_service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yes"&lt;/span&gt;
  &lt;span class="na"&gt;listen_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0:3022&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prod"&lt;/span&gt;
&lt;span class="na"&gt;proxy_service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yes"&lt;/span&gt;
  &lt;span class="na"&gt;listen_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0:3023&lt;/span&gt;
  &lt;span class="na"&gt;web_listen_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0:3080&lt;/span&gt;
  &lt;span class="na"&gt;tunnel_listen_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0:3024&lt;/span&gt;
  &lt;span class="na"&gt;public_addr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;your_domain&amp;gt;:3080"&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Save and exit the text editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Deploy Teleport&lt;/strong&gt;&lt;br&gt;
Use Docker Compose to deploy Teleport:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Teleport should now be running on your server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Access the Teleport Dashboard&lt;/strong&gt;&lt;br&gt;
Open your web browser and navigate to https://:3080. You'll be prompted to log in with the token specified in the configuration file.&lt;/p&gt;

&lt;p&gt;Congratulations! You've successfully deployed Teleport on your Linux Ubuntu Server. This powerful tool provides secure access to your infrastructure, making it easier to manage and control user permissions.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo curl https://apt.releases.teleport.dev/gpg \
-o /usr/share/keyrings/teleport-archive-keyring.asc
source /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.asc] \
https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} stable/v12" \
| sudo tee /etc/apt/sources.list.d/teleport.list &amp;gt; /dev/null

sudo apt-get update
sudo apt-get install teleport


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>teleport</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Chatwoot Production deployment on Ubuntu</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Wed, 20 Sep 2023 12:11:29 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/chatwoot-production-deployment-on-ubuntu-1le7</link>
      <guid>https://dev.to/syedasadrazadevops/chatwoot-production-deployment-on-ubuntu-1le7</guid>
      <description>&lt;p&gt;&lt;a href="https://computingforgeeks.com/install-chatwoot-on-ubuntu-with-lets-encrypt-ssl/?expand_article=1"&gt;https://computingforgeeks.com/install-chatwoot-on-ubuntu-with-lets-encrypt-ssl/?expand_article=1&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deploying a Multi-Video Call Project with Node.js WebRTC Signaling Server: using STUN TURN on Ubuntu Server</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Mon, 28 Aug 2023 09:53:19 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/deploying-a-multi-video-call-project-using-nodejs-on-ubuntu-using-stun-and-turn-n9i</link>
      <guid>https://dev.to/syedasadrazadevops/deploying-a-multi-video-call-project-using-nodejs-on-ubuntu-using-stun-and-turn-n9i</guid>
      <description>&lt;p&gt;Deploying a Multi-Party Video Call Project with Node.js WebRTC Signaling Server: Implementing STUN and TURN on Ubuntu Server&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;WebRTC (Web Real-Time Communication) has revolutionized how we enable real-time peer-to-peer communication directly within web applications. In this guide, we'll walk through the process of deploying a multi-party video call project utilizing a Node.js WebRTC signaling server. We'll also explore the implementation of STUN and TURN servers to enhance connectivity in challenging network environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-Step Setup
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Server Setup&lt;/strong&gt;&lt;br&gt;
Obtain an Ubuntu server, either from a cloud provider (like AWS, Azure, or DigitalOcean) or a local machine.&lt;/p&gt;

&lt;p&gt;Install Node.js and npm (Node.js package manager) on the server using the following commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt update
sudo apt install nodejs npm


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;2. Project Setup: WebRTC Signaling Server&lt;/strong&gt;&lt;br&gt;
Clone your Node.js project repository onto the server using Git.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

git clone https://github.com/aljanabim/simple_webrtc_signaling_server.git


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Navigate to the project directory and install project dependencies using npm:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

cd your-project-directory
npm install


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Configure your server to run the signaling server using Nginx:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

server {
    listen 80;
    server_name video-call.myweb.com;

    location / {
        proxy_pass http://localhost:3030;
        # Other proxy settings
    }

    add_header Permissions-Policy "geolocation 'self'; camera 'self'; speaker 'self';";
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3. Run the Application&lt;/strong&gt;&lt;br&gt;
Use a process manager like PM2 to start and manage your Node.js application:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

pm2 start app.js


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Peers interact with a signaling server to share the handshakes and start a direct peer-to-peer transmission.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7sbk9877fgcmjnbt2q5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7sbk9877fgcmjnbt2q5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Implementing STUN and TURN Servers&lt;/strong&gt;&lt;br&gt;
Set up your own or use public STUN and TURN servers for network traversal and media relaying.&lt;/p&gt;

&lt;p&gt;That's the point when we need a STUN server. It allows to detect peers public network addresses and establish a peer-to-peer connection behind a NAT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3xo1qsklu1azknqnex7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3xo1qsklu1azknqnex7.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A way to solve this problem is to use a TURN server. It has a public address, so both peers can interact with TURN server even behind firewalls. So when no direct peer-to-peer connection available, TURN server transmits audio/video streams of both peers just like a common media server. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc9egqcpa065jmo0er5rv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc9egqcpa065jmo0er5rv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will be using coturn, free open-source implementation of TURN and STUN Server, evolved from rfc5766-turn-server project with additional new advanced features.&lt;/p&gt;

&lt;p&gt;Install and configure the coturn server for TURN:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt-get -y update
sudo apt-get upgrade
sudo apt-get install coturn
sudo systemctl stop coturn


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Configure coturn's settings in /etc/turnserver.conf and start the service:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo nano /etc/default/coturn


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;and remove the # before TURNSERVER_ENABLED.&lt;br&gt;
Let's work on etc/turnserver.conf&lt;/p&gt;

&lt;p&gt;First, let's save the current configuration, in case we want to look through the structure later.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo  mv /etc/turnserver.conf /etc/turnserver.config.backup
# Now paste the following to /etc/turnserver.conf
sudo nano /etc/turnserver.config


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

# /etc/turnserver.conf
# STUN server port is 3478 for UDP and TCP, and 5349 for TLS.
# Allow connection on the UDP port 3478
listening-port=3478
# and 5349 for TLS (secure)
tls-listening-port=5349

# Require authentication
fingerprint
lt-cred-mech

# We will use the longterm authentication mechanism, but if
# you want to use the auth-secret mechanism, comment lt-cred-mech and 
# uncomment use-auth-secret
# Check: https://github.com/coturn/coturn/issues/180#issuecomment-364363272
#The static auth secret needs to be changed, in this tutorial
# we'll generate a token using OpenSSL
# use-auth-secret
# static-auth-secret=replace-this-secret
# ----
# If you decide to use use-auth-secret, After saving the changes, change the auth-secret using the following command:
# sed -i "s/replace-this-secret/$(openssl rand -hex 32)/" /etc/turnserver.conf
# This will replace the replace-this-secret text on the file with the generated token using openssl. 

# Specify the server name and the realm that will be used
# if is your first time configuring, just use the domain as name
server-name=myweb.com
realm=myweb.com

# Important: 
# Create a test user if you want
# You can remove this user after testing
user=admin:mypassword

total-quota=100
stale-nonce=600

# Path to the SSL certificate and private key. In this example we will use
# the letsencrypt generated certificate files.
cert=/etc/letsencrypt/live/stun.myweb.com/cert.pem
pkey=/etc/letsencrypt/live/stun.myweb.com/privkey.pem

# Specify the allowed OpenSSL cipher list for TLS/DTLS connections
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"

# Specify the process user and group
proc-user=turnserver
proc-group=turnserver


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Remember to Enable port &lt;strong&gt;3478&lt;/strong&gt; and &lt;strong&gt;5349&lt;/strong&gt; for TCP and UDP incoming connection.&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo nano /etc/turnserver.conf
sudo systemctl start coturn


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;5. Web Server Setup&lt;/strong&gt;&lt;br&gt;
Choose a web server Nginx to serve your Node.js application.&lt;br&gt;
Configure SSL certificates for secure connections (use Let's Encrypt for automatic SSL certificate generation).&lt;/p&gt;

&lt;p&gt;We need SSL certificate to configure out TURN server, so let's generate the SSL certificate using Let's Encrypt.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d stun-call.myweb.com -d turn-call.myweb.com


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

server {
    listen 443 ssl;
    server_name stun.myweb.com;

    ssl_certificate /etc/letsencrypt/live/stun.myweb.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/stun.myweb.com/privkey.pem;

    # Add other SSL settings here if needed

    location / {
        # Your existing configuration for handling requests
    }
}



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;6. Testing STUN and TURN Servers&lt;/strong&gt;&lt;br&gt;
Use the Trickle ICE tool to test your STUN and TURN servers.&lt;br&gt;
Ensure that STUN server works with candidates of type "srflx" and TURN server with candidates of type "relay".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/" rel="noopener noreferrer"&gt;https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Deploying a multi-party video call project with a Node.js WebRTC signaling server is a powerful way to enable real-time communication within web applications. By implementing STUN and TURN servers, you enhance connectivity even in challenging network environments. Remember to allocate sufficient resources for TURN servers due to their higher processing and bandwidth requirements.&lt;/p&gt;

&lt;p&gt;WebRTC continues to transform the way we communicate online, and with these steps, you're well on your way to creating seamless and robust real-time communication experiences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tech.bloggernepal.com/2021/05/setup-stun-and-turn-server-on-ubuntu.html" rel="noopener noreferrer"&gt;https://tech.bloggernepal.com/2021/05/setup-stun-and-turn-server-on-ubuntu.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>videocall</category>
      <category>stun</category>
      <category>webrtc</category>
      <category>turn</category>
    </item>
    <item>
      <title>How To Deploy Jitsi Meet(video conference) on Ubuntu</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Sun, 02 Apr 2023 10:20:06 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/how-to-deploy-jitsi-meet-on-ubuntu-ph9</link>
      <guid>https://dev.to/syedasadrazadevops/how-to-deploy-jitsi-meet-on-ubuntu-ph9</guid>
      <description>&lt;h4&gt;
  
  
  &lt;strong&gt;Jitsi Meet is an open source video-conferencing application based on WebRTC.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;A Jitsi Meet server provides multi-person video conference rooms that you can access using nothing more than your browser and provides comparable functionality to a Zoom or Skype conference call.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — System Hostname
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo hostnamectl set-hostname jitsi.my_domain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that this was successful by running the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hostname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, you will set a local mapping of the server’s hostname.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nano /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;add this line&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;127.0.0.1 &amp;lt;jitsi.my_domain.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2 — (Before Install) Must Configure Prosody XMPP Server
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ERROR:&lt;/strong&gt; I got an error in the jitsi-meet install.&lt;br&gt;
&lt;code&gt;Jitsi-meet : Depends: jitsi-meet-prosody (= 1.0.6776-1) but 1.0.6644-1 is to be installed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; &lt;code&gt;Add the Prosody package repository&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To install the latest version, add the Prosody repository with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'deb https://packages.prosody.im/debian focal main' | sudo tee /etc/apt/sources.list.d/prosody.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, run the following command to download and import the Prosody public key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, update the local package index. Then, install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install prosody
sudo apt install libunbound-dev liblua5.3-dev
luarocks install luaunbound
systemctl status prosody
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3 — Install Jitsi
&lt;/h3&gt;

&lt;p&gt;First, download the Jitsi GPG key with the wget downloading utility:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.jitsi.org/jitsi-key.gpg.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, add the GPG key you downloaded to apt’s keyring using the apt-key utility:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-key add jitsi-key.gpg.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you will add the Jitsi repository to your server by creating a new sources file that contains the Jitsi repository. Open and create the new file:&lt;br&gt;
&lt;code&gt;sudo nano /etc/apt/sources.list.d/jitsi-stable.list&lt;/code&gt;. Add this line to the file for the Jitsi repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deb https://download.jitsi.org stable/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then install the jitsi-meet package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install jitsi-meet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During the installation of jitsi-meet you will be prompted to enter the domain name.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslsqtbl7xwnsubx679wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslsqtbl7xwnsubx679wg.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;after that select let's Encrypt SSL. (et's Encrypt is a non-profit certificate authority) or select &lt;strong&gt;no&lt;/strong&gt; if you don't need to jitsi-web-cloud in next option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yv5so8zv4mrv9cpcc0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yv5so8zv4mrv9cpcc0e.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Your Jitsi Meet server is now set up&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>jitsi</category>
      <category>meet</category>
      <category>jitsimeet</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to force nginx webserver to reload client's browser for new release ?</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 16 Feb 2023 09:02:41 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/how-to-force-nginx-webserver-to-reload-clients-browser-for-new-release--17op</link>
      <guid>https://dev.to/syedasadrazadevops/how-to-force-nginx-webserver-to-reload-clients-browser-for-new-release--17op</guid>
      <description>&lt;p&gt;During a server migration a new nginx configuration was missing cache conrol directives. Hence, we ended up with a cached index.html which is very bad for our SPA that is not refreshed anymore if we deploy new code. We need the index.html to not be cached.&lt;/p&gt;

&lt;p&gt;To configure Nginx to not reload a website from the cache when a client user hits the website, &lt;strong&gt;you can use the proxy_cache_bypass directive.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    root /var/www/public_html/react/build;
    index index.html index.htm index.nginx-debian.html;
    server_name myapp.com www.myapp.com;

 location / {
        try_files $uri  /index.html;

    proxy_cache my_cache;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 3;
    proxy_cache_valid 200 60m;
    proxy_cache_valid 404 1m;
    proxy_cache_valid any 0;

    add_header Cache-Control "no-store, no-cache, must-revalidate";
    add_header Cache-Control "max-age=31536000, public";
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Using Google Cloud Platform for DevOps: Tools and Services for Improved Software Delivery</title>
      <dc:creator>SyedAsadRazaDevops</dc:creator>
      <pubDate>Thu, 12 Jan 2023 13:24:47 +0000</pubDate>
      <link>https://dev.to/syedasadrazadevops/using-google-cloud-platform-for-devops-tools-and-services-for-improved-software-delivery-1pdj</link>
      <guid>https://dev.to/syedasadrazadevops/using-google-cloud-platform-for-devops-tools-and-services-for-improved-software-delivery-1pdj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kk7jtas3qlgtuwd515o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kk7jtas3qlgtuwd515o.png" alt="intro" width="701" height="175"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Google Cloud Platform (GCP) is a cloud computing service offered by Google that provides a variety of tools and services for software development, including those for devops.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps is a practice that aims to improve the collaboration and communication between development and operations teams in order to increase the speed and quality of software delivery. GCP offers a number of tools and services that can be used to support devops practices, including:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadai8w3kav70s4lynqxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadai8w3kav70s4lynqxm.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Containerization:
&lt;/h3&gt;

&lt;p&gt;GCP provides Kubernetes Engine, a managed service for running containerized applications. This allows developers to easily deploy and manage their applications in a consistent and portable way, which can help to reduce the complexity of operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Integration and Continuous Deployment (CI/CD):
&lt;/h3&gt;

&lt;p&gt;GCP offers Cloud Build, a fully-managed service for building, testing, and deploying code. This service can be integrated with other GCP services, such as GitHub, to automate the process of building, testing, and deploying code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and logging:
&lt;/h3&gt;

&lt;p&gt;GCP provides Stackdriver, a service for monitoring and logging the performance and health of applications. This service can be used to track the performance of applications and identify and troubleshoot issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure as Code:
&lt;/h3&gt;

&lt;p&gt;GCP provides Terraform and Cloud Deployment Manager, that allows to manage and provision resources through code, this provides a way to automate the provisioning and management of GCP resources, which can help to reduce the time and effort required to set up and maintain infrastructure.&lt;/p&gt;

&lt;p&gt;In addition to these services, GCP also provides a variety of other tools and services that can be used to support devops practices, such as load balancing, auto-scaling, and error reporting. With the help of GCP, devops teams can more easily and efficiently manage the deployment and maintenance of software applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In summary&lt;/strong&gt;, GCP offers a variety of tools and services that can be used to support devops practices, including containerization, CI/CD, monitoring and logging, and infrastructure as code. These tools and services can help to increase the speed and quality of software delivery, and make it easier for devops teams to manage the deployment and maintenance of software applications.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
