Pular para o conteúdo principal

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

alt text

Confluent (Kafka)