
Saudações, Habr!
Nós, a equipe de arquitetos de TI da IBM, que atua na criação e marketing de soluções industriais para diversos setores. Em nosso tempo livre, pesquisamos novas tecnologias, experimentamos e experimentamos as melhores práticas.
Nos últimos anos, o tema da Internet das Coisas tem sido muito popular. Nossos clientes perguntam sobre soluções e plataformas de caixas universais que podem ser localizadas localmente em seus Data Center. Mais importante, espera-se que, com base nessas "caixas", todos os novos serviços e aplicativos sejam desenvolvidos e lançados muito rapidamente, ou melhor, instantaneamente ou "ontem".
Perguntamos a nós mesmos: "E se reunirmos algo semelhante em tecnologias abertas e públicas?"
Já falamos e mostramos muito sobre o uso de contêineres do
Docker e suas ferramentas de gerenciamento baseadas no
Kubernetes . No entanto, até agora não foi possível ver como todas essas tecnologias avançadas podem ser usadas em escala industrial para tarefas de negócios, especificamente na Internet das Coisas. Então, vamos preencher essa lacuna. O conceito de microsserviços, bem como abordagens modernas de desenvolvimento (DevOps), integração e implantação de aplicativos (CI / CD) será considerado uma tarefa um pouco diferente e deixada de lado para mais tarde.
Neste artigo, queremos falar sobre a preparação e instalação de um dos principais componentes - IBM Cloud Private (na verdade, a montagem industrial do Docker / Kubernetes e um pouco mais), que pode atuar como um núcleo de infraestrutura condicional ao criar uma plataforma local da Internet das Coisas. Pergunte por que ele?
Porque prometemos tecnologias abertas e públicas (versão gratuita para a comunidade e suporte da comunidade):
hub.docker.com/r/ibmcom/icp-inceptionVisão geral do IBM Cloud Private
O IBM Cloud Private (ICP) é uma plataforma de nuvem privada para implementação e operações locais. O ICP é um ambiente integrado que permite projetar, desenvolver, implantar e gerenciar aplicativos locais criados com a arquitetura de contêineres. A entrega do ICP inclui um orquestrador baseado em Kubernetes (K8s), uma loja de imagens local, além de um console de gerenciamento e ferramentas de monitoramento de suporte.
O que é uma nuvem privada ou privada?
Uma nuvem privada é um modelo de computação em nuvem executado exclusivamente para uma organização, geralmente em seu território e recursos. Essa nuvem pode ser gerenciada e mantida por seus próprios especialistas e funcionários terceirizados. Uma plataforma semelhante pode ser hospedada atrás do firewall da empresa e fora dele. Uma nuvem privada oferece os benefícios de uma nuvem pública, incluindo rápida implantação e escalabilidade, além de facilidade de uso, gerenciamento e flexibilidade. Ao mesmo tempo, a versão local fornece maior controle sobre o sistema, maior produtividade, custos precisamente previsíveis, maiores requisitos de segurança e recursos flexíveis de gerenciamento, dependendo das necessidades da organização. Uma nuvem privada permite que você a configure diretamente para tarefas comerciais específicas e requisitos de segurança do cliente.
Antes de prosseguir com a instalação do ICP, definiremos a terminologia:
Nó mestre- Monitora e controla o cluster K8s.
- kubectl: uma ferramenta de linha de comando para gerenciar um cluster.
- API REST: interface para interagir com nós de trabalho.
- etcd: é um keystore persistente e acessível, usado como o armazenamento de backup do K8s para todos os dados do cluster.
- kube-scheduler: esse componente supervisiona os contêineres (pods) recém-criados que não possuem um nó designado e seleciona um nó para executá-los.
- Geralmente, são necessários 3 ou mais nós principais para uma operação estável e para garantir a tolerância a falhas. No nosso caso, para economizar recursos, instalaremos todos os componentes ICP necessários em um único servidor dedicado (Nó Único).
Nó de trabalho- A máquina de trabalho nos K8s anteriormente conhecida como Minion. Esse nó pode ser qualquer um dos hosts que recebe tarefas do nó principal e também controla o processo de iniciar contêineres. Dependendo das configurações do cluster, o nó de trabalho pode ser uma máquina virtual ou um servidor físico.
- Os seguintes componentes podem ser executados em cada nó:
- kubelet: é o principal serviço do nó de trabalho. Ele monitora os contêineres atribuídos ao seu nó (apirusver para uma conexão segura ou através de um arquivo de configuração local).
- kube-proxy: exibe os serviços definidos na API do K8s em cada nó, suportando regras de rede nas conexões de host e encaminhamento.
- docker: ambiente de lançamento e gerenciamento de contêineres.
- supervisord: Este é um processo leve de monitoramento e sistema de controle que você pode usar para manter o kubelet e o docker em execução.
- fluentd: este é um serviço que ajuda a garantir o registro em nível de cluster.
Contentores- Um aplicativo em execução em um ambiente isolado.
- O conjunto de processos executáveis e a imagem lançada do programa.
Casulos (vagens)- Um pod é um grupo de um ou mais contêineres do Docker, com um armazenamento / rede comum e uma especificação de como executar contêineres em um nó de trabalho.
- Cada Pod tem seu próprio IP.
- O pod compartilha o espaço para nome, a rede e o nome do host do PID.
Controlador de replicação- Fornece acessibilidade e escalabilidade.
- Responsável por controlar o número de Pods implantados.
- Usa um modelo que descreve o que cada Pod deve conter.
Etiquetas- Metadados atribuídos aos recursos do K8s, por exemplo: contêineres, serviços.
- Pares de valores-chave anexados a objetos para identificação.
- Esses parâmetros são críticos porque são baseados em uma solicitação de cluster para recursos com rótulos específicos.
Serviços- Uma coleção de contêineres expostos como um terminal.
- Informações sobre o status do cluster K8s e das configurações de rede, que se aplicam a todos os nós em funcionamento.
- Com a configuração correta, os pods criados pelo controlador de replicação serão registrados automaticamente como o serviço correspondente.
Informação secreta (segredos)- Informações confidenciais para serem lidas ou usadas por contêineres.
- Volumes especiais da unidade de disco são montados automaticamente para que os contêineres possam ler o conteúdo.
- Cada entrada tem seu próprio caminho.
Arquitetura
Abaixo está uma arquitetura ICP de alto nível que lista os principais componentes por nós principais, de trabalho e proxy. Vale ressaltar que, neste artigo, a ênfase principal é colocada em uma combinação de contêineres do Docker e do ambiente de gerenciamento Kubernetes. Esses componentes de código aberto são fundamentais e fundamentais para a plataforma ICP. No entanto, para trabalhar totalmente com o ICP, você também precisará do conhecimento de Helm, o gerente de gerenciamento de pacotes de software. O K8s é usado para implantar e hospedar instâncias de aplicativos incorporadas aos esquemas do Helm, que, por sua vez, se referem às imagens do Docker. Os esquemas de capacete contêm informações sobre os detalhes do seu aplicativo e as imagens do Docker contêm todos os pacotes de software necessários para executar o aplicativo.

Para uma introdução detalhada à arquitetura e aos componentes da plataforma ICP, você pode usar o link da documentação no
IBM Knowledge Center .
Preparação
Para concluir confortavelmente a instalação do ICP em 20 a 30 minutos, são necessários os seguintes recursos mínimos de hardware e acesso à Internet:
• Um host (físico ou virtual)
• CPU = 8 núcleos (ou núcleos virtuais)
• RAM = 10 GB (de fato, podem ser necessários até 14 GB)
• Disco = 40 GB (no SSD como sempre mais rápido)
Nota: se você tiver um pouco mais de tempo livre e um pouco menos de recursos de hardware, em algum momento de 40 a 60 minutos poderá instalar o ICP em 1 núcleo virtual i5 e 10 GB de RAM.
Instalação
Faça o download do Ubuntu
Faça o download da
versão de distribuição do
Ubuntu Server 16.04.05 . Execute uma instalação padrão do sistema operacional em uma máquina virtual ou física com as características acima.
Obtendo o endereço IP
Depois de concluir o processo de instalação do SO, na linha de comandos, descubra o endereço IP da sua máquina virtual usando o seguinte comando:
ifconfig
Você precisa escrever / lembrar o endereço IP Ethernet (inet addr), bem como Bcast e Mask. Estes parâmetros serão exibidos após a execução do comando correspondente:
Figura 1. Um exemplo do comando ifconfigConexão SSH
Se você usou a função “Instalação Fácil” ao configurar a máquina virtual, após a instalação completa do Ubuntu Server, você precisará instalar o servidor OpenSSH. Você pode fazer isso com os seguintes comandos:
apt install openssh-server sudo systemctl enable sshd
Após executar os comandos apropriados, você poderá se conectar à máquina virtual usando SSH. Dependendo do sistema operacional, você pode usar diferentes métodos de conexão. No Windows, você pode usar a popular ferramenta
PuTTY ; no MacOS, o comando ssh no terminal.
Figura 2. Exemplo de conexão via PuTTY para WindowsO próximo passo é definir uma senha para o super usuário (root):
sudo -i passwd
Figura 3. Definindo uma nova senha para o usuário rootAtualização da interface de rede
Depois de configurar a capacidade de conexão via SSH e atualizar a senha do superusuário, precisamos configurar a interface de rede para determinar os parâmetros estáticos da rede. Isso é feito com o seguinte comando:
nano /etc/network/interfaces
Atualizamos as configurações da interface de rede (interface de rede primária) com base nas informações obtidas durante o comando ifconfig, nosso exemplo é o seguinte:
auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8
Nota: É importante especificar corretamente o servidor DNS, pois o acesso à Internet é necessário para a instalação subsequente dos componentes do ICP.
Figura 4. Configurando a interface de redeSalve o arquivo atualizado usando as seguintes etapas: Ctrl + X, Sim, Enter.
Para simplificar o logon em uma máquina virtual com privilégios de superusuário (raiz), é necessário fazer alterações na configuração do serviço SSH. Para fazer isso, execute o seguinte comando:
nano /etc/ssh/sshd_config
Em seguida, encontre a linha de permissão de acesso e edite-a de acordo:
PermitRootLogin yes
Figura 5. Atualizando a configuração SSHSalve o arquivo como na etapa anterior: Ctrl + X, Sim, Enter.
Depois de fazer todas as alterações, para aplicar os novos parâmetros, faz sentido reiniciar completamente a máquina virtual ou os serviços correspondentes (rede e ssh), por exemplo, com os seguintes comandos:
shutdown -r 0
ou
service <service_name> restart
Após reiniciar a máquina, você deve efetuar login novamente através do SSH.
Atualização de componentes
Atualize o Ubuntu Server com o seguinte comando (o comando deve ser executado como root):
apt update
Nota: se ocorrer um erro durante a atualização: "O repositório 'cdrom: // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Release amd64 (20180731) xenial Release' não possui um arquivo de Release.". Você deve executar o seguinte comando:
sudo nano /etc/apt/sources.list
E comente a linha:
deb cdrom:[Ubuntu-Server 16.04.5 LTS …
Figura 6. Correção de um possível erroEm seguida, salve o arquivo, conforme feito anteriormente: Ctrl + X, Sim, Enter
Depois de corrigir um possível erro, execute o comando update novamente e, como resultado, você verá algo assim:
Figura 7. Atualização do UbuntuInstale o IBM Cloud Private
Antes de instalar o ICP, você precisa editar o arquivo hosts:
nano /etc/hosts
Substitua a string 127.0.1.1 ubuntu pelo seu endereço IP e qualquer nome de host adequado.
Verifique se o nome do host e o alias na linha estão separados por uma guia ou espaço:
Figura 8. Alterando o arquivo hostsSalve o arquivo: Ctrl + X, Sim, Enter
Os 2 comandos a seguir permitem atualizar o sistema e instalar módulos adicionais.
apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq
Verifique se há erros no terminal:
Figura 9. Instalando componentes adicionaisAumente a memória virtual máxima com o comando:
sysctl -w vm.max_map_count=262144
Os K8s não serão iniciados com a troca ativada. Você pode desativá-lo com o comando:
swapoff –a
Nota: os dois comandos anteriores funcionarão na sessão atual. Quando você reinicia, esses parâmetros serão perdidos e você precisará registrá-los novamente.
A aplicação desses parâmetros ao carregar o sistema operacional pode ser ativada pelos seguintes comandos:
sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf
Adicionando uma chave GPG
Nós usamos o seguinte comando:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Adicionando um repositório para instalar o Docker
Para concluir a instalação do repositório, você deve executar os 2 comandos a seguir:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update
Instalar o Docker
Use o seguinte comando para instalar o Docker (o Docker versão 17.12.1 é a versão máxima suportada para o IBM Cloud Private 2.1.0.3):
apt-get install docker-ce=17.12.1~ce-0~ubuntu
Figura 10. Processo de instalação do DockerVocê pode verificar a funcionalidade do Docker com o seguinte comando:
docker version
Figura 11. Verificando o DockerFaça o download do IBM Cloud Private
Para baixar a imagem do ICP-ce (Community Edition) do recurso dockerHub, é necessário usar o kit de ferramentas do Docker. Você pode fazer isso com o seguinte comando:
docker pull ibmcom/icp-inception:2.1.0.3
Figura 12. Faça o download do ICPA IBM empacotou todos os componentes essenciais necessários para instalação em um pacote (observe que você pode alterar a versão para uma versão mais nova, se necessário). O comando pull fará o upload da imagem no sistema de arquivos local (a imagem será iniciada para instalar o ICP).
Crie um diretório e navegue até ele:
mkdir /opt/icp cd /opt/icp
Copie o pacote ICP para este diretório:
docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
Nota: este comando do Docker toolkit executa o comando Linux copy (cp) no diretório especificado (opção -v). O diretório do cluster será criado em / opt / icp com todos os arquivos necessários.
Configurar chaves SSH
Crie novas chaves ssh no diretório / opt / icp / cluster:
ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key
Verifique se a chave foi criada e localizada na pasta / opt / icp / cluster:
ls /opt/icp/cluster
Figura 13. O conteúdo da pasta clusterConfiguração ICP
Adicione o endereço IP de cada nó no cluster ao arquivo / opt / icp / cluster / hosts (no nosso caso, usamos o mesmo endereço IP para cada componente especificado em / etc / hosts). Fazemos isso com o seguinte comando:
nano /opt/icp/cluster/hosts
Figura 14. O conteúdo do arquivo hostsSalve o arquivo: Ctrl + X, Sim, Enter
Informações detalhadas sobre as opções de instalação podem ser encontradas no arquivo de configuração:
more /opt/icp/cluster/config.yaml
Não recomendamos alterar as configurações de instalação padrão.
Nota: Os 2 arquivos de instalação mais importantes são hosts e config.yaml, que descrevem as opções de instalação do ICP. Em uma configuração de vários trabalhadores, você deve especificar uma lista de endereços IP na seção de trabalhadores. Ao instalar a versão atual do ICP no modo de nó único, os endereços IP no arquivo hosts são alterados apenas.
Instalação do ICP
Vá para o diretório do cluster e execute a instalação:
cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
Dependendo dos recursos disponíveis, a instalação pode durar de 20 a 60 minutos. Se ocorrerem erros (mensagens vermelhas), faça as alterações apropriadas nos arquivos de configuração. Às vezes, a instalação pode ficar um pouco mais lenta devido a tentativas de se reconectar aos componentes que ainda não foram iniciados (por exemplo, ao iniciar o Cloudant ou o IAM).
A instalação deve ficar assim:
Figura 15. Resultado da instalação do ICPEm caso de erros, a desinstalação do ICP pode ser necessária:
docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall
Antes de prosseguir para a próxima etapa, aguarde cerca de 5 minutos para que todos os componentes do ICP sejam iniciados com êxito.
Siga o link fornecido após a conclusão da instalação, entre no console do ICP (admin / admin):
https://<ip_address>:8443
Figura 16. A página de login do painel de controlePágina de boas-vindas do ICP:
Figura 17. Interface da Web do painel de controleNo canto superior direito, selecione o menu Catálogo, uma lista de aplicativos disponíveis é exibida:
Figura 18. Catálogo de componentesEste diretório contém uma lista de aplicativos e software, cuja descrição você pode estudar à vontade, mas até agora não se apressa em implementá-los.
Ainda precisamos aprender a lidar adequadamente com o ICP recém-instalado (não apenas através da interface da Web, mas também do console na forma da CLI - Command Line Interface), conectar o armazenamento persistente e fazer pequenas configurações.
Em conclusão
Para resumir.
Implementamos com sucesso a edição da comunidade IBM Cloud Private (versão 2.1.0.3) em um host em uma máquina virtual executando o Ubuntu Server OS 16/04/05. No momento, verificamos pessoalmente a instalação nos hipervisores VMware e Hyper-V, ela definitivamente funciona no XenServer e não deve haver dificuldades para o VirtualBox e o KVM.
Quem realmente está ansioso para aprofundar o estudo do ICP, ou seja, uma excelente seleção do trabalho de laboratório de nosso colega aqui:
github.com/phthom/IBMCloudPrivateDas próximas etapas - após uma nova instalação, precisamos apenas configurar um pouco o ICP e começar a preenchê-lo com algo útil e próximo a tarefas práticas.
Se a comunidade Habr apoiar positivamente essa iniciativa, à medida que nossas pesquisas e experimentos progredirem, preencheremos o núcleo da plataforma com os componentes necessários para coleta de telemetria, armazenamento de dados, processamento, análise, previsão, formação de interfaces de programa externas e criação de aplicativos do usuário. Por conseguinte, desenvolvendo uma série de tais artigos.
À espera de seus comentários e sugestões!
Além disso, nosso
pessoal do
AIXportal.ru preparou um maravilhoso videoclipe sobre a instalação do IBM Cloud Private em seu canal no Youtube; alguém ficará mais à vontade assim:
youtu.be/eQwOOTzjM24Links e materiais úteis
•
Página do produto em russo• Quem quer praticar inglês, o livro - “
ICP for Dummies ” 2018. (40 páginas)
•
Artigos técnicos sobre o ICP 2.1.0.3 no IBM Knowledge Center
• Comunidade
ICP aberta
no IBM developerWorks•
Receitas ICP para desenvolvedores