<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
		<id>http://doc-redome.cancer.org.br/index.php?action=history&amp;feed=atom&amp;title=Ambiente_INCA_-_Instala%C3%A7%C3%A3o_kubernetes</id>
		<title>Ambiente INCA - Instalação kubernetes - Histórico de revisão</title>
		<link rel="self" type="application/atom+xml" href="http://doc-redome.cancer.org.br/index.php?action=history&amp;feed=atom&amp;title=Ambiente_INCA_-_Instala%C3%A7%C3%A3o_kubernetes"/>
		<link rel="alternate" type="text/html" href="http://doc-redome.cancer.org.br/index.php?title=Ambiente_INCA_-_Instala%C3%A7%C3%A3o_kubernetes&amp;action=history"/>
		<updated>2026-05-20T07:16:22Z</updated>
		<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://doc-redome.cancer.org.br/index.php?title=Ambiente_INCA_-_Instala%C3%A7%C3%A3o_kubernetes&amp;diff=1730&amp;oldid=prev</id>
		<title>Sheila.prado: Criou página com 'Descrição da Arquitetura Kubernetes  Node master: responsável por orquestrar as operações do cluster, realizar deploys, comandar os healthchecks e etc.  Nodes worke...'</title>
		<link rel="alternate" type="text/html" href="http://doc-redome.cancer.org.br/index.php?title=Ambiente_INCA_-_Instala%C3%A7%C3%A3o_kubernetes&amp;diff=1730&amp;oldid=prev"/>
				<updated>2021-05-20T19:21:56Z</updated>
		
		<summary type="html">&lt;p&gt;Criou página com &amp;#039;Descrição da Arquitetura Kubernetes  Node master: responsável por orquestrar as operações do cluster, realizar deploys, comandar os healthchecks e etc.  Nodes worke...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Descrição da Arquitetura Kubernetes&lt;br /&gt;
 Node master: responsável por orquestrar as operações do cluster, realizar deploys, comandar os&lt;br /&gt;
healthchecks e etc.&lt;br /&gt;
 Nodes workers: responsáveis por receber os pods da aplicação, fazer proxy entre os mesmos e&lt;br /&gt;
garantir a quantidade de containers solicitada rodando entre eles.&lt;br /&gt;
2. Instalações e Configurações&lt;br /&gt;
Instalar o Docker e alguns CLI´s do Kubernetes em todos os clusters.&lt;br /&gt;
Importante: deve ser retirado das VMs a possibilidade de swap de disco.&lt;br /&gt;
2.1. Instalando o Docker&lt;br /&gt;
Fazer o download e instalar a versão do Docker mais recente.&lt;br /&gt;
https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker&lt;br /&gt;
Configurando o Docker:&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF | sudo tee /etc/docker/daemon.json&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;exec-opts&amp;quot;: [&amp;quot;native.cgroupdriver=systemd&amp;quot;],&lt;br /&gt;
 &amp;quot;log-driver&amp;quot;: &amp;quot;json-file&amp;quot;,&lt;br /&gt;
 &amp;quot;log-opts&amp;quot;: {&lt;br /&gt;
 &amp;quot;max-size&amp;quot;: &amp;quot;100m&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;storage-driver&amp;quot;: &amp;quot;overlay2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
EOF&lt;br /&gt;
sudo mkdir -p /etc/systemd/system/docker.service.d&lt;br /&gt;
Iniciando o Docker:&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl restart docker&lt;br /&gt;
Também é possível iniciar o serviço do Docker no boot utilizando o comando abaixo:&lt;br /&gt;
sudo systemctl enable docker&lt;br /&gt;
Projeto ModRED (sistema de modernização do REDOME)&lt;br /&gt;
2.2. Instalando os componentes do Kubernetes (kubeadm, kubelet e kubectl)&lt;br /&gt;
 Kubeadm: realiza o bootstrap do cluster.&lt;br /&gt;
 Kubelet: roda em todos os nodes gerenciando os papéis, iniciando pods, containers e&lt;br /&gt;
mantendo os mesmos saudáveis.&lt;br /&gt;
 Kubectl: realiza a comunicação com o cluster e executar todas as operações de&lt;br /&gt;
orquestração.&lt;br /&gt;
apt-get update &amp;amp;&amp;amp; apt-get install -y apt-transport-https curl&lt;br /&gt;
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/apt/sources.list.d/kubernetes.list&lt;br /&gt;
deb http://apt.kubernetes.io/ kubernetes-xenial main&lt;br /&gt;
EOF&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install -y kubelet kubeadm kubectl&lt;br /&gt;
2.3. Criando o node master&lt;br /&gt;
Executar o comando:&lt;br /&gt;
kubeadm init&lt;br /&gt;
Ao final da execução serão exibidos outros comandos a serem executados para finalizar a&lt;br /&gt;
configuração e o comando necessário para configurar os nodes workers.&lt;br /&gt;
Exemplo:&lt;br /&gt;
Your Kubernetes master has initialized successfully!To start using your cluster, you need to run the&lt;br /&gt;
following as a regular user:mkdir -p $HOME/.kube&lt;br /&gt;
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.&lt;br /&gt;
Run &amp;quot;kubectl apply -f [podnetwork].yaml&amp;quot; with one of the options listed at:&lt;br /&gt;
 https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of&lt;br /&gt;
machines by running the following on each node&lt;br /&gt;
as root:Your Kubernetes master has initialized successfully!To start using your cluster, you need to run&lt;br /&gt;
the following as a regular user:mkdir -p $HOME/.kube&lt;br /&gt;
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config&lt;br /&gt;
 sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.&lt;br /&gt;
Run &amp;quot;kubectl apply -f [podnetwork].yaml&amp;quot; with one of the options listed at:&lt;br /&gt;
Projeto ModRED (sistema de modernização do REDOME)&lt;br /&gt;
 https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of&lt;br /&gt;
machines by running the following on each node&lt;br /&gt;
as root:kubeadm join 172.31.85.6:6443 --token izzg7r.ueqzp7ndzxp8g5xq --discovery-token-ca-cert-hash&lt;br /&gt;
sha256:e0244a52257be9e8cba49303e0472eb25020c6bd6c68f583653ed1700260fd0a&lt;br /&gt;
2.4. Criando os nodes workers&lt;br /&gt;
Após instalar o Docker e os CLI’s do Kubernetes em todos os nodes vamos rodar o comando&lt;br /&gt;
informado na inicialização do cluster. Ele é baseado na seguinte estrutura.&lt;br /&gt;
kubeadm join &amp;lt;ip-do-master&amp;gt;:6443 --token &amp;lt;token&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;discoverytoken&amp;gt;&lt;br /&gt;
No caso do exemplo descrito no item 2.3., seria executar:&lt;br /&gt;
kubeadm join 172.31.85.6:6443 --token izzg7r.ueqzp7ndzxp8g5xq --discovery-token-ca-cert-hash&lt;br /&gt;
sha256:e0244a52257be9e8cba49303e0472eb25020c6bd6c68f583653ed1700260fd0a&lt;br /&gt;
Após executar o comando gerado na criação do cluster em todos os Nodes, podemos a partir do&lt;br /&gt;
master listar todos os nodes vinculados ao cluster.&lt;br /&gt;
kubectl get nodes&lt;br /&gt;
2.5. Instalar Ingress e CoreDNS&lt;br /&gt;
No node master também devem ser instalados o NGINX Igress Controller e o Coredns.&lt;br /&gt;
 CoreDNS é um servidor DNS que serve como o DNS do cluster Kubernetes.&lt;br /&gt;
https://kubernetes.io/docs/tasks/administer-cluster/coredns/&lt;br /&gt;
 NGINX Ingress Controller para Kubernetes faz o balanceamento de carga básico, encerramento&lt;br /&gt;
SSL / TLS, suporte para regravações de URI e criptografia SSL / TLS upstream. Por padrão, os&lt;br /&gt;
pods de serviços do Kubernetes não são acessíveis da rede externa, mas apenas por outros&lt;br /&gt;
pods dentro do cluster do Kubernetes. O Kubernetes tem uma configuração integrada para&lt;br /&gt;
balanceamento de carga HTTP, chamada Ingress, que define regras para conectividade externa&lt;br /&gt;
com serviços Kubernetes. Os usuários que precisam fornecer acesso externo aos serviços do&lt;br /&gt;
Kubernetes criam um recurso Ingress que define regras, incluindo o caminho do URI, o nome&lt;br /&gt;
do serviço de apoio e outras informações. O controlador do Ingress pode então programar &lt;br /&gt;
Projeto ModRED (sistema de modernização do REDOME)&lt;br /&gt;
automaticamente um balanceador de carga de front-end para habilitar a configuração do&lt;br /&gt;
Ingress.&lt;br /&gt;
https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/&lt;br /&gt;
2.6. Instalar o certificado&lt;br /&gt;
2.6.1. Instalar os recursos CustomResourceDefinition.&lt;br /&gt;
$ kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/certmanager/release-0.12/deploy/manifests/00-crds.yaml&lt;br /&gt;
2.6.2. Criar um namespace para cert-manager.&lt;br /&gt;
$ kubectl create ns cert-manager&lt;br /&gt;
2.6.3. Adicionar o repositório Jetstack Helm e atualizar o cache.&lt;br /&gt;
$ helm repo add jetstack https://charts.jetstack.io $ helm repo update&lt;br /&gt;
2.6.4. Instalar o cert-manager Helm chart.&lt;br /&gt;
$ helm install --name cert-manager --namespace cert-manager --version v0.12.0&lt;br /&gt;
jetstack\cert-manager&lt;br /&gt;
2.6.5. Verificar se os pods do cert-manager foram criados e esperar que todos estejam em&lt;br /&gt;
execução.&lt;br /&gt;
$ kubectl get pods -n cert-manager&lt;br /&gt;
2.6.6. Criar uma chave no namespace cert-manager e salvar no arquivo chamado secretkey.&lt;br /&gt;
$ kubectl create secret generic acme-route53 --from-file=secret-access-key=./secretkey -n certmanager&lt;br /&gt;
2.6.7. Criar um recurso do tipo ClusterIssuer que será usado para emitir certificados. Criar no&lt;br /&gt;
namespace cert-manager para um melhor gerenciamento.&lt;br /&gt;
apiVersion: cert-manager.io/v1alpha2&lt;br /&gt;
kind: ClusterIssuer&lt;br /&gt;
metadata:&lt;br /&gt;
Projeto ModRED (sistema de modernização do REDOME)&lt;br /&gt;
name: letsencrypt-prod&lt;br /&gt;
namespace: cert-manager&lt;br /&gt;
spec:&lt;br /&gt;
acme:&lt;br /&gt;
server: https://acme-v02.api.letsencrypt.org/directory&lt;br /&gt;
email: YOUR EMAIL ID&lt;br /&gt;
privateKeySecretRef:&lt;br /&gt;
name: letsencrypt-prod&lt;br /&gt;
solvers:&lt;br /&gt;
- selector:&lt;br /&gt;
dnsZones:&lt;br /&gt;
- &amp;quot;YOUR DOMAIN&amp;quot;&lt;br /&gt;
dns01:&lt;br /&gt;
route53:&lt;br /&gt;
region: YOUR REGION&lt;br /&gt;
accessKeyID: YOUR ACCESS KEY&lt;br /&gt;
secretAccessKeySecretRef:&lt;br /&gt;
name: acme-route53&lt;br /&gt;
key: secret-access-key&lt;br /&gt;
2.6.8. Verificar o status do recurso ClusterIssuer. Se o status mostrar 'False’, verificar os registros&lt;br /&gt;
do pod 'cert-manager-6bcc9d894d-d7s9j' para solucionar o problema.&lt;br /&gt;
$ kubectl get clusterissuer -n cert-manager&lt;br /&gt;
2.6.9. Criar um novo certificado.&lt;br /&gt;
apiVersion: cert-manager.io/v1alpha2&lt;br /&gt;
kind: Certificate&lt;br /&gt;
metadata:&lt;br /&gt;
name: nginx-tls&lt;br /&gt;
namespace: YOUR NAMESPACE&lt;br /&gt;
spec:&lt;br /&gt;
secretName: nginx-tls&lt;br /&gt;
issuerRef:&lt;br /&gt;
name: letsencrypt-prod&lt;br /&gt;
kind: ClusterIssuer&lt;br /&gt;
dnsNames:&lt;br /&gt;
- '*.YOUR.DOMAIN'&lt;br /&gt;
acme:&lt;br /&gt;
Projeto ModRED (sistema de modernização do REDOME)&lt;br /&gt;
config:&lt;br /&gt;
- dns01:&lt;br /&gt;
provider: route53&lt;br /&gt;
domains:&lt;br /&gt;
- '*.YOUR.DOMAIN'&lt;br /&gt;
2.6.10. Verificar o status do certificado.&lt;br /&gt;
$ kubectl get cert -n YOUR_NAMESPACE&lt;br /&gt;
2.6.11. Vincular o certificado ao controlador do Ingress.&lt;br /&gt;
apiVersion: extensions/v1beta1&lt;br /&gt;
kind: Ingress&lt;br /&gt;
metadata:&lt;br /&gt;
name: nginx&lt;br /&gt;
namespace: default&lt;br /&gt;
annotations:&lt;br /&gt;
kubernetes.io/ingress.class: &amp;quot;nginx&amp;quot;&lt;br /&gt;
cert-manager.io/cluster-issuer: &amp;quot;letsencrypt-prod&amp;quot;&lt;br /&gt;
spec:&lt;br /&gt;
tls:&lt;br /&gt;
- hosts:&lt;br /&gt;
- &amp;quot;YOUR.DOMAIN&amp;quot;&lt;br /&gt;
- &amp;quot;*.YOUR.DOMAIN&amp;quot;&lt;br /&gt;
secretName: nginx-tls&lt;br /&gt;
rules:&lt;br /&gt;
- host: YOUR.DOMAIN&lt;br /&gt;
http:&lt;br /&gt;
paths:&lt;br /&gt;
- path: /&lt;br /&gt;
backend:&lt;br /&gt;
serviceName: YOUR-SERVICE&lt;br /&gt;
servicePort: 80&lt;br /&gt;
https://medium.com/@karan.b&lt;/div&gt;</summary>
		<author><name>Sheila.prado</name></author>	</entry>

	</feed>