crossplane-contrib / crossplane-contrib/function-patch-and-transform

Patching a resource from a value obtained from function-go-templating

Aperta
#146 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.