Mostrando postagens com marcador Fedora. Mostrar todas as postagens
Mostrando postagens com marcador Fedora. 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 : 




domingo, 7 de janeiro de 2024

Criando um Pod com ansible no Podman


 

Uma dica rápida de  iniciar um pod simples com ansible no podman

Tenho uma prática de sempre ter um arquivo de hosts para minhas playbook , isso ajuda muito ,

nesse caso é o meu localhost


Vamos criar agora no nosso arquivo YAML , nesse arquivo, vamos efetuar 

o pull da imagem do wilffly,  criar o pod e rodar o container , ou seja 

teremos 3 execução, o pull da imagem, criação do pod e a execução do container .

aqui esta o arquivo com a conf simples de um pod 


Agora vamos executar nossa playbook

$ ansible-playbook -i hosts pod.yaml


Feito , agora podemos analisar o pod



Verificando o acesso via web


Feito , simples rápido e fácil 

Guia de Referencia : 

https://docs.ansible.com/ansible/latest/collections/containers/podman/podman_pod_module.html


terça-feira, 2 de janeiro de 2024

Iniciando um container no Podman com Ansible

 

Uma dica rápida de  iniciar um container simples com ansible no podman


Como é um servidor remoto , efetuei a copia da chave ssh 

$ ssh-copy-id fedora.server

Criei um arquivo host para ansible

$ vim hosts

e adicionei o server


Vamos criar agora no nosso arquivos YAML , nesse arquivo , vamos efetuar 

o pull da imagem do wilffly , e efetuar run do container na porta 8080 , ou seja 

teremos 2 execução , o pull da imagem e a execução do container .


Uma playbook praticamente simples 

Agora vamos rodar 


$ ansible-playbook -i hosts wildfly.yaml


Podemos validar caso queira 

$ ansible fedora.server -i hosts -a "podman ps"


E podemos ver o wildfly rodando 


Pronto , simples rápido e fácil


Guia de Referncia: 
https://www.redhat.com/sysadmin/automate-podman-ansible 

https://fedoramagazine.org/using-ansible-to-configure-podman-containers/















terça-feira, 20 de julho de 2021

Podman Machine

 Podman Machine é um recurso que ajuda a criar uma máquina virtual (VM) com Fedora CoreOS básico para usar com contêineres e cargas de trabalho em contêiner.


Para iniciar uma vm com podman use o comando

podman machine init <nome da vm > se não use ele vai usar um nome default


$ podman machine init


$ podman machine init fcoreos

use o comando podman machine start <nome da vm >para iniciar a vm se não colocar o nome ele inicia a vm default

$ podman machine start fcoreos

Pode listar as vm que tu tens e se estão rodando ou não com o comando podman machine list

$ podman machine list


e para acessar a VM use o comando

podman machine ssh <nome da vm>onde irar acessar via ssh a VM se não colocar o nome ele ira acessar a mv default caso esteja rodando se não ele não vai conectar via ssh e tem que por o nome da vm para acessar


$ podman machine ssh fcoreos



E para parar a VM digite o comando

podman machine stop <nome da vm> caso esteja usando a vm default não precisa por o nome , mas caso contrário

tem que por o nome da vm que esta rodando

Tem o comando podman machine --help onde ajudar

$ podman machine --help


Espero que ajude

Guia de Referencia :

https://opensource.com/article/21/7/linux-podman

http://docs.podman.io/en/latest/markdown/podman-machine.1.html


terça-feira, 13 de abril de 2021

ManageIQ em Podman

 Um dia rápida pra subir o MaangeIQ via podman


efetue o pull da imagem


$ sudo podman pull docker.io/manageiq/manageiq:latest


Agora vamos subir 


$ sudo podman run -d -p 8443:443 --name manageiq namageiq


Só acessar agora 





segunda-feira, 12 de abril de 2021

Fedora CoreOS K3S AWX





Uma dica rápida pra subir o AWX no Fedora CoreOS com K3S

Primeiro, vamos instalar o pacote k3s-selinux via rpm-ostree:

# rpm-ostree install https://github.com/k3s-io/k3s-selinux/releases/download/v0.3.stable.0/k3s-selinux-0.3-0.el8.noarch.rpm

Reinicie 

#  systemctl reboot

Agora vamos fazer a instalação do k3s:

# export K3S_KUBECONFIG_MODE="644"
# export INSTALL_K3S_EXEC="--flannel-backend=host-gw"

# curl -sfL https://get.k3s.io | sh -


Vamos criar o diretório para o  Persistent Volume

#mkdir -p /var/k8s-pv/awx-postgres

# cat <<EOF >> awx-postgres-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-awx-postgres-0
  labels:
    type: local
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/var/k8s-pv/awx-postgres"
EOF


cria um arquivo agora 

# echo "
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
spec:
  tower_ingress_type: Ingress
" > awx.yml

Agora vamos executar 

# kubectl apply -f awx-postgres-pv.yml
# kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
# kubectl apply -f awx.yml

Agora só acompanhar vendo os logs 

kubectl logs -f awx-operator-........

e ao final 


Verifique em qual porta esta rodando o awx no caso na porta 30922

 # kubectl get svc 




e verifique a senha de admin 

# kubectl get secret awx-admin-password -o jsonpath='{.data.password}' | base64 --decode

e só acessar agora 



 





terça-feira, 30 de março de 2021

Joomla no Podman

Bom, vamos rodar o Joomla via podman.

Vamos criar o nosso pod primeiramente:

$ podman pod create --name joomlapod --publish 8080:80

vamos rodar o mariadb:

$ podman run -dit --pod joomlapod \
-e MYSQL_DATABASE=joomla \
-e MYSQL_USER=joomlauser \
-e MYSQL_PASSWORD=joomlapassword \
-e MYSQL_ROOT_PASSWORD=joomla \
--name mariadb docker.io/library/mariadb

Agora vamos rodar o Joomla:

$ podman run -dit --pod joomlapod \
-e JOOMLA_DB_HOST=127.0.0.1 \
-e JOOMLA_DB_USER=joomlauser \
-e JOOMLA_DB_PASSWORD=joomlapassword \
-e JOOMLA_DB_NAME=joomla \
--name joomla docker.io/library/joomla


Pronto só acessar a web http://<seu ip>:8080 e finalizar as configurações.












terça-feira, 2 de março de 2021

JENKINS NO PODMAN

 Uma dica rápida pra rodar o Jenkins no Podman.


Cria um diretório no seu /home:

$ mkdir jenkins

Agora vamos subir o contêiner no Podman:

$ sudo podman run --privileged -dit
             --name jenkins
             -p 8080:8080  
             -p 50000:50000
             -v ${PWD}/jenkins:/var/jenkins_home  
             jenkins/jenkins:lts


Pronto, já esta rodando!

Visualize o conteúdo no diretório criado do Jenkins:

Temos 2 maneiras de conseguir a senha de admin do Jenkins:

1. Pelos logs do contêiner no Podman:

$ sudo podman logs --tail 20 jenkins



2. Direto no arquivo "initialAdminPassword" localizado dentro do diretório secrets:

$ cat jenkins/secrets/initialAdminPassword



Só acessar via browser na porta 8080:

http://localhost:8080

e logar com a senha.


Tu podes escolher os plugins a serem instalados ou instalar os plugins padrões, que é a primeira opção.


INSTALANDO OS PLUGINS



Define um usuário ou podes usar a conta de admin, melhor ter um usuário.


Pronto, já podes usar o Jenkins!

Guia de Referencia : Jenkins

segunda-feira, 1 de março de 2021

LAMP EM CONTÊINER COM PODMAN

 Vamos subir rapidamente um ambiente LAMP em nossa máquina de maneira simples e fácil, tudo rodando em contêineres.


Vamos criar criar 2 diretórios em nosso /home/ , onde um deles será o diretório da aplicação e o outro para o banco de dados MySQL:

 mkdir app
 mkdir mysql

Agora, vamos subir o servidor LAMP:

$ sudo podman run --privileged -dit
            --name lamp
            -p 8080:80
            -p 3306:3306
            -v ${PWD}/app:/app
            -v ${PWD}/mysql:/var/lib/mysql
            mattrayner/lamp:latest


Verificar se está rodando:

 sudo podman ps

Vamos setar um usuário e senha no MySQL:

$ sudo podman exec lamp mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'danniel'@'%' IDENTIFIED BY 'fedora';"
$ sudo podman exec lamp mysql -u root -e "FLUSH PRIVILEGES;"

Podemos verificar se está tudo ok, acesse via browser: http://localhost:8080


PhpMyAdmin: http://localhost:8080/phpmyadmin



Guia de Referencia :