CROSSPLANE: ¿Mejor que terraform?
ฝัง
- เผยแพร่เมื่อ 11 พ.ย. 2024
- Hoy hablo de Crossplane, una nueva forma de manejar infraestructura usando manifiestos de Kubernetes. También hablo de las ventajas y desventajas vs Terraform y cuándo usar uno o el otro.
Guia de Crossplane: crossplane.io/...
--
Repo con todos los archivos que uso: github.com/pab...
Merchandising Pelado Nerd: merch.peladone...
Micrófono: Rode VideoMicro + Zoom H1N
Cámara: Sony A7 Mark III
Lente: Sony 28-70mm 3.5
Laptop: Macbook Pro 16'' 2019
Puedes encontrar todos mis links en peladonerd.com
Creo que ambos pueden convivir. Por ejemplo terraform para crear la VPC, zonas de DNS, peering, API Gateway, clusters de k8s, etc. Y utilizar CrossPlane para cosas que tengan una relación más directa con cada servicio que mantienen los desarrolladores, un RDS de AWS, buckets u otros recursos que vayan a ser consumidos de forma directa por X servicio.
De una vez les cuento algo con lo que se van a chocar cuando se vuelvan dependientes de Crossplane. Kubernetes está obsesionado con mantener el estado sincronizado, eso significa que tiene que hacer llamados constantemente a los APIs para ver cambios. Lamentablemente los APIs externos de los providers no funcionan como ETCD que tiene eventos, lo que significa que es necesario estar constantemente haciendo peticiones GET para validar estados.
Qué significa esto? Que van a estar estallando todos sus APIs con llamadas entre más recursos tengan. Por ejemplo, el API de Cloudflare tiene un límite de llamadas, cuando tengan 10 clusters y 100 nombres de dominio en cada cluster, van a matar al API de Cloudflare. Y no van a poder hacer nada, sus clusters se van a quedar pegados intentando actualizar las cosas y validando los estados. Lo mismo les va a pasar con otros APIs, como Hashicorp Vault y otras cosas.
Tengan mucho cuidado con Crossplane, la verdad es que los APIs no están hechos para validar estados de la forma que Kubernetes lo hace.
Si quieren el mismo comportamiento con Terraform pues simplemente hagan que el Terraform escriba un K8s Secret con el name y el secret de la DB en el namespace de la aplicación que va a consumirla. YA. Así se soluciona ese problema que plantea el Pelao con Terraform y queda igual que los outputs de Crossplane. No van a perder la capacidad de hacer Terraform plan y no van a tener cosas pasando mágicamente en su infrastructura de PRODUCCIÓN porque alguien hizo un cambio por accidente y Crossplane fue a remediar el estado inmediatamente.
No sé, me parece una herrramienta muy peligrosa.
@@AFPinerosG Interesante...
Está muy bueno el video!! Muchas gracias!! Solo para aportar, HCL es basado en yaml por lo que la sintaxis de los archivos de configuración son similares a los de CrossPlane, aunque ciertamente HCL le agrega más poder el incluir un poco de lógica a la infra. Además no es necesario intervención manual para la aplicación de las configuraciones con la opción -auto-approve. Cómo lo dijeron en otro comentario creo que podrían coexistir perfectamente!!! Saludos de Paraguay!!
Hola Peladooo, esta vez levanto la mano. Nosotros hacemos todo lo que explicaste en el ejemplo del rds de forma automatizada usando tf; y mucho mas. Nuestros devs solo llenan un form (values en yml) y surge la magia.
Exacto los recursos los podes escalar desde el pipeline con un template
Muy buen video y muy interesante lo de crossplane! Sin dudas cuando este más maduro va a ser una gran alternativa 🙂. Con respecto a lo que comentabas de que terraform no escala, creo que se debe más a una metodología de trabajo que a la tecnología. Por ej si el equipo de desarrollo es también el encargado de construir su infra con tf no estaria el problema 😉.
Saludos desde Buenos Aires!
Muy bueno!, en nuestro caso estamos usando Terraform, pero orquestamos con ECS, por lo que de momento no tengo la oportunidad de aplicar Crossplane je (Y que me suena algo rebuscado crear un cluster a partir de otro cluster, es como que estoy forzando a usar una tecnologia que no aplica en ese caso)
Me parece muy copado el poder crear infra "On-demand" directo sobre Kubernetes, principalmente para a futuro poder tener más automatizado lo que son ambientes de desarrollo por servicio
En algun trabajo anterior utilizabamos templates de terraform que implementabamos como un source, declarabamos los recursos en un repo utilizando estos templates y las configuraciones estaban en un repo aparte que se manejaba todo con terragrunt. Esto porque manejabamos el mismo script de terraform con la config de cada ambiente, y nuestro CICD se encargaba de ir moviendo las versiones entre ambientes. Es mucho laburo si el proyecto es chico, pero este es un unicornio y a la velocidad que crece, este tipo de herramientas te salvan las papas. Buen video
Muy buena review. Me gustaría que hagas un video sobre cdk(aws), pros y contras que le ves. Ya que en mi caso lo vengo usando hace un tiempo, y todos los beneficios que mencionas de crossplane y terraform los trae resueltos de base
Muy buena la review, no me quedo muy claro por qué lo llaman Infra como datos si en realidad tenés yamls y es como manejar un operador más de k8s, con sus CRDs etc.
Saludos!
Porque en lugar de escribir codigo escribís configuración
Muy bueno pela! Quizas podrian convivir ambas, con terraform creas lo basico y principal (ej el primer cluster) y despues lo otro lo manejas con crossplane. No conocia esta herramienta y parece interesante la verdad.
Brutal el vídeo! Muchas gracias. Estaría bien más videos sobre Terraform y como hacer CI/CD de forma segura y validación de los cambios sobre la Infra.
Muy bueno viejo. Quedó a la espera del vídeo sobre crosshelicopter me pareció muy interesante ;)
Buenisimo el video, justo estaba buscando nuevas herramientas/tecnologias para seguir evolucionando la forma de manejar la infra y arquitectura del trabajo!!!!! Un Saludo desde Chile Pablo!!!
Hola Peladoo, me gusta mucho tu contenido, soy algo nuevo en Docker y Kubernetes, y estoy aprendiendo bastante con tus videos. ¿Qué opinas del uso de servicios serverless como AWS Fargate? ¿En que casos se debería usar, en lugar de administrar uno mismo la infraestructura? ¿Y cuando debería elegir el uso de serverless functions como Lambda, sobre el uso de containers?
Muy interesante, en el caso de Azure, que diferencia hay entre crossplane y Azure service operator?
Buen video!!! está bien conocer nuevas herramientas. Por cierto, ¿para cuando un video celebrando los 100k suscriptores? Felicidades
Gracias Pablo. excelente comparativa. En lo personal prefiero TF por lo predictivo del resultado y el manejo de versiones.
¿¿Será posible que pudieras hacer algún video sobre Service Mesh (Istio / Linkerd) con un cluster K8S en modo autopilot (GCP)??? o alguna mejor alternativa para saber qué ocurre dentro del cluster con los ms??
Muchas gracias nuevamente!
increible tool, terraform tmb tiene una vision integral de la infra, como haces para bindear cosas entre si? ejemplo, un dns friendly para tu postgres.... por otro lado, que hace el operador para concilar cambios y/o destruir es algo que tambien hay que considerar y que terraform hace muy bien
Excelete herramienta, gracias nuevamente por compartir
Geniales tus videos, muchas gracias!!
Tengo una pregunta, es posible en raspberry pi 3 b, crear un servidor rtmp que recepciones una cámara con transmisor rtmp y luego recibirlo en OBS por una DNS de rtmp que me comuniqué con el servidor?
muy bueno el vídeo pelardo. no conocía crossplane, lo probaré 😉
Buen video pela! interesante crossplane!
Buen contenido otra opcion para hacer deploy y en .yaml lo hace mas sencillo. Saludos
Nos gustan bastante los videos de tecnología que se puede aplicar 👍🏻
Seco Pelado!! gracias
Esta muy bueno el uso de crossplane, pero tengo una duda como se diferencia habría en entre esta tecnología y Cloudformation que que todo se declara todos los servicios (en este caso AWS)!?
Me gustó para ciertos casos de uso, pero no tiene nada que ver con terraform. Creo que no es comparable con terraform, porque tf tiene su lenguaje específico HCL, para poder hacer cosas complejas, dinámicas, mantenés el estado, podés importar recursos, incluso podés aprovisionar, correr scripts y hacer templating. Muy bueno el video. Saludos
Podría ser infra como objeto ?
Noooo recién estoy empezando a entender terraform, pelado! El enriedo de datos en crosshelicopter lo solucionás con un buen backup, no es para tanto.
Tenes algun analisis de pulumi vs terraform...? :)
buenaa, al final te mamaste, gracias por el video
Buenos dias saludos
El chiste final TOP 😂
Además muy interesante el vídeo. Gracias!
Hola Pelado y gracias por el video. Hay algo que no termino de comprender y he leido los comentarios y no he visto que te lo hayan preguntado: por que hablas de Terraform cuando AWS tiene su propio servicio de Infrastructure as Code que es CloudFormation? No termino de comprenderlo poque yo siempre he creido que quien interactue con AWS en este respecto sera utilizando su propio servicio CloudFormation y no Terraform. Gracias
Terraform tiene muchas más funcionalidades, no solo es compatible con otros servicios (por ejemplo, con el mismo código podes interactuar con GCP y AWS e intercambiar información entre ellos) sino que terraform tiene más posibilidades en el código, la lógica puede ser más compleja
@@PeladoNerd Gracias
Terraform hace lo q vos decís q no hace, nuestra Infra corre así. Ojooo peladooo cuando quieras charlamos y te mostramos nuestro laburo
También pienso que esto es lo que mencionaba Kelsey en su talk, pero realmente no creo que terraform desaparezca quizás coexistan cómo muchos mencionan
Interesante video Pelado como siempre. Exagerando un poco, creo que la comunidad de kubernetes quiere kubernetizar hasta el proceso de abrir una puerta. En mi opinión terraform seguirá teniendo el mayor segmento de mercado en el terreno de provisionar recursos de nube por mucho tiempo. Saludos.
Pela! Te olvidaste de poner la intro cuando haces el chasquido de dedos. Mucho muy importante que necesitabamos.
AJajaja me acabo de fijar y chasquié los dedos y despues dije vamos, deberia haber sido sin el "vamos"
Vamos a tener que probar crosshelicopter a ver que tal 😂
Espectaculaaarrrrr
No me gusta la idea de que dependa de un k8s.
Muy buen video, prefiero terraform, la infra en una gestion automatica me da miedo.
pela, que pensas de pulumi?
Es más complejo que terraform, podes usar tu propio lenguaje por lo que lo hace más poderoso. Pero tal vez sea más difícil de aprender o usar para aquellos que quieran hacer cosas simples
Para mi Crossplane por lo que explicas, no tiene manera de desbancar a terraform... y el motivo principal es que no todo el mundo usa kubernetes. Por ejemplo, en mi empresa la política es de serverless first, casi todas nuestras aplicaciones utilizan lambda, algunas fargate, y muy pocas EKS... con terraform no tienes problemas para usarlo en ninguno de los escenarios.
Aparte, terraform te permite sobre todo (muy importante para mí) crear módulos reutilizables y añadir cierta lógica (condicionales, bucles) a tus despliegues...
De momento para mi no hay color...
Muy bueno, puedes comentar sobre otras alternativas a terraform como pulumi. slds
Hasta que Platzi te compró jejejeje
Creo que la parte que menciona que la parte de terraform es manual esto realmente va a depender del workflow que tenga cada equipo, no lo sé Rick 🤔
Soy un adelantado, odié Terraform antes de aprender qué era y me sigue haciendo ruido aprenderlo, ¿qué sentido tiene con tantos operadores últimamente?
Pelado, has escuchado o leido sobre pulumi? Es parecido a lo que comentas de crossplane, resuelve los secretos sin interaccion humana. Ademas soporta el lenguaje que quieras python, go, javascript lo cual es mas cercano al desarrollador que el podrido yaml, y ademas si te da el preview! Honestamente con lo que hablas veo que pulumi resuelve mas cosas y es mas flexible que crossplane y terraform
Si, la idea es que los desarrolladores no tengan que escribir codigo, ya que es lento (incluso tal vez mas lento) que terraform
sumo a Kubeform como una alternativa, pero no lo he probado
Ummm mejor que terraform sería muy clickbait, porque sin infra no hay k8s, sin k8s no hay crossplane... por tanto?
es verdad, genera una dependencia tipo bucle no?
ese final jajajajaaj
QUEREMOS QUE VUELVA VAQUITA A LOS VIDEOS!!!!!
Ahshahahhahahshahahha cmamo con el helicóptero
Por qué el hate con Terraform?
Creo que pulumi es mejor
el titulo del video es ridiculo...
Hola, Pelado. Cuando quiero crear el AWS keyfile me sale esto en mi terminal.
fish: Unsupported use of '='. In fish, please use 'set AWS_PROFILE default'
Luego lo cambie a esto.
set AWS_PROFILE default && echo -e "[default]
aws_access_key_id = $(aws configure get aws_access_key_id --profile $AWS_PROFILE)
aws_secret_access_key = $(aws configure get aws_secret_access_key --profile $AWS_PROFILE)" > creds.conf
Cuando corri esto me sale este mensaje.
AWS_PROFfish: $(...) is not supported. In fish, please use '(aws)'.
set AWS_PROFILE default && echo -e "[default]
aws_access_key_id = $(aws configure get aws_access_key_id --profile AWS_PROFILE)
aws_secret_access_key = $(aws configure get aws_secret_access_key --profile AWS_PROFILE)" >creds.conf
Ya lo arregle. En vez de instalar AWS (Default VPC) instale AWS (Default New).