apiVersion : kro.run/v1alpha1
kind : ResourceGraphDefinition
metadata :
name : deploymentandawspostgres
spec :
schema :
apiVersion : v1alpha1
kind : DeploymentAndAWSPostgres
spec :
applicationName : string
image : string
location : string
resources :
- id : dbinstance
template :
apiVersion : rds.services.k8s.aws/v1alpha1
kind : DBInstance
metadata :
name : $ { schema.spec.applicationName } - dbinstance
spec :
engine : postgres
dbInstanceIdentifier : $ { schema.spec.applicationName } - dbinstance
allocatedStorage : 20
dbInstanceClass : db.t3.micro
masterUsername : admin
masterUserPassword :
name : $ { schema.spec.applicationName } - db - secret
key : password
- id : pod
template :
apiVersion : v1
kind : Pod
metadata :
name : $ { schema.spec.applicationName } - pod
spec :
containers :
- name : app
image : $ { schema.spec.image }
env :
- name : POSTGRES_ENDPOINT
value : $ { dbinstance.status.endpoint.address }
- name : POSTGRES_PORT
value : $ { dbinstance.status.endpoint.port }
- name : POSTGRES_USER
value : admin
- name : POSTGRES_PASSWORD
valueFrom :
secretKeyRef :
name : $ { schema.spec.applicationName } - db - secret
key : password Criar secret com senha do banco:
kubectl create secret generic my-app-db-secret \
--from-literal = password = 'SuaSenhaSegura123!' # Aplicar o RGD
kubectl apply -f deployment-postgres.yaml
# Criar aplicação com banco
cat << EOF | kubectl apply -f -
apiVersion: v1alpha1
kind: DeploymentAndAWSPostgres
metadata:
name: my-app
spec:
applicationName: my-app
image: postgres:15-alpine
location: us-east-1
EOF
# Verificar recursos criados
kubectl get dbinstance
kubectl get pod my-app-pod
# Ver logs do pod
kubectl logs my-app-pod
Cross-resource dependencies : Pod aguarda RDS estar pronto
Status interpolation : Endpoint do RDS injetado automaticamente
Secret management : Credenciais gerenciadas via Kubernetes Secrets
Declarative infrastructure : Tudo definido em YAML
Usar Deployment ao invés de Pod
Adicionar readiness probe que testa conexão com banco
Criar DBSubnetGroup para controlar placement
Adicionar backup retention e maintenance window