Parâmetros suportados por GitOps (Flux v2)
O Azure fornece um recurso de implantações automatizadas de aplicativos usando o GitOps que funciona com o Serviço Kubernetes do Azure (AKS) e clusters Kubernetes habilitados para Azure Arc. O GitOps com Flux v2 permite que você use seu repositório Git como a fonte da verdade para a configuração de cluster e implantação de aplicativos. Para obter mais informações, consulte Implantações de aplicativos com GitOps (Flux v2) e Tutorial: Implantar aplicativos usando GitOps com Flux v2.
O GitOps no Kubernetes habilitado para Azure Arc ou o Serviço Kubernetes do Azure usa o Flux, um popular conjunto de ferramentas de código aberto que dá suporte a muitos parâmetros para habilitar vários cenários. Para obter uma descrição de todos os parâmetros suportados pelo Flux, consulte a documentação oficial do Flux.
Para ver todos os parâmetros suportados pelo Flux no Azure, consulte a az k8s-configuration
documentação. Atualmente, essa implementação não suporta todos os parâmetros suportados pelo Flux. Deixe-nos saber se um parâmetro que você precisa está faltando na implementação do Azure.
Este artigo descreve alguns dos parâmetros e argumentos disponíveis para o az k8s-configuration flux create
comando. Você também pode ver a lista completa de parâmetros para o az k8s-configuration flux
usando o -h
parâmetro na CLI do Azure (por exemplo, az k8s-configuration flux -h
ou az k8s-configuration flux create -h
).
Gorjeta
Uma solução alternativa para implantar recursos do Flux com parâmetros não suportados é definir os recursos personalizados do Flux necessários (como GitRepository ou Kustomization) dentro do repositório Git. Implante esses recursos com o az k8s-configuration flux create
comando. Em seguida, você ainda poderá acessar seus recursos do Flux por meio da interface do usuário do Azure Arc.
Argumentos gerais de configuração
Parâmetro | Formato | Notas |
---|---|---|
--cluster-name -c |
String | Nome do recurso de cluster no Azure. |
--cluster-type -t |
Valores permitidos: connectedClusters , managedClusters |
Use connectedClusters para clusters Kubernetes habilitados para Azure Arc ou managedClusters para clusters AKS. |
--resource-group -g |
String | Nome do grupo de recursos do Azure que contém o recurso de cluster. |
--name -n |
String | Nome da configuração do Flux no Azure. |
--namespace --ns |
String | Nome do namespace para implantar a configuração. Padrão: default . |
--scope -s |
String | Escopo de permissão para os operadores. Os valores possíveis são cluster (acesso total) ou namespace (acesso restrito). Padrão: cluster . |
--suspend |
flag | Suspende todas as reconciliações de origem e kustomize definidas nesta configuração do Flux. As conciliações ativas no momento da suspensão continuarão. |
Argumentos gerais da fonte
Parâmetro | Formato | Notas |
---|---|---|
--kind |
String | Fonte tipo para reconciliar. Valores permitidos: bucket , git , azblob . Padrão: git . |
--timeout |
Formato de duração do golang | Tempo máximo para tentar reconciliar a fonte antes do tempo limite. Padrão: 10m . |
--sync-interval --interval |
Formato de duração do golang | Tempo entre reconciliações da origem no cluster. Padrão: 10m . |
Argumentos de referência de origem do repositório Git
Parâmetro | Formato | Notas |
---|---|---|
--branch |
String | Ramificação dentro da origem do Git para sincronizar com o cluster. Padrão: master . Os repositórios mais recentes podem ter uma ramificação raiz chamada main , caso em que você precisa definir --branch=main . |
--tag |
String | Tag dentro da origem do Git para sincronizar com o cluster. Exemplo: --tag=3.2.0 . |
--semver |
String | Intervalo de tags semver Git dentro da origem do Git para sincronizar com o cluster. Exemplo: --semver=">=3.1.0-rc.1 <3.2.0" . |
--commit |
String | O Git confirma SHA na origem do Git para sincronizar com o cluster. Exemplo: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a . |
Para obter mais informações, consulte a documentação do Flux sobre estratégias de checkout do repositório Git.
Repositório Git público
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
http[s]://server/repo[.git] |
URL da origem do repositório Git para reconciliar com o cluster. |
Repositório Git privado com SSH
Importante
O Azure DevOps anunciou a substituição do SSH-RSA como um método de criptografia com suporte para se conectar aos repositórios do Azure usando SSH. Se você usar chaves SSH para se conectar a repositórios do Azure em configurações do Flux, recomendamos mudar para chaves RSA-SHA2-256 ou RSA-SHA2-512 mais seguras. Para obter mais informações, consulte Descontinuação do Azure DevOps SSH-RSA.
Repositório Git privado com chaves SSH e Flux criadas
Adicione a chave pública gerada pelo Flux à conta de utilizador no seu fornecedor do serviço Git.
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
ssh://user@server/repo[.git] |
git@ deve substituir user@ se a chave pública estiver associada ao repositório em vez da conta de usuário. |
Repositório Git privado com SSH e chaves fornecidas pelo usuário
Use sua própria chave privada diretamente ou de um arquivo. A chave deve estar no formato PEM e terminar com uma nova linha (\n
).
Adicione a chave pública associada à conta de utilizador no fornecedor do serviço Git.
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | git@ deve substituir user@ se a chave pública estiver associada ao repositório em vez da conta de usuário. |
--ssh-private-key |
Tecla Base64 em formato PEM | Forneça a chave diretamente. |
--ssh-private-key-file |
Caminho completo para o arquivo local | Forneça o caminho completo para o arquivo local que contém a chave de formato PEM. |
Host Git privado com SSH e hosts conhecidos fornecidos pelo usuário
O operador Flux mantém uma lista de hosts Git comuns em seu known_hosts
arquivo. O Flux usa essas informações para autenticar o repositório Git antes de estabelecer a conexão SSH. Se você estiver usando um repositório Git incomum ou seu próprio host Git, poderá fornecer a chave do host para que o Flux possa identificar seu repositório.
Tal como as chaves privadas, pode fornecer o seu conteúdo known_hosts
diretamente ou num ficheiro. Quando você estiver fornecendo seu próprio conteúdo, use as especificações de formato de conteúdo known_hosts, juntamente com qualquer um dos cenários de chave SSH anteriores.
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | git@ pode substituir user@ . |
--known-hosts |
Cadeia de caracteres Base64 | Forneça known_hosts conteúdo diretamente. |
--known-hosts-file |
Caminho completo para o arquivo local | Forneça known_hosts conteúdo em um arquivo local. |
Repositório Git privado com um usuário e chave HTTPS
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
https://server/repo[.git] |
HTTPS com autenticação básica. |
--https-user |
Cadeia de caracteres bruta | Nome de usuário HTTPS. |
--https-key |
Cadeia de caracteres bruta | Token de acesso pessoal HTTPS ou senha. |
Repositório Git privado com um certificado de CA HTTPS
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
https://server/repo[.git] |
HTTPS com autenticação básica. |
--https-ca-cert |
Cadeia de caracteres Base64 | Certificado de autoridade de certificação para comunicação TLS. |
--https-ca-cert-file |
Caminho completo para o arquivo local | Forneça o conteúdo do certificado da autoridade de certificação em um arquivo local. |
Argumentos de origem do bucket
Se você usar bucket
source, aqui estão os argumentos de comando específicos do bucket.
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
URL String | O URL do bucket . Formatos suportados: http:// , https:// . |
--bucket-name |
String | Nome do bucket a sincronizar. |
--bucket-access-key |
String | ID da chave de acesso usada para autenticar com o bucket . |
--bucket-secret-key |
String | Chave secreta usada para autenticar com o bucket . |
--bucket-insecure |
Boolean | Comunique-se com um bucket sem TLS. Se não for fornecido, presumido falso; se fornecido, presumido verdadeiro. |
Argumentos de origem da Conta de Armazenamento de Blob do Azure
Se você usar azblob
source, aqui estão os argumentos de comando específicos do blob.
Parâmetro | Formato | Notas |
---|---|---|
--url -u |
URL String | O URL do azblob . |
--container-name |
String | Nome do contêiner de Armazenamento de Blobs do Azure a ser sincronizado |
--sp_client_id |
String | A ID do cliente para autenticar uma entidade de serviço com o Blob do Azure, necessária para este método de autenticação |
--sp_tenant_id |
String | A ID do locatário para autenticar uma entidade de serviço com o Blob do Azure, necessária para esse método de autenticação |
--sp_client_secret |
String | O segredo do cliente para autenticar uma entidade de serviço com o Blob do Azure |
--sp_client_cert |
String | O certificado de cliente codificado em Base64 para autenticar uma entidade de serviço com o Blob do Azure |
--sp_client_cert_password |
String | A senha para o certificado de cliente usado para autenticar uma entidade de serviço com o Blob do Azure |
--sp_client_cert_send_chain |
String | Especifica se o cabeçalho x5c deve ser incluído nas declarações do cliente ao adquirir um token para habilitar a autenticação baseada no nome da entidade/no emissor para o certificado do cliente |
--account_key |
String | A Chave Compartilhada de Blob do Azure para autenticação |
--sas_token |
String | O Token SAS de Blob do Azure para autenticação |
--managed-identity-client-id |
String | A ID do cliente da identidade gerenciada para autenticação com o Blob do Azure |
Importante
Ao usar a autenticação de identidade gerenciada para clusters AKS e azblob
origem, a identidade gerenciada deve ser atribuída, no mínimo, à função Leitor de Dados de Blob de Armazenamento . A autenticação usando uma identidade gerenciada ainda não está disponível para clusters Kubernetes habilitados para Azure Arc.
Segredo local para autenticação com origem
Você pode usar um segredo Kubernetes local para autenticação com um git
ou bucket
azBlob
fonte. O segredo local deve conter todos os parâmetros de autenticação necessários para a origem e deve ser criado no mesmo namespace que a configuração do Flux.
Parâmetro | Formato | Notas |
---|---|---|
--local-auth-ref --local-ref |
String | Referência local a um segredo do Kubernetes no namespace de configuração do Flux a ser usado para autenticação com a origem. |
Para autenticação HTTPS, você cria um segredo com o username
e 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 autenticação SSH, você cria um segredo com os identity
campos e 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
O Azure DevOps anunciou a substituição do SSH-RSA como um método de criptografia com suporte para se conectar aos repositórios do Azure usando SSH. Se você usar chaves SSH para se conectar a repositórios do Azure em configurações do Flux, recomendamos mudar para chaves RSA-SHA2-256 ou RSA-SHA2-512 mais seguras. Para obter mais informações, consulte Descontinuação do Azure DevOps SSH-RSA.
Para ambos os casos, ao criar a configuração do Flux, use --local-auth-ref my-custom-secret
no lugar dos outros parâmetros de autenticação:
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
Saiba mais sobre como usar um segredo Kubernetes local com estes métodos de autenticação:
- Autenticação HTTPS do repositório Git
- Certificados autoassinados HTTPS do repositório Git
- Autenticação SSH do repositório Git
- Autenticação estática de bucket
Nota
Se você precisar do Flux para acessar a fonte por meio de seu proxy, deverá atualizar os agentes do Azure Arc com as configurações de proxy. Para obter mais informações, consulte Conectar-se usando um servidor proxy de saída.
Implementação do Git
Para suportar vários provedores de repositório que implementam o Git, o Flux pode ser configurado para usar uma das duas bibliotecas Git: go-git
ou libgit2
. Para obter detalhes, consulte a documentação do Flux.
A implementação GitOps do Flux v2 determina automaticamente qual biblioteca usar para repositórios de nuvem pública:
- Para repositórios GitHub, GitLab e BitBucket, o Flux usa
go-git
o . - Para o Azure DevOps e todos os outros repositórios, o Flux usa
libgit2
o .
Para repositórios locais, o Flux usa libgit2
o .
Kustomização
Kustomization é uma configuração criada para configurações do Flux que permite escolher um caminho específico no repositório de origem que é reconciliado no cluster. Você não precisa criar um arquivo 'kustomization.yaml neste caminho especificado. Por padrão, todos os manifestos nesse caminho são reconciliados. No entanto, se você quiser ter uma sobreposição Kustomize para aplicativos disponíveis neste caminho de repo, você deve criar arquivos Kustomize no git para a configuração do Flux usar.
az k8s-configuration flux kustomization create
Usando o , você pode criar uma ou mais kustomizations durante a configuração.
Parâmetro | Formato | Notas |
---|---|---|
--kustomization |
Sem valor | Início de uma cadeia de parâmetros que configuram uma kustomização. Você pode usá-lo várias vezes para criar várias kustomizations. |
name |
String | Nome exclusivo para esta kustomização. |
path |
String | Caminho dentro do repositório Git para reconciliar com o cluster. O padrão é o nível superior da ramificação. |
prune |
Boolean | A predefinição é false . Defina prune=true para garantir que os objetos que o Flux implantou no cluster sejam limpos se forem removidos do repositório ou se a configuração ou kustomizations do Flux forem excluídas. O uso prune=true é importante para ambientes onde os usuários não têm acesso aos clusters e podem fazer alterações apenas por meio do repositório Git. |
depends_on |
String | Nome de uma ou mais kustomizations (dentro desta configuração) que devem ser reconciliadas antes que esta kustomização possa ser reconciliada. Por exemplo: depends_on=["kustomization1","kustomization2"] . Se você remover uma kustomização que tenha kustomizações dependentes, o estado de kustomizations dependentes se tornará DependencyNotReady , e a reconciliação será interrompida. |
timeout |
Formato de duração do golang | Padrão: 10m . |
sync_interval |
Formato de duração do golang | Padrão: 10m . |
retry_interval |
Formato de duração do golang | Padrão: 10m . |
validation |
String | Valores: none , client , server . Padrão: none . Consulte a documentação do Flux para obter detalhes. |
force |
Boolean | Padrão: false . Definido force=true para instruir o controlador kustomize a recriar recursos quando a aplicação de patches falhar devido a uma alteração de campo imutável. |
Você também pode usar az k8s-configuration flux kustomization
para atualizar, listar, mostrar e excluir kustomizations em uma configuração do Flux.
Próximos passos
- Saiba mais sobre implantações de aplicativos com GitOps (Flux v2) para AKS e Kubernetes habilitados para Azure Arc.
- Use nosso tutorial para saber como habilitar o GitOps em seus clusters Kubernetes habilitados para AKS ou Azure Arc.
- Saiba mais sobre o fluxo de trabalho de CI/CD usando o GitOps.