登录
首页 >  Golang >  Go问答

将交叉平面中的数组传递到交叉平面组合中

来源:stackoverflow

时间:2024-02-05 21:30:00 181浏览 收藏

你在学习Golang相关的知识吗?本文《将交叉平面中的数组传递到交叉平面组合中》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我正在处理将由大约 8 个服务组织范围使用的声明,我如何将环境变量数组传递给组合。好像没有办法做到这一点

这是我的主张的示例

apiversion: app.org.io/v1
kind: xclaim
metadata:
  name: test-app
spec:
  parameters:
    name: test-app
    envvariables:
    - variables:
        foo: bar
        name: precious
        age: 15

这是我的 crd 示例

apiversion: apiextensions.crossplane.io/v1
kind: compositeresourcedefinition
metadata:
  name: applambdas.app.org.io
  namespace: crossplane-system
spec:
    group: app.org.io
    names:
        kind: applambda
        plural: applambdas
    versions:
        - name: v1
          served: true
          referenceable: true
          schema:
            openapiv3schema:
              type: object
              properties:
                spec:
                  type: object
                  properties:
                    parameters:
                      type: object
                      properties:
                        env:
                          type: string
                        envvariables:
                          type: array
                        name:
                          type: string

    claimnames:
      kind: xclaim
      plural: xclaims

这是我的作文示例

apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
  name: lambda
spec:
  compositeTypeRef:
    apiVersion: app.org.io/v1
    kind: AppLambda
  resources:
    - name: lambda-function
      base:
        apiVersion: lambda.aws.upbound.io/v1beta1
        kind: Function
        metadata:
          annotations:
            uptest.upbound.io/timeout: "3600"
          name: lambda
        spec:
          providerConfigRef:
            name: aws-config
          forProvider:
            handler: index.lambda_handler
            packageType: Zip
            region: eu-west-1
            role: arn:aws:iam::xxxxxx:role/crossplane-lambda-test-role
            runtime: python3.9
            s3Bucket: testappbucket-upbound-provider-test-data
            s3Key: function.zip
            timeout: 60
            environment: []
      patches:
        - fromFieldPath: spec.parameters.envVariables[variables]
          toFieldPath: spec.forProvider.environment[variables]

spec.forprovider.environment 似乎没有得到修补,我已经处理了这个星期了,请帮助我需要帮助


正确答案


在这种情况下,环境变量实际上并不是一个数组。从crd中可以看出,variables应该是一个对象的键,存储在单个值environment数组下。

spec:
  forprovider:
    environment:
    - variables:
        key: value

因此,通过对定义和构成进行一些小调整,这应该是可能的:

apiversion: apiextensions.crossplane.io/v1
kind: compositeresourcedefinition

...
    envvariables:
      type: object
      additionalproperties:
        type: string
...
apiversion: apiextensions.crossplane.io/v1
kind: composition
...
    patches:
      - fromfieldpath: spec.parameters.envvariables
        tofieldpath: spec.forprovider.environment[0].variables
...

这将让您创建如下声明:

apiVersion: app.org.io/v1
kind: XClaim
metadata:
  name: test-app
spec:
  parameters:
    name: test-app
    envVariables:
      foo: bar
      name: precious
      age: "15"

生成一个设置了适当环境变量的函数。 AWS Console Showing Environment Variables

注意:环境变量值必须是字符串,这就是架构中验证和声明中引号的原因。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《将交叉平面中的数组传递到交叉平面组合中》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>