Register Cluster resources using ArgoCD Cluster API.
Operator registers an Cluster in ArgoCD using token generated for service account argocd-manager.
Using cluster kubeconfig it creates/patches:
- Namespace
argocd - ServiceAccount
argocd-managerin namespaceargocd - ClusterRole/ClusterRoleBinding
argocd-managerletting argocd manage crds, webhooks and rbac resources
skaffold runskaffold build --kube-context <management-cluster> --quiet | \
skaffold deploy ---kube-context <management-cluster> --build-artifacts -| Name | Default | Usage |
|---|---|---|
| context | Kubernetes context | |
| health-probe-bind-address | :8081 | The address the probe endpoint binds to |
| instance | Instance to populate argocd.fleet.agoda.com/instance annotation | |
| leader-election | true | Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager |
| metrics-bind-address | :8080 | The address the metric endpoint binds to |
| token-ttl | 1h0m0s | Service account bearer token TTL |
| watch-namespaces | [] | Namespaces to watch for Cluster resources |
| watch-selector | Selector to watch for Cluster resources | |
| zap-devel | false | Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) |
| zap-encoder | Zap log encoding (one of 'json' or 'console') | |
| zap-log-level | Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', or any integer value > 0 which corresponds to custom debug levels of increasing verbosity | |
| zap-stacktrace-level | Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). | |
| zap-time-encoding | Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. |
Cluster resources are only watched in namespaces specified by --watch-namespaces.
They can be further scoped down by --watch-filter which should contain value for cluster.x-k8s.io/watch-filter label.
Example:
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-capi-operator
spec:
template:
spec:
containers:
- name: operator
args:
- --watch-namespaces=kubernetes,tools,nosql
- --watch-filter=argocd