<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>cloudflare-operator on contineroo.ch</title>
    <link>/docs/cloudflare-operator/</link>
    <description>Recent content in cloudflare-operator on contineroo.ch</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <atom:link href="/docs/cloudflare-operator/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Core Concepts</title>
      <link>/docs/cloudflare-operator/core_concepts/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloudflare-operator/core_concepts/</guid>
      <description>&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;cloudflare-operator uses the Kubernetes API as the source of truth for Cloudflare DNS records. Desired state is stored in custom resources and can also be derived from Kubernetes Ingress and Gateway API route objects.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart TB&#xA;  hostSources[&amp;#34;Kubernetes API · hostname sources&amp;lt;br/&amp;gt;Ingress · HTTPRoute · TLSRoute · GRPCRoute&amp;#34;]&#xA;  hostController[&amp;#34;DNS host controllers&amp;lt;br/&amp;gt;Ingress always on · Gateway API opt-in &amp;#43; CRD discovery&amp;#34;]&#xA;  generated[&amp;#34;Kubernetes API · generated DNSRecord&amp;lt;br/&amp;gt;one owner-controlled object per hostname&amp;#34;]&#xA;  dnsController[&amp;#34;DNSRecord controller&amp;lt;br/&amp;gt;resolve refs · create · update · delete&amp;#34;]&#xA;  cloudflare[&amp;#34;Cloudflare DNS API&amp;#34;]&#xA;&#xA;  hostSources --&amp;gt; hostController --&amp;gt; generated --&amp;gt; dnsController --&amp;gt; cloudflare&#xA;&#xA;  manual[&amp;#34;Kubernetes API&amp;lt;br/&amp;gt;manual / GitOps DNSRecord&amp;#34;] --&amp;gt; dnsController&#xA;&#xA;  scope[&amp;#34;Kubernetes API&amp;lt;br/&amp;gt;Secret → Account · Zone&amp;#34;] --&amp;gt; scopeController[&amp;#34;Account &amp;#43; Zone controllers&amp;lt;br/&amp;gt;credentials · identity · optional pruning&amp;#34;]&#xA;  scopeController --&amp;gt; cloudflare&#xA;  scope -. &amp;#34;account &amp;#43; zone refs&amp;#34; .-&amp;gt; dnsController&#xA;&#xA;  ip[&amp;#34;Kubernetes API · IP&amp;#34;] --&amp;gt; ipController[&amp;#34;IP controller&amp;lt;br/&amp;gt;static or periodically fetched content&amp;#34;]&#xA;  ipController &amp;lt;--&amp;gt; ipSources[&amp;#34;External IPv4 / IPv6 sources&amp;#34;]&#xA;  ip -. &amp;#34;optional content ref&amp;#34; .-&amp;gt; dnsController&#xA;&#xA;  manual ~~~ scope&#xA;  scope ~~~ ip&#xA;&#xA;  classDef resource fill:#eef4ff,stroke:#4777b7,color:#172033&#xA;  classDef controller fill:#e7f0ff,stroke:#2563eb,color:#172033,stroke-width:2px&#xA;  classDef external fill:#fff0df,stroke:#f48120,color:#172033,stroke-width:2px&#xA;  class hostSources,generated,manual,scope,ip resource&#xA;  class scopeController,ipController,hostController,dnsController controller&#xA;  class cloudflare,ipSources external&lt;/pre&gt;&#xA;&lt;p&gt;The Account and Zone controllers establish the Cloudflare scope, while the IP controller maintains reusable static or dynamic content. The Ingress controller and the opt-in Gateway API controllers translate hostnames and annotations into owner-controlled DNSRecord objects. The DNSRecord controller then resolves the referenced Account, Zone, and IP resources before applying the record to Cloudflare.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get Started</title>
      <link>/docs/cloudflare-operator/get_started/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloudflare-operator/get_started/</guid>
      <description>&lt;p&gt;This tutorial shows you how to get started with using cloudflare-operator and create a sample DNS record.&lt;/p&gt;&#xA;&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;&#xA;&lt;p&gt;The following prerequisites are required to complete this tutorial:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A Kubernetes cluster with cloudflare-operator installed (follow &lt;a href=&#34;/docs/cloudflare-operator/installation/&#34;&gt;the installation guide&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;A Cloudflare account&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;create-cloudflare-api-token&#34;&gt;Create Cloudflare API token&lt;/h2&gt;&#xA;&lt;p&gt;The token can be created by following &lt;a href=&#34;https://developers.cloudflare.com/fundamentals/api/get-started/create-token/&#34; target=&#34;blank&#34;&gt;this guide&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The following permissions are required:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Zone:Zone:Read&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Zone:DNS:Edit&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Configure the following &lt;code&gt;Zone resources&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Include:All zones&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;or, if you want to limit the zones to which the token has access:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installation</title>
      <link>/docs/cloudflare-operator/installation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloudflare-operator/installation/</guid>
      <description>&lt;p&gt;This guide walks you through installing cloudflare-operator.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install Helm 3&lt;/li&gt;&#xA;&lt;li&gt;Kubernetes cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;install-cloudflare-operator&#34;&gt;Install cloudflare-operator&lt;/h2&gt;&#xA;&lt;h3 id=&#34;helm-repository&#34;&gt;Helm repository&lt;/h3&gt;&#xA;&lt;p&gt;Add the cloudflare-operator Helm chart repository:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo add containeroo https://charts.containeroo.ch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Update the Helm chart repository:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;custom-resource-definitions&#34;&gt;Custom Resource Definitions&lt;/h3&gt;&#xA;&lt;p&gt;As per the Helm best practices, cloudflare-operator Helm chart doesn&amp;rsquo;t ship with CRDs.&lt;/p&gt;&#xA;&lt;p&gt;To install the latest CRDs, run the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f https://github.com/containeroo/cloudflare-operator/releases/latest/download/crds.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you want to install a specific version of CRDs, run the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>API Reference</title>
      <link>/docs/cloudflare-operator/api_reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloudflare-operator/api_reference/</guid>
      <description>&lt;h2 id=&#34;packages&#34;&gt;Packages&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#cloudflare-operatoriov1&#34;&gt;cloudflare-operator.io/v1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;cloudflare-operatoriov1&#34;&gt;cloudflare-operator.io/v1&lt;/h2&gt;&#xA;&lt;p&gt;Package v1 contains API schema definitions for the cloudflare-operator.io v1 API group.&lt;/p&gt;&#xA;&lt;h3 id=&#34;resource-types&#34;&gt;Resource Types&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#account&#34;&gt;Account&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#dnsrecord&#34;&gt;DNSRecord&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#ip&#34;&gt;IP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#zone&#34;&gt;Zone&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a id=&#34;cloudflare-operator.io/v1.Account&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;account&#34;&gt;Account&lt;/h4&gt;&#xA;&lt;p&gt;Account is the Schema for the accounts API&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Field&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;          &lt;th&gt;Default&lt;/th&gt;&#xA;          &lt;th&gt;Validation&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;apiVersion&lt;/code&gt; &lt;em&gt;string&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;cloudflare-operator.io/v1&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;kind&lt;/code&gt; &lt;em&gt;string&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;Account&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;metadata&lt;/code&gt; &lt;em&gt;&lt;a href=&#34;https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#objectmeta-v1-meta&#34;&gt;ObjectMeta&lt;/a&gt;&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Refer to Kubernetes API documentation for fields of &lt;code&gt;metadata&lt;/code&gt;.&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;spec&lt;/code&gt; &lt;em&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#accountspec&#34;&gt;AccountSpec&lt;/a&gt;&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;status&lt;/code&gt; &lt;em&gt;&lt;a href=&#34;/docs/cloudflare-operator/api_reference/#accountstatus&#34;&gt;AccountStatus&lt;/a&gt;&lt;/em&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;a id=&#34;cloudflare-operator.io/v1.AccountRef&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;accountref&#34;&gt;AccountRef&lt;/h4&gt;&#xA;&lt;p&gt;&lt;em&gt;Appears in:&lt;/em&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
