/fiap-app

Primary LanguageDockerfile

Documentação do Processo de Deploy no OpenShift

Sumário

  1. Login no OpenShift
  2. Criação de um Novo Projeto
  3. Configuração do Persistent Volume (PV)
  4. Configuração do Persistent Volume Claim (PVC)
  5. Login no Registro Interno do OpenShift
  6. Construção e Publicação da Imagem Docker
  7. Criação do Deployment
  8. Criação do Serviço
  9. Criação da Rota
  10. Configuração do Horizontal Pod Autoscaler (HPA)
  11. Verificação do Status dos Recursos
  12. Acesso à Aplicação
  13. Teardown do Ambiente
  14. Anexos
  15. Referencias

1. Login no OpenShift

Execute o comando abaixo para fazer login no OpenShift:

oc login -u kubeadmin -p Y9hGk-K7fvJ-p359Z-ACeL3 --server=https://api.crc.testing:6443

Exemplo de Saída do Comando:

Login successful.

2. Criação de um Novo Projeto

Crie um novo projeto chamado fiap-app:

oc new-project fiap-app

Exemplo de Saída do Comando:

Now using project "fiap-app" on server "https://api.crc.testing:6443".

3. Configuração do Persistent Volume (PV)

Crie um arquivo chamado pv.yaml com o seguinte conteúdo:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: fiap-app-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /app/data

Aplique o PV:

oc apply -f pv.yaml

Exemplo de Saída do Comando:

persistentvolume/fiap-app-pv created

4. Configuração do Persistent Volume Claim (PVC)

Crie um arquivo chamado pvc.yaml com o seguinte conteúdo:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fiap-app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

Aplique o PVC:

oc apply -f pvc.yaml

Exemplo de Saída do Comando:

persistentvolumeclaim/fiap-app-pvc created

5. Login no Registro Interno do OpenShift

Execute os comandos abaixo para fazer login no registro interno do OpenShift e autenticar o Docker:

docker login -u kubeadmin -p $(oc whoami -t) default-route-openshift-image-registry.apps-crc.testing

Exemplo de Saída do Comando:

Login Succeeded

6. Construção e Publicação da Imagem Docker

Construa a imagem Docker localmente:

docker build -t fiap-app:latest .

Exemplo de Saída do Comando:

Successfully built <image_id>
Successfully tagged fiap-app:latest

Marque a imagem para o registro interno do OpenShift:

docker tag fiap-app:latest default-route-openshift-image-registry.apps-crc.testing/fiap-app/fiap-app:latest

Empurre a imagem para o registro interno:

docker push default-route-openshift-image-registry.apps-crc.testing/fiap-app/fiap-app:latest

Exemplo de Saída do Comando:

The push refers to repository [default-route-openshift-image-registry.apps-crc.testing/fiap-app/fiap-app]
latest: digest: sha256:a65b6c711c7dba258519990c962101b80d20bd4763f13af4c693aa4d41889a04 size: 2202

7. Criação do Deployment

Crie um arquivo chamado deployment.yaml com o seguinte conteúdo:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fiap-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fiap-app
  template:
    metadata:
      labels:
        app: fiap-app
    spec:
      containers:
      - name: fiap-app
        image: default-route-openshift-image-registry.apps-crc.testing/fiap-app/fiap-app:latest
        ports:
        - containerPort: 5000
        volumeMounts:
        - mountPath: /app/data
          name: fiap-data
      volumes:
      - name: fiap-data
        persistentVolumeClaim:
          claimName: fiap-app-pvc

Aplique o Deployment:

oc apply -f deployment.yaml

Exemplo de Saída do Comando:

deployment.apps/fiap-app created

8. Criação do Serviço

Crie um arquivo chamado service.yaml com o seguinte conteúdo:

apiVersion: v1
kind: Service
metadata:
  name: fiap-app
spec:
  selector:
    app: fiap-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000

Aplique o Serviço:

oc apply -f service.yaml

Exemplo de Saída do Comando:

service/fiap-app created

9. Criação da Rota

Crie um arquivo chamado route.yaml com o seguinte conteúdo:

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: fiap-app
spec:
  to:
    kind: Service
    name: fiap-app
  port:
    targetPort: 5000

Aplique a Rota:

oc apply -f route.yaml

Exemplo de Saída do Comando:

route.route.openshift.io/fiap-app created

10. Configuração do Horizontal Pod Autoscaler (HPA)

Crie um arquivo chamado hpa.yaml com o seguinte conteúdo:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: fiap-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: fiap-app
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80

Aplique o HPA:

oc apply -f hpa.yaml

Exemplo de Saída do Comando:

horizontalpodautoscaler.autoscaling/fiap-app-hpa created

11. Verificação do Status dos Recursos

Verifique o status dos pods:

oc get pods -n fiap-app

Exemplo de Saída do Comando:

NAME                          READY   STATUS    RESTARTS   AGE
fiap-app-5797d5777-khmrf      1/1     Running   0          5m

Verifique o status do serviço e da rota:

oc get svc -n fiap-app

Exemplo de Saída do Comando:

NAME       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
fiap-app   ClusterIP   172.30.227.186   <none>        80/TCP     5m
oc get routes -n fiap-app

Exemplo de Saída do Comando:

NAME       HOST/PORT                                            PATH   SERVICES   PORT       TERMINATION   WILDCARD
fiap-app   fiap-app-fiap-app.apps-crc.testing                           fiap-app   5000                    None

12. Acesso à Aplicação

Acesse a aplicação via navegador utilizando a URL fornecida pela rota. No caso do exemplo acima, a URL seria:

http://fiap-app-fiap-app.apps-crc.testing

13. Teardown do Ambiente

Para destruir o ambiente criado, execute os seguintes comandos:

oc delete project fiap-app
oc delete pv fiap-app-pv

Exemplo de Saída do Comando:

project "fiap-app" deleted
persistentvolume "fiap-app-pv" deleted

14. Anexos

Screenshots

15. Referências