{"id":7314,"date":"2019-08-06T07:45:04","date_gmt":"2019-08-06T14:45:04","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7314"},"modified":"2025-06-13T23:06:17","modified_gmt":"2025-06-14T06:06:17","slug":"autonomous-operator-1-2-0-public-connectivity","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/autonomous-operator-1-2-0-public-connectivity\/","title":{"rendered":"Operador aut\u00f4nomo 1.2.0 Conectividade p\u00fablica"},"content":{"rendered":"<p>Em minha <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/autonomous-operator-1-2-0-networking\/\">Artigo anterior<\/a> Discuti, em um n\u00edvel elevado, o novo recurso de conectividade p\u00fablica no Autonomous Operator 1.2.0.  Essa foi intencionalmente uma vis\u00e3o geral abstrata para convencer o usu\u00e1rio a aprender sobre as alegrias do DDNS, do TLS e da rede de camada 3.<\/p>\n<blockquote><p>D\u00ea um peixe a um homem e voc\u00ea o alimentar\u00e1 por um dia. Ensine um homem a pescar e voc\u00ea o alimentar\u00e1 por toda a vida<\/p><\/blockquote>\n<p>Esperamos que todos voc\u00eas tenham investido tempo para aprender a pescar! (Este artigo fornece um tutorial pr\u00e1tico sobre a configura\u00e7\u00e3o do Operator para que seja poss\u00edvel expor seus clusters do Couchbase com seguran\u00e7a na Internet p\u00fablica.<\/p>\n<h2>Por que usar esse recurso?<\/h2>\n<p>As startups de tecnologia de hoje s\u00e3o mais focadas na nuvem do que as empresas tradicionais. Alguns argumentariam que a empresa tradicional est\u00e1 entrincheirada - protegendo os dados atr\u00e1s de firewalls em data centers privados - e, sem d\u00favida, do ponto de vista da seguran\u00e7a, essa \u00e9 a coisa certa a fazer.<\/p>\n<p>O aumento da exposi\u00e7\u00e3o \u00e0 nuvem, embora seja um risco maior, tamb\u00e9m est\u00e1 se tornando menos preocupante com o passar do tempo.  O mais importante \u00e9 que a nuvem abre in\u00fameras portas para ganhos de agilidade e inova\u00e7\u00e3o. Conectar ofertas de servi\u00e7os p\u00fablicos por meio da Internet p\u00fablica \u00e9 um benef\u00edcio enorme, que n\u00e3o pode ser obtido de forma f\u00e1cil e econ\u00f4mica com servi\u00e7os que ficam no local, escondidos atr\u00e1s dos limites do NAT.<\/p>\n<p>Um exemplo que me agrada bastante \u00e9 o surgimento da fun\u00e7\u00e3o como servi\u00e7o (FaaS).  As fun\u00e7\u00f5es s\u00e3o trabalhos de curta dura\u00e7\u00e3o (geralmente baseados em cont\u00eaineres) que respondem a est\u00edmulos e retornam um resultado.  Elas s\u00e3o criadas sob demanda e automaticamente escalonadas de forma horizontal e instant\u00e2nea para lidar com a carga de trabalho necess\u00e1ria.  Voc\u00ea pode usar ofertas p\u00fablicas de servi\u00e7os FaaS hoje, sem perder tempo com a instala\u00e7\u00e3o e a configura\u00e7\u00e3o de infraestrutura virtual ou f\u00edsica.  O AWS Lambda \u00e9 uma dessas encarna\u00e7\u00f5es com a qual voc\u00ea talvez esteja familiarizado.<\/p>\n<p>A menos que sua fun\u00e7\u00e3o seja pura (no sentido de que apenas processa dados), ela exigir\u00e1 entradas, geralmente na forma de um banco de dados.  Essas ofertas de FaaS, por operarem na Internet p\u00fablica, tamb\u00e9m exigir\u00e3o uma conex\u00e3o com um banco de dados p\u00fablico. O estabelecimento de t\u00faneis VPN privados entre esses servi\u00e7os pode ser dif\u00edcil ou imposs\u00edvel.<\/p>\n<p>\u00c9 por esses motivos - interconectividade, simplicidade e agilidade - que oferecemos a op\u00e7\u00e3o de <em>conectividade p\u00fablica<\/em>.<\/p>\n<h2>Seguran\u00e7a, seguran\u00e7a, seguran\u00e7a<\/h2>\n<p>Um servi\u00e7o colocado na Internet p\u00fablica enfrentar\u00e1 o escrut\u00ednio de agentes mal-intencionados de terceiros.  A Internet est\u00e1 repleta de tentativas de coletar e explorar informa\u00e7\u00f5es pessoais. Como um teste simples, conecte um sistema UNIX \u00e0 Internet.  Seus logs de SSH ser\u00e3o preenchidos rapidamente com tentativas de acessar a m\u00e1quina usando dicion\u00e1rios de nomes de usu\u00e1rio e senhas comuns\/roubados. Os firewalls mostrar\u00e3o tentativas de verifica\u00e7\u00e3o de portas abertas.  Isso \u00e9 apenas o normal aceito, e tem sido assim desde que me lembro.<\/p>\n<p>Os bancos de dados, em particular, s\u00e3o um pote de mel para os criminosos que tentam explorar os sistemas a fim de obter acesso a listas de e-mails para ataques de phishing ou extrair detalhes de cart\u00f5es de cr\u00e9dito para fraude e roubo de identidade. Voc\u00ea simplesmente precisa tornar esses servi\u00e7os seguros.<\/p>\n<p>O recurso de conectividade p\u00fablica da operadora exige o uso de criptografia completa de ponta a ponta.  Isso evita que bisbilhoteiros vejam informa\u00e7\u00f5es confidenciais enquanto estiverem em redes p\u00fablicas. Os certificados digitais formam uma rela\u00e7\u00e3o de confian\u00e7a entre clientes e servidores.  Um cliente verificar\u00e1 se um servidor \u00e9 v\u00e1lido para o nome do host ao qual tentou se conectar e se foi assinado por uma autoridade de certifica\u00e7\u00e3o confi\u00e1vel.<\/p>\n<p>O Operador permite o uso apenas de cadeias de certificados de servidor e n\u00e3o atua como uma autoridade de certifica\u00e7\u00e3o, assinando certificados de servidor para servidores individuais \u00e0 medida que a topologia muda.  Atuar como uma CA permitiria que qualquer certificado fosse criado e assinado, por isso optamos pela abordagem segura. Como resultado, oferecemos suporte a um certificado curinga para o cluster como um todo. Ao usar certificados curinga, tamb\u00e9m precisamos usar o DNS p\u00fablico para que o cliente confirme que pode verificar se o certificado do servidor \u00e9 v\u00e1lido para o host que est\u00e1 sendo contatado.<\/p>\n<p>Esse hist\u00f3rico nos d\u00e1 conhecimento suficiente para come\u00e7ar a implantar nosso banco de dados com conectividade p\u00fablica.<\/p>\n<h2>Vamos come\u00e7ar<\/h2>\n<h3>DNS<\/h3>\n<p>Conforme discutido, precisamos usar o DNS p\u00fablico para entrar em contato com os n\u00f3s do cluster do Couchbase ao usar a conectividade p\u00fablica.  Esses DNSs podem ser comprados on-line de forma relativamente barata em registradores como <a href=\"https:\/\/www.gandi.net\">Gandi<\/a>, <a href=\"https:\/\/godaddy.com\/\">GoDaddy<\/a>, <a href=\"https:\/\/www.namecheap.com\">Namecheap<\/a> etc.<\/p>\n<p>Tamb\u00e9m precisamos ser capazes de usar o DNS din\u00e2mico.  \u00c0 medida que os n\u00f3s s\u00e3o adicionados e removidos do nosso cluster do Couchbase, precisamos que as entradas correspondentes sejam adicionadas e removidas do DNS.  Elas tamb\u00e9m precisam ser atualizadas se os endere\u00e7os IP p\u00fablicos desses n\u00f3s mudarem. Isso se deve ao alto desempenho, ao sharding do lado do cliente usado pelos clientes do Couchbase e pelo XDCR.  Usaremos o <a href=\"https:\/\/github.com\/kubernetes-incubator\/external-dns#the-latest-release-v05\">Kubernetes external-dns<\/a> para realizar atualiza\u00e7\u00f5es de DDNS.  O link lista os provedores de DDNS compat\u00edveis.  Depois de adquirir um dom\u00ednio DNS, voc\u00ea precisar\u00e1 delegar seus servidores de nomes ao provedor de DDNS escolhido.  Minha escolha pessoal para este exemplo \u00e9 <a href=\"https:\/\/www.cloudflare.com\/\">Cloudflare<\/a>. A etapa final de prepara\u00e7\u00e3o \u00e9 a cria\u00e7\u00e3o de uma chave de API ou de outras credenciais para que o controlador external-dns se autentique com o provedor de DDNS e controle os registros de DNS exigidos pelo cluster do Couchbase.<\/p>\n<h3>TLS<\/h3>\n<p>Para a maioria das pessoas, essa \u00e9 a parte mais m\u00edstica do processo.  As p\u00e1ginas da Web HTTPS simplesmente funcionam de forma transparente, portanto, o usu\u00e1rio comum n\u00e3o precisa se preocupar com isso no dia a dia.  N\u00e3o vou entrar em detalhes (pois isso \u00e9 assunto para outro post), mas o que precisamos discutir s\u00e3o os principais aspectos que precisam ser vinculados \u00e0 configura\u00e7\u00e3o de DNS escolhida.<\/p>\n<p>Estou usando meu dom\u00ednio DNS pessoal, <strong>spjmurray.com.br<\/strong>para esta demonstra\u00e7\u00e3o.  Instalarei meu cluster do Couchbase em seu pr\u00f3prio namespace chamado <strong>6c3c0075-b44a-11e9-9518-4a8d7629c69a<\/strong>e o pr\u00f3prio cluster ser\u00e1 chamado de <strong>couchbase<\/strong>. \u00c9 importante conhecer esses par\u00e2metros porque eles nos permitem endere\u00e7ar exclusivamente um cluster do Couchbase em nosso cluster do Kubernetes.  O cluster do Couchbase ser\u00e1 configurado de modo que seu dom\u00ednio seja <strong>couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk<\/strong>. O operador exigir\u00e1 a cria\u00e7\u00e3o de registros A dentro desse dom\u00ednio para cada n\u00f3, bem como o Console da Web do Couchbase.<\/p>\n<p>Conhecendo nosso dom\u00ednio, agora podemos determinar o nome alternativo do assunto do certificado curinga do DNS <strong>*.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk<\/strong>.<\/p>\n<p>A ferramenta EasyRSA do OpenVPN \u00e9 um m\u00e9todo simples de gerar certificados.  Primeiro, clone o reposit\u00f3rio e inicialize-o.<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">git clone https:\/\/github.com\/OpenVPN\/easy-rsa\r\n<\/pre>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">cd easy-rsa\/easyrsa3\r\n<\/pre>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">.\/easyrsa init-pki\r\n<\/pre>\n<p>Gere o certificado da CA e o par de chaves.  Se voc\u00ea se lembra, a chave privada da CA \u00e9 usada para assinar digitalmente um certificado de servidor. Um cliente pode ent\u00e3o verificar se o certificado do servidor \u00e9 aut\u00eantico com a chave p\u00fablica da CA.  Esse comando solicitar\u00e1 um nome de CA e uma senha. Ap\u00f3s a conclus\u00e3o, o certificado da CA poder\u00e1 ser encontrado em <strong>pki\/ca.crt<\/strong>.<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">.\/easy-rsa build-ca\r\n<\/pre>\n<p>O certificado do servidor e o par de chaves s\u00e3o criados em seguida.  Quando o TLS for especificado em sua configura\u00e7\u00e3o de cluster do Couchbase, o Operator usar\u00e1 o TLS para se comunicar com o cluster.  Isso evita que senhas ou dados confidenciais sejam transmitidos em texto simples. Para dar suporte aos nomes DNS privados do Kubernetes, precisamos de outro nome alternativo de assunto curinga do DNS.  O <strong>nopass<\/strong> tamb\u00e9m deve ser especificada para que a chave privada n\u00e3o seja criptografada e possa ser lida pelo servidor Couchbase. O comando a seguir solicitar\u00e1 uma senha; essa \u00e9 a senha da chave privada da CA usada para assinar digitalmente o certificado.<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">.\/easy-rsa --subject-alt-name=DNS:*.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.svc,DNS:*.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk build-server-full server nopass\r\n<\/pre>\n<p>Voc\u00ea pode verificar se o certificado est\u00e1 de acordo com o esperado examinando-o no OpenSSL:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">openssl x509 -in cert -noout -text\r\nCertificate:\r\n    Data:\r\n        Version: 3 (0x2)\r\n        Serial Number:\r\n            b8:a2:ab:74:2c:8a:88:bf:67:3f:a8:d3:9b:fd:09:19\r\n        Signature Algorithm: sha256WithRSAEncryption\r\n        Issuer: CN = Couchbase CA\r\n        Validity\r\n            Not Before: Aug  1 10:52:15 2019 GMT\r\n            Not After : Jul 29 10:52:15 2029 GMT\r\n        Subject: CN = Couchbase Server\r\n        Subject Public Key Info:\r\n            Public Key Algorithm: rsaEncryption\r\n                RSA Public-Key: (2048 bit)\r\n                Modulus:\r\n                    00:b8:85:b5:41:16:67:1f:79:32:4c:ed:e1:44:cc:\r\n                    55:65:db:a1:d1:99:6e:d1:d7:90:a6:5e:eb:4c:96:\r\n                    de:a4:70:dd:74:6c:76:13:75:01:5e:36:a2:5f:f0:\r\n                    8b:cd:e8:8b:bd:68:2a:f2:5c:e8:3c:78:6d:71:92:\r\n                    db:2c:58:7c:e7:40:a5:73:cc:cd:f4:b7:c8:69:16:\r\n                    d3:c5:15:18:c0:56:d9:b3:f6:86:c6:22:8b:05:22:\r\n                    77:c7:5c:ce:2a:3d:b8:e8:96:ea:c8:17:a8:3a:27:\r\n                    7b:94:66:a1:80:89:a2:8b:25:5b:ed:72:ac:d5:29:\r\n                    37:a1:e5:dd:9f:16:ac:a4:04:14:d8:89:cc:d0:08:\r\n                    f9:f1:58:1f:a7:fa:ee:2d:1a:e5:bd:03:ba:e7:9a:\r\n                    79:f7:10:d7:0f:9b:bc:f9:cc:c9:03:97:58:78:9f:\r\n                    68:78:b7:20:cf:5e:a8:67:7b:33:41:91:4a:8c:7c:\r\n                    44:1a:25:86:ca:15:eb:9a:25:5e:80:23:65:9b:7a:\r\n                    40:e4:55:c1:9c:93:c8:d6:72:e7:d8:d7:ac:dd:f9:\r\n                    92:a8:89:c1:bc:ff:1a:7d:a5:e9:ab:6b:b8:3e:c4:\r\n                    5f:b6:e6:30:45:5c:b4:5a:ce:fa:d9:12:28:ad:e6:\r\n                    39:7b:39:4b:2e:a2:2a:16:f8:64:36:75:7d:59:78:\r\n                    41:cf\r\n                Exponent: 65537 (0x10001)\r\n        X509v3 extensions:\r\n            X509v3 Key Usage: critical\r\n                Digital Signature, Key Encipherment\r\n            X509v3 Extended Key Usage: \r\n                TLS Web Server Authentication\r\n            X509v3 Basic Constraints: critical\r\n                CA:FALSE\r\n            X509v3 Subject Key Identifier: \r\n                B8:7D:84:E9:AE:DF:38:90:B4:B5:CC:82:EA:B5:38:D2:35:12:4C:3F\r\n            X509v3 Authority Key Identifier: \r\n                keyid:78:49:35:9B:B4:03:26:81:B4:5A:68:8C:94:18:CE:2A:5A:12:FE:EE\r\n\r\n            X509v3 Subject Alternative Name: \r\n                DNS:*.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.svc, DNS:*.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk\r\n    Signature Algorithm: sha256WithRSAEncryption\r\n         79:75:3c:81:ca:78:50:64:4b:4a:4c:67:9a:22:12:28:e6:76:\r\n         a0:00:18:87:0f:09:bc:18:28:fb:5c:06:52:51:91:fe:2b:5f:\r\n         9c:a2:0f:96:67:ec:0d:44:fd:e4:7d:cc:90:f5:5f:8a:9f:e1:\r\n         56:c1:aa:67:fb:fe:8d:6d:fa:fb:04:36:c4:cf:b6:24:ce:4d:\r\n         e8:87:d9:f0:40:b3:9b:7d:d1:a7:77:6a:1b:ea:11:67:46:14:\r\n         84:0b:37:0a:c1:35:b8:53:bd:98:58:3f:98:b5:20:d7:9c:0f:\r\n         99:eb:48:71:03:88:1b:8d:ef:b3:08:76:27:53:87:09:cd:4a:\r\n         5c:26:fc:bd:ad:82:e4:38:0b:6c:e1:8c:e8:61:8e:38:f5:c0:\r\n         aa:7c:69:b1:2d:f3:5e:85:8c:0f:42:fc:19:b0:aa:17:81:44:\r\n         54:6e:8f:5d:d7:1f:f6:27:5c:fc:a3:78:de:45:e2:d3:3e:30:\r\n         14:53:65:fd:01:07:e8:af:b9:a7:fd:04:fb:ec:79:2c:1b:b9:\r\n         d7:f2:d2:90:2c:6f:ac:ca:09:29:07:73:a3:88:c2:bc:d7:a6:\r\n         09:49:31:a6:5b:96:40:12:5e:6f:82:bd:32:7f:ba:dc:6c:ad:\r\n         d2:ed:a8:70:42:99:4e:6c:8a:4f:43:c3:a3:a0:70:42:ea:23:\r\n         e3:a5:61:60\r\n<\/pre>\n<p>O EasyRSA cria chaves privadas no formato moderno PKCS#7, mas o Couchbase Server suporta apenas o PKCS#1.  Para remediar isso, precisamos converter os formatos.<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">openssl rsa -in pki\/private\/server.key -out server.key.der -outform DER<\/pre>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">openssl rsa -in server.key.der -inform DER -out server.key -outform PEM\r\n<\/pre>\n<p>Agora que o TLS est\u00e1 configurado, colete seu certificado CA e o par certificado\/chave privada do servidor, pois eles ser\u00e3o necess\u00e1rios ao configurar o cluster do Couchbase em uma etapa posterior.<\/p>\n<h3>Configura\u00e7\u00e3o de DDNS<\/h3>\n<p>Agora podemos come\u00e7ar a implantar alguns recursos reais do Kubernetes.  Primeiro, vamos criar nosso namespace para que o controlador external-dns seja executado e uma conta de servi\u00e7o para ser executada.<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl create namespace 6c3c0075-b44a-11e9-9518-4a8d7629c69a<\/pre>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl -n 6c3c0075-b44a-11e9-9518-4a8d7629c69a create serviceaccount external-dns<\/pre>\n<p>\u00c9 necess\u00e1ria uma fun\u00e7\u00e3o para conceder permiss\u00e3o ao controlador external-dns para interrogar os recursos do Kubernetes no namespace em que ele est\u00e1 sendo executado.  A fun\u00e7\u00e3o est\u00e1 vinculada \u00e0 conta de servi\u00e7o com a qual o controlador external-dns ser\u00e1 executado. Neste exemplo, usarei uma fun\u00e7\u00e3o de cluster para que ela possa ser compartilhada entre todas as inst\u00e2ncias do controlador external-dns.  No entanto, ela ser\u00e1 vinculada dentro do namespace, pois o controlador n\u00e3o precisa acessar todos os namespaces. Usu\u00e1rios do OpenShift: Voc\u00ea precisar\u00e1 de privil\u00e9gios de administrador para a cria\u00e7\u00e3o e vincula\u00e7\u00e3o de fun\u00e7\u00f5es, pois elas exigem escalonamento de privil\u00e9gios e, por motivos de seguran\u00e7a, n\u00e3o podem ser executadas por usu\u00e1rios normais.  A fun\u00e7\u00e3o se parece com o seguinte:<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: rbac.authorization.k8s.io\/v1\r\nkind: ClusterRole\r\nmetadata:\r\n  name: external-dns\r\nrules:\r\n- apiGroups:\r\n  - \"\"\r\n  resources:\r\n  - services\r\n  - pods\r\n  - nodes\r\n  verbs:\r\n  - get\r\n  - watch\r\n  - list\r\n<\/pre>\n<p>E \u00e9 instalado com o seguinte:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl create -f external-dns-cluster-role.yaml<\/pre>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl -n 6c3c0075-b44a-11e9-9518-4a8d7629c69a create rolebinding --clusterrole external-dns --serviceaccount 6c3c0075-b44a-11e9-9518-4a8d7629c69a:external-dns external-dns\r\n<\/pre>\n<p>A etapa final \u00e9 instalar o controlador external-dns.  N\u00f3s o configuraremos para procurar servi\u00e7os dentro do namespace.  Se um servi\u00e7o tiver uma anota\u00e7\u00e3o <em>external-dns.alpha.kubernetes.io\/hostname<\/em> ent\u00e3o o controlador external-dns criar\u00e1 registros DNS A no mapeamento do nosso provedor DDNS para o endere\u00e7o IP do servi\u00e7o.<\/p>\n<p>\u00c9 poss\u00edvel que v\u00e1rias inst\u00e2ncias do external-dns estejam sincronizando registros de DNS para o mesmo dom\u00ednio.  Se ele vir um registro que n\u00e3o corresponda a um servi\u00e7o que esteja gerenciando, ele o excluir\u00e1. Para evitar que dois ou mais controladores adicionem continuamente seus pr\u00f3prios registros e excluam os de outros, adicionamos um GUID para que o controlador responda apenas aos registros que possui.  Para sua curiosidade, a propriedade \u00e9 gerenciada por meio de registros DNS TXT. O YAML de implementa\u00e7\u00e3o \u00e9 parecido com o seguinte. Voc\u00ea deve substituir sua pr\u00f3pria chave de API do Cloudflare e endere\u00e7o de e-mail nos par\u00e2metros de ambiente.<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: extensions\/v1beta1\r\nkind: Deployment\r\nmetadata:\r\n  name: external-dns\r\nspec:\r\n  selector:\r\n    matchLabels:\r\n      app: external-dns\r\n  template:\r\n    metadata:\r\n      labels:\r\n        app: external-dns\r\n    spec:\r\n      serviceAccountName: external-dns\r\n      containers:\r\n       - name: external-dns\r\n         image: registry.opensource.zalan.do\/teapot\/external-dns:latest\r\n         args:\r\n         - --source=service\r\n         - --domain-filter=spjmurray.co.uk\r\n         - --provider=cloudflare\r\n         - --txt-owner-id=6c3c0075-b44a-11e9-9518-4a8d7629c69a\r\n         env:\r\n         - name: CF_API_KEY\r\n           value: REDACTED\r\n         - name: CF_API_EMAIL\r\n           value: REDACTED\r\n<\/pre>\n<p>Isso pode ser criado com o seguinte:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl -n 6c3c0075-b44a-11e9-9518-4a8d7629c69a create -f external-dns.yaml\r\n<\/pre>\n<p>Verifique se a implanta\u00e7\u00e3o est\u00e1 em execu\u00e7\u00e3o e se estamos prontos para instalar o cluster do Couchbase.<\/p>\n<h3>Instalar o operador<\/h3>\n<p>Isso \u00e9 abordado extensivamente no <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\">documenta\u00e7\u00e3o oficial<\/a>.  Primeiro, voc\u00ea precisar\u00e1 instalar as defini\u00e7\u00f5es de recursos personalizados.  Em seguida, instale o controlador de admiss\u00e3o din\u00e2mico em um namespace de sua escolha e conecte-o \u00e0 API do Kubernetes.<\/p>\n<p>O controlador de admiss\u00e3o \u00e9 um componente obrigat\u00f3rio da implementa\u00e7\u00e3o do Operator 1.2.0.  Ele aplica valores padr\u00e3o ao cluster e, o mais importante, faz a valida\u00e7\u00e3o fora do escopo da valida\u00e7\u00e3o do esquema JSON nativo.  A valida\u00e7\u00e3o mais importante que ele realiza para essa configura\u00e7\u00e3o \u00e9 garantir que o DNS e o TLS estejam configurados corretamente na defini\u00e7\u00e3o do cluster do Couchbase.<\/p>\n<p>O Operator \u00e9 instalado no mesmo namespace que o controlador external-dns usando um processo muito semelhante ao do controlador external-dns.<\/p>\n<h3>Cluster p\u00fablico do Couchbase<\/h3>\n<p>A etapa final \u00e9, na verdade, a mais f\u00e1cil.  Aqui est\u00e1 a defini\u00e7\u00e3o YAML:<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: couchbase.com\/v1\r\nkind: CouchbaseCluster\r\nmetadata:\r\n  name: couchbase\r\nspec:\r\n  authSecret: 6c3c0075-b44a-11e9-9518-4a8d7629c69a\r\n  baseImage: couchbase\/server\r\n  version: enterprise-6.0.1\r\n  exposeAdminConsole: true\r\n  adminConsoleServiceType: LoadBalancer\r\n  adminConsoleServices:\r\n  - data\r\n  exposedFeatureServiceType: LoadBalancer\r\n  exposedFeatures:\r\n  - xdcr\r\n  - client\r\n  dns:\r\n    domain: 6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk\r\n  tls:\r\n    static:\r\n      operatorSecret: couchbase-ca\r\n      member:\r\n        serverSecret: couchbase-cert\r\n  servers:\r\n  - name: default\r\n    services:\r\n    - data\r\n    - index\r\n    - query\r\n    size: 3\r\n<\/pre>\n<p>O console de administra\u00e7\u00e3o e os recursos expostos (por servi\u00e7os de pod) s\u00e3o expostos com novos par\u00e2metros que permitem que o tipo de servi\u00e7o seja especificado.  Nesta ocasi\u00e3o, estou executando no GKE. Quando um <strong>Balanceador de carga<\/strong> \u00e9 criado, ele recebe um endere\u00e7o IP p\u00fablico associado a ele.<\/p>\n<p>A nova configura\u00e7\u00e3o de DNS, quando especificada, anotar\u00e1 o console de administra\u00e7\u00e3o e os servi\u00e7os por pod com os r\u00f3tulos compreendidos pelo controlador de DNS externo.  Para a configura\u00e7\u00e3o do console administrativo, isso \u00e9 <strong>console.${metadata.name}.${spec.dns.domain}<\/strong> por exemplo.<\/p>\n<p>Por fim, como estamos usando conectividade p\u00fablica e DNS, o controlador de admiss\u00e3o din\u00e2mica nos for\u00e7ar\u00e1 a usar TLS.  Os par\u00e2metros do TLS s\u00e3o <a href=\"https:\/\/docs.couchbase.com\/operator\/1.2\/tls.html\">repleto de segredos<\/a> contendo os certificados TLS que criamos anteriormente para esse cluster.<\/p>\n<p>Crie o cluster e observe os registros de status ou do Operador para verificar a conclus\u00e3o.  Eventualmente, voc\u00ea dever\u00e1 conseguir se conectar ao console com a url <strong>https:\/\/console.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk:18091\/<\/strong> \u00e0 medida que os IPs do balanceador de carga s\u00e3o alocados e os registros DNS s\u00e3o adicionados.  Voc\u00ea pode usar esse mesmo endere\u00e7o para estabelecer clusters remotos do XDCR e inicializar SDKs de clientes do Couchbase.  Parab\u00e9ns, voc\u00ea ativou a conectividade p\u00fablica!<\/p>\n<h2>Solu\u00e7\u00e3o de problemas<\/h2>\n<p>A simples explica\u00e7\u00e3o de como configurar a conectividade p\u00fablica \u00e9 metade do trabalho.  Voc\u00ea precisa ser capaz de determinar onde est\u00e1 o problema antes de levantar casos de suporte.  Como a culpa \u00e9 sempre da rede (na maioria das vezes), aqui est\u00e3o algumas dicas para ajud\u00e1-lo.<\/p>\n<p>O DNS n\u00e3o \u00e9 instant\u00e2neo, leva tempo para que os registros apare\u00e7am e leva tempo para que as modifica\u00e7\u00f5es se propaguem \u00e0 medida que os TTLs expiram.  Para verificar se o DNS est\u00e1 de acordo com o esperado, primeiro procure os nomes de DNS esperados. Encontre os nomes dos servi\u00e7os:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl -n 6c3c0075-b44a-11e9-9518-4a8d7629c69a get svc\r\nNAME                           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)                                                           AGE\r\ncouchbase                      ClusterIP      None                           8091\/TCP,18091\/TCP                                                26h\r\ncouchbase-0000-exposed-ports   LoadBalancer   10.40.8.108   34.66.243.123    18091:32281\/TCP,18092:32677\/TCP,11207:31661\/TCP,18093:32233\/TCP   26h\r\ncouchbase-0001-exposed-ports   LoadBalancer   10.40.6.37    35.232.231.230   18091:32171\/TCP,18092:31995\/TCP,11207:30711\/TCP,18093:31243\/TCP   26h\r\ncouchbase-0002-exposed-ports   LoadBalancer   10.40.4.46    35.238.213.211   18091:32117\/TCP,18092:30313\/TCP,11207:32609\/TCP,18093:32433\/TCP   26h\r\ncouchbase-srv                  ClusterIP      None                           11210\/TCP,11207\/TCP                                               26h\r\ncouchbase-ui                   LoadBalancer   10.40.13.78   35.238.226.107   18091:32508\/TCP                                                   26h\r\n<\/pre>\n<p>Procure o nome DNS calculado:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">kubectl -n 6c3c0075-b44a-11e9-9518-4a8d7629c69a get svc couchbase-0000-exposed-ports -o yaml | grep external-dns.alpha.kubernetes.io\/hostname\r\n    external-dns.alpha.kubernetes.io\/hostname: couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk\r\n<\/pre>\n<p>O registro A do DNS existe?  O endere\u00e7o IP corresponde ao endere\u00e7o IP p\u00fablico do servi\u00e7o?<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">dig +short couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk\r\n34.66.243.123<\/pre>\n<p>Em seguida, voc\u00ea precisa ter certeza de que as portas solicitadas est\u00e3o escutando.  Podemos verificar se a porta Admin habilitada para TLS est\u00e1 escutando e podemos estabelecer uma sess\u00e3o TCP nessa porta:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">nc -vz couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk 18091\r\nConnection to couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk 18091 port [tcp\/*] succeeded!\r\n<\/pre>\n<p>A \u00faltima coisa a fazer \u00e9 determinar se o TLS est\u00e1 funcionando como esperado usando o certificado CA:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">openssl s_client -host couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk -port 18091 -CAfile ca.crt \r\nCONNECTED(00000005)\r\ndepth=1 CN = Couchbase CA\r\nverify return:1\r\ndepth=0 CN = Couchbase Server\r\nverify return:1\r\n---\r\nCertificate chain\r\n 0 s:CN = Couchbase Server\r\n   i:CN = Couchbase CA\r\n 1 s:CN = Couchbase CA\r\n   i:CN = Couchbase CA\r\n---\r\nServer certificate\r\n-----BEGIN CERTIFICATE-----\r\nMIIDuDCCAqCgAwIBAgIRALiiq3Qsioi\/Zz+o05v9CRkwDQYJKoZIhvcNAQELBQAw\r\nFzEVMBMGA1UEAxMMQ291Y2hiYXNlIENBMB4XDTE5MDgwMTEwNTIxNVoXDTI5MDcy\r\nOTEwNTIxNVowGzEZMBcGA1UEAxMQQ291Y2hiYXNlIFNlcnZlcjCCASIwDQYJKoZI\r\nhvcNAQEBBQADggEPADCCAQoCggEBALiFtUEWZx95Mkzt4UTMVWXbodGZbtHXkKZe\r\n60yW3qRw3XRsdhN1AV42ol\/wi83oi71oKvJc6Dx4bXGS2yxYfOdApXPMzfS3yGkW\r\n08UVGMBW2bP2hsYiiwUid8dczio9uOiW6sgXqDone5RmoYCJooslW+1yrNUpN6Hl\r\n3Z8WrKQEFNiJzNAI+fFYH6f67i0a5b0DuueaefcQ1w+bvPnMyQOXWHifaHi3IM9e\r\nqGd7M0GRSox8RBolhsoV65olXoAjZZt6QORVwZyTyNZy59jXrN35kqiJwbz\/Gn2l\r\n6atruD7EX7bmMEVctFrO+tkSKK3mOXs5Sy6iKhb4ZDZ1fVl4Qc8CAwEAAaOB+jCB\r\n9zAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH\/\r\nBAIwADAdBgNVHQ4EFgQUuH2E6a7fOJC0tcyC6rU40jUSTD8wHwYDVR0jBBgwFoAU\r\neEk1m7QDJoG0WmiMlBjOKloS\/u4wgYEGA1UdEQR6MHiCNCouY291Y2hiYXNlLjZj\r\nM2MwMDc1LWI0NGEtMTFlOS05NTE4LTRhOGQ3NjI5YzY5YS5zdmOCQCouY291Y2hi\r\nYXNlLjZjM2MwMDc1LWI0NGEtMTFlOS05NTE4LTRhOGQ3NjI5YzY5YS5zcGptdXJy\r\nYXkuY28udWswDQYJKoZIhvcNAQELBQADggEBAHl1PIHKeFBkS0pMZ5oiEijmdqAA\r\nGIcPCbwYKPtcBlJRkf4rX5yiD5Zn7A1E\/eR9zJD1X4qf4VbBqmf7\/o1t+vsENsTP\r\ntiTOTeiH2fBAs5t90ad3ahvqEWdGFIQLNwrBNbhTvZhYP5i1INecD5nrSHEDiBuN\r\n77MIdidThwnNSlwm\/L2tguQ4C2zhjOhhjjj1wKp8abEt816FjA9C\/BmwqheBRFRu\r\nj13XH\/YnXPyjeN5F4tM+MBRTZf0BB+ivuaf9BPvseSwbudfy0pAsb6zKCSkHc6OI\r\nwrzXpglJMaZblkASXm+CvTJ\/utxsrdLtqHBCmU5sik9Dw6OgcELqI+OlYWA=\r\n-----END CERTIFICATE-----\r\nsubject=CN = Couchbase Server\r\n\r\nissuer=CN = Couchbase CA\r\n\r\n---\r\nNo client certificate CA names sent\r\nPeer signing digest: SHA256\r\nPeer signature type: RSA\r\nServer Temp Key: DH, 2048 bits\r\n---\r\nSSL handshake has read 2714 bytes and written 737 bytes\r\nVerification: OK\r\n---\r\nNew, TLSv1.2, Cipher is DHE-RSA-AES256-SHA256\r\nServer public key is 2048 bit\r\nSecure Renegotiation IS supported\r\nCompression: NONE\r\nExpansion: NONE\r\nNo ALPN negotiated\r\nSSL-Session:\r\n    Protocol  : TLSv1.2\r\n    Cipher    : DHE-RSA-AES256-SHA256\r\n    Session-ID: 1D4242B756A51A14F1CA360DD7BB2DB74CEB4897E3365576658D2E5A7C7B36A0\r\n    Session-ID-ctx: \r\n    Master-Key: 11D43F8E21FD57A07D091913A892D1BBEC32A701491FCE0EAA1EAEA68084F3754CA746921F9E80FBA3EDB4F809A791A7\r\n    PSK identity: None\r\n    PSK identity hint: None\r\n    SRP username: None\r\n    Start Time: 1564751720\r\n    Timeout   : 7200 (sec)\r\n    Verify return code: 0 (ok)\r\n    Extended master secret: no\r\n---\r\n<\/pre>\n<p>Al\u00e9m disso, para os mais corajosos, voc\u00ea pode verificar se os endere\u00e7os DNS passados para os clientes est\u00e3o corretos:<\/p>\n<pre class=\"lang:default mark:1 highlight:0 decode:true\">curl -s https:\/\/couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk:18091\/pools\/default\/nodeServices -u Administrator:BIH6mSJQ33jcIb24LZagxn0GHpxsJEWiiXSHNnyoXxp2GITJWMgc4aEOxVVllcCR --cacert ca.crt | python -m json.tool\r\n{\r\n    \"nodesExt\": [\r\n        {\r\n            \"alternateAddresses\": {\r\n                \"external\": {\r\n                    \"hostname\": \"couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.spjmurray.co.uk\"\r\n                }\r\n            },\r\n            \"hostname\": \"couchbase-0000.couchbase.6c3c0075-b44a-11e9-9518-4a8d7629c69a.svc\",\r\n            \"services\": {\r\n                \"capi\": 8092,\r\n                \"capiSSL\": 18092,\r\n                \"indexAdmin\": 9100,\r\n                \"indexHttp\": 9102,\r\n                \"indexHttps\": 19102,\r\n                \"indexScan\": 9101,\r\n                \"indexStreamCatchup\": 9104,\r\n                \"indexStreamInit\": 9103,\r\n                \"indexStreamMaint\": 9105,\r\n                \"kv\": 11210,\r\n                \"kvSSL\": 11207,\r\n                \"mgmt\": 8091,\r\n                \"mgmtSSL\": 18091,\r\n                \"moxi\": 11211,\r\n                \"n1ql\": 8093,\r\n                \"n1qlSSL\": 18093,\r\n                \"projector\": 9999\r\n            },\r\n            \"thisNode\": true\r\n        },\r\n<\/pre>\n<h2>Pr\u00f3ximas etapas<\/h2>\n<p>O Couchbase Autonomous Operator 1.2.0 \u00e9 uma grande vers\u00e3o com muitos recursos novos.  Os principais focos s\u00e3o a capacidade de atualiza\u00e7\u00e3o e a facilidade de uso. Esperamos que voc\u00ea goste de fazer coisas novas e legais com ele tanto quanto n\u00f3s gostamos de cri\u00e1-lo.  Como sempre, seu feedback \u00e9 fundamental!<\/p>\n<ul>\n<li>Experimente: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/\">https:\/\/www.couchbase.com\/downloads<\/a><\/li>\n<li>F\u00f3runs de suporte: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/c\/couchbase-server\/Kubernetes\/\">https:\/\/www.couchbase.com\/forums\/c\/couchbase-server\/Kubernetes<\/a><\/li>\n<li>Documenta\u00e7\u00e3o: <a href=\"https:\/\/docs.couchbase.com\/operator\/1.2\/whats-new.html\">https:\/\/docs.couchbase.com\/operator\/1.2\/whats-new.html<\/a><\/li>\n<\/ul>\n<h3>Leia mais<\/h3>\n<ul>\n<li>Operador Aut\u00f4nomo 1.2.0 Rede:<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/autonomous-operator-1-2-0-networking\/\"> https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-networking<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>In my previous article I discussed\u2014from a high level\u2014the new Public Connectivity feature in Autonomous Operator 1.2.0.\u00a0 This was intentionally an abstract overview in order to coax the user to learn about the joys of DDNS, TLS and layer 3 [&hellip;]<\/p>","protected":false},"author":25957,"featured_media":7315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9284,2225,2322,1813],"tags":[1545,2138,9262],"ppma_author":[9076],"class_list":["post-7314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-autonomous-operator","category-cloud","category-kubernetes","category-security","tag-kubernetes","tag-kubernetes-operator","tag-tls-encryption"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Autonomous Operator 1.2.0 Public Connectivity - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.\" \/>\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\/autonomous-operator-1-2-0-public-connectivity\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Autonomous Operator 1.2.0 Public Connectivity\" \/>\n<meta property=\"og:description\" content=\"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/autonomous-operator-1-2-0-public-connectivity\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-06T14:45:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:06:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Simon Murray, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Murray, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/\"},\"author\":{\"name\":\"Simon Murray, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8b03ed823446340bba90154b6fcd7a23\"},\"headline\":\"Autonomous Operator 1.2.0 Public Connectivity\",\"datePublished\":\"2019-08-06T14:45:04+00:00\",\"dateModified\":\"2025-06-14T06:06:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/\"},\"wordCount\":2216,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg\",\"keywords\":[\"kubernetes\",\"kubernetes operator\",\"TLS encryption\"],\"articleSection\":[\"Couchbase Autonomous Operator\",\"Couchbase Capella\",\"Kubernetes\",\"Security\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/\",\"name\":\"Autonomous Operator 1.2.0 Public Connectivity - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg\",\"datePublished\":\"2019-08-06T14:45:04+00:00\",\"dateModified\":\"2025-06-14T06:06:17+00:00\",\"description\":\"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg\",\"width\":960,\"height\":640,\"caption\":\"Source https:\/\/pixabay.com\/photos\/post-box-post-mail-box-wall-dry-2691454\/\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Autonomous Operator 1.2.0 Public Connectivity\"}]},{\"@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\/8b03ed823446340bba90154b6fcd7a23\",\"name\":\"Simon Murray, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/bf0dbf1d557d4349cd907431f40a61ac\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g\",\"caption\":\"Simon Murray, Senior Software Engineer, Couchbase\"},\"description\":\"Simon has almost 20 years experience on diverse topics such as systems programming, application performance and scale out storage. The cloud is now his current focus, specializing in enterprise network architecture, information security and platform orchestration across a wide range of technologies.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/simon-murraycouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Autonomous Operator 1.2.0 Public Connectivity - The Couchbase Blog","description":"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.","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\/autonomous-operator-1-2-0-public-connectivity\/","og_locale":"pt_BR","og_type":"article","og_title":"Autonomous Operator 1.2.0 Public Connectivity","og_description":"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/autonomous-operator-1-2-0-public-connectivity\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-06T14:45:04+00:00","article_modified_time":"2025-06-14T06:06:17+00:00","og_image":[{"width":960,"height":640,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg","type":"image\/jpeg"}],"author":"Simon Murray, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon Murray, Senior Software Engineer, Couchbase","Est. reading time":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/"},"author":{"name":"Simon Murray, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8b03ed823446340bba90154b6fcd7a23"},"headline":"Autonomous Operator 1.2.0 Public Connectivity","datePublished":"2019-08-06T14:45:04+00:00","dateModified":"2025-06-14T06:06:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/"},"wordCount":2216,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg","keywords":["kubernetes","kubernetes operator","TLS encryption"],"articleSection":["Couchbase Autonomous Operator","Couchbase Capella","Kubernetes","Security"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/","url":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/","name":"Autonomous Operator 1.2.0 Public Connectivity - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg","datePublished":"2019-08-06T14:45:04+00:00","dateModified":"2025-06-14T06:06:17+00:00","description":"Expose your Couchbase cluster with public connectivity with the Autonomous Operator for interconnection with cloud based as-a-service offerings.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/post-box-2691454_960_720.jpg","width":960,"height":640,"caption":"Source https:\/\/pixabay.com\/photos\/post-box-post-mail-box-wall-dry-2691454\/"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/autonomous-operator-1-2-0-public-connectivity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Autonomous Operator 1.2.0 Public Connectivity"}]},{"@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\/8b03ed823446340bba90154b6fcd7a23","name":"Simon Murray, engenheiro de software s\u00eanior, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/bf0dbf1d557d4349cd907431f40a61ac","url":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","caption":"Simon Murray, Senior Software Engineer, Couchbase"},"description":"Simon has almost 20 years experience on diverse topics such as systems programming, application performance and scale out storage. The cloud is now his current focus, specializing in enterprise network architecture, information security and platform orchestration across a wide range of technologies.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/simon-murraycouchbase-com\/"}]}},"authors":[{"term_id":9076,"user_id":25957,"is_guest":0,"slug":"simon-murraycouchbase-com","display_name":"Simon Murray, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/c5918b7fdf9c2714c0b72bd1d7366f65751da5f40cbcfdede50d123f4c40c893?s=96&d=mm&r=g","first_name":"Simon","last_name":"Murray","user_url":"","author_category":"","description":"Simon tem quase 20 anos de experi\u00eancia em diversos t\u00f3picos, como programa\u00e7\u00e3o de sistemas, desempenho de aplicativos e armazenamento em escala.  A nuvem \u00e9 agora seu foco atual, especializando-se em arquitetura de rede corporativa, seguran\u00e7a da informa\u00e7\u00e3o e orquestra\u00e7\u00e3o de plataformas em uma ampla gama de tecnologias."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7314","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\/25957"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7314"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7315"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7314"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}