Provider Lab Part 2
ArgoCD
Para o ArgoCD é necessário criar uma conta ou usar uma já existente para poder ter um token nela. A boa prática diz para criar uma conta para o Crossplane. No laboratório do Backstage deixamos uma conta preparada para isso.
O token já está na variável de ambiente exportada no terminal. A secret precisa conter 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 aplicar esse manifesto e conferir os recursos que temos disponíveis.
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
Só para testar vamos aplicar esse manifesto e ver se uma aplicação será criada.
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: # Se não tiver o sync policy ele irá criar o application mas não irá fazer o 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
