Sobes.tech
Middle

Qual é a sua experiência com OpenShift?

sobes.tech IA

Resposta da IA

Tenho experiência a trabalhar com OpenShift Container Platform, incluindo:

  • Implantação e gestão de clusters: Instalação de clusters on-premise e na cloud (AWS, Azure). Configuração de infraestrutura de rede, armazenamento e segurança.
  • Desenvolvimento e implantação de aplicações: Criação de Dockerfile, construção de imagens, escrita de Templates OpenShift e Manifests Kubernetes. Uso de pipelines CI/CD (Jenkins, GitLab CI) para automatizar a implantação.
  • Administração e monitorização: Gestão de utilizadores, projetos, quotas. Uso de Prometheus e Grafana para monitorizar o estado do cluster e das aplicações. Configuração de alertas.
  • Resolução de problemas: Diagnóstico de problemas com pods, serviços, rotas. Análise de logs e eventos.
  • Trabalho com componentes do ecossistema: OpenShift Registry, OpenShift Routes, OpenShift Service Mesh (Istio), OpenShift Pipelines (Tekton).

Exemplos de tarefas:

  • Migração de uma aplicação monolítica para containers e seu deployment no OpenShift.
  • Construção de um pipeline CI/CD para testes automáticos, construção e deployment de microserviços no OpenShift.
  • Configuração de um cluster OpenShift resistente a falhas com replicação de dados e failover automático.
  • Implementação de logging e monitorização centralizados para todas as aplicações no cluster.

Utilizei tanto a linha de comandos (oc) como a consola web do OpenShift. Tenho um bom entendimento dos conceitos de Kubernetes em que o OpenShift se baseia (pods, replicaset, deployments, serviços).

# Exemplo simples de Template OpenShift para deployment de aplicação
apiVersion: template.openshift.io/v1
kind: Template
metadata:
  name: simple-app
objects:
  - apiVersion: apps.openshift.io/v1
    kind: DeploymentConfig
    metadata:
      name: ${APP_NAME}
    spec:
      replicas: 1
      selector:
        app: ${APP_NAME}
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: ${APP_NAME}
        spec:
          containers:
            - name: ${APP_NAME}
              image: ${IMAGE_NAME}
              ports:
                - containerPort: 8080
                  protocol: TCP
      triggers:
        - type: ConfigChange
        - imageChangeParams:
            automatic: true
            containerNames:
              - ${APP_NAME}
            from:
              kind: ImageStreamTag
              namespace: ${IMAGE_NAMESPACE}
              name: ${IMAGE_NAME}:${IMAGE_TAG}
          type: ImageChange
parameters:
  - name: APP_NAME
    displayName: Application Name
    description: The name of the application.
    value: my-simple-app
    required: true
  - name: IMAGE_NAME
    displayName: Image Name
    description: The name of the image.
    value: my-image
    required: true
  - name: IMAGE_NAMESPACE
    displayName: Image Namespace
    description: The namespace of the image stream.
    value: my-project
    required: true
  - name: IMAGE_TAG
    displayName: Image Tag
    description: The tag of the image.
    value: latest
    required: true