[Nativo da nuvem, k8s] Introdução ao gerenciador de pacotes de aplicativos Helm

Índice

1. Por que você precisa do Helm?

(1) Introdução ao Helm

(2) Helm tem três conceitos importantes:

(3) Recursos do leme

2. Mudanças no Helm V3

(1) Mudanças de arquitetura

(2) Criar namespace automaticamente

3. Implantação do gerenciador de pacotes de aplicativos Helm

1. Implante a ferramenta cliente Helm

2. Comandos comumente usados ​​do Helm

3. Configurar armazém gráfico doméstico

4. Use gráfico para implantar um aplicativo Nginx

5. Use gráfico para implantar um aplicativo Tomcat

6. Renderize modelos com variáveis


Configuração de pré-requisito: baseado em k8s (kubernetes várias voltas)

 

1. Por que você precisa do Helm?

        Os serviços de aplicação implantados no Kubernetes são compostos de descrições de recursos específicos, incluindo implantação, serviço, etc. Cada objeto de recurso é salvo em seu próprio arquivo ou gravado coletivamente em um arquivo de configuração. Em seguida, implante-o por meio do comando kubectl apply –f demo.yaml.

 

Se o sistema empresarial consistir apenas em um ou vários desses serviços, o método de gerenciamento de implantação acima será suficiente.

        Para um sistema de negócios complexo, haverá muitos arquivos de descrição de recursos semelhantes aos acima. Por exemplo, um aplicativo de arquitetura de microsserviço pode ter até dez ou dezenas de serviços que compõem o aplicativo. Se houver necessidade de atualizar ou reverter uma aplicação, pode ser necessário modificar e manter um grande número de arquivos de objetos de recursos envolvidos, e esta forma de organizar e gerenciar aplicações torna-se insuficiente.

        Além disso, devido à falta de gerenciamento e controle das versões publicadas dos aplicativos, a manutenção e atualizações dos aplicativos no Kubernetes enfrentam muitos desafios, principalmente os seguintes problemas:

Como gerenciar esses serviços como um todo

Como reutilizar esses arquivos de recursos de forma eficiente

O gerenciamento de versões no nível do aplicativo não é compatível

(1) Introdução ao Helm

        Helm é uma ferramenta de gerenciamento de pacotes do Kubernetes. Assim como os gerenciadores de pacotes no Linux, como yum/apt-get, etc., o Helm pode facilmente implantar arquivos yaml previamente empacotados no kubernetes.

(2) Helm tem três conceitos importantes:

helm: Uma ferramenta cliente de linha de comando usada principalmente para a criação, empacotamento, publicação e gerenciamento de gráficos de aplicativos Kubernetes.

Gráfico: Diretório ou pacote compactado, utilizado para descrição da aplicação, composto por uma série de arquivos utilizados para descrever objetos de recurso k8s.

Release: entidade de implantação baseada em gráfico. Depois que um gráfico é executado pelo Helm, uma versão correspondente será gerada; um objeto de recurso real em execução será criado em k8s.

(3) Recursos do leme

        Um gerenciador de pacotes desenvolvido para kubernetes. Cada pacote é chamado de Gráfico, e um Gráfico é um diretório (geralmente, o diretório será empacotado e compactado para formar um único arquivo no formato nome-versão.tar.gz para fácil transmissão. e armazenar)

        Para editores de aplicativos, o Helm pode ser usado para empacotar aplicativos, gerenciar dependências de aplicativos, gerenciar versões de aplicativos e publicar aplicativos em armazéns de software.

        Depois de usar o Helm, os usuários não precisam mais entender a sintaxe Yaml do Kubernetes e escrever arquivos de implantação de aplicativos, mas podem baixar e instalar os aplicativos necessários no Kubernetes por meio do Helm.

Helm fornece funções poderosas para implantação de software, exclusão, atualização e reversão de aplicativos em kubernetes

2. Mudanças no Helm V3

Em 13 de novembro de 2019, a equipe do Helm lançou a primeira versão estável do Helm v3. As principais alterações nesta versão são as seguintes:

(1) Mudanças de arquitetura

A mudança mais óbvia é a remoção do Tiller

 

1) Os nomes das versões podem ser reutilizados em diferentes namespaces

2) Suporte para envio de gráfico para Docker Mirror Warehouse Harbour

3) Use JSONSchema para verificar os valores do gráfico

4) Outros

O indivíduo Helm CLI é renomeado para melhor coordenar o texto com outros gerenciadores de pacotes

helm delete` foi renomeado para `helm desinstalar

helm inspecionar` foi renomeado para `helm show

helm fetch` foi renomeado para `helm pull

No entanto, os comandos antigos acima ainda podem ser usados.

O comando helm serve usado para construir temporariamente o Chart Repository localmente foi removido.

(2) Criar namespace automaticamente

        O Helm 2 criou o namespace ao criar uma distribuição em um namespace que não existia. Helm 3 segue o comportamento de outros objetos Kubernetes e retorna um erro se o namespace não existir.

require.yaml não é mais necessário, as dependências são definidas diretamente em chart.yaml.

3. Implantação do gerenciador de pacotes de aplicativos Helm

1. Implante a ferramenta cliente Helm

Endereço de download do cliente Helm: Versões · helm/helm · GitHub

Descompacte o pacote de código-fonte e mova-o para o diretório /usr/bin/.

[root@k8s-master ~]#wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]#cd linux-amd64/

[root@k8s-master linux-amd64]#ls

[root@k8s-master linux-amd64]# mv helm /usr/bin/

[root@k8s-master ~]# helm #Verifica se o comando helm está disponível

 

2. Comandos comumente usados ​​do Helm

Ordem

descrever

criar

Crie um gráfico e especifique um nome

dependência

Gerenciar dependências de gráfico

pegar

Baixe um lançamento. Subcomandos disponíveis: todos, ganchos, manifesto, notas, valores

história

Obtenha o histórico de lançamentos

instalar

Instale um gráfico

lista

Listar lançamentos

pacote

Compacte o diretório do gráfico em um arquivo gráfico

puxar

Baixe o gráfico do repositório remoto e extraia-o localmente# helm pull stable/mysql --untar

repositório

Adicione, liste, remova, atualize e indexe repositórios de gráficos. Subcomandos disponíveis: adicionar, indexar, listar, remover, atualizar

reversão

Reverter da versão anterior

procurar

Pesquise gráficos com base em palavras-chave. Subcomandos disponíveis: hub, repo

mostrar

Veja detalhes do gráfico. Subcomandos disponíveis: todos, gráfico, leia-me, valores

status

Mostrar o status de uma versão nomeada

modelo

Modelo de renderização local

Desinstalar

Desinstalar uma versão

atualizar

Atualizar uma versão

versão

Verifique a versão do cliente helm

3. Configurar armazém gráfico doméstico

O armazém da Microsoft ( Índice de /kubernetes/charts/ ) é altamente recomendado.Basicamente, todos os gráficos do site oficial estão disponíveis aqui.

Armazém em nuvem Alibaba ( https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

Armazém oficial ( Kubeapps | Home ) O armazém oficial de gráficos é um pouco difícil de usar na China.

Adicionar repositório de gráficos

[root@k8s-master ~]# helm repo adiciona estável http://mirror.azure.cn/kubernetes/charts

[root@k8s-master ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[root@k8s-master ~]# atualização do repositório do helm

Visualizar o repositório de gráficos configurado

[root@k8s-master ~]# lista de repositórios do helm

 

Exclua o repositório:

[root@k8s-master ~]# helm repo remove aliyun

[root@k8s-master ~]# lista de repositórios do helm

 

4. Use gráfico para implantar um aplicativo Nginx

1) Criar gráfico

[root@k8s-master ~]# helm cria nginx

 

[root@k8s-master ~]#árvore nginx/

Explicação detalhada:

nginx/

├── gráficos #dependem de arquivos de gráficos de outros pacotes

├── Chart.yaml #O arquivo de descrição do gráfico, incluindo endereço IP, informações de versão, etc.

├── modelos # Diretório para armazenar arquivos de modelo k8s

│ ├── deploy.yaml #Crie um modelo yaml para recursos de implantação k8s

│ ├── _helpers.tpl #Arquivos que começam com um sublinhado podem ser referenciados por outros modelos

│ ├── hpa.yaml #Configurar recursos de serviço Memória da CPU

│ ├── ingress.yaml # Configuração do Ingress para acessar o nome de domínio do serviço

│ ├── NOTES.txt #Arquivo de descrição, o conteúdo exibido ao usuário após a instalação do helm

│ ├── conta de serviço.yaml

│ ├── service.yaml #kubernetes Modelo yaml de serviço

│ └── testes

│ └── test-connection.yaml

└── valores.yaml #Variáveis ​​usadas para arquivos de modelo

 

2) Modifique o tipo de serviço em values.yaml para NodePort

[root@k8s-master ~]#cd nginx/

[root@k8s-master nginx]# valores vim.yaml

 

3) Instale a tarefa gráfica (observe o último ponto no comando)

[root@k8s-master nginx]# helm install -f valores.yaml

4) Ver lançamento

[root@k8s-master nginx]# helm ls #ou lista de helm

 

5) Excluir lançamento

[root@k8s-master nginx]# helm excluir nginx

6) Verifique o status do pod

[root@k8s-master nginx]# kubectl obtém pod

[root@k8s-master nginx]# kubectl get pod -o wide

7) Verifique o status do svc

[root@k8s-master nginx]# kubectl obtém svc

 

Visite 192.168.100.132:30281

5. Use gráfico para implantar um aplicativo Tomcat

[root@k8s-master ~]# helm criar tomcat

Criando gato

[root@k8s-master ~]#cd tomcat/

Modifique os arquivos deploy.yaml e service.yaml

[root@k8s-master tomcat]# modelos vim/deployment.yaml

[root@k8s-master tomcat]# modelos vim/service.yaml

 

Criar versão

[root@k8s-master tomcat]# helm install tomcat .

 

Ver lançamento

[root@k8s-master tomcat]# helm ls

 

Ver pods e svc

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# kubectl get pod -o wide

[root@k8s-master tomcat]# kubectl get svc

 

Preparar página de teste

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat#mkdir webapps/ROOT

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat#mkdir webapps/ROOT

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp

 

Teste de acesso:

Visite 192.168.100.132:32092

Visite 192.168.100.133:32092

 

excluir

[root@k8s-master tomcat]# helm excluir tomcat

[root@k8s-master tomcat]# helm ls

 

Atualização (reaplicar após alterar o arquivo yaml)

[root@k8s-master tomcat]# helm install tomcat .

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obter pod

 

[root@k8s-master tomcat]# modelos vim/deployment.yaml

 

[root@k8s-master tomcat]# helm upgrade tomcat .

[root@k8s-master tomcat]# kubectl obter pod

[root@k8s-master tomcat]# helm ls

 

reversão

[root@k8s-master Tomcat]# reversão do leme Tomcat 1

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obter pod

 

6. Renderize modelos com variáveis

Teste se o modelo é normal

[root@k8s-master Tomcat]# helm install --dry-run Tomcat .

 

Definir variáveis ​​no arquivo values.yaml

[root@k8s-master tomcat]# valores de gato.yaml

 

[root@k8s-master tomcat]# cat templates/deployment.yaml

[root@k8s-master tomcat]# cat templates/service.yaml

 

As variáveis ​​nos arquivos implantação.yaml e service.yaml são valores predefinidos e referenciados em valores.yaml.

Release.Name representa o nome após a instalação do helm

[root@k8s-master tomcat]# helm excluir tomcat

Exclua todos os arquivos redundantes do diretório de modelos, deixando apenas dois arquivos de teste.

[root@k8s-master Tomcat]#ls modelos/

[root@k8s-master tomcat]# helm install -f valores.yaml

[root@k8s-master tomcat]# helm ls

 

Ver status de publicação

[root@k8s-master tomcat]# status do leme tomcat

[root@k8s-master tomcat]# kubectl obter pod

 

Ver detalhes do pod

[root@k8s-master tomcat]# kubectl descreve pod tomcat-dp-67df6cd4d6-78pxc

 

Acho que você gosta

Origin blog.csdn.net/2302_77582029/article/details/132360012
Recomendado
Clasificación