Índice
1. Por que você precisa do Helm?
(2) Helm tem três conceitos importantes:
(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