<?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: KHAN</title>
    <description>The latest articles on DEV Community by KHAN (@khan_97).</description>
    <link>https://dev.to/khan_97</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176604%2F2f38acce-9a30-44db-a3c0-88a052a1f169.png</url>
      <title>DEV Community: KHAN</title>
      <link>https://dev.to/khan_97</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khan_97"/>
    <language>en</language>
    <item>
      <title>Rendering Helm Scripts Locally woth Mirror</title>
      <dc:creator>KHAN</dc:creator>
      <pubDate>Sun, 11 Oct 2026 08:09:46 +0000</pubDate>
      <link>https://dev.to/khan_97/rendering-helm-scripts-locally-woth-mirror-2fpi</link>
      <guid>https://dev.to/khan_97/rendering-helm-scripts-locally-woth-mirror-2fpi</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Values for the cert-manager Google CAS issuer chart.&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="c1"&gt;# Only the ServiceAccount ANNOTATION is set, not its name: the chart derives the&lt;/span&gt;
&lt;span class="c1"&gt;# KSA name from the release name and its schema rejects serviceAccount.name.&lt;/span&gt;
&lt;span class="c1"&gt;# That annotation is what binds the pod to the Google service account through&lt;/span&gt;
&lt;span class="c1"&gt;# Workload Identity - the matching binding is in ../../cas.tf.&lt;/span&gt;
&lt;span class="na"&gt;serviceAccount&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;annotations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;iam.gke.io/gcp-service-account&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sa-google-cas-issuer@saudi-dev-gke-0.iam.gserviceaccount.com&lt;/span&gt;

&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-google-cas-issuer&lt;/span&gt;

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Values for the cert-manager chart. Each of these is load-bearing for a reason&lt;/span&gt;
&lt;span class="c1"&gt;# recorded in FAST-DEPLOYMENT-LOG.md - none is cosmetic.&lt;/span&gt;

&lt;span class="c1"&gt;# The CAS issuer's custom resources need cert-manager's CRDs, so they ship with&lt;/span&gt;
&lt;span class="c1"&gt;# the chart rather than out of band.&lt;/span&gt;
&lt;span class="na"&gt;crds&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="kc"&gt;true&lt;/span&gt;

&lt;span class="c1"&gt;# REQUIRED ON AUTOPILOT. cert-manager puts its leader-election lease in&lt;/span&gt;
&lt;span class="c1"&gt;# kube-system by default and Autopilot refuses writes there:&lt;/span&gt;
&lt;span class="c1"&gt;#   leases.coordination.k8s.io is forbidden ... namespace "kube-system"&lt;/span&gt;
&lt;span class="c1"&gt;#   GKE Warden authz [denied by managed-namespaces-limitation]&lt;/span&gt;
&lt;span class="c1"&gt;# Without this the controller and cainjector run but never win leadership, so&lt;/span&gt;
&lt;span class="c1"&gt;# cainjector never injects the CA bundle into the webhook configuration and every&lt;/span&gt;
&lt;span class="c1"&gt;# Certificate fails with "x509: certificate signed by unknown authority".&lt;/span&gt;
&lt;span class="c1"&gt;# The pods still report Running, so no health check catches it.&lt;/span&gt;
&lt;span class="na"&gt;global&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;leaderElection&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cert-manager&lt;/span&gt;

&lt;span class="c1"&gt;# Image repositories. The chart defaults EVERY component to quay.io, so each one&lt;/span&gt;
&lt;span class="c1"&gt;# is redirected individually - overriding the chart source alone would leave the&lt;/span&gt;
&lt;span class="c1"&gt;# pods still pulling externally while appearing migrated.&lt;/span&gt;
&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-controller&lt;/span&gt;
&lt;span class="na"&gt;webhook&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-webhook&lt;/span&gt;
&lt;span class="na"&gt;cainjector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-cainjector&lt;/span&gt;
&lt;span class="na"&gt;acmesolver&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-acmesolver&lt;/span&gt;

&lt;span class="na"&gt;startupapicheck&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# startupapicheck is a post-install Helm HOOK JOB that calls the cert-manager&lt;/span&gt;
  &lt;span class="c1"&gt;# API to prove it answers. On Autopilot it reliably fails with&lt;/span&gt;
  &lt;span class="c1"&gt;# BackoffLimitExceeded - the job pod waits for Autopilot to provision capacity,&lt;/span&gt;
  &lt;span class="c1"&gt;# which outlives the job's own deadline. cert-manager itself comes up fine.&lt;/span&gt;
  &lt;span class="c1"&gt;# Under Helm this marked the whole release failed; under Config Sync a hook job&lt;/span&gt;
  &lt;span class="c1"&gt;# would be applied as an ordinary Job and simply fail forever.&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asia-south1-docker.pkg.dev/saudi-prod-artifacts-0/shared-docker/cert-manager-startupapicheck&lt;/span&gt;

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

&lt;/div&gt;



</description>
      <category>automation</category>
      <category>bash</category>
      <category>devops</category>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
