<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>http://lernfunk.de/media/654321</id>
  <title>double12gzh - Posts tagged gitops</title>
  <updated>2020-11-08T14:11:59.549353+00:00</updated>
  <link href="double12gzhblogs.readthedocs.io"/>
  <link href="double12gzhblogs.readthedocs.io/blogs/tag/gitops/atom.xml"/>
  <generator uri="https://ablog.readthedocs.org" version="0.10.9">ABlog</generator>
  <entry>
    <id>double12gzhblogs.readthedocs.io/blogs/Kubernetes/2020-10-03-%E4%BD%BF%E7%94%A8gitops%E7%AE%A1%E7%90%86k8s-secret.html</id>
    <title>使用GitOps管理K8S Secret</title>
    <updated>2020-10-03T00:00:00+00:00</updated>
    <author>
      <name>大海星</name>
    </author>
    <content type="html">&lt;div class="section" id="gitopsk8s-secret"&gt;

&lt;p&gt;摘要: 介绍如何使用GitOps来管理Kubernetes Secret。&lt;/p&gt;
&lt;p&gt;&lt;img alt="image0" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-10-03-gitops-manage-k8s-secret.jpg" /&gt;&lt;/p&gt;
&lt;div class="section" id="id1"&gt;
&lt;h2&gt;1. 写在前面&lt;/h2&gt;
&lt;p&gt;GitOps是伴随着云原生产生的一个新的概念，它的核心是以一种&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;声明式的&lt;/span&gt;&lt;/code&gt;方式管理资源，表示当前的状态，让你在任何时候都能知道git中的情况，并将这种声明式的状态解析 为集群。&lt;/p&gt;
&lt;p&gt;我们在GitOps上犯的最大错误是&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;结构&lt;/span&gt;&lt;/code&gt;。仓库的结构至关重要，你选择如何在公司里组织GitOps，将决定它的成败。&lt;/p&gt;
&lt;p&gt;当你解决了结构问题之后，我们面临的下一个最大的问题就是&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;如何保证Secret的安全&lt;/span&gt;&lt;/code&gt;。一般来说，最后的结果是人们有不需要的访问权限，或者有一个共享的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;，通过Slack或1Password传来传去。&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/bitnami-labs/sealed-secrets"&gt;Sealed
Secrets&lt;/a&gt;是Kubernetes上解决&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;的一种流行方式，它是一个不错的解决方案，依靠&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;PKI&lt;/span&gt;&lt;/code&gt;和&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;共享公钥&lt;/span&gt;&lt;/code&gt;来加密，并在集群上安装私钥。&lt;/p&gt;
&lt;p&gt;本文将尝试解释如何使用GitOps来管理k8s的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;资源。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="secret"&gt;
&lt;h2&gt;2. 管理Secret比较好的方式&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/mozilla/sops"&gt;Mozilla的SOPS&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;SOPS支持多种来源的密钥输入，包括AWS KMS、GCE、Vault、PGP等。它提供了使用AWS KMS的外部密钥作为输入来加密和解密秘密的能力，但它也支持&lt;cite&gt;Shamir的``Secret`&lt;/cite&gt; &amp;lt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Shamir's_Secret_Sharing"&gt;https://en.wikipedia.org/wiki/Shamir’s_Secret_Sharing&lt;/a&gt;&amp;gt;`__共享和密钥组，本质上允 许对解密所需的密钥以及这些密钥的数量进行策略。&lt;/p&gt;
&lt;p&gt;由于SOPS让我们有能力使用AWS KMS这样的服务，我们可以控制谁有加密和解密的权限，但这也意味着我们可以利用AWS的实例配置文件，让机器做它们设计时最擅长的事情，通过自动化让我们的生活更轻松。&lt;/p&gt;
&lt;p&gt;最后一个我想提请大家注意的功能是，一旦文件被加密，所有关于如何加密的元数据都是文件本身的一部分，不需要第三方服务、数据库、隐藏目录或二级文件来知道如何解密文件。&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;Flux对SOPS有一流的支持。&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="id2"&gt;
&lt;h2&gt;3. 结构&lt;/h2&gt;
&lt;p&gt;一开始我就说过，正确架构你的仓库是至关重要的。这一点来源于个人在工程实践中总结的一些经验之谈，对于不同的场景，您可能需要权衡一下我这里的“最佳实践”。&lt;/p&gt;
&lt;p&gt;对于&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;结构化&lt;/span&gt;&lt;/code&gt;化来说，通常可以简单的分成两个部分：&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;仓库中内容的布局&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用仓库的数量&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在我的项目中，我通常会使用三个库： - 定义集群运行所需的每一个基础资源 -
处理工程团队负责的产品的所有发布 - 给&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;使用&lt;/p&gt;
&lt;p&gt;项目中我只使用了SOPS与专用的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;库，使用Flux和SOPS使我们获得了这种能力，具有前所未有的灵活性。&lt;/p&gt;
&lt;div class="section" id="id3"&gt;
&lt;h3&gt;3.1 目录结构&lt;/h3&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;-- .sops.yaml
&lt;span class="p"&gt;|&lt;/span&gt;-- secrets
    &lt;span class="p"&gt;|&lt;/span&gt;-- dev &lt;span class="o"&gt;(&lt;/span&gt;environment/cluster&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;|&lt;/span&gt;-- database.yaml
    &lt;span class="p"&gt;|&lt;/span&gt;-- stg &lt;span class="o"&gt;(&lt;/span&gt;environment/cluster&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;|&lt;/span&gt;-- database.yaml
    &lt;span class="p"&gt;|&lt;/span&gt;-- prd &lt;span class="o"&gt;(&lt;/span&gt;environment/cluster&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;|&lt;/span&gt;-- database.yaml
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;这个文件布局为我们提供了使用SOPS创建规则来控制文件如何加密的基础。我们可以使用不同的密钥、密钥组和阈值。它还允许我们告诉Flux在克隆和解析集群上需要的东西时只关心一个特定的路径。下面是一个例子(注意：这不是一个完整可运行的例子)。&lt;/p&gt;
&lt;div class="highlight-yaml notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;creation_rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;path_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;secrets/dev/.*&lt;/span&gt;
  &lt;span class="nt"&gt;encrypted_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;^(data|stringData)$&amp;quot;&lt;/span&gt;
  &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;kms-arn&lt;/span&gt;
    &lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;ksm-role&lt;/span&gt;
&lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;path_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;secrets/stg/.*&lt;/span&gt;
  &lt;span class="nt"&gt;encrypted_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;^(data|stringData)$&amp;quot;&lt;/span&gt;
  &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;kms-arn&lt;/span&gt;
    &lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;ksm-role&lt;/span&gt;
&lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;path_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;secrets/prd/.*&lt;/span&gt;
  &lt;span class="nt"&gt;encrypted_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;^(data|stringData)$&amp;quot;&lt;/span&gt;
  &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;kms-arn&lt;/span&gt;
    &lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;ksm-role&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="scaling"&gt;
&lt;h3&gt;3.2 Scaling&lt;/h3&gt;
&lt;p&gt;使用这个设置，我们几乎可以无限地扩展这个设置。它只受存储在版本库中的数据量和服务于它的git服务器的限制。秘密一般不会经常变化，但它们会被轮换，这就是像&lt;a class="reference external" href="https://github.com/stakater/Reloader"&gt;Reloader&lt;/a&gt;这样的额外工具的作用(这里不会作详细介绍)。&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;Reloader:&lt;/p&gt;
&lt;p&gt;它可以用于监视ConfigMap和Secret是否发生变化，如果发生了变化，它将触发与之相关的以下资源实现滚动更新：&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;DeploymentConfig&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deployment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Daemonset&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Statefulset&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="sops"&gt;
&lt;h2&gt;4. 设置SOPS&lt;/h2&gt;
&lt;p&gt;前面我们已经讲解了SOPS的目录结构和设计原则，下面我们通过一个小例子实践一下。&lt;/p&gt;
&lt;p&gt;有多种方法可以利用SOPS，但我只介绍其中一种：使用AWS KMS与多个键和AWS Instance Profile(Flux可以使用)。&lt;/p&gt;
&lt;div class="section" id="aws"&gt;
&lt;h3&gt;4.1 设置AWS&lt;/h3&gt;
&lt;p&gt;在真正的使用场景中，我会建议使用多个AWS账户，并假设角色权限，但对于这样的文章来说，这可能会变得不必要的复杂，所以我们要假设一个单一的AWS账户，但仍然利用使用3个密 钥。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;aws kms create-key
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;一定要把ARN收集起来，以便以后使用。&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;接下来我们需要创建我们的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.sops.yaml&lt;/span&gt;&lt;/code&gt;文件与创建规则。在真正的使用场景中，你会希望你的阈值是2或更多，并且让你的密钥至少比阈值高N+1。
让我们从创建一个基础目录开始，然后创建&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;.sops.yaml&lt;/span&gt;&lt;/code&gt;文件，内容如下，确保用你的有效ARNs交换ARNs。&lt;/p&gt;
&lt;div class="highlight-yaml notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;creation_rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;path_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;secrets/dev/.*&lt;/span&gt;
  &lt;span class="nt"&gt;encrypted_regex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;^(data|stringData)$&amp;quot;&lt;/span&gt;
  &lt;span class="nt"&gt;shamir_threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;2&lt;/span&gt;
  &lt;span class="nt"&gt;key_groups&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;arn:aws:kms:us-west-2:000000000000:key/b5d44bf0-7ec5-49a9-b404-bc4d8b4036fb&lt;/span&gt;
    &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;arn:aws:kms:us-west-2:000000000000:key/16d44186-2393-40d9-90e1-9a2f92fd5863&lt;/span&gt;
    &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="p p-Indicator"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;arn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;arn:aws:kms:us-west-2:000000000000:key/2120d2c1-a89e-4aeb-844f-f17ae2abd210&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;这个创建规则规定，secrets/dev目录下的所有文件都要用3个不同的密钥进行加密，解密阈值为2。&lt;/p&gt;
&lt;p&gt;接下来创建你的secrets/dev目录，并创建一个example.yaml文件，内容如下：&lt;/p&gt;
&lt;div class="highlight-yaml notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;v1&lt;/span&gt;
&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;Secret&lt;/span&gt;
&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;example&lt;/span&gt;
&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;Opaque&lt;/span&gt;
&lt;span class="nt"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nt"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;gzhGZHSBWUDESIN=&lt;/span&gt;
  &lt;span class="nt"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="l l-Scalar l-Scalar-Plain"&gt;SBALIBSBWUDESIN=&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;使用如下命令结上面的yaml文件进行加密：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sops -e -i secrets/dev/example.yaml
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;说明:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;-e: 加密&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;-i: 支持原地修改(如果您不想修改原文件并且想看加密后的输入内容，请忽略此参数)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;上面的命令执行完成后您就可以提交到仓库中了。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id4"&gt;
&lt;h3&gt;4.2 AWS实例配置文件&lt;/h3&gt;
&lt;p&gt;这个系统的好处是，&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Flux&lt;/span&gt;&lt;/code&gt;可以简单地利用AWS实例配置文件，通过STS承担角色，并获得临时的密钥，以便在集群本身运行时能够解密。
要实现这一点，您需要设置一个角色，该角色具有&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Encrypt/Decrypt&lt;/span&gt;&lt;/code&gt;和可能的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Generate&lt;/span&gt;&lt;/code&gt;权限，具体取决于您使用的密钥类型，并设置您的AWS实例以使用配置文件。&lt;/p&gt;
&lt;p&gt;一旦您完成了这些设置，只需使用正确的 CLI 选项将 Flux 安装到群集上，Flux就会让您的群集保持最新状态。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="flux"&gt;
&lt;h3&gt;4.3 设置Flux&lt;/h3&gt;
&lt;p&gt;你只需要做几件事情来确保&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Flux&lt;/span&gt;&lt;/code&gt;的正常运行，你需要启用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;SOPS&lt;/span&gt;&lt;/code&gt;，这取决于你的部署方法，可能是&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;配置选项&lt;/span&gt;&lt;/code&gt;或CLI标志&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--sops&lt;/span&gt;&lt;/code&gt;。你需要启用
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;SOPS&lt;/span&gt;&lt;/code&gt;，根据你的部署方法，可能是一个&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;配置选项&lt;/span&gt;&lt;/code&gt;或 CLI 标志``–sops``。你还需要指示你的 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Flux``实例只关心默认分支中的一个特定路径。\&lt;/span&gt; &lt;span class="pre"&gt;``--git-path&lt;/span&gt;&lt;/code&gt; 需要设置为
&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secrets&lt;/span&gt;&lt;/code&gt; 下的一个目录，比如 &lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;--git-path=secrets/dev&lt;/span&gt;&lt;/code&gt;。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="id5"&gt;
&lt;h2&gt;5. 小结&lt;/h2&gt;
&lt;p&gt;使用这种方法可以让你更好地控制&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;及谁有访问权，另外，它也允许您让AWS处理提供&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;中比较难搞的部分，以通过自动化和短暂的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;来访问&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;解密，您可以将所有的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Secret&lt;/span&gt;&lt;/code&gt;保存在一个地方，以便于管理和轮换。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
    <link href="double12gzhblogs.readthedocs.io/blogs/Kubernetes/2020-10-03-%E4%BD%BF%E7%94%A8gitops%E7%AE%A1%E7%90%86k8s-secret.html" rel="alternate"/>
    <published>2020-10-03T00:00:00+00:00</published>
  </entry>
</feed>
