Trabalhando com o Istio como um Complemento do Cluster
Descubra como instalar, configurar e usar o Istio como um complemento de cluster para simplificar o gerenciamento de tráfego, a segurança, as conexões e a observabilidade em clusters que você criou com o Kubernetes Engine (OKE).
Usar o Istio como um complemento de cluster (o 'complemento Stio') em vez de como um programa autônomo simplifica a configuração e a manutenção contínua. Você pode, mais simplesmente:
- Ative ou desative o Istio.
- Aceite e cancele atualizações automáticas de versão pela Oracle.
- Selecione as versões do add-on do Istio.
- Gerencie personalizações específicas de complementos usando argumentos de configuração de pares de chave/valor aprovados.
Ao implantar o Istio como um complemento de cluster usando o Kubernetes Engine, você pode, opcionalmente, criar um gateway de entrada do Istio para rotear solicitações HTTP e HTTPS de entrada. Como alternativa, você pode usar outras entradas suportadas para rotear o tráfego para o serviço apropriado em execução no cluster. Lembre-se de que a acessibilidade do gateway de entrada do Istio depende do tipo da sub-rede do balanceador de carga (pública ou privada) especificada para o cluster.
No caso do add-on do Istio, você usa argumentos de configuração de pares de chave/valor aprovados para fazer personalizações específicas do add-on para parâmetros de configuração de malha ampla (consulte argumentos de configuração do add-on do Istio). Para outras tarefas de configuração, como gerenciar recursos de malha, você usa istioctl (a ferramenta de linha de comando Istio) ou outras ferramentas suportadas pelo Istio. Se configurar o complemento Istio usando os argumentos aprovados e quiser manter as personalizações quando a versão do complemento for atualizada automaticamente pela Oracle, defina o argumento de configuração customizeConfigMap
como true
. Se você não definir o argumento de configuração customizeConfigMap
como true
, as personalizações serão descartadas quando a Oracle atualizar o complemento. Todas as personalizações feitas usando istioctl (ou outra ferramenta suportada pelo Istio) são sempre descartadas quando a Oracle atualiza o complemento.
Se você usar gráficos Helm e Helm para configurar e implantar aplicativos Kubernetes, observe que o Helm só pode atualizar ou excluir recursos que ele criou. Portanto, para permitir que o Helm gerencie o complemento Istio:
- Use gráficos Helm para gerar os mapas de configuração istio e istio-sidecar-injector.
- Defina o argumento de configuração
customizeConfigMap
comotrue
ao implantar o complemento Istio.
Se você decidir fazer com que a Oracle atualize automaticamente o complemento Istio, a Oracle fará um upgrade no local quando novas versões do Istio forem disponibilizadas. Durante o upgrade, a Oracle atualiza automaticamente o plano de controle Istio (istiod) e o gateway de entrada para a versão mais recente. Observe que a Oracle não atualiza automaticamente nenhum sidecars do plano de dados do Istio; portanto, esses sidecars permanecem na versão antiga. É sua responsabilidade atualizar manualmente o plano de dados do Istio reiniciando qualquer pod com sidecars do Istio usando o comando kubectl rollout restart deployment
. Mesmo que o plano de controle Istio seja compatível com versões mais antigas do sidecar, se sua prioridade for garantir tempo de inatividade zero, recomendamos que você faça upgrade manualmente do Istio em vez de fazer com que a Oracle atualize automaticamente o add-on Istio para você. Consulte Upgrades no Local na documentação do Istio.
Estas seções descrevem como trabalhar com o complemento Istio para gerenciar comunicação e rede entre serviços:
- Implantação do complemento Istio
- Atualizando o complemento Istio
- Desabilitando (e removendo) o complemento do Istio
Observe que os produtos de malha de serviços (como Oracle Cloud Infrastructure Service Mesh, Istio e Linkerd) são suportados ao usar o plug-in CNI VCN-Native Pod Networking do OCI para rede de pods. Observe que, com exceção do complemento Istio, o suporte atualmente está limitado ao Oracle Linux 7 (o suporte para o Oracle Linux 8 está planejado). O complemento Istio é suportado com o Oracle Linux 7 e o Oracle Linux 8. Os nós de trabalho devem estar executando o Kubernetes 1.26 (ou posterior).
Observe também que você não pode usar o add-on do Istio com clusters que já tenham o Istio instalado como um programa independente, nem em clusters que tenham o Oracle Cloud Infrastructure Service Mesh instalado.
Você pode usar o Istio com pools de nós gerenciados, mas não com pools de nós virtuais.
Implantação do complemento Istio
As instruções nas etapas abaixo descrevem como implantar a malha de serviços do Istio como um complemento de cluster (o 'complemento Istio') para simplificar o gerenciamento de tráfego, a segurança, as conexões e a observabilidade em clusters que você criou com o Kubernetes Engine:
- Etapa 1: Criar o arquivo de configuração do add-on do Istio
- Etapa 2: Implante o complemento Istio no cluster e confirme a implantação bem-sucedida
- Etapa 3: Ativar injeção de sidecar do Envoy
- Etapa 4: Implante um aplicativo e observe os contêineres sidecar do Envoy
Para obter um exemplo prático, consulte Exemplo: Implantando o Istio como um Complemento de Cluster.
Etapa 1: Criar o arquivo de configuração do add-on do Istio
Estas instruções descrevem como criar um arquivo de configuração de complemento do Istio para permitir que você implante o complemento do Istio usando a CLI. O arquivo de configuração contém argumentos de configuração de par chave/valor aprovados. Você precisa criar um arquivo de configuração ao implantar o complemento usando a CLI (ou usando a API). Você também pode usar a Console para implantar o add-on Istio, caso em que você especifica argumentos de configuração na IU. Para obter mais informações sobre a implantação do add-on Istio usando a Console, consulte Instalando um Add-on de Cluster.
-
Em um editor adequado, crie um arquivo JSON com um nome de sua escolha (essas instruções pressupõem que o arquivo seja chamado
enableistio.json
) contendo o seguinte:{ "addonName": "Istio", "configurations": [ ] }
Este conteúdo é suficiente para ativar o complemento Istio.
- (Opcional) No arquivo
enableistio.json
, especifique se deseja instalar o gateway de entrada do Istio, da seguinte forma:- Para instalar o gateway de entrada do Istio, atualize o arquivo
enableistio.json
da seguinte forma:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
- Se você não quiser instalar o gateway de entrada do Istio, atualize o arquivo
enableistio.json
da seguinte forma:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }
Observe que, se você não incluir
enableIngressGateway
no arquivo de configuração, o comportamento padrão não será instalar o gateway de entrada Istio (equivalente à definição deenableIngressGateway
comofalse
) - Para instalar o gateway de entrada do Istio, atualize o arquivo
-
(Opcional) No arquivo
enableistio.json
que você criou, especifique outros argumentos de configuração para personalizar o complemento Istio. Para obter informações sobre os argumentos de configuração que você pode definir, consulte Argumentos de configuração do istio add-on. - (Opcional) Se você quiser manter as personalizações feitas no complemento Istio se a versão do complemento for atualizada automaticamente pela Oracle, defina o argumento
customizeConfigMap
comotrue
. Por exemplo:- Para instalar o gateway de entrada do Istio e reter personalizações, atualize o arquivo
enableistio.json
da seguinte forma:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" }, { "key": "customizeConfigMap", "value": "true" } ] }
- Se você não quiser instalar o gateway de entrada do Istio, mas quiser reter personalizações, atualize o arquivo
enableistio.json
da seguinte forma:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" }, { "key": "customizeConfigMap", "value": "true" } ] }
Observe que, se você não incluir
customizeConfigMap
no arquivo de configuração, o comportamento padrão será descartar personalizações se a versão do complemento for atualizada automaticamente pela Oracle (equivalente à definição decustomizeConfigMap
comofalse
)
- Para instalar o gateway de entrada do Istio e reter personalizações, atualize o arquivo
- Salvar e fechar o arquivo
enableistio.json
.
Etapa 2: Implante o complemento Istio no cluster e confirme a implantação bem-sucedida
Estas instruções descrevem como implantar o complemento Istio usando a CLI e um arquivo de configuração. Você também pode implantar o complemento usando a Console e a API. Para obter mais informações, consulte Instalando um Complemento de Cluster.
-
Se você ainda não tiver feito isso, siga as etapas para configurar o arquivo de configuração kubeconfig do cluster e (se necessário) defina a variável de ambiente KUBECONFIG para apontar para o arquivo. Observe que você deve configurar seu próprio arquivo kubeconfig. Não é possível acessar um cluster usando um arquivo kubeconfig que outro usuário tenha configurado. Consulte Configurando o Acesso ao Cluster.
- Confirme se o complemento Istio ainda não foi instalado no cluster digitando:
oci ce cluster list-addons --cluster-id <cluster-ocid>
em que
<cluster-ocid>
é o OCID do cluster no qual você deseja implantar o complemento Istio. -
Implante o complemento Istio no cluster digitando:
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://./<path-to-config-file>
em que:
--cluster-id <cluster-ocid>
é o OCID do cluster no qual você deseja implantar o complemento Istio.--from-json file://<path-to-config-file>
especifica o local do arquivo de configuração do complemento Istio que você criou anteriormente. Por exemplo,--from-json file://./enableistio.json
Por exemplo:
oci ce cluster install-addon --addon-name Istio --from-json file://./enableistio.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Uma solicitação de serviço é criada para implantar o complemento Istio.
-
Confirme a implantação bem-sucedida do add-on do Istio (e do gateway de entrada do Istio, se você o especificou no arquivo de configuração do add-on do Istio), da seguinte forma:
- Confirme se o complemento Istio foi instalado no cluster digitando:
oci ce cluster list-addons --cluster-id <cluster-ocid>
Pressupondo uma implantação bem-sucedida, a saída mostra o complemento Istio com um estado de ciclo de vida ACTIVE. Por exemplo:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null } ] }
- Confirme se o pod istiod (o plano de controle Istio) e também o pod istio-ingressgateway, se você o especificou no arquivo de configuração, estão sendo executados no namespace istio-system digitando:
kubectl get pods -n istio-system
Supondo uma implantação bem-sucedida, a saída mostra os pods com um status de Em Execução. Por exemplo:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Se você especificou o gateway de entrada Istio no arquivo de configuração, confirme se o serviço istio-ingressgateway foi implantado com sucesso digitando:
kubectl get svc istio-ingressgateway -n istio-system
Pressupondo uma implantação bem-sucedida, a saída mostra o serviço istio-ingressgateway como um serviço do tipo LoadBalancer e (se a sub-rede do balanceador de carga do cluster for pública) com um endereço IP acessível publicamente. Por exemplo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Confirme se o complemento Istio foi instalado no cluster digitando:
Etapa 3: Ativar injeção de sidecar do Envoy
Para permitir que o Istio injete o sidecar do Envoy em cada serviço para fornecer comunicação, configuração e segurança:
- Crie o namespace no qual implantar aplicativos (se o namespace ainda não existir) digitando:
kubectl create namespace <namespace-name>
- Torne o namespace no qual implantar aplicativos o namespace padrão digitando:
kubectl config set-context --current --namespace=<namespace-name>
- Confirme se o namespace no qual implantar aplicativos é o namespace padrão digitando:
kubectl config view --minify | grep namespace
- Adicione o label
istio-injection=enabled
ao namespace para instalar automaticamente o sidecar do Envoy em quaisquer novos pods de aplicativo implantados no namespace informando:kubectl label namespace <namespace-name> istio-injection=enabled
- Confirme se o namespace está rotulado corretamente digitando:
kubectl get namespace -L istio-injection
Etapa 4: Implante um aplicativo e observe os contêineres sidecar do Envoy
Para confirmar se o Istio está sendo usado para fornecer comunicação, configuração e segurança para um aplicativo:
- Implantação do aplicativo. Por exemplo, informando:
kubectl apply -f <manifest-name>
- Confirme se os serviços do aplicativo foram criados com sucesso digitando:
kubectl get services
- Confirme se os pods do aplicativo têm um status de Em Execução digitando:
kubectl get pods
A saída mostra que cada pod de aplicativo tem dois contêineres. Para cada pod, um contêiner é o contêiner de aplicativos e o outro contêiner é o sidecar do Envoy que o Istio injetou.
- Confirme se um dos pods do aplicativo tem dois contêineres (um dos quais é o contêiner do aplicativo e o outro é o sidecar do Envoy injetado pelo Istio) digitando:
kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'
Observe que os aplicativos não podem ser acessados de fora do cluster por padrão após a ativação do gateway de entrada. Para obter um exemplo de como tornar um aplicativo acessível, consulte Exemplo: Implantando o Istio como um Complemento de Cluster.
Exemplo: Implantando o Istio como um Complemento de Cluster
Neste exemplo, você instala o add-on Istio e o gateway de entrada Istio em um cluster criado com o Kubernetes Engine. Depois de instalar o add-on e o gateway de entrada do Istio, você implanta o aplicativo Bookinfo de amostra do Istio e torna o aplicativo acessível de fora do cluster:
- Por conveniência, defina uma variável de ambiente chamada CLUSTER_ID como o valor do OCID do cluster digitando:
export CLUSTER_ID=<cluster-ocid>
- Crie um arquivo JSON chamado
enableistio-ig.json
que contenha o seguinte:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
Este arquivo de configuração instala o add-on do Istio e o gateway de entrada do Istio.
- Instale o add-on do Istio e o gateway de entrada do Istio no cluster digitando:
oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json
Uma solicitação de serviço é criada para instalar o complemento Istio.
- Verifique a instalação bem-sucedida do complemento Istion e do gateway de entrada Istio:
- Confirme se a extensão Istio foi instalada com sucesso inserindo:
oci ce cluster list-addons --cluster-id $CLUSTER_ID
Pressupondo uma implantação bem-sucedida, a saída mostra o complemento Istio com um estado de ciclo de vida ACTIVE. Por exemplo, as seguintes saídas mostram o complemento Istio, juntamente com vários complementos essenciais de cluster:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.10.1-multiarch-7", "lifecycle-state": "ACTIVE", "name": "CoreDNS", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.27.2-oke.0.2.20-multiarch-98", "lifecycle-state": "ACTIVE", "name": "KubeProxy", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v2.0.1", "lifecycle-state": "ACTIVE", "name": "OciVcnIpNative", "time-created": "2023-11-06T10:35:26+00:00", "version": null } ] }
- Confirme se o pod do plano de controle Istio (istiod) e o pod istio-ingressgateway estão sendo executados no namespace istio-system digitando:
kubectl get pods -n istio-system
Supondo uma implantação bem-sucedida, a saída mostra os dois pods com um status de Em Execução. Por exemplo:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Confirme se o serviço istio-ingressgateway foi implantado com sucesso digitando:
kubectl get svc istio-ingressgateway -n istio-system
Pressupondo uma implantação bem-sucedida, a saída mostra o serviço istio-ingressgateway como um serviço do tipo LoadBalancer e (se a sub-rede do balanceador de carga do cluster for pública) com um endereço IP acessível publicamente. Por exemplo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Confirme se a extensão Istio foi instalada com sucesso inserindo:
- Crie um novo namespace no qual implantar o aplicativo de amostra Bookinfo:
- Crie o namespace
bookinfo
digitando:kubectl create namespace bookinfo
- Torne o namespace
bookinfo
o namespace padrão digitando:kubectl config set-context --current --namespace=bookinfo
- Confirme se bookinfo é o namespace padrão digitando:
kubectl config view --minify | grep namespace
- Crie o namespace
- Adicione o label
istio-injection=enabled
ao namespace bookinfo para instalar automaticamente o sidecar do Envoy em quaisquer novos pods de aplicativo implantados no namespace:- Adicione o label ao namespace de informações do livro digitando:
kubectl label namespace bookinfo istio-injection=enabled
- Confirme se o namespace bookinfo está rotulado corretamente digitando:
kubectl get namespace -L istio-injection
- Adicione o label ao namespace de informações do livro digitando:
- Implante o aplicativo de amostra Bookinfo digitando:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
Supondo uma implantação bem-sucedida, a saída mostra várias implantações e serviços criados no cluster, da seguinte forma:
service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created
- Verifique a implantação bem-sucedida do aplicativo de amostra Bookinfo:
- Confirme se os serviços foram criados com sucesso informando:
kubectl get services
Supondo uma implantação bem-sucedida, a saída mostra os serviços criados no cluster, semelhante ao seguinte:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.96.72.219 <none> 9080/TCP 54s productpage ClusterIP 10.96.65.83 <none> 9080/TCP 54s ratings ClusterIP 10.96.101.51 <none> 9080/TCP 54s reviews ClusterIP 10.96.14.9 <none> 9080/TCP 54s
- Confirme se todos os pods têm o status Running digitando:
kubectl get pods
Supondo uma implantação bem-sucedida, a saída mostra os pods que estão em execução, semelhante ao seguinte:
NAME READY STATUS RESTARTS AGE details-v1-5f4d584748-hcm9t 2/2 Running 0 81s productpage-v1-564d4686f-48lpw 2/2 Running 0 80s ratings-v1-686ccfb5d8-bpl8t 2/2 Running 0 81s reviews-v1-86896b7648-6c8d4 2/2 Running 0 81s reviews-v2-b7dcd98fb-fsv7c 2/2 Running 0 81s reviews-v3-5c5cc7b6d-qgrv2 2/2 Running 0 81s
A saída mostra que cada pod de aplicativo tem dois contêineres. Para cada pod, um contêiner é o contêiner de aplicativos e o outro contêiner é o sidecar Envoy injetado pelo Istio.
- Confirme se o pod
ratings
tem dois contêineres (um dos quais é o contêiner de aplicativos e o outro é o sidecar do Envoy injetado pelo Istio). Por exemplo, informando:kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'
A saída mostra dois contêineres, o contêiner de aplicação (classificações) e o contêiner sidecar Envoy injetado pelo Istio (istio-proxy):
ratings istio-proxy
- Confirme se o aplicativo está em execução enviando um comando curl de um pod:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
Observe que o aplicativo de amostra Bookinfo ainda não está acessível de fora do cluster, mesmo depois de ativar o gateway de entrada. Observe também que a acessibilidade do gateway de entrada do Istio depende do tipo de sub-rede do balanceador de carga (pública ou privada) especificada para o cluster.
- Confirme se os serviços foram criados com sucesso informando:
-
Torne o aplicativo de amostra Bookinfo acessível de fora do cluster:
- Mapeie a entrada da implantação de amostra para o gateway de entrada do Istio digitando:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
A saída mostra que o Gateway do Kubernetes e os recursos VirtualService foram criados:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
- Mapeie a entrada da implantação de amostra para o gateway de entrada do Istio digitando:
- Verifique se o aplicativo de amostra Bookinfo está acessível e usando o gateway de entrada Istio:
- Defina variáveis de ambiente para o host de entrada e a porta de entrada digitando:
export INGRESS_NAME=istio-ingressgateway
export INGRESS_NS=istio-system
export INGRESS_HOST=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
- Confirme se o aplicativo de amostra Bookinfo está acessível e usando o gateway de entrada Istio digitando:
curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"
Supondo uma implantação bem-sucedida, a saída mostra os serviços criados no cluster, semelhante ao seguinte:
<title>Simple Bookstore App</title>
- Visualize a página web Bookinfo em um navegador abrindo o seguinte URL:
http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
- No navegador, atualize a página do Bookinfo várias vezes para ver diferentes versões de revisões mostradas na página.
- Defina variáveis de ambiente para o host de entrada e a porta de entrada digitando:
- (Opcional) Depois de concluir o exemplo, agora você pode excluir os recursos criados:
- Exclua o aplicativo de amostra Bookinfo digitando:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
-
Desative (e opcionalmente remova) o complemento do Istio usando o comando oci ce cluster disable-addon, digitando:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on <true|false>
em que
--is-remove-existing-add-on <true|false>
especifica ou remover completamente o complemento Istio (quando definido comotrue
), ou não remover o complemento, mas simplesmente desativá-lo e não usá-lo (quando definido comofalse
). Se desativar a extensão, a Oracle não atualizará mais a versão da extensão automaticamente quando novas versões estiverem disponíveis.Por exemplo:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on true
Uma solicitação de serviço é criada para desativar (e, opcionalmente, remover) o complemento Istio.
- Remova o Istio CustomResourceDefinitions (CRDs), que não são excluídos por padrão, digitando:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- Remova os recursos de malha do Istio (como o Kubernetes Gateway e os recursos VirtualService), que não são gerenciados pelo complemento do Istio, digitando:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
- Exclua o aplicativo de amostra Bookinfo digitando:
Atualizando o complemento Istio
Estas instruções descrevem como atualizar o complemento Istio usando a CLI e um arquivo de configuração. Você também pode atualizar o complemento usando a Console e a API. Para obter mais informações, consulte Atualizando um Complemento de Cluster.
-
Abra o arquivo de configuração do add-on do Istio em um editor adequado.
-
Adicione, remova ou altere argumentos de configuração no arquivo de configuração conforme necessário. Para obter informações sobre os argumentos que você pode definir, consulte argumentos de configuração do Stio add-on.
- Se você especificou que deseja que a Oracle atualize automaticamente a versão do complemento Istio e deseja manter as alterações de configuração, defina o argumento de configuração
customizeConfigMap
comotrue
(se ele ainda não estiver definido). - Atualize o add-on do Istio usando o comando oci ce cluster update-addon, digitando:
oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>
em que:
--cluster-id <cluster-ocid>
é o OCID do cluster no qual você deseja atualizar o complemento Istio.--from-json file://<path-to-config-file>
especifica o local do arquivo de configuração do complemento Istio a ser usado ao atualizar o complemento. Por exemplo,--from-json file://./istio-add-on.json
Por exemplo:
oci ce cluster update-addon --addon-name Istio --from-json file://./istio-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Uma solicitação de serviço é criada para atualizar o complemento Istio.
- (Opcional) Exiba o status dos pods istiod e istio-ingressgateway para observar o progresso, digitando:
kubectl get pods -n istio-system
Desabilitando (e removendo) o complemento do Istio
Estas instruções descrevem como desativar e remover o complemento Istio usando a CLI e um arquivo de configuração. Você também pode atualizar o complemento usando a Console e a API. Para obter mais informações, consulte Desativando (e Removendo) um Complemento de Cluster.
-
Desative (e opcionalmente remova) o complemento do Istio usando o comando oci ce cluster disable-addon, digitando:
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>
em que:
--cluster-id <cluster-ocid>
é o OCID do cluster no qual você deseja desativar (e, opcionalmente, remover) o complemento Istio.--is-remove-existing-add-on <true|false>
especifica ou remover completamente o complemento Istio (quando definido comotrue
) ou não remover o complemento, mas simplesmente desativá-lo e não usá-lo (quando definido comofalse
). Se você desativar o complemento Istio, a Oracle não atualizará mais a versão do complemento automaticamente quando novas versões estiverem disponíveis.
Por exemplo:
oci ce cluster disable-addon --addon-name Istio --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true
Uma solicitação de serviço é criada para desativar (e, opcionalmente, remover) o complemento Istio.
- (Opcional) Exiba o status dos pods istiod e istio-ingressgateway para observar o progresso, digitando:
kubectl get pods -n istio-system
- (Opcional) Remova o Istio CustomResourceDefinitions (CRDs), que não são excluídos por padrão, digitando:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- (Opcional) Remova os recursos de malha do Istio (como o Gateway do Kubernetes e os recursos VirtualService), que não são gerenciados pelo complemento do Istio, usando o comando
kubectl delete
.