Parámetros compatibles con GitOps (Flux v2)

Azure proporciona una funcionalidad de implementaciones de aplicaciones automatizadas mediante GitOps que funciona con Azure Kubernetes Service (AKS) y clústeres de Kubernetes habilitados para Azure Arc. GitOps con Flux v2 le permite usar el repositorio de Git como el origen de información para la configuración de clústeres y la implementación de aplicaciones. Para obtener más información, consulte Implementaciones de aplicaciones con GitOps (Flux v2) y Tutorial: implementación de aplicaciones con GitOps con Flux v2.

GitOps en Kubernetes habilitado para Azure Arc o en Azure Kubernetes Service utiliza Flux, un popular conjunto de herramientas de código abierto que admite muchos parámetros para habilitar varios escenarios. Para obtener una descripción de todos los parámetros que Flux admite, consulte la documentación oficial de Flux.

Para ver todos los parámetros admitidos por Flux en Azure, consulte la az k8s-configuration documentación. Esta implementación no admite actualmente todos los parámetros que admite Flux. Háganos saber si falta algún parámetro que usted necesite en la implementación de Azure.

En este artículo se describen algunos de los parámetros y argumentos disponibles para el comando az k8s-configuration flux create. También es posible ver la lista completa de parámetros del az k8s-configuration flux mediante el parámetro -h en la CLI de Azure (por ejemplo: az k8s-configuration flux -h o az k8s-configuration flux create -h).

Sugerencia

Una solución alternativa para implementar recursos de Flux con parámetros no admitidos es definir los recursos personalizados de Flux necesarios (como GitRepository o Kustomization) dentro del repositorio de Git. Implemente estos recursos con el comando az k8s-configuration flux create. A continuación, podrá acceder a los recursos de Flux a través de la interfaz de usuario de Azure Arc.

Argumentos generales de la configuración

Parámetro Formato Notas
--cluster-name -c Cadena Nombre del recurso de clúster en Azure.
--cluster-type -t Valores permitidos: connectedClusters, managedClusters Use connectedClusters para los clústeres de Kubernetes habilitado para Azure Arc o managedClusters para los clústeres de AKS.
--resource-group -g Cadena Nombre del grupo de recursos de Azure que contiene el recurso de clúster.
--name -n Cadena Nombre de la configuración de Flux en Azure.
--namespace --ns Cadena Nombre del espacio de nombres para implementar la configuración. Predeterminado: default.
--scope -s Cadena Ámbito de permisos para los operadores. Los valores posibles son cluster (acceso total) o namespace (acceso restringido). Predeterminado: cluster.
--suspend flag Suspende todas las conciliaciones de origen y de Kustomize definidas en esta configuración de Flux. Las conciliaciones que están activas en el momento de la suspensión continúan.

Argumentos generales de origen

Parámetro Formato Notas
--kind Cadena Tipo de origen que debe conciliarse. Valores permitidos: bucket, git y azblob. Predeterminado: git.
--timeout Formato de duración de Go Tiempo máximo para intentar conciliar el origen antes de que se agote el tiempo de espera. Valor predeterminado: 10m.
--sync-interval --interval Formato de duración de Go Tiempo entre conciliaciones del origen en el clúster. Predeterminado: 10m.

Argumentos de referencia de origen del repositorio de Git

Parámetro Formato Notas
--branch Cadena Rama dentro del origen de Git que debe sincronizarse con el clúster. Predeterminado: master. Los repositorios más recientes pueden tener una rama raíz denominada main, en cuyo caso debe establecer --branch=main.
--tag Cadena Etiqueta del origen de Git que debe sincronizarse con el clúster. Ejemplo: --tag=3.2.0.
--semver Cadena Intervalo semver de etiquetas del origen de Git que debe sincronizarse con el clúster. Ejemplo: --semver=">=3.1.0-rc.1 <3.2.0".
--commit Cadena SHA de commit del origen de Git que debe sincronizarse con el clúster. Ejemplo: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a.

Para obtener más información, consulte la documentación de Flux sobre las estrategias de extracción del repositorio de Git.

Repositorio de Git público

Parámetro Formato Notas
--url -u http[s]://server/repo[.git] Dirección URL del origen del repositorio de Git que debe conciliarse con el clúster.

Repositorio de Git privado con claves SSH y creadas por Flux

Agregue la clave pública generada por Flux a la cuenta de usuario del proveedor de servicios de Git.

Parámetro Formato Notas
--url -u ssh://user@server/repo[.git] git@ debe reemplazar a user@ si la clave pública está asociada al repositorio en lugar de a la cuenta de usuario.

Repositorio de Git privado con claves SSH y proporcionadas por el usuario

Use su propia clave privada directamente o en un archivo. La clave debe tener el formato PEM y terminar con el carácter de nueva línea (\n).

Agregue la clave pública asociada a la cuenta de usuario del proveedor de servicios de Git.

Parámetro Formato Notas
--url -u ssh://user@server/repo[.git] git@ debe reemplazar a user@ si la clave pública está asociada al repositorio en lugar de a la cuenta de usuario.
--ssh-private-key Clave de Base64 con el formato PEM Proporcione la clave directamente.
--ssh-private-key-file Ruta de acceso completa del archivo local. Proporcione la ruta de acceso completa del archivo local que contiene la clave con el formato PEM.

Host de Git privado con hosts conocidos SSH y proporcionados por el usuario

El operador de Flux mantiene una lista de hosts de Git comunes en el archivo known_hosts. Flux usa esta información para autenticar el repositorio de Git antes de establecer la conexión SSH. Si usa un repositorio de Git no habitual o su propio host de Git, puede proporcionar la clave de host para que Flux pueda identificar el repositorio.

Al igual que con las claves privadas, puede proporcionar el contenido de known_hosts directamente o en un archivo. Cuando proporcione su propio contenido, utilice las especificaciones de formato del contenido de known_hosts, junto con cualquiera de los escenarios de claves SSH anteriores.

Parámetro Formato Notas
--url -u ssh://user@server/repo[.git] git@ puede reemplazar a user@.
--known-hosts Cadena de Base64 Proporcione el contenido de known_hosts directamente.
--known-hosts-file Ruta de acceso completa del archivo local. Proporcione el contenido de known_hosts en un archivo local.

Repositorio de Git privado con un usuario y una clave HTTPS

Parámetro Formato Notas
--url -u https://server/repo[.git] HTTPS con autenticación básica.
--https-user Cadena sin formato Nombre de usuario HTTPS.
--https-key Cadena sin formato Token de acceso o contraseña personal HTTPS.

Repositorio de Git privado con un certificado de entidad de certificación HTTPS

Parámetro Formato Notas
--url -u https://server/repo[.git] HTTPS con autenticación básica.
--https-ca-cert Cadena de Base64 Certificado de entidad de certificación para la comunicación TLS.
--https-ca-cert-file Ruta de acceso completa del archivo local. Proporcione el contenido del certificado de entidad de certificación en un archivo local.

Argumentos de origen del cubo

Si usa un origen bucket, estos son los argumentos de comando específicos del cubo.

Parámetro Formato Notas
--url -u Cadena de URL La dirección URL de bucket. Se admiten todos los formatos: http:// y https://.
--bucket-name Cadena Nombre del bucket que se sincronizará.
--bucket-access-key Cadena Id. de la clave de acceso que se usa para autenticarse en bucket.
--bucket-secret-key Cadena Clave secreta que se usa para autenticarse en bucket.
--bucket-insecure Booleano Comunicación con un bucket sin TLS. Si no se proporciona, se supone que es falso; si se proporciona, se supone que es verdadero.

Argumentos de origen de la cuenta Azure Blob Storage

Si usa un origen azblob, estos son los argumentos de comando específicos del blob.

Parámetro Formato Notas
--url -u Cadena de URL La dirección URL de azblob.
--container-name Cadena Nombre del contenedor de Azure Blob Storage que se va a sincronizar
--sp_client_id Cadena Id. de cliente para autenticar una entidad de servicio con Azure Blob, necesario para este método de autenticación
--sp_tenant_id Cadena Id. de inquilino de cliente para autenticar una entidad de servicio con Azure Blob, necesario para este método de autenticación
--sp_client_secret Cadena Secreto de cliente para autenticar una entidad de servicio con Azure Blob
--sp_client_cert Cadena Certificado de cliente codificado en Base64 para autenticar una entidad de servicio con Azure Blob
--sp_client_cert_password Cadena Contraseña del certificado de cliente que se usa para autenticar una entidad de servicio con Azure Blob
--sp_client_cert_send_chain Cadena Especifica si se debe incluir el encabezado x5c en las notificaciones de cliente al adquirir un token para habilitar la autenticación basada en el nombre del sujeto o en el emisor para el certificado de cliente
--account_key Cadena Clave compartida de Blob de Azure para la autenticación
--sas_token Cadena Token de SAS de Blob de Azure para la autenticación
--managed-identity-client-id Cadena Id. de cliente de la identidad administrada para la autenticación con Azure Blob

Importante

Al usar la autenticación de identidad administrada para clústeres de AKS y el origen azblob, la identidad administrada se deberá asignar como mínimo al rol lector de datos de blob de almacenamiento. La autenticación mediante una identidad administrada aún no está disponible para clústeres de Kubernetes habilitados para Azure Arc.

Secreto local para la autenticación en el origen

Puede usar un secreto de Kubernetes local para la autenticación con un origen git, bucket o azBlob. El secreto local debe contener todos los parámetros de autenticación necesarios para el origen y debe crearse en el mismo espacio de nombres que la configuración de Flux.

Parámetro Formato Notas
--local-auth-ref --local-ref Cadena Referencia local a un secreto de Kubernetes en el espacio de nombres de configuración de Flux que se usará para la autenticación en el origen.

Para la autenticación HTTPS, cree un secreto con username y password:

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

Para la autenticación SSH, cree un secreto con los campos identity y known_hosts:

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

En ambos casos, al crear la configuración de Flux, use --local-auth-ref my-custom-secret en lugar de los demás parámetros de autenticación:

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

Obtenga más información sobre el uso de un secreto de Kubernetes local con estos métodos de autenticación:

Nota:

Si necesita Flux para acceder al origen a través de su proxy, tendrá que actualizar los agentes de Azure Arc con la configuración del proxy. Para obtener más información, consulte Conexión mediante un servidor proxy de salida.

Implementación de Git

Para admitir varios proveedores de repositorios que implementan Git, se puede configurar Flux para que use una de dos bibliotecas de Git: go-git o libgit2. Para obtener más información, consulte la documentación de Flux.

La implementación de GitOps de Flux v2 determina automáticamente la biblioteca que debe usarse para los repositorios de nube pública:

  • Para los repositorios de GitHub, GitLab y BitBucket, Flux utiliza go-git.
  • Para los repositorios de Azure DevOps y el resto de repositorios, Flux utiliza libgit2.

Para los repositorios del entorno local, Flux utiliza libgit2.

Personalización con Kustomize

Kustomization es una configuración creada para las configuraciones de Flux que permite elegir una ruta de acceso específica en el repositorio de origen que se reconcilia en el clúster. No es necesario crear un archivo "kustomization.yaml" en esta ruta de acceso especificada. De forma predeterminada, todos los manifiestos de esta ruta de acceso se reconcilian. Sin embargo, si desea tener una superposición de Kustomize para las aplicaciones disponibles en esta ruta de acceso del repositorio, debería crear Personalizaciones de archivos de Kustomization en Git para que la configuración de Flux la use.

az k8s-configuration flux kustomization create permite crear una o varias personalizaciones con Kustomize durante la configuración.

Parámetro Formato Notas
--kustomization No hay ningún valor Inicio de una cadena de parámetros que configura una personalización. Puede usarlo varias veces para crear varias personalizaciones.
name Cadena Nombre único para esta personalización.
path Cadena Ruta de acceso del repositorio de Git que debe conciliarse con el clúster. El valor predeterminado es el nivel superior de la rama.
prune Booleano El valor predeterminado es false. Establezca prune=true para garantizar que los objetos que Flux implementó en el clúster se limpien si se quitan del repositorio o si se eliminan las personalizaciones de Kustomization o la configuración de Flux. El uso de prune=true es importante para entornos donde los usuarios no tienen acceso a los clústeres y solo pueden realizar cambios a través del repositorio de Git.
depends_on Cadena Nombre de una o varias personalizaciones (dentro de esta configuración) que deben conciliarse para que pueda conciliarse esta personalización. Por ejemplo: depends_on=["kustomization1","kustomization2"]. Si se quita una personalización de Kustomization que tenga personalizaciones dependientes, el estado de estas se convertirá en DependencyNotReady y se detendrá la conciliación.
timeout Formato de duración de Go Predeterminado: 10m.
sync_interval Formato de duración de Go Predeterminado: 10m.
retry_interval Formato de duración de Go Predeterminado: 10m.
validation Cadena Valores: none, client, server. Predeterminado: none. Consulte la documentación de Flux para obtener más información.
force Booleano Predeterminado: false. Establezca force=true para indicar al controlador de Kustomize que vuelva a crear recursos cuando se produzca un error en la aplicación de revisiones debido a un cambio de un campo inmutable.

También es posible usar az k8s-configuration flux kustomization para actualizar, enumerar, mostrar y eliminar personalizaciones de Kustomization en configuraciones de Flux.

Pasos siguientes