Now create the certs that will match the DNS name used by the clients to connect, in this case traffic is within Kubernetes so we are using the name nats which is backed up by a headless service (here is an example of sample deployment)
---apiVersion:cert-manager.io/v1alpha2kind:Certificatemetadata:name:nats-server-tlsspec:secretName:nats-server-tlsduration:2160h# 90 daysrenewBefore:240h# 10 daysissuerRef:name:nats-cakind:Issuerusages: - signing - key encipherment - server authorganization: - Your organizationcommonName:nats.default.svc.cluster.localdnsNames: - nats.default.svc
In case of using the NATS operator, the Routes use a service named $YOUR_CLUSTER-mgmt (this may change in the future)
Now let's create an example NATS cluster with the operator:
apiVersion:"nats.io/v1alpha2"kind:"NatsCluster"metadata:name:"nats"spec:# Number of nodes in the clustersize:3version:"2.1.4"tls:# Certificates to secure the NATS client connections:serverSecret:"nats-server-tls"# Name of the CA in serverSecretserverSecretCAFileName:"ca.crt"# Name of the key in serverSecretserverSecretKeyFileName:"tls.key"# Name of the certificate in serverSecretserverSecretCertFileName:"tls.crt"# Certificates to secure the routes.routesSecret:"nats-routes-tls"# Name of the CA in routesSecretroutesSecretCAFileName:"ca.crt"# Name of the key in routesSecretroutesSecretKeyFileName:"tls.key"# Name of the certificate in routesSecretroutesSecretCertFileName:"tls.crt"
Confirm that the pods were deployed:
kubectlgetpods-owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nats-1 1/1 Running 0 4s 172.17.0.8 minikube <none>
nats-2 1/1 Running 0 3s 172.17.0.9 minikube <none>
nats-3 1/1 Running 0 2s 172.17.0.10 minikube <none>
Follow the logs:
kubectllogsnats-1
[1] 2019/12/18 12:27:23.920417 [INF] Starting nats-server version 2.1.4
[1] 2019/12/18 12:27:23.920590 [INF] Git commit [not set]
[1] 2019/12/18 12:27:23.921024 [INF] Listening for client connections on 0.0.0.0:4222
[1] 2019/12/18 12:27:23.921047 [INF] Server id is NDA6JC3TGEADLLBEPFAQ4BN4PM3WBN237KIXVTFCY3JSTDOSRRVOJCXN
[1] 2019/12/18 12:27:23.921055 [INF] Server is ready