小编Ale*_*lex的帖子

Kustomize 中的补丁与补丁Json6902 有什么区别

根据我阅读的文档,有 3 种修补方法:

  • 补丁
  • 补丁策略合并
  • 补丁Json6902。

patchesStrategicMerge和之间的区别patchesJson6902很明显。patchesStrategicMerge需要 kubernetes 资源的重复结构来标识正在修补的基本资源,然后是规范的修改部分以指示更改(或删除)的内容。

patchesJson6902 定义了一个 'target' 属性,用于指定 kubernetes 资源和一个 'path' 属性,该属性指定资源中的哪个属性被修改、添加或删除。

但是,什么是我不明白之间的差别patchespatchesJson6902。它们在性质上似乎非常相似。两者都指定了一个“目标”属性和描述被修改内容的操作对象。

我注意到的唯一区别是patches不需要“组”属性,而需要patchesJson6902;原因不明。

那么为什么两者之间存在差异呢?我如何确定使用哪一个?

patch json-patch kubernetes kustomize

13
推荐指数
1
解决办法
4793
查看次数

如何使用 Terraform 脚本禁用 s3 存储桶 ACL?

AWS 的新建议是默认禁用 ACL,以便对象所有权默认为存储桶所有者。如何使用 Terraform 通过 aws_s3_bucket 资源实现此目的?

我尝试执行以下操作但没有成功

resource "aws_s3_bucket_acl" "example_bucket_acl" {
  bucket                = aws_s3_bucket.s3-bucket.id
  acl                   = "private"
  expected_bucket_owner = data.aws_caller_identity.current.account_id
}

data "aws_caller_identity" "current" {}
Run Code Online (Sandbox Code Playgroud)

此代码设置 ACL,以便只有存储桶所有者才能读取和写入存储桶以及存储桶中的对象,但对象所有权配置仍设置为“对象写入者”。此外,ACL 不会因设置而被禁用。

Terraform 关于 S3 ACL 的文档来看,它没有说明任何示例,也没有提供任何支持禁用 ACL 的参数。

在手动更改 AWS 中的设置后,我尝试通过运行 terraform plan 来暴力破解该解决方案,看看我会从该计划中得到什么差异,但它说我的基础设施与配置匹配。

有谁知道如何做到这一点?我目前正在使用 Terraform CLI v1.3.5 和 AWS 提供商 v4.40.0。

amazon-s3 amazon-web-services terraform terraform-provider-aws

7
推荐指数
1
解决办法
7264
查看次数

已批准 Kubernetes CSR,但证书未显示在状态中

因此,我完成了生成 RSA 密钥、为 CSR 创建 YAML、使用 kubectl 在 Minikube 中创建 CSR、批准证书的过程。

但是,当我尝试使用下载证书时,kubectl get csr my-csr -o jsonpath='{.status.certificate}'我得到的结果为空。

当我kubectl get csr my-csr -o yaml获取更多信息时,我看到的是:

status:
  conditions:
  - lastUpdateTime: "2020-01-17T20:17:20Z"
    message: This CSR was approved by kubectl certificate approve.
    reason: KubectlApprove
    type: Approved
Run Code Online (Sandbox Code Playgroud)

我期待一个带有 base64 编码字符串的证书属性,我将对其进行解码以获取用于客户端证书验证的证书。有人可以告诉我我做错了什么吗?

有关更多上下文,我尝试按照本教程中的说明进行操作

csr client-certificates kubernetes kubectl

5
推荐指数
1
解决办法
7683
查看次数

使用 terragrunt 生成提供者块会导致与模块中的 require 提供者块发生冲突

我正在使用 Terragrunt 和 Terraform 版本 0.14.8。

\n

我的项目使用 mono 存储库结构,因为项目要求将 Terragrunt 文件和 Terraform 模块打包在一个包中。

\n

文件夹结构:

\n
project root:\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 environments\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 prd\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 rds-cluster\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 modules\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 rds-cluster\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 variables.tf\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 secretsmanager-secret\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 output.tf\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 variables.tf\n
Run Code Online (Sandbox Code Playgroud)\n

在 prd/terragrunt.hcl 中,我定义了远程状态块和生成提供程序块。

\n
remote_state {\n  backend = "s3"\n  ...\n}\n\ngenerate "provider" {\n  path = "provider.tf"\n  if_exists = "overwrite_terragrunt"\n\n  contents = <<EOF\nterraform {\n  required_providers {\n    aws …
Run Code Online (Sandbox Code Playgroud)

terraform terragrunt terraform-provider-aws terraform0.12+

4
推荐指数
1
解决办法
1万
查看次数

如何将现有 AWS 资源导入 Terraspace?

使用“terraform import”语法可以直接从 Terraform 导入资源。然而, terraspace没有关于此事的文档。他们的文档仅讨论如何通过将现有的 Terraform 状态文件移动到 S3 并配置后端来将其导入 Terraspace,以便 Terraspace 可以无缝地获取已经存在的 tfstate 文件。

有谁知道如何将现有基础设施导入 Terraspace?我在 AWS 中有一些现有的基础设施,我希望今后将其导入并由 Terraspace 管理。

terraform terraform-provider-aws terraspace

4
推荐指数
1
解决办法
1069
查看次数

如何模拟包含正斜杠的模块?

模拟标准 npm 项目非常简单。在node_modules文件夹旁边创建一个__mocks__文件夹,然后将包的名称作为文件,并在其中写入mock内容。

例子:/__mocks__/axios.ts

我陷入困境的是有一个 npm 包导入,如下所示:@auth0/auth0-react

我怎样才能模拟这个文件的内容?我尝试创建一个名为@auth0/auth0-react.tsx但 jest 似乎没有拾取模拟文件的文件。当我导入import { Auth0Provider } from '@auth0/auth0-react';and时console.log(Auth0Provider),我得到的只是标准Jest.fn()属性。

这是模拟文件的内容

/* eslint-disable import/prefer-default-export */
export const Auth0Provider = (component: JSX.Element): JSX.Element => component;
Run Code Online (Sandbox Code Playgroud)

由于我没有使用jest.fn()这一种方法,因此我希望console.log(Auth0Provider)表明它包含一个函数。

在我的测试代码中,我在jest.mock('@auth0/auth0-react')测试之前。有任何想法吗?

mocking typescript jestjs ts-jest

4
推荐指数
1
解决办法
1011
查看次数

创建 React App Rewired 应用程序忽略 jest.config.js

我有一个使用“创建反应应用程序重新连线”创建的反应应用程序。我已经安装了 ts-jest 并且希望能够自定义 Jest。我阅读了 ts-jest 的文档并npx ts-jest config:init在项目的根级别执行以创建初始配置文件。为了测试 jest 是否确实使用该配置文件,我console.log(window);在示例测试文件中编写了以下行,并修改了配置,将其testEnvironment设置为“node”。

我预计测试会因window未定义而失败,但我正在恢复窗口对象。我尝试将文件重命名为jest.config.ts,但得到了相同的结果。

我对所有文件进行了全局搜索,以查看是否有另一个配置文件覆盖了我的配置,但没有找到。

我究竟做错了什么?我知道 jest 是通过 create-react-app (CRA) 预先打包的。我想 create-react-app-rewired 只会包含 CRA 之上的一些包装器,那么它从哪里获取配置呢?

configuration config create-react-app ts-jest

4
推荐指数
1
解决办法
1450
查看次数