Reportar Flux status en Slack

En este post explico una manera de reportar en un canal de Slack el status de deploy de flux en un cluster de kubernetes.
Buscando en foros, documentación y blog encontré una manera y la comparto. Asumo que tienen todo lo necesario configurado en el cluster.

Documentación adicional:

https://github.com/fluxcd/flux/tree/master/chart/flux
https://github.com/justinbarrick/flux-operator

Lo primero que tenemos que hacer es generar el siguiente archivo para deployar flux cloud, lo llamaremos fluxcloud.yaml

---
kind: Service
apiVersion: v1
metadata:
  name: fluxcloud
spec:
  selector:
    name: fluxcloud
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3032
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: fluxcloud
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        name: fluxcloud
    spec:
      containers:
      - name: fluxcloud
        image: justinbarrick/fluxcloud:v0.3.6
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3032
        env:
        - name: SLACK_URL
          value: "https://hooks.slack.com/services/T0T1GDVCM/BMWGR38ER/tokeeeeennnnnV9JXQ4234"
        - name: SLACK_CHANNEL
          value: "#SlacReport(example)"
        # Or configure multiple channels
        # (comma separated =) string:
        #  value: "#kubernetes=*,#team=team"
        - name: SLACK_USERNAME
          value: FluxCd
        - name: SLACK_ICON_EMOJI
          value: ":weaveflux:"
        - name: GITHUB_URL
          value: "https://github.com/example/kube/"
        - name: LISTEN_ADDRESS
          value: ":3032"

No ponemos en contexto con el cluster y lanzamos el siguiente comando para deployar FluxCloud.

 kubectl apply -f fluxcloud.yaml

Ahora tenemos que generar el archivo de values para instalar Flux con Helm, destaco solo agrego los valores necesarios por conectar flux a floxcloud, los demas los agrega por defecto Helm. Al archivo lo llamaremos flux-values.yaml

additionalArgs:
 - --connect=ws://fluxcloud

Ahora deployaremos flux y lo conectaremos con flouxcloud, este se encargara de reportar los cambio en el cluster y en el repositorio de git seleccionado para el lanzamiento de releases

helm upgrade --install  flux  --set rbac.create=true --set helmOperator.create=true --set git.url=git@github.com:example/kube --set git.branch=development  --set git.label=cluster fluxcd/flux  -f flux-values.yaml

Para verificar la conexión puede ver el log del pod generado para flouxcloud, veran algo como lo siguiente:

kubectl log fluxcloud-54c5f84cc-ct58h -f
log is DEPRECATED and will be removed in a future version. Use logs instead.
[{#SlackReport *}]
Using Slack exporter
Request for:/v11/daemon
client connected!

Deja un comentario