Skip to content

Release v0.4.2

Compare
Choose a tag to compare
@wallyqs wallyqs released this 26 Feb 18:17
· 232 commits to master since this release

Installing

Docker Image: connecteverything/nats-operator:0.4.2-v1alpha2

kubectl apply -f https://github.com/nats-io/nats-operator/releases/download/v0.4.2/00-prereqs.yaml
kubectl apply -f https://github.com/nats-io/nats-operator/releases/download/v0.4.2/10-deployment.yaml

Added

  • Added extraRoutes field to extend a cluster mesh with other NATS clusters (#130)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-dev-v2"
spec:
  size: 3
  version: "1.4.1"

  extraRoutes:
    # Explicit route endpoint
    - route: "nats://example.com:6222"

    # Discover implicit routes from nats-dev-v1 cluster
    - cluster: "nats-dev-v1"
  • Added support for annotations (#111)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-dev-v1"
spec:
  pod:
    # Disable istio on nats pods
    annotations:
      sidecar.istio.io/inject: "false" 
  • Added support to allow a single operator to manage clusters in the whole cluster.
    Currently the operator has to be deployed on the nats-io namespace to work cluster wide,
    and it can be enabled by setting the flag --feature-gates=ClusterScoped=true when starting the operator (#118)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nats-operator
  namespace: nats-io
spec:
  replicas: 1
  selector:
    matchLabels:
      name: nats-operator
  template:
    metadata:
      labels:
        name: nats-operator
    spec:
      serviceAccountName: nats-operator
      containers:
      - name: nats-operator
        image: connecteverything/nats-operator:0.4.2-v1alpha2
        imagePullPolicy: IfNotPresent
        args:
        - nats-operator
        # Perform a cluster-scoped deployment.
        - --feature-gates=ClusterScoped=true
        ports:
        - name: readyz
          containerPort: 8080
        env:
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        readinessProbe:
          httpGet:
            path: /readyz
            port: readyz
          initialDelaySeconds: 15
          timeoutSeconds: 3
  • Lame duck mode also now supported, when using edge versions of the NATS server (#105)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "example-nats-1"
spec:
  size: 3
  serverImage: "synadia/nats-server"
  version: "edge-2.0.0-RC5"
  lameDuckDurationSeconds: 30 # seconds
  • Added support to enable monitoring using https (#131)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-cluster"
spec:
  size: 3
  version: "1.4.1"

  tls:
    enableHttps: true
    serverSecret: "nats-clients-tls"
  • Added verify and map toggle to enable TLS certs based authorization (#132)
    (Only available in edge version of the NATS server)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-cluster"
spec:
  size: 3
  serverImage: "synadia/nats-server"
  version: "edge-2.0.0-RC5"

  tls:
    serverSecret: "nats-clients-tls"

  auth:
    tlsVerifyAndMap: true
    clientsAuthSecret: "nats-clients-auth"
  • Added pod.enableClientsHostPort parameter to make the NATS servers bind the port 4222 from the host (#123)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-dev"
spec:
  size: 3
  version: "1.4.0"

  pod:
    enableClientsHostPort: true
  • Added noAdvertise field to disable gossiping routes to clients (#123)
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "example-nats-1"
spec:
  size: 3
  version: "1.4.0"
  noAdvertise: true
  • Added support to advertise the external ip addresses by inspecting the K8S API using an initializer container
apiVersion: "nats.io/v1alpha2"
kind: "NatsCluster"
metadata:
  name: "nats-dev"
spec:
  size: 3
  version: "1.4.0"

  pod:
    # Must use host port to be able to connect to external ip
    enableClientsHostPort: true
    advertiseExternalIP: true
    bootconfigImage: "connecteverything/nats-boot-config"
    bootconfigImageTag: "0.5.0"

  # Required to be able to lookup public ip address from a server
  template:
    spec:
      serviceAccountName: "nats-server"

Changed

  • Default NATS Server image is changed to v1.4.0

  • Add metrics port to mgmt service so that prometheus operator can discover it (#112)

  • NATS Server pods that have reached the terminal state (#108)

Fixed

  • Setting advertise for clusters now enabled by default (#73)

  • Fix operator reporting readiness only after becoming leader (#107)