<?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: Kenta Kozuka</title>
    <description>The latest articles on DEV Community by Kenta Kozuka (@kentakozuka).</description>
    <link>https://dev.to/kentakozuka</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%2F1089815%2Fc80566f0-6fac-48d2-a3ca-429cc1145e25.JPG</url>
      <title>DEV Community: Kenta Kozuka</title>
      <link>https://dev.to/kentakozuka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kentakozuka"/>
    <language>en</language>
    <item>
      <title>PipeCD v0.44.0 was released🎉</title>
      <dc:creator>Kenta Kozuka</dc:creator>
      <pubDate>Tue, 27 Jun 2023 00:17:26 +0000</pubDate>
      <link>https://dev.to/kentakozuka/pipecd-v0440-was-released-2j3p</link>
      <guid>https://dev.to/kentakozuka/pipecd-v0440-was-released-2j3p</guid>
      <description>&lt;h2&gt;
  
  
  tl;dr
&lt;/h2&gt;

&lt;p&gt;PipeCD v0.44.0, the latest version of PipeCD, was released on June 24, 2023. This article highlights the New Features and Notable Changes from the Release Notes.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Custom Sync Stage
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pipecd.dev/docs/user-guide/managing-application/customizing-deployment/custom-sync/"&gt;Custom Sync&lt;/a&gt; allows executing arbitrary shell commands as a step in the deployment process. This feature is currently in alpha and only available for AWS Lambda.&lt;/p&gt;

&lt;p&gt;To deploy Lambda using the SAM (Serverless Application Model) command, you can configure the pipeline as follows:&lt;br&gt;
&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;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pipecd.dev/v1beta1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LambdaApp&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sam-simple&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="s"&gt;example&lt;/span&gt;
    &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;abc&lt;/span&gt;
  &lt;span class="na"&gt;planner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Must add this configuration to force use CUSTOM_SYNC stage.&lt;/span&gt;
    &lt;span class="na"&gt;alwaysUsePipeline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;pipeline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;stages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CUSTOM_SYNC&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;envs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;AWS_PROFILE&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sample"&lt;/span&gt;
          &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;cd sam-app&lt;/span&gt;
            &lt;span class="s"&gt;sam build&lt;/span&gt;
            &lt;span class="s"&gt;echo y | sam deploy --profile $AWS_PROFILE  &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please note that the commands executed in Custom Sync assume that they are already available in the execution environment of piped. Therefore, users need to create custom images instead of using the officially provided piped. Discussions are currently underway &lt;a href="https://github.com/pipe-cd/pipecd/discussions/4380"&gt;here&lt;/a&gt; on how to provide custom images while minimizing the user's burden. Your input is welcome if you are interested.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manifest Attachment
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pipecd.dev/docs/user-guide/managing-application/manifest-attachment/"&gt;Manifest Attachment&lt;/a&gt; enables using functionalities similar to Kubernetes ConfigMap in non-Kubernetes applications.&lt;/p&gt;

&lt;p&gt;Let's take ECS as an example. Create a &lt;code&gt;config.yaml&lt;/code&gt; as follows:&lt;br&gt;
&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;mysql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;rootPassword&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;test"&lt;/span&gt;
  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pipecd"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the &lt;code&gt;app.pipecd.yaml&lt;/code&gt; file, configure it like this:&lt;br&gt;
&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;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pipecd.dev/v1beta1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ECSApp&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;secret-management&lt;/span&gt;
    &lt;span class="s"&gt;...&lt;/span&gt;
  &lt;span class="na"&gt;attachment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;sources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;config.yaml&lt;/span&gt;
    &lt;span class="na"&gt;targets&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;taskdef.yaml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To reference the content of &lt;code&gt;config.yaml&lt;/code&gt; in &lt;code&gt;taskdef.yaml&lt;/code&gt;, use the following method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;span class="na"&gt;containerDefinitions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;.attachment.config&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}"&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx:1&lt;/span&gt;
    &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
    &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;web&lt;/span&gt;
&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While this feature can be used independently, it can be more securely utilized when combined with &lt;a href="https://pipecd.dev/docs/user-guide/managing-application/secret-management/"&gt;Secret Management&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terraform v1.5.0 Import Block Support
&lt;/h3&gt;

&lt;p&gt;Support for the &lt;a href="https://www.hashicorp.com/blog/terraform-1-5-brings-config-driven-import-and-checks"&gt;import block&lt;/a&gt; introduced in Terraform v1.5.0 is now available. When using Terraform v1.5.0 or later versions, the &lt;code&gt;import&lt;/code&gt; operation will be displayed in addition to &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;change&lt;/code&gt;, and &lt;code&gt;destroy&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment Metrics
&lt;/h3&gt;

&lt;p&gt;Prometheus metrics for each deployment have been added, allowing detailed information about deployments to be retrieved. Examples of metrics&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Number of currently RUNNING deployments
count(count by (deployment) (deployment_status{status="DEPLOYMENT_RUNNING"}))

// Detect if there are any deployments in RUNNING status for over 1 hour
sum_over_time(deployment_status{status="DEPLOYMENT_RUNNING"}[1h:1m]) &amp;gt;= 60 and deployment_status{status="DEPLOYMENT_RUNNING"} == 1

// Number of completed deployments in the last 24 hours
sum(floor(increase(deployment_status{pipecd_component=\"piped\",status=~\"DEPLOYMENT_CANCELLED|DEPLOYMENT_SUCCESS|DEPLOYMENT_FAILURE\"}[24h])))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These metrics are collected by piped and can be obtained from the piped's &lt;a href="https://pipecd.dev/docs-dev/user-guide/managing-controlplane/metrics/"&gt;admin server&lt;/a&gt;. Therefore, teams using piped can now set up alerts for scenarios such as detecting deployments that do not finish for a long time.&lt;/p&gt;

&lt;h3&gt;
  
  
  kubectl Server-Side Apply Support
&lt;/h3&gt;

&lt;p&gt;Support for &lt;a href="https://kubernetes.io/docs/reference/using-api/server-side-apply/"&gt;Server-Side Apply&lt;/a&gt;, which became GA in Kubernetes v1.22, has been added. By adding the &lt;code&gt;pipecd.dev/sync-by-replace&lt;/code&gt; annotation to a k8s workload, piped will add the &lt;code&gt;--server-side&lt;/code&gt; flag to &lt;code&gt;kubectl apply&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notable Changes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Display of Platform Provider in Deployment Details Page
&lt;/h3&gt;

&lt;p&gt;The Deployment details page now displays the Platform provider.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UW8RemWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/zenn-user-upload/f2b4f77ee525-20230627.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UW8RemWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://storage.googleapis.com/zenn-user-upload/f2b4f77ee525-20230627.png" alt="Platform provider in Deployment details" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Slack API Support
&lt;/h3&gt;

&lt;p&gt;Slack integration now supports Slack API in addition to webhooks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lambda Architecture Support
&lt;/h3&gt;

&lt;p&gt;AWS Lambda &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html"&gt;architectures&lt;/a&gt; can now be specified.&lt;/p&gt;

&lt;h3&gt;
  
  
  Support for Log Level Configuration
&lt;/h3&gt;

&lt;p&gt;Log levels can now be configured for both pipecd and piped:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pipe-cd/pipecd/blob/743b8aa2e4ca12cf310c06d3476c0f43923b0e42/manifests/pipecd/values.yaml#L41"&gt;pipecd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pipe-cd/pipecd/blob/743b8aa2e4ca12cf310c06d3476c0f43923b0e42/manifests/piped/values.yaml#L11"&gt;piped&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ECS EnableExecuteCommand Support
&lt;/h3&gt;

&lt;p&gt;Support for ECS &lt;code&gt;enableExecuteCommand&lt;/code&gt; has been added.&lt;/p&gt;

</description>
      <category>pipecd</category>
      <category>cicd</category>
      <category>gitops</category>
    </item>
  </channel>
</rss>
