Tratando de conectar ArgoCD con TFS2018 vía SSH me encontré con un problema.
1
Unable to negotiate with <<ip> port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
TFS 2018 tiene unos algoritmos de cifrado un poco desactualizados y no están soportador por defecto por ArgoCD ver.
Para empeorar un poco todo en mi caso puntual ArgoCD esta implementado con un Operator . Lo que significa que la customización es mas dificil por que no se puede editar el Deployment
directamente. Afortunadamente ArgoCD tiene dos opciones para esto
Crear una imagen a medida de ArgoCD
El componente
repo
admitevolumes
yvolumesMount
: Custom Tooling - Argo CD Operator
En mi caso la opción 2 es mejor por que no tengo que mantener actualizada una imagen custom de argo.
Crear un ConfigMap
nuevo con la configuración de SSH.
1
2
3
4
5
6
7
8
9
kind: ConfigMap
apiVersion: v1
metadata:
name: argocd-ssh-legacy-cm
data:
ssh_legacy.conf: |
KexAlgorithms +diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
Modificar la propiedad repo
del ArgoCD
para que cree un volume
apuntando al ConfigMap
anterior con su correspondiente volumeMount
a la carpeta /etc/ssh/ssh_config.d
Este ArgoCD esta corriendo en un cluster OpenShift y tiene la version 2.6.11 de ArgoCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
metadata:
name: argocd
spec:
server:
insecure: true
route:
enabled: true
tls:
insecureEdgeTerminationPolicy: Redirect
termination: edge
sso:
dex:
openShiftOAuth: true
provider: dex
rbac:
defaultPolicy: "role:none"
policy: |
p, role:none, applications, *, */*, deny
p, role:none, clusters, *, *, deny
p, role:none, repositories, *, *, deny
p, role:none, logs, *, *, deny
p, role:none, exec, *, */*, deny
g, argocd_admins, role:admin
scopes: "[groups]"
repo:
# ssh legacy config
volumeMounts:
- mountPath: /etc/ssh/ssh_config.d
name: ssh-legacy
volumes:
- configMap:
defaultMode: 420
name: argocd-ssh-legacy-cm
name: ssh-legacy
# 2.6.11 version
version: "sha256:440998682e5396a4d74bd5abcccf645011c824c1025e3559fa3f5d18f326847b"