Artigo
· Abr. 8 6min de leitura

GitOps com o InterSystems Kubernetes Operator

image

Este artigo abordará a transferência do controle do provisionamento do InterSystems Kubernetes Operator e o início da sua jornada com a gestão da sua própria "nuvem" de soluções InterSystems através de práticas Git Ops. Esse padrão de implantação também é o caminho de execução para o PID^TOO||| Motor de Resolução de Identidade de Respiração FHIR.

Git Ops

Recomendo que você faça sua própria pesquisa ou pergunte ao seu LLM favorito sobre o Git Ops, mas posso parafrasear aqui como o entendemos. Git Ops é um paradigma de implantação alternativo, onde o próprio Cluster Kubernetes "extrai" atualizações de manifestos que residem no controle de origem para gerenciar o estado das suas soluções, tornando o "Git" uma parte essencial do nome.

Pré-requisitos

  • Provisionar um Cluster Kubernetes, isso foi testado em clusters EKS, GKE e MicroK8s
  • Provisionar um GitLab, GitHub ou outro repositório Git que possa ser acessado pelo seu Cluster Kubernetes

Argo CD

A estrela do show aqui é o ArgoCD, que fornece uma abordagem declarativa de entrega contínua com uma IU extremamente bem feita. Usar o gráfico no seu cluster é muito fácil, exigindo apenas alguns toques.

kubectl create namespace argocd
kubectl apply -n argocd -f \
https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Vamos fazer login na IU do ArgoCD no seu Cluster Kubernetes. Para isso, você precisa obter o segredo que foi criado para a IU e configurar um encaminhamento de porta para torná-lo acessível no seu sistema.

Obtenha o segredo
Descriptografe e coloque-o na área de transferência.
image

Encaminhamento de porta
Redirecione a porta 4000 (ou qualquer outra) para seu host local

image

IU
Acesse https://0.0.0.0:4000, forneça o segredo na tela de login e faça login.

image

InterSystems Kubernetes Operator (IKO)

As instruções para obter o gráfico IKO Helm estão na própria documentação. Depois de obtê-las, confira no seu repositório git em uma ramificação de recurso. Eu forneceria um repositório de amostra, mas infelizmente não posso fazer isso sem uma violação da redistribuição, porque o gráfico não parece estar disponível em um repositório público.

Crie você mesmo uma ramificação de recurso no seu repositório git e descompacte o gráfico IKO Helm em um único diretório. Conforme abaixo, é o iko/iris_operator_amd-3.5.48.100 fora da raiz do repositório.

Na ramificação feature/iko como exemplo:

├── iko
│   ├── AIKO.pdf
│   └── iris_operator_amd-3.5.48.100
│       ├── chart
│       │   └── iris-operator
│       │       ├── Chart.yaml
│       │       ├── templates
│       │       │   ├── apiregistration.yaml
│       │       │   ├── appcatalog-user-roles.yaml
│       │       │   ├── cleaner.yaml
│       │       │   ├── cluster-role-binding.yaml
│       │       │   ├── cluster-role.yaml
│       │       │   ├── deployment.yaml
│       │       │   ├── _helpers.tpl
│       │       │   ├── mutating-webhook.yaml
│       │       │   ├── service-account.yaml
│       │       │   ├── service.yaml
│       │       │   ├── user-roles.yaml
│       │       │   └── validating-webhook.yaml
│       │       └── values.yaml

Configuração do IKO
Crie o namespace isc e adicione o segredo para containers.intersystems.com nele.

kubectl create ns isc

kubectl create secret docker-registry \
pidtoo-pull-secret --namespace isc \
--docker-server=https://containers.intersystems.com \
--docker-username='ron@pidtoo.com' \
--docker-password='12345'

Isso deve concluir a configuração do IKO e permitir que ele seja delegado inteiramente por Git Ops para o Argo CD.

Conecte o Git ao Argo CD

Essa é uma etapa simples na UI do Argo CD para conectar o repositório. Essa etapa APENAS "conecta" o repositório, a configuração adicional estará no próprio repositório.

image

Declare a ramificação ao Argo CD

Configure o Kubernetes para sondar a ramificação pelo values.yml do Argo CD no gráfico do Argo CD. A maioria desses locais no repositório git fica por sua conta, mas a maneira teimosa de declarar as coisas no seu repositório pode estar em um paradigma "App de Apps".

Considere criar a estrutura de pastas abaixo e os arquivos que precisam ser criados como um índice a seguir:

├── argocd
│   ├── app-of-apps
│   │   ├── charts
│   │   │   └── iris-cluster-collection
│   │   │       ├── Chart.yaml  ## Chart
│   │   │       ├── templates
│   │   │       │   ├── iris-operator-application.yaml  ## IKO As Application
│   │   │       └── values.yaml ## Application Chart Values
│   │   └── cluster-seeds
│   │       ├── seed.yaml  ## Cluster Seed

Gráfico

apiVersion: v1
description: 'pidtoo IRIS cluster'
name: iris-cluster-collection
version: 1.0.0
appVersion: 3.5.48.100
maintainers:
  - name: intersystems
    email: support@intersystems.com  

IKO como aplicativo

apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: iko
      namespace: argocd
    spec:
      destination:
        namespace: isc
        server: https://kubernetes.default.svc
      project: default
      source:
        path: iko/iris_operator_amd-3.5.48.100/chart/iris-operator
        repoURL: {{ .Values.repoURL }}
        targetRevision: {{ .Values.targetRevision }}
      syncPolicy:
        automated: {}
        syncOptions:
        - CreateNamespace=true  

Valores de gráfico do aplicativo IKO

targetRevision: main
repoURL: https://github.com/pidtoo/gitops_iko.git

Semente do cluster

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: gitops-iko-seed
  namespace: argocd
  labels:
    isAppOfApps: 'true'
spec:
  destination:
    namespace: isc
    server: https://kubernetes.default.svc
  project: default
  source:
    path: argocd/app-of-apps/charts/iris-cluster-collection
    repoURL: https://github.com/pidtoo/gitops_iko.git
    targetRevision: main
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true

Semeie o cluster!

Essa é a última palavra sobre a interação com seus aplicativos Argo CD/IKO Cluster, o resto fica por conta do Git!

kubectl apply -n argocd -f argocd/app-of-apps/cluster-seeds/seed.yaml

Mesclar com o principal

Ok, é aqui que vemos como fomos na IU. Você deve começar imediatamente a ver no Argo CD os aplicativos começando a ganhar vida.

A visão dos apps:
image

Visão do InterSystems Kubernetes Operator
image
image

Bem-vindo ao GitOps com o InterSystems Kubernetes Operator!

As demonstrações do Git são as melhores! - Live de 19 de outubro de 2023

Ron Sweeney, Arquiteto Principal, Integration Required, LLC (PID^TOO)
Dan McCracken, COO, Devsoperative, INC

Discussão (0)0
Entre ou crie uma conta para continuar