Mostrando postagens com marcador Artigos. Mostrar todas as postagens
Mostrando postagens com marcador Artigos. Mostrar todas as postagens

quinta-feira, 11 de janeiro de 2024

Orquestração de Contêineres com Fedora CoreOS e Kubernetes

 



Porquê Fedora CoreOS ? 

O Fedora CoreOS é uma distribuição Linux mínima e otimizada para execução de contêineres. Construída sobre os princípios do sistema operacional imutável, o Fedora CoreOS garante uma base consistente para cargas de trabalho de contêineres. Suporta ferramentas como Ignition para configuração automática e atualizações transacionais, garantindo um ambiente consistente e confiável para a execução de aplicativos baseados em contêineres.

Antes da instalação do Fedora Coreos , vamos criar nosso arquivo .ign que é um arquivo base de instalação do Fedora CoreOS é nele que vamos definir algumas configurações como Hotname, repositórios, ajustes em algumas aruqivos de confs, etc...

Criando nosso Arquivo ign pra o Control Plane 

k8s-control-plane.bu

variant: fcos
version: 1.4.0
storage:
  links:
    - path: /etc/localtime
      target: ../usr/share/zoneinfo/America/Sao_Paulo
  files:
    # Hostname
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: k8s-control-plane
    
    - path: /etc/yum.repos.d/kubernetes.repo
      mode: 0644
      overwrite: true
      contents:
        inline: |
          [kubernetes]
          name=Kubernetes
          baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
          enabled=1
          gpgcheck=0
          repo_gpgcheck=0
          gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    # Configure automatic loading of required Kernel modules on startup
    - path: /etc/modules-load.d/crio-net.conf
      mode: 0644
      overwrite: true
      contents:
        inline: |
          overlay
          br_netfilter
    # Set kernel parameters required by kubelet
    - path: /etc/sysctl.d/kubernetes.conf
      mode: 0644
      overwrite: true
      contents:
        inline: |
          net.bridge.bridge-nf-call-iptables=1
          net.ipv4.ip_forward=1
passwd:
  users:
    - name: core
      groups:
        - wheel
        - sudo
      ssh_authorized_keys:
        - ssh-rsa AAAAB3..............


Agora vamos gerar o arquivo ign

$ butane --pretty --strict k8s-control-plane.bu > k8s-control-plane.ign

Já temos nosso arquivo 
Vamos criar agora os arquivos para os 2 workers 

k8s-worker1.bu

variant: fcos
version: 1.4.0
storage:
  links:
    - path: /etc/localtime
      target: ../usr/share/zoneinfo/America/Sao_Paulo
  files:
    # Hostname
    - path: /etc/hostname
      mode: 0644
      contents:
        inline: k8s-worker1
    
    - path: /etc/yum.repos.d/kubernetes.repo
      mode: 0644
      overwrite: true
      contents:
        inline: |
          [kubernetes]
          name=Kubernetes
          baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
          enabled=1
          gpgcheck=0
          repo_gpgcheck=0
          gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    # Configure automatic loading of required Kernel modules on startup
    - path: /etc/modules-load.d/crio-net.conf
      mode: 0644
      overwrite: true
      contents:
        inline: |
          overlay
          br_netfilter
    # Set kernel parameters required by kubelet
    - path: /etc/sysctl.d/kubernetes.conf
      mode: 0644
      overwrite: true
      contents:
        inline: |
          net.bridge.bridge-nf-call-iptables=1
          net.ipv4.ip_forward=1
passwd:
  users:
    - name: core
      groups:
        - wheel
        - sudo
      ssh_authorized_keys:
        - ssh-rsa AAAA........

A Diferença esta no hostname os demais continua a mesma coisa 
cria o arquivo ign

$ butane --pretty --strict k8s-worker1.bu > k8s-worker1.ign

Efetue o mesmo com o worker2

No caso estou iniciando por um LiveCD , tém várias formas de instalaçao , vai do gosto de cada um

Ao iniciar o LiveCD efetuo o donwload do arquivo .ing e efetuo a instalação 
como mostra a imagem abaixo


Efetuamos uma instalação de cada um usando o seu arquivo .ign

Agora após a instalação reinicie  e acesse via ssh , e vamos instalar os pacotes nos 3 servers 

$ sudo rpm-ostree install kubelet kubeadm cri-o


Renicie todos eles após a instalação dos pacotes 

e vamos ativar os serviços nos 3 server 

$ sudo systemctl enable --now crio

$ sudo systemctl enable kubelet

Feito isso nos 3 agora no Control-plane vamos criar um arquivo yml para iniciar o nosso cluster 

$ vi config.yml

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.28.2
controllerManager:
  extraArgs: # Specify a R/W directory for FlexVolumes (cluster won't work without this even though we use PVs)
    flex-volume-plugin-dir: "/etc/kubernetes/kubelet-plugins/volume/exec"
networking: # Pod subnet definition
  podSubnet: 10.244.0.0/16
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration


e vamos executar 

$ sudo kubeadm init --config config.yml

Agora vamos adicionar os node




Agora que o cluster está inicializado, vamos instalar o Weave Net:

$ kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml


Pronto nosso Cluster esta no Ar 





Pronto 

Guia de Referencias : 




quinta-feira, 28 de dezembro de 2023

Configurando Ceph no seu Cluster Proxmox






Vamos efetuar a configuração do Ceph em um cluster com proxmox

Configuração usado são 

2 Discos um para o Proxmox e outro para o Ceph

2 Redes uma rede publica e uma rede só para o replicação do ceph 

Na imagem abaixo temos um cluster já configurado 

 Vamos instalar o Ceph, vá em "Datacenter" > "Ceph " > "Install Ceph"


Efetuar essa conf de install Ceph nos 3 Servers




Nessa parte caso tenha 2 Redes fisicamente separada configure aqui , o ideal seria ter 2 redes uma publica e uma para o cluster do ceph



Vamos agora configurar os OSDs efetue o mesmo processo em cada servidor 






Configure o Monitor agora em cada  Server







Agora vamos criar o Pool 






Já está Disponivél entre os servers



Na hora da criação da VM só informar o storage a ser alocado o disco da VM ou do Container



Agora de até um Dashboard com algumas informações sobre o Ceph




Guia de Referencia:

https://www.virtualizationhowto.com/2023/06/mastering-ceph-storage-configuration-in-proxmox-8-cluster/



































                                                                                                                                                                             

quarta-feira, 29 de novembro de 2023

Autenticando Proxmox com FreeIPA

 O FreeIPA é um sistema de gerenciamento de identidade gratuito e de código aberto. FreeIPA é o projeto de código aberto upstream para o Red Hat Identity Management.

E nesse caso vamos efetuar a autenticação do proxmox pelo freeipa

No FreeIPA crie um grupo e adicione os usuários a serem usado no proxmox 

no caso eu criei um grupo chamado "proxmox" onde os usuários nesse grupo podem gerenciar o proxmox , mas claro posso criar outros grupos para ter restriçoes nos proxmox , exemplo só para iniciar e reiniciar um vm , etc.. 

e nesse grupo eu adicionei o meu usuário e o admin 

Agora no proxmox vá em 'Datacenter > Permissions > Realms > e vá em Add selecione LDAP Server'


A Imagem aqui é auto explicativo nas informações a serem informadas 
Só add o Realm , Base Domain Name: , em Server add o IP do FreeIPA
em User Attribute use o 'uid' 
Agora em Sync Options adicione as informações para efetuar o sync de usuários e grupos , resumindo seria a conexão ali o usuário , senha ...
e marque as 3 opções 

e Depois só fazer um Sync 


Feito isso , agora vamos ajustar a permissão do Grupo 

Vá em "Datacenter > Permissions > Add > Group Permission


Em Path add o " / " que é a raiz 
Em Group add o Grupo Criado no FreeIPA no caso o proxmox-home.local
Em Role add como Administrator ;
e com isso todos do grupo " proxmox" serão admin do proxmox 



Agora só logar 
Em Realm : altere para o Domínio 




Referencias : 
https://hyperionlocal.net/index.php/2021/12/17/freeipa-part-3-integrating-other-services-into-your-domain/ 

https://forum.proxmox.com/threads/configuring-freeipa-ldap-server-with-proxmox.113500/