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 SSH
Importante
Azure DevOps anunció el desuso de SSH-RSA como método de cifrado compatible para conectarse a repositorios de Azure mediante SSH. Si usa claves SSH para conectarse a repositorios de Azure en configuraciones de Flux, se recomienda pasar a claves RSA-SHA2-256 o RSA-SHA2-512 más seguras. Para obtener más información, consulte Desuso de Azure DevOps SSH-RSA.
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
Importante
Azure DevOps anunció el desuso de SSH-RSA como método de cifrado compatible para conectarse a repositorios de Azure mediante SSH. Si usa claves SSH para conectarse a repositorios de Azure en configuraciones de Flux, se recomienda pasar a claves RSA-SHA2-256 o RSA-SHA2-512 más seguras. Para obtener más información, consulte Desuso de Azure DevOps SSH-RSA.
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:
- Autenticación HTTPS del repositorio de Git
- Certificados autofirmados HTTPS del repositorio de Git
- Autenticación SSH del repositorio de Git
- Autenticación estática de depósitos
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
- Obtenga más información sobre las Implementaciones de aplicaciones con GitOps (Flux v2) para AKS y Kubernetes habilitado para Azure Arc.
- Use el tutorial para aprender a habilitar GitOps en los clústeres de AKS o de Kubernetes habilitado para Azure Arc.
- Obtenga información sobre flujo de trabajo de CI/CD mediante GitOps.