{"id":5328,"date":"2018-07-11T23:35:12","date_gmt":"2018-07-12T06:35:12","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=5328"},"modified":"2025-06-13T20:40:45","modified_gmt":"2025-06-14T03:40:45","slug":"kops-running-couchbase-cluster-on-kubernetes-at-scale","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/","title":{"rendered":"KOPS: Executando o cluster do Couchbase no Kubernetes em escala"},"content":{"rendered":"<p>Em termos simples, o kops \u00e9 o kubectl para clusters de kubernetes (k8s). O poder do kubernetes \u00e9 que ele elimina o aprisionamento ao fornecedor, oferece portabilidade para seus aplicativos, bancos de dados, caso seja tomada a decis\u00e3o de mudar de fornecedor de nuvem ou se os fluxos de trabalho da nuvem precisarem ser transferidos para o local. Seja qual for o cen\u00e1rio, o kubernetes oferece essa liberdade.<\/p>\n<div id=\"attachment_5494\" style=\"width: 910px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5494\" class=\"wp-image-5494 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-1024x526.png\" alt=\"KOPS Architecture\" width=\"900\" height=\"462\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-1024x526.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-300x154.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-768x395.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-1536x789.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM-1320x678.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png 1814w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><p id=\"caption-attachment-5494\" class=\"wp-caption-text\">Arquitetura KOPS<\/p><\/div>\n<p>Com o objetivo de fazer uma divulga\u00e7\u00e3o completa, \u00e9 mais f\u00e1cil usar as ferramentas fornecidas pelos fornecedores de nuvem. Ferramentas de c\u00f3digo aberto, como o kops, funcionam igualmente bem e s\u00e3o muito eficientes.<\/p>\n<p>O Operador Aut\u00f4nomo do Couchbase estende a API do Kubernetes criando uma Defini\u00e7\u00e3o de Recurso Personalizado (CRD) e registrando um controlador espec\u00edfico do Couchbase (o Operador Aut\u00f4nomo) para gerenciar clusters do Couchbase.<\/p>\n<p>Para este blog, usaremos o AWS como IaaS e demonstraremos o uso do kops, os recursos e o Couchbase Autonomous Operator executando o cluster do Couchbase em escala.<\/p>\n<h2>O que o KOPS pode fazer?<\/h2>\n<p>\"O kops ajuda voc\u00ea a criar, destruir, atualizar e manter clusters Kubernetes de n\u00edvel de produ\u00e7\u00e3o e altamente dispon\u00edveis a partir da linha de comando. Atualmente, o AWS (Amazon Web Services) \u00e9 oficialmente suportado, com o GCE em suporte beta e o VMware vSphere em alfa, al\u00e9m de outras plataformas planejadas.\" [1]<\/p>\n<p>Vamos direto ao ponto e ver como isso funciona?<\/p>\n<ul>\n<li>Instalar o kops<\/li>\n<li>Criar um cluster do k8s no AWS<\/li>\n<li>Configurar o painel de controle do k8s<\/li>\n<li>Verificar e validar o cluster k8s<\/li>\n<li>Implantar o operador aut\u00f4nomo do Couchbase no K8s<\/li>\n<li>Implantar o cluster do couchbase<\/li>\n<li>Resili\u00eancia do servi\u00e7o<\/li>\n<li>Pr\u00f3ximas etapas<\/li>\n<\/ul>\n<h3><strong>Instalar o KOPS<\/strong><\/h3>\n<h4><strong>OSX a partir do Homebrew<\/strong><\/h4>\n<pre class=\"\">$ brew update\r\n$ brew install kops\r\n<\/pre>\n<h4>Linux<\/h4>\n<pre class=\"\">$ curl -LO https:\/\/github.com\/kubernetes\/kops\/releases\/download\/$(curl -s https:\/\/api.github.com\/repos\/kubernetes\/kops\/releases\/latest | grep tag_name | cut -d '\"' -f 4)\/kops-linux-amd64chmod +x kops-linux-amd64sudo mv kops-linux-amd64 \/usr\/local\/bin\/kops<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Criar um cluster do k8s no AWS<\/strong><\/h3>\n<p>Antes de podermos usar o kops para criar o cluster do k8s, precisamos criar pol\u00edticas de IAM para o kops e para que ele possa provisionar os recursos necess\u00e1rios para criar o cluster do k8s. Essa \u00e9 uma opera\u00e7\u00e3o \u00fanica, que precisa ser feita apenas uma vez<\/p>\n<p>Pr\u00e9-requisitos para kops<\/p>\n<h4>Instalar a CLI do AWS<\/h4>\n<p>Para MacOS<\/p>\n<p><strong class=\"userinput\"><code class=\"\">$ pip3 <span class=\"\">instalar<\/span> awscli <span class=\"\">--upgrade --user<\/span><\/code><\/strong><\/p>\n<p>Para outras plataformas, <a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/installing.html\">clique aqui<\/a><\/p>\n<p><em>OBSERVA\u00c7\u00c3O: opera\u00e7\u00e3o \u00fanica<\/em><\/p>\n<h4>Habilite o ambiente AWS executando \"aws configure\" e execute os comandos abaixo<\/h4>\n<pre class=\"\">$ aws configure      # enter appropriate credentials with user with perms to create user\/groups\r\n$ aws iam create-group --group-name kops\r\n$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy\/AmazonEC2FullAccess --group-name kops\r\n$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy\/AmazonRoute53FullAccess --group-name kops\r\n$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy\/AmazonS3FullAccess --group-name kops\r\n$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy\/IAMFullAccess --group-name kops\r\n$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy\/AmazonVPCFullAccess --group-name kops\r\n$ aws iam create-user --user-name kops\r\n$ aws iam add-user-to-group --user-name kops --group-name kops\r\n$ aws iam create-access-key --user-name kops<\/pre>\n<h4>Criar um bucket S3 para armazenar configura\u00e7\u00e3o\/dados do kops<\/h4>\n<p>No meu caso, seu nome \u00e9\u00a0<em><strong>rd-k8s-aws\u00a0<\/strong><\/em>e para a regi\u00e3o <strong>us-west-1<\/strong><\/p>\n<pre class=\"\">$ aws s3api create-bucket --bucket rd-k8s-aws --region us-west-1 --create-bucket-configuration LocationConstraint=us-west-1\r\n\r\n$ aws s3api put-bucket-versioning --bucket rd-k8s-aws --versioning-configuration Status=Enabled<\/pre>\n<h4><strong>Defina as vari\u00e1veis de ambiente para o armazenamento de estado do kops e o nome do cluster<\/strong><\/h4>\n<p>Escolha qualquer nome de cluster para seu cluster, eu escolhi\u00a0<em><strong>rdc.k8s.local<\/strong><\/em><\/p>\n<pre class=\"\">$ export KOPS_STATE_STORE=s3:\/\/rd-k8s-aws\r\n\r\n$ export KOPS_CLUSTER_NAME=rdc.k8s.local<\/pre>\n<h4>Criar um cluster k8s com o kops<\/h4>\n<p>Escolha a regi\u00e3o do AWS, o tamanho da inst\u00e2ncia e a contagem de n\u00f3s para o cluster do k8s.<\/p>\n<pre class=\"\">$ kops create cluster --node-count=7 --node-size=m4.4xlarge --zones=us-west-2a --name ${KOPS_CLUSTER_NAME} --state=${KOPS_STATE_STORE} --yes<\/pre>\n<p><strong>OBSERVA\u00c7\u00c3O:<\/strong> Leva cerca de 5 a 8 minutos, um bom momento para tomar um caf\u00e9!<\/p>\n<h6 class=\"\">A amostra de sa\u00edda \u00e9 semelhante a esta<\/h6>\n<pre class=\"\">$ kops validate cluster\r\nValidating cluster rdc.k8s.local\r\n\r\nINSTANCE GROUPS\r\nNAME              ROLE    MACHINETYPE  MIN MAX SUBNETS\r\nmaster-us-west-1a Master m3.medium      1   1  us-west-1a\r\nnodes             Node   m4.4xlarge     7   7  us-west-1a\r\n\r\nNODE STATUS\r\nNAME                                        ROLE  READY\r\nip-172-20-42-242.us-west-1.compute.internal node   True\r\nip-172-20-43-56.us-west-1.compute.internal  node   True\r\nip-172-20-44-17.us-west-1.compute.internal  node   True\r\nip-172-20-44-80.us-west-1.compute.internal  node   True\r\nip-172-20-48-254.us-west-1.compute.internal node   True\r\nip-172-20-56-254.us-west-1.compute.internal node   True\r\nip-172-20-60-79.us-west-1.compute.internal  master True\r\nip-172-20-63-146.us-west-1.compute.internal node   True\r\n\r\nYour cluster rdc.k8s.local is ready\r\n<\/pre>\n<h4>Obter os n\u00f3s e validar o cluster k8s<\/h4>\n<pre class=\"\">$ kubectl get nodes --show-labels\r\n\r\n$ kubectl cluster-info<\/pre>\n<p>Nesse ponto, o contexto do kubectl ou do k8s deve apontar para o cluster do AWS k8s<\/p>\n<h3>Configurar o painel de controle do k8s<\/h3>\n<pre class=\"\">$ kubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/master\/src\/deploy\/recommended\/kubernetes-dashboard.yaml<\/pre>\n<pre class=\"\">$ kubectl create serviceaccount dashboard -n default\r\n$ kubectl create clusterrolebinding dashboard-admin -n default --clusterrole=cluster-admin --serviceaccount=default:dashboard<\/pre>\n<p><strong><em>Em uma guia\/terminal diferente, execute o comando abaixo para fazer proxy do servidor api do k8s no laptop local<\/em><\/strong><\/p>\n<pre class=\"\">$ kubectl proxy<\/pre>\n<p>Obter o token para acessar o painel do k8s<\/p>\n<pre class=\"\">$ kubectl get secret $(kubectl get serviceaccount dashboard -o jsonpath=\"{.secrets[0].name}\") -o jsonpath=\"{.data.token}\" | base64 --decode<\/pre>\n<p>Escolha a op\u00e7\u00e3o para usar o token e, enquanto estiver pegando o token acima, pule <strong>%<\/strong> no final.<\/p>\n<p>Fa\u00e7a login no painel de controle do k8s em https:\/\/127.0.0.1:8001\/ui [2]<\/p>\n<h3><strong>Verificar e validar o cluster k8s<\/strong><\/h3>\n<p>Valide o cluster k8s usando o comando<\/p>\n<pre class=\"\">$ kops validate cluster<\/pre>\n<p># verifique se o n\u00famero de n\u00f3s mencionados na cria\u00e7\u00e3o do cluster corresponde aqui<\/p>\n<pre class=\"\">$ kubectl get nodes<\/pre>\n<h3><strong>Implantar o operador aut\u00f4nomo do Couchbase no K8s <\/strong><\/h3>\n<p>Agora que implantamos o cluster do k8s, \u00e9 hora de implantar o operador do couchbase<\/p>\n<p>Primeiro, implantamos o operador, precisamos habilitar o RBAC para o operador, precisamos criar o ClusterRole para o Operador do Couchbase<\/p>\n<pre class=\"\">$ kubectl create -f https:\/\/raw.githubusercontent.com\/ramdhakne\/blogs\/master\/kops\/cbyaml\/cluster-role.yaml<\/pre>\n<p><em>Observa\u00e7\u00e3o<\/em>: Essa fun\u00e7\u00e3o s\u00f3 precisa ser criada uma vez.<\/p>\n<p>Depois que o ClusterRole for criado, voc\u00ea precisar\u00e1 criar uma ServiceAccount no namespace em que est\u00e1 instalando o Couchbase Operator e, em seguida, atribuir o ClusterRole a essa ServiceAccount usando um\u00a0<em>Vincula\u00e7\u00e3o de ClusterRole<\/em>. Neste guia, usaremos o\u00a0<code>padr\u00e3o<\/code>\u00a0para criar o ServiceAccount.<\/p>\n<pre class=\"\">$ kubectl create serviceaccount couchbase-operator --namespace default\r\n\r\n$ kubectl create clusterrolebinding couchbase-operator --clusterrole couchbase-operator --serviceaccount default:couchbase-operator<\/pre>\n<h3>Implantar o operador do couchbase<\/h3>\n<pre class=\"\">$ kubectl create -f https:\/\/raw.githubusercontent.com\/ramdhakne\/blogs\/master\/kops\/cbyaml\/operator.yaml<\/pre>\n<p>A execu\u00e7\u00e3o desse comando faz o download da imagem do Docker do Couchbase Operator especificada no arquivo\u00a0<code>operator.yaml<\/code>\u00a0e cria um arquivo\u00a0<em>implanta\u00e7\u00e3o<\/em>\u00a0que gerencia uma \u00fanica inst\u00e2ncia do Couchbase Operator. O Couchbase Operator usa uma implanta\u00e7\u00e3o para que possa reiniciar se o pod em que est\u00e1 sendo executado morrer.<\/p>\n<pre class=\"\">$ kubectl get deployments -l app=couchbase-operator<\/pre>\n<div class=\"paragraph\">\n<p>Voc\u00ea deve continuar a sondar o status do Operador at\u00e9 que o resultado seja semelhante ao resultado a seguir:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlightjs highlight language-bash line-numbers pre codeblock\">NAME               DESIRED CURRENT UP-TO-DATE AVAILABLE AGE\r\ncouchbase-operator   1       1         1          1     47s<\/pre>\n<\/div>\n<\/div>\n<p>Quando o operador do couchbase estiver instalado e funcionando, ele ter\u00e1 a seguinte apar\u00eancia<\/p>\n<pre class=\"\">$ kubectl get pods\r\nNAME \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0READY      STATUS RESTARTS AGE\r\ncouchbase-operator-7676b7cf47-99b5v \u00a0\u00a0     1\/1 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Running \u00a00       1m<\/pre>\n<p>Precisamos implantar o segredo para autenticar a GUI do servidor couchbase<\/p>\n<pre class=\"\">$ kubectl create -f https:\/\/raw.githubusercontent.com\/ramdhakne\/blogs\/master\/kops\/cbyaml\/secret.yaml<\/pre>\n<p>Implante agora o cluster de 10 n\u00f3s do Couchbase<\/p>\n<pre class=\"\">$ kubectl create -f\u00a0https:\/\/raw.githubusercontent.com\/ramdhakne\/blogs\/master\/kops\/cbyaml\/couchbase-cluster-multi.yaml<\/pre>\n<p>Obter a listagem dos pods do couchbase<\/p>\n<pre class=\"\">$ kubectl get pods\r\nNAME READY STATUS RESTARTS AGE\r\ncb-example-aws-0000 1\/1 Running 0 7m\r\ncb-example-aws-0001 1\/1 Running 0 6m\r\ncb-example-aws-0002 1\/1 Running 0 5m\r\ncb-example-aws-0003 1\/1 Running 0 4m\r\ncb-example-aws-0004 1\/1 Running 0 3m\r\ncb-example-aws-0005 1\/1 Running 0 2m\r\ncb-example-aws-0006 1\/1 Running 0 2m\r\ncb-example-aws-0007 1\/1 Running 0 1m\r\ncb-example-aws-0008 1\/1 Running 0 1m\r\ncb-example-aws-0009 1\/1 Running 0 50s\r\ncouchbase-operator-7676b7cf47-99b5v 1\/1 Running 0 17m<\/pre>\n<p>Para acessar a GUI do Couchbase, acessaremos a porta 8091 e, para isso, podemos realizar o encaminhamento de porta da seguinte forma<\/p>\n<pre class=\"\">$ kubectl port-forward cb-example-aws-0000 8091:8091<\/pre>\n<p>A GUI do servidor Couchbase pode ser acessada em https:\/\/localhost:8091<\/p>\n<h3>Resili\u00eancia do servi\u00e7o<\/h3>\n<p>Para mostrar a resili\u00eancia do servi\u00e7o, podemos eliminar um pod, simulando a perda de um n\u00f3 do couchbase.<\/p>\n<pre class=\"\">\u00a0$ kubectl delete pod cb-example-aws-0001<\/pre>\n<p>O maior recurso que o Kubernetes nos oferece \u00e9 a resili\u00eancia do servi\u00e7o: se perdermos um pod, o Kubernetes verificar\u00e1 a defini\u00e7\u00e3o do cluster e entender\u00e1 que ele precisa ter 3 pods e criar\u00e1 um novo, adicionar\u00e1 ao cluster e, em seguida, far\u00e1 o rebalanceamento no cluster. Dessa forma, elimina-se a tarefa administrativa crucial de monitorar o cluster quanto a falhas de n\u00f3s, decidir o que fazer quando isso acontecer e, em seguida, executar a opera\u00e7\u00e3o de rebalanceamento. Tudo isso acontece de forma oculta, e os aplicativos ser\u00e3o executados sem interrup\u00e7\u00f5es.<\/p>\n<p>Se listarmos os pods novamente, veremos algo parecido com isto<\/p>\n<pre class=\"\">$ kubectl get pods --watch\r\n...\r\n...\r\ncb-example-aws-0010 0\/1 Pending 0 0s\r\ncb-example-aws-0010 0\/1 Pending 0 0s\r\ncb-example-aws-0010 0\/1 ContainerCreating 0 0s\r\ncb-example-aws-0010 1\/1 Running 0 1s<\/pre>\n<p>A instala\u00e7\u00e3o do cbc-pillowfight para gerar a carga KV nos d\u00e1 uma ideia de quais s\u00e3o os limites que podemos atingir nesse cluster<\/p>\n<p>No servidor de aplicativo \u00fanico, executando o pillowfight com os seguintes par\u00e2metros<\/p>\n<pre class=\"\"># cbc-pillowfight -U couchbase:\/\/localhost\/kopsClusterBucket -u Administrator -P password -J -t 4 -I 10000 -p `hostname`<\/pre>\n<div id=\"attachment_5468\" style=\"width: 910px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5468\" class=\"wp-image-5468 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-1024x517.png\" alt=\"KV performance with pillowfight\" width=\"900\" height=\"454\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-1024x517.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-300x151.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-768x388.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-1536x776.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM-1320x666.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.34.28-PM.png 2048w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><p id=\"caption-attachment-5468\" class=\"wp-caption-text\">Desempenho da KV com briga de travesseiros<\/p><\/div>\n<p>Com um \u00fanico servidor de aplicativos, conseguimos obter ~34K Ops\/Sec<\/p>\n<p>Aumentando o n\u00edvel, usando outro servidor de aplicativos para executar o pillowfight, podemos obter mais desempenho na ordem de ~51k Ops\/Sec<\/p>\n<div id=\"attachment_5469\" style=\"width: 910px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5469\" class=\"wp-image-5469 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-1024x506.png\" alt=\"KV performance with pillowfight\" width=\"900\" height=\"445\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-1024x506.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-300x148.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-768x380.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-1536x759.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM-1320x652.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-11-at-3.41.15-PM.png 2048w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><p id=\"caption-attachment-5469\" class=\"wp-caption-text\">Desempenho da KV com briga de travesseiros<\/p><\/div>\n<p>Conclus\u00e3o<\/p>\n<p>O que aprendemos aqui \u00e9 que, com o uso do kops, \u00e9 muito f\u00e1cil implantar clusters do Couchbase em escala, e o operador aut\u00f4nomo oferece benef\u00edcios como resili\u00eancia de servi\u00e7o, reequil\u00edbrio autom\u00e1tico, cria\u00e7\u00e3o autom\u00e1tica de buckets, f\u00e1cil integra\u00e7\u00e3o com o pipeline de CI\/CD. Os arquivos yaml podem ser padronizados para Dev\/QA\/UAT e prod.<\/p>\n<p>Refer\u00eancias:<\/p>\n<p>[1]\u00a0<a href=\"https:\/\/github.com\/kubernetes\/kops\">https:\/\/github.com\/kubernetes\/kops<\/a><\/p>\n<p>[2] <a href=\"https:\/\/kubecloud.io\/kubernetes-dashboard-on-arm-with-rbac-61309310a640\">Solu\u00e7\u00e3o de problemas do painel do k8s<\/a><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Put in simple terms, kops is kubectl for kubernetes (k8s) clusters. The power of kubernetes is that it removes vendor lock-in, provides portability for your apps, databases incase decision gets made to different cloud vendor or if the cloud workflows [&hellip;]<\/p>","protected":false},"author":12023,"featured_media":5494,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816],"tags":[10124,1545],"ppma_author":[9071],"class_list":["post-5328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","tag-amazon-web-services-aws","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>KOPS: Running Couchbase Cluster on Kubernetes at Scale<\/title>\n<meta name=\"description\" content=\"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KOPS: Running Couchbase Cluster on Kubernetes at Scale\" \/>\n<meta property=\"og:description\" content=\"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-12T06:35:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:40:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1814\" \/>\n\t<meta property=\"og:image:height\" content=\"932\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ram Dhakne\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ram Dhakne\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\"},\"author\":{\"name\":\"Ram Dhakne\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13\"},\"headline\":\"KOPS: Running Couchbase Cluster on Kubernetes at Scale\",\"datePublished\":\"2018-07-12T06:35:12+00:00\",\"dateModified\":\"2025-06-14T03:40:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\"},\"wordCount\":1005,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png\",\"keywords\":[\"Amazon Web Services (AWS)\",\"kubernetes\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\",\"name\":\"KOPS: Running Couchbase Cluster on Kubernetes at Scale\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png\",\"datePublished\":\"2018-07-12T06:35:12+00:00\",\"dateModified\":\"2025-06-14T03:40:45+00:00\",\"description\":\"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png\",\"width\":1814,\"height\":932,\"caption\":\"KOPS Architecture\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KOPS: Running Couchbase Cluster on Kubernetes at Scale\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13\",\"name\":\"Ram Dhakne\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0f4c71d7c27bda26464a202747e04acd\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g\",\"caption\":\"Ram Dhakne\"},\"description\":\"Ram Dhakne is Solutions Consultant - US West at Couchbase. He currently helps Enterprise customers with their digital innovations journey and helping them adopt NoSQL technologies. His current interests are running persistent applications like Couchbase NoSQL server on Kubernetes clusters running on AKS, GKE, ACS and OpenShift, securing end-to-end on kubernetes. In his past life has worked on IaaS platforms (AWS, GCP, Azure &amp; Private Clouds), Enterprise Backup Target Products &amp; Backup Applications.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/ram-dhaknecouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"KOPS: Executando o cluster do Couchbase no Kubernetes em escala","description":"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/","og_locale":"pt_BR","og_type":"article","og_title":"KOPS: Running Couchbase Cluster on Kubernetes at Scale","og_description":"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-07-12T06:35:12+00:00","article_modified_time":"2025-06-14T03:40:45+00:00","og_image":[{"width":1814,"height":932,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png","type":"image\/png"}],"author":"Ram Dhakne","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ram Dhakne","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/"},"author":{"name":"Ram Dhakne","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13"},"headline":"KOPS: Running Couchbase Cluster on Kubernetes at Scale","datePublished":"2018-07-12T06:35:12+00:00","dateModified":"2025-06-14T03:40:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/"},"wordCount":1005,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png","keywords":["Amazon Web Services (AWS)","kubernetes"],"articleSection":["Best Practices and Tutorials","Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/","url":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/","name":"KOPS: Executando o cluster do Couchbase no Kubernetes em escala","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png","datePublished":"2018-07-12T06:35:12+00:00","dateModified":"2025-06-14T03:40:45+00:00","description":"This blog demonstrates the kops usage, capabilities and Couchbase Autonomous Operator running Couchbase Cluster at scale.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/07\/Screen-Shot-2018-07-13-at-2.57.48-PM.png","width":1814,"height":932,"caption":"KOPS Architecture"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/kops-running-couchbase-cluster-on-kubernetes-at-scale\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"KOPS: Running Couchbase Cluster on Kubernetes at Scale"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/219548e728c73c6f1ae06f994ebbfb13","name":"Ram Dhakne","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/0f4c71d7c27bda26464a202747e04acd","url":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","caption":"Ram Dhakne"},"description":"Ram Dhakne \u00e9 consultor de solu\u00e7\u00f5es - Oeste dos EUA na Couchbase. Atualmente, ele ajuda clientes corporativos em sua jornada de inova\u00e7\u00f5es digitais e os ajuda a adotar tecnologias NoSQL. Seus interesses atuais s\u00e3o executar aplicativos persistentes como o servidor NoSQL Couchbase em clusters Kubernetes executados em AKS, GKE, ACS e OpenShift, protegendo de ponta a ponta no Kubernetes. Em sua vida pregressa, trabalhou em plataformas IaaS (AWS, GCP, Azure e nuvens privadas), produtos-alvo de backup corporativo e aplicativos de backup.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/ram-dhaknecouchbase-com\/"}]}},"authors":[{"term_id":9071,"user_id":12023,"is_guest":0,"slug":"ram-dhaknecouchbase-com","display_name":"Ram Dhakne","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a1f4aec5276e885840e6a5179ddab527fd6e0e3d2451ca7fcb847e0135cd7e7a?s=96&d=mm&r=g","author_category":"","last_name":"Dhakne","first_name":"Ram","job_title":"","user_url":"","description":"Ram Dhakne \u00e9 consultor de solu\u00e7\u00f5es - Oeste dos EUA na Couchbase. Atualmente, ele ajuda clientes corporativos em sua jornada de inova\u00e7\u00f5es digitais e os ajuda a adotar tecnologias NoSQL. Seus interesses atuais s\u00e3o executar aplicativos persistentes como o servidor NoSQL Couchbase em clusters Kubernetes executados em AKS, GKE, ACS e OpenShift, protegendo de ponta a ponta no Kubernetes. Em sua vida pregressa, trabalhou em plataformas IaaS (AWS, GCP, Azure e nuvens privadas), produtos-alvo de backup corporativo e aplicativos de backup."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/5328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/12023"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=5328"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/5328\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/5494"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=5328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=5328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=5328"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=5328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}