Anakin Skywalker desafiou o alto terreno e foi terrivelmente ferido em Mustafar.
Ele é um funcionário relativamente novo do Império Galáctico, coberto por um Grande Plano de Grupo Planetário e agora tem um encontro ativo em andamento para serviços médicos emergentes na Grande Instalação Médica em Coruscant. O EMR implantado para o Sistema de Saúde Galáctico é alimentado pelo InterSystems FHIR Server rodando em Kubernetes protegido por Cilium.
Vamos recriar o cenário técnico, a ser executado no estilo de Isovalent Labs...
Kind Cluster
Vamos iniciar um cluster de 3 nós e desativar o CNI para que possamos substituí-lo pelo Cilium.
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
networking:
disableDefaultCNI: true
EOF
Isso provisionará o cluster kind, 3 nós de largura com um único plano de controle.
Cilium
Cilium é um projeto de código aberto que fornece rede, segurança e observabilidade para ambientes conteinerizados como clusters Kubernetes. Ele usa uma tecnologia do kernel Linux chamada eBPF (extended Berkeley Packet Filter) para injetar lógicas de segurança, rede e observabilidade no kernel.
Em outras palavras, empunha a força.
cilium install --version v1.16.0
cilium status --wait
Hubble
Hubble é um traje de palhaço para Cilium, fornecendo visibilidade ridícula sobre quais poderes do Cilium estão em jogo em tempo real.
cilium enable hubble
.png)
Carga de trabalho InterSystems FHIR
InterSystems é o GOAT da interoperabilidade e transforma dados de saúde como um droide de protocolo.
kubectl apply -f https://raw.githubusercontent.com/sween/basenube/main/scenarios/ciliumfhir/deploy/cilium-fhir-starwars.yaml
A carga de trabalho resultante tem 4 implantações:
.png)
GrandMedicalFacility
Rede Integrada de Assistência Médica com sede em Coruscant, com instalações até o Bordo Exterior, utiliza o Epic e emprega o InterSystems I4H como um servidor FHIR.
MedicalDroid FX-6
Este droide de 1,83 metro de altura forneceu a Vader uma transfusão de sangue e treinou em procedimentos de pernas cibernéticas.
MedicalDroid DD-13
Também conhecido como DD-13 tripedal medical droid, este droide possui três pernas para estabilidade e foi projetado para instalar implantes cibernéticos.
MedicalDroid 2-1B
Os droides 2-1B possuem injetores hipodérmicos e pinças de servogrip fabricadas com precisão, e podem ser atualizados para se especializar em áreas como substituição de membros cibernéticos, neurocirurgia e biologia alienígena.
Como precisaremos disso de qualquer forma para as próximas entrevistas, vamos contar a história na verdadeira metodologia STAR (Situação, Tarefa, Ação, Resultado).
Sith-uation
Palpatine acompanhou o jedi caído para a instalação e, ao chegar, ajudou o registro a admiti-lo como Darth Vader.
cat > vader.json << 'EOF'
{
"name": [
{
"use": "official",
"family": "Vader",
"given": [
"Darth"
]
}
],
"gender": "male",
"id": "DarthVader",
"birthDate": "1977-05-25",
"resourceType": "Patient"
}
EOF
curl -v -X PUT \
-H "Content-Type: application/fhir+json" \
-d @vader.json \
"http://coruscanthealth:52773/intersystems/fhir/r5/Patient/DarthVader"
Darth Vader está agora registrado e pode ser visto em todo o sistema de saúde...
Pane de TI Galáctica
No entanto, tem um problema!
Pouco após o registro, ocorreu uma interrupção de TI galáctica, deixando o provedor de identidade do sistema de saúde indisponível. O servidor de recursos FHIR do InterSystems está habilitado para SMART, e o IDP está configurado, tornando o lançamento do EMR impossível na ausência do token JWT com os escopos aplicáveis para proteger as rotas..

[Nota do tradutor: segue tradução da imagem]
Palpatine: Tem um minuto?
Sween: Eu não estou de plantão, estou na casa dos 50, pelo amor dos Siths!
Palpatine: Todo mundo está me ignorando, e eu tenho um Jedi caído precisando desesperadamente de ajuda, e a equipe de cuidados está tendo problemas para acessar o Repositório FHIR do InterSystems devido a uma interrupção no provedor de identidade.
Sween: Você tem um JIRA para esse problema?
Palpatine: Não, mas eu posso atirar raios das minhas mãos.
Sween: Relaxa boomer, eu vou dar uma olhada.
Com certeza, temos um problema... a equipe de cuidados não consegue acessar o prontuário do paciente, só recebem códigos 401 e 403, e não estamos falando sobre seu Plano de Aposentadoria Galáctico.
Embora a interface do Hubble só forneça uma pista do que está acontecendo, inspecionar os fluxos do Hubble com informações da Camada 7 revela a situação.

.png)
...e após adicionar alguns debugs bunny ao endpoint FHIR do InterSystems, confirma isso.
zn "USER"
Set ^FSLogChannel("all")=1
zn "%SYS"
Set ^%ISCLOG=5
Set ^%ISCLOG("Category","HSFHIR")=5
Set ^%ISCLOG("Category","HSFHIRServer")=5
Set ^%ISCLOG("Category","OAuth2")=5
Set ^%ISCLOG("Category","OAuth2Server")=5
zw^FSLOG
...
^FSLOG(379555)="DispatchRequest^HS.FHIRServer.Service^944|Msg|Dispatch interaction read for Patient/DarthVader|09/19/2024 10:48:20.833339AM"
^FSLOG(379556)="DispatchRequest^HS.FHIRServer.Service^944|Msg|Request Completed in .000186 secs: Patient/DarthVader|09/19/2024 10:48:20.833450AM"
^FSLOG(379557)="processRequest^HS.FHIRServer.RestHandler^944|Msg|Response Status: 401, Json: Patient|09/19/2024 10:48:20.833454AM"
...
Tarefa

[Nota do tradutor: tradução da imagem abaixo]
"Algumas vezes devemos deixar de lado o orgulho e fazer o que nos é requisitado." - Anakin Skywalker em Ataque dos Clones
Ação
Como a aplicação da política de rotas do SMART não é aplicável, vamos fazer do nosso jeito e usar o Cilium para proteger os endpoints enquanto Vader recebe a atenção imediata que o Imperador exige. Vamos agir como os Rebeldes aqui no cluster e transferir a proteção de endpoint/rota para o Cilium enquanto a Galáxia se recupera da interrupção.
Vamos implementar uma política de 'negar tudo' de qualquer lugar, usando uma CiliumClusterwideNetworkPolicy, e trabalhar de trás para frente no estilo de 'confiança zero'.
cat <<EOF | kubectl apply -n galactic-fhir -f-
apiVersion: cilium.io/v2
kind: CiliumClusterwideNetworkPolicy
metadata:
name: "denyall-coruscanthealth"
spec:
description: "Block all the traffic (except DNS) by default"
egress:
- toEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: '53'
protocol: UDP
rules:
dns:
- matchPattern: '*'
endpointSelector:
matchExpressions:
- key: io.kubernetes.pod.namespace
operator: NotIn
values:
- kube-system
EOF
Está ótimo, Cilium lançando como se fosse quente!
.png)
Agora, vamos abrir o endpoint FHIR no pod do InterSystems, desativando o cliente oauth2.
set app = "/intersystems/fhir/r5"
Set strategy = ##class(HS.FHIRServer.API.InteractionsStrategy).GetStrategyForEndpoint(app)
Set configData.DebugMode = 7
Set configData = strategy.GetServiceConfigData()
Do strategy.SaveServiceConfigData(configData)
Por último, vamos criar uma CiliumNetworkPolicy para permitir que qualquer pessoa da organização:império acesse a rota para o registro de Darth Vader no namespace galactic-fhir.
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "l7-visibility"
spec:
endpointSelector:
matchLabels:
org: empire
egress:
- toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*"
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": galactic-fhir
toPorts:
- ports:
- port: "52773"
protocol: TCP
rules:
http:
- method: "GET"
path: "/intersystems/fhir/r5/Patient/DarthVader"
- method: "HEAD"
path: "/intersystems/fhir/r5/Patient/DarthVader"
EOF
Parece que podemos voltar ao iRacing, acho que estamos bem.
.png)
...exceto
[Nota do tradutor: tradução da imagem abaixo]
Palpatine: Desculpe te acordar, parece que temos outro problema.
Sween: Por que a liderança sempre diz isso para apoiar as pessoas e assume que todos apenas trabalham e dormem?
Palpatine: Desculpe, achei que o pessoal da geração X não ligasse para nada e só dormisse o tempo todo.
Sween: justo
Palpatine: Então, os droids médicos estão dizendo que o Vader precisa de pernas, mas o plano de saúde precisa aprovar, mas não consegue acessar o registro para pré autorizar o procedimento.
Sween: surreal
Palpatine: Eu sei, não é? Eu tenho o maior de todos os planos de grupo largos em toda a galáxia e ainda tenho que navegar o sistema de saúde galáctico assim.
Sim, parece que o pagador está sendo descartado...
.png)
Veredicto da política = REJEITADO
.png)
Vamos adicionar outra política, permitindo que a organização:pagador acesse a rota de Vader:
cat <<EOF | kubectl apply -n galactic-fhir -f-
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "l7-visibility-payer"
spec:
endpointSelector:
matchLabels:
org: payer
egress:
- toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*"
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": galactic-fhir
toPorts:
- ports:
- port: "52773"
protocol: TCP
rules:
http:
- method: "GET"
path: "/intersystems/fhir/r5/Patient/DarthVader"
- method: "HEAD"
path: "/intersystems/fhir/r5/Patient/DarthVader"
EOF
Bem, isso não foi suficiente, e podemos ver por quê.
.png)
[Nota do tradutor: tradução da imagem abaixo]
Sween: Quem é Anakin?
Palpatine: Ah, o Anakin agora é Darth Vader
Sween: Desde quando?
Palpatine: Era Anakin, então virou Vader
Sween: Quando o "então virou" será agora?
Então ligamos para o pagador e pedimos que eles acessassem o registro do paciente "correto", e Anakin Skywalker recebe suas pernas.
.png)
Hora de desabafar...
.png)
[Nota do tradutor: tradução da imagem abaixo]
Sween: Você sabe que eles têm um problema sério de identidade Galáctica naquele sistema de saúde.
Sween: Me parece que o EMR que registrou o Darth fez um POST com um conjunto de nomes.
Resultado

[Nota do tradutor: tradução da imagem abaixo]
Está funcionando! Está funcionando!!!