crossplane-contrib / crossplane-contrib/function-patch-and-transform
Patching a resource from a value obtained from function-go-templating
- Lingua principale
- Go
- Stelle
- 46
- Fork
- 41
- Merge medio
- 1g 10h
- PR unite (30g)
- 3
Descrizione
Hi Folks,
I want to patch a resource inside the function-patch-and-transform function using a value that I obtain from the function-go-templating.
I see the other way where we get data from the go template function into the p&t function [here](https://github.com/crossplane-contrib/function-patch-and-transform/blob/main/example/multistep/composition.yaml)
I am attaching my sample composition below.
```yaml
---
# Removed for brevity
pipeline:
- step: castai-ekscluster
functionRef:
name: function-go-templating
input:
apiVersion: gotemplating.fn.crossplane.io/v1beta1
kind: GoTemplate
source: Inline
inline:
template: |
{{- $environmentConfigs := (index .context "apiextensions.crossplane.io/environment") }}
{{- $accountIdstr := printf "%q" (index $environmentConfigs "accountId") }}
{{- $eksClusterName := printf "%q" (index $environmentConfigs "eksClusterName") }}
{{- $region := (index $environmentConfigs "region") }}
{{- $deletionPolicy := .observed.composite.resource.spec.crossplaneParameters.deletionPolicy }}
{{- $providerConfigRef := "default" }}
---
apiVersion: castai.upbound.io/v1alpha1
kind: EksClusterId
metadata:
annotations:
gotemplating.fn.crossplane.io/composition-resource-name: EksClusterId
labels:
cast-ai-cluster: {{$eksClusterName}}
spec:
deletionPolicy: {{$deletionPolicy}}
providerConfigRef:
name: {{$providerConfigRef}}
forProvider:
region: {{$region}}
accountId: {{$accountIdstr}}
clusterName: {{$eksClusterName}}
- step: aws-auth-patch
functionRef:
name: function-patch-and-transform
input:
apiVersion: pt.fn.crossplane.io/v1beta1
kind: Resources
resources:
- name: awsauthconfigmap
base:
apiVersion: v1
kind: ConfigMap
metadata:
name: ashish-test
namespace: castai-agent
patches:
- type: FromCompositeFieldPath
fromFieldPath: HERE I want the value from the function-go-templating
toFieldPath: "data.mapRoles"
transforms:
- type: string
string:
type: Format
fmt: '[{"rolearn": "%s", "username": "system:node:{{EC2PrivateDNSName}}", "groups": ["system:masters"]}]'
```
tagging @ytsarev as you might already be knowing solution.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia da example/multistep/composition.yaml e segui come i valori prodotti da function-go-templating vengono esposti ai passaggi successivi della pipeline. Esamina gli input di function-patch-and-transform e documenta o dimostra il percorso supportato per usare quel valore in data.mapRoles.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- go
- Ambito
- infrastructure
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100