I have the ArgoCD server running and wanna define a Cluster
without the CLI. I wanna practice GitOps, so I wanna declare my ArgoCD-cluster config in Git.
In the CLI I could do: argocd cluster add
but how to do that with a Kubernetes manifest?
I didn't found how to create that Cluster
declarative. I found how to create Repositories
, and Projects
, but nothing for something like kind: cluster
.
I am creating my clusters with Crossplane
(Crossplane creates clusters by k8s manifests). Crossplane saves the kubeconfig
of it's created clusters in Secret
s files, which looks like this:
apiVersion: v1
kind: Secret
metadata:
name: cluster-details-my-cluster
namespace: default
uid: 50c7acab-3214-437c-9527-e66f1d563409
resourceVersion: '12868'
creationTimestamp: '2022-01-06T19:03:09Z'
managedFields:
- manager: crossplane-civo-provider
operation: Update
apiVersion: v1
time: '2022-01-06T19:03:09Z'
fieldsType: FieldsV1
fieldsV1:
f:data:
.: {}
f:kubeconfig: {}
f:type: {}
selfLink: /api/v1/namespaces/default/secrets/cluster-details-my-cluster
data:
kubeconfig: >-
YXBpVmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VKbFJFTkRRVkl5WjBGM1NVSkJaMGxDUVVSQlMwSm5aM0ZvYTJwUFVGRlJSRUZxUVdwTlUwVjNTSGRaUkZaUlVVUkVRbWh5VFROTmRHTXlWbmtLWkcxV2VVeFhUbWhSUkVVeVRrUkZNRTlVVlROT1ZFbDNTR2hqVGsxcVNYZE5WRUV5VFZScmQwMXFUWGxYYUdOT1RYcEpkMDFVUVRCTlZHdDNUV3BOZVFwWGFrRnFUVk5_SHORTENED
type: Opaque
The data.kubeconfig
content is a regular bas64 encoded kubeconfig
, so it's easy to decode, like this:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHd_SHORTENED
server: https://MY.IP.TO.K8S:6443
name: my-cluster
contexts:
- context:
cluster: my-cluster
user: my-cluster
name: my-cluster
current-context: my-cluster
kind: Config
preferences: {}
users:
- name: my-cluster
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJQS9adEZFT1Avcnd3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOalF4TkRrMU56VXlNQjRYRFRJeU1ERXdOakU1TURJek1sb1hEVEl6TURFdwpOakU1TURJek1sb3dNREVYT_SHORTENED
client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUpJNlVhTDlLem9yL1VpdzlXK1NNUTAxV1BES2ZIK_SHORTENED
Do I really need a manually intervention and have to break GitOps practice? Only to tell ArgoCD where my clusters and their configs are? The config is already in the cluster.
k get secret cluster-details-my-cluster
NAME TYPE DATA AGE
cluster-details-my-cluster Opaque 1 158m
Thank you very much in advance