Sobre as Cookies neste site Nossos sites requererem alguns cookies para funcionarem corretamente (obrigatório). Além disso, outros cookies podem ser usados com seu consentimento para analisar o uso do site, melhorar a experiência do usuário e para publicidade. Para obter mais informações, revise as opções de. Ao visitar nosso website, você concorda com nosso processamento de informações conforme descrito nadeclaração de privacidade da IBM. Para proporcionar uma navegação tranquila, suas preferências de cookie serão compartilhadas nos domínios da web da IBM listados aqui.
Empacotando apps para reutilização em múltiplos ambientes com o Kustomize
Como parte de um aplicativo nativo da nuvem de doze fatores, você deseja manter a paridade dev-to-prod
configurando um pipeline de desenvolvimento e entrega contínuos
que usa uma fonte de base de código comum e controlada por versão. Em seus repositórios de base de código, você armazena seus arquivos de manifesto de configuração de recursos Kubernetes, geralmente no formato YAML. É possível usar o projeto
do Kubernetes Kustomize para padronizar e customizar as implementações em vários ambientes.
Por exemplo, você pode configurar um arquivo kustomization
YAML básico para declarar objetos Kubernetes, como implantações e PVCs, que são compartilhados em seus ambientes de desenvolvimento, teste e produção. Em seguida, você pode
definir arquivos kustomization
YAML separados que tenham configurações personalizadas para cada ambiente, como, por exemplo, mais réplicas em produção do que em teste. Esses arquivos YAML personalizados podem então se sobrepor ao
arquivo YAML de base compartilhada, de modo que você possa gerenciar ambientes que são praticamente idênticos, exceto por algumas diferenças de configuração de sobreposição que você controla na fonte. Para obter mais informações sobre o site
Kustomize, como um glossário e perguntas frequentes, consulte os documentos do site Kustomize.
Antes de Iniciar:
- Certifique-se de que a versão do
kubectl
corresponda à sua versão do cluster. - Efetue login na sua conta. If applicable, target the appropriate resource group. Configure o contexto para o seu cluster.
Para configurar arquivos de configuração com o Kustomize:
-
Instale a ferramenta
kustomize
.- Para macOS, é possível usar o gerenciador de pacotes
brew
.brew install kustomize
- Para Windows, é possível usar o gerenciador de pacote
chocolatey
.choco install kustomize
- Para macOS, é possível usar o gerenciador de pacotes
-
Crie um diretório para seu app em um sistema de controle de versão, tal como Git.
git init ~/<my_app>
-
Crie a estrutura de repositório para o diretório
kustomize
base
, diretóriooverlay
e diretórios de ambiente, como preparação e produção. Nas etapas subsequentes, você configurará esses repositórios para uso comkustomize
.mkdir -p ~/<my_app>/base && mkdir -p ~/<my_app>/overlay && mkdir -p ~/<my_app>/overlay/staging && mkdir -p ~/<my_app>/overlay/prod
Exemplo de estrutura de repositório
. ├── base └── overlay ├── prod └── staging
-
Configure o repositório
base
.-
Navegue para o repositório base.
cd ~/<my_app>/base
-
Crie um conjunto inicial de arquivos YAML de configuração do Kubernetes para a implementação do app. Você pode usar o
wasliberty
Exemplo de YAML para criar uma implantação, serviço, mapa de configuração e reivindicação de volume persistente. -
Crie um arquivo
kustomization
que especifique a configuração base a ser aplicada em ambientes. O arquivokustomization
deve incluir a lista de YAMLs de configuração de recurso do Kubernetes que são armazenados no mesmo repositóriobase
. No arquivokustomization
, também é possível incluir configurações que se aplicam a todos os YAMLs de recurso no repositório base, como um prefixo ou sufixo que é anexado a todos os nomes de recurso, um rótulo, o namespace existente no qual todos os recursos são criados, segredos, configmaps e muito mais.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: wasliberty namePrefix: kustomtest- nameSuffix: -v2 commonLabels: app: kustomized-wasliberty resources: - deployment.yaml - service.yaml - pvc.yaml - configmap.yaml - secret.yaml
Os nomes dos YAMLs
resources
devem corresponder aos nomes dos outros arquivos no repositóriobase
. Você pode incluir diversas configurações no mesmo arquivo, mas, no exemplo, as configurações são arquivos separados, comodeployment.yaml
,service.yaml
epvc.yaml
. -
Construa seus arquivos YAML de recurso com as configurações que você definiu no arquivo YAML base
kustomization
. Os recursos são construídos combinando as configurações nokustomization
e os YAMLs de recurso juntos. Os arquivos YAML combinados são retornados emstdout
na saída. Use esse mesmo comando para construir qualquer mudança subsequente que você fizer no YAMLkustomization
, como incluir um rótulo.kustomize build
-
-
Configure seu repositório de sobreposição com arquivos YAML
kustomization
exclusivos para cada um de seus ambientes, como preparação e produção.-
No repositório de preparação, crie um arquivo
kustomization.yaml
. Inclua quaisquer configurações que sejam exclusivas para preparação, como um rótulo, tag de imagem ou YAML para um novo componente que você deseja testar.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namePrefix: staging- commonLabels: env: staging owner: TeamA bases: - ../../base patchesStrategicMerge: - configmap.yaml - new_staging_resource.yaml resources: - new_staging_resource.yaml
Compreensão dos componentes YAML Componente Descrição namePrefix
Especifique um prefixo para anexar ao nome de cada recurso que você deseja criar com seu arquivos kustomization
de preparação, comostaging-
.commonLabels
Inclua rótulos que sejam exclusivos para os objetos de preparação, como o ambiente de preparação e a equipe responsável. bases
Inclua um caminho relativo em um diretório ou URL para uma reposição remota que contenha um arquivo kustomization
de base. Neste exemplo, o caminho relativo aponta para o arquivokustomization
de base na reposição debase
criado anteriormente. Este campo é necessário parakustomization
de sobreposição.patchesStrategicMerge
Liste os arquivos YAML de configuração de recursos que deseja mesclar com kustomization
de base. É também necessário incluir estes arquivos no mesmo repositório que o arquivokustomization
, comooverlay/staging
. Esses arquivos de configuração de recurso podem conter pequenas mudanças que são mescladas nos arquivos de configuração base com o mesmo nome que uma correção. O recurso recebe todos os componentes que estão no arquivo de configuração debase
, além de qualquer outro componente qiue você especificar no arquivo de configuração deoverlay
. Se a configuração for um novo arquivo que não está na base, inclua também o nome do arquivo no camporesources
.resources
Liste quaisquer arquivos YAML de configuração de recurso que sejam exclusivos para o repositório de preparação e não estejam incluídos no repositório base. Inclua estes arquivos também no campo patchesStrategicMerge
e os inclua no mesmo repsitório que o arquivokustomization
, comooverlay/staging
.Outras configurações possíveis Para obter mais configurações que podem ser incluídas no arquivo, consulte Criar um arquivo kustomization
. -
Construa seus arquivos de configuração de sobreposição de preparação.
kustomize build overlay/staging
-
Repita essas etapas para criar seu
kustomization
de sobreposição de produção e outros arquivos YAML de configuração. Por exemplo, você pode aumentar o número de réplicas em seudeployment.yaml
para que seu ambiente de produção possa manipular mais solicitações do usuário. -
Revise a estrutura do repositório
kustomize
para certificar-se de que ela inclua todos os arquivos de configuração YAML necessários. A estrutura pode ser semelhante ao exemplo a seguir.├── base │ ├── configmap.yaml │ ├── deployment.yaml │ ├── kustomization.yaml │ ├── pvc.yaml │ ├── secret.yaml │ └── service.yaml └── overlay ├── prod │ ├── deployment.yaml │ ├── kustomization.yaml │ └── new_prod_resource.yaml └── staging ├── configmap.yaml ├── kustomization.yaml └── new_staging_resource.yaml
-
-
Aplique os recursos do Kubernetes para o ambiente que você deseja implementar. O exemplo a seguir usa o repositório de preparação.
- Navegue até o diretório de sobreposição de preparação. Se você não construiu seus recursos na etapa anterior, crie-os agora.
cd overlay/staging && kustomize build
- Aplique os recursos do Kubernetes ao seu cluster. Inclua a opção
-k
e o diretório em que o arquivokustomization
está localizado. Por exemplo, se você já estiver no diretório de preparação, inclua../staging
para marcar o caminho para o diretório.
Saída de exemplokubectl apply -k ../staging
configmap/staging-kustomtest-configmap-v2 created secret/staging-kustomtest-secret-v2 created service/staging-kustomtest-service-v2 created deployment.apps/staging-kustomtest-deployment-v2 created job.batch/staging-pi created persistentvolumeclaim/staging-kustomtest-pvc-v2 created
- Certificar-se de que as mudanças exclusivas de preparação sejam aplicadas. Por exemplo, se você incluiu um prefixo
staging-
, os pods e outros recursos que forem criados incluirão esse prefixo em seus nomes.
Saída de exemplokubectl get -k ../staging
NAME DATA AGE configmap/staging-kustomtest-configmap-v2 2 90s NAME TYPE DATA AGE secret/staging-kustomtest-secret-v2 Opaque 2 90s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/staging-kustomtest-service-v2 NodePort 172.21.xxx.xxx <none> 9080:30200/TCP 90s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/staging-kustomtest-deployment-v2 0/3 3 0 91s NAME COMPLETIONS DURATION AGE job.batch/staging-pi 1/1 41s 2m37s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/staging-kustomtest-pvc-v2 Pending ibmc-file-bronze 90s
- Repita essas etapas para cada ambiente que você deseja construir.
- Navegue até o diretório de sobreposição de preparação. Se você não construiu seus recursos na etapa anterior, crie-os agora.
-
Opcional: limpe seu ambiente removendo todos os recursos que você aplicou com o Kustomize.
kubectl delete -k <directory>
Saída de exemplo
configmap "staging-kustomtest-configmap-v2" deleted secret "staging-kustomtest-secret-v2" deleted service "staging-kustomtest-service-v2" deleted deployment.apps "staging-kustomtest-deployment-v2" deleted job.batch "staging-pi" deleted persistentvolumeclaim "staging-kustomtest-pvc-v2" deleted