GitOps com o InterSystems Kubernetes Operator

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.

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

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

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.

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:
Visão do InterSystems Kubernetes Operator

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