Provider Lab Part 2
ArgoCD
Para ArgoCD es necesario crear una cuenta o usar una ya existente para poder tener un token en ella. La buena práctica dice crear una cuenta para Crossplane. En el laboratorio de Backstage dejamos una cuenta preparada para esto.
El token ya está en la variable de entorno exportada en el terminal. El secret necesita contener dentro de credentials el authToken.
# argocd.yaml
apiVersion: v1
kind: Secret
metadata:
name: argocd-credentials
namespace: crossplane-system
type: Opaque
stringData:
authToken: "${ARGOCD_AUTH_TOKEN_CROSSPLANE}"
---
apiVersion: argocd.crossplane.io/v1alpha1
kind: ProviderConfig
metadata:
name: argocd-provider
spec:
serverAddr: argocd-server.argocd.svc:443
insecure: true
plainText: true
grpcWeb: true
grpcWebRootPath: /
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: argocd-credentials
key: authToken
Vamos a aplicar este manifiesto y verificar los recursos que tenemos disponibles.
envsubst < argocd.yaml | kubectl apply -f -
secret/argocd-credentials created
providerconfig.argocd.crossplane.io/argocd-provider created
❯ k get customresourcedefinitions.apiextensions.k8s.io -n crossplane-system -o custom-columns=NAME:.metadata.name | grep argocd
applications.applications.argocd.crossplane.io
applicationsets.applicationsets.argocd.crossplane.io
clusters.cluster.argocd.crossplane.io
projects.projects.argocd.crossplane.io
providerconfigs.argocd.crossplane.io
providerconfigusages.argocd.crossplane.io
repositories.repositories.argocd.crossplane.io
Solo para probar vamos a aplicar este manifiesto y ver si una aplicación será creada.
apiVersion: applications.argocd.crossplane.io/v1alpha1
kind: Application
metadata:
name: example-application
spec:
providerConfigRef:
name: argocd-provider
forProvider:
destination:
namespace: default
server: https://kubernetes.default.svc
project: default
source:
repoURL: https://github.com/stefanprodan/podinfo/
path: charts/podinfo
targetRevision: HEAD
syncPolicy: # Si no tiene el sync policy creará el application pero no hará el heal.
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
❯ kubectl apply -f argocdapplication.yaml
application.applications.argocd.crossplane.io/example-application configured
❯ kubectl get applications.applications.argocd.crossplane.io
NAME READY SYNCED AGE
example-application True True 24m
