Upgrading ECK operator from 1.0.0-beta1 to latest version

Hey all.
I'm having a little bit of a hard time understanding how to upgrade my eck operator and elastic stack version.
Currently I'm on eck 1.0.0-beta1 which is compatible with the latest operator as per this guide Upgrade ECK | Elastic Cloud on Kubernetes [1.9] | Elastic
I want to upgrade both my eck operator to the latest and my Elasticsearch version from 7.4.0 to 7.10.2 and afterwards maybe to another version.
As far as I understood from the documentation, in order to upgrade to eck 1.9.1, there is nothing in particular I must do except replacing current CRDs as they were changed in v 1.7.0 and then re-creating them. Everything else should be smooth.
I don't have the initial manifests/deployments with which I've created the stack so my only option is to directly edit Elasticsearch.
Is it safe to edit Elasticsearch with kubectl edit Elasticsearch and then replacing the version of elastic stack (e.g.: Version: 7.4.0 with Version: 7.10.2) with whichever version I want? Below is my current Elasticsearch config, as seen when issuing kubectl describe Elasticsearch.

Name:         my-elastic-cluster
Namespace:    default
Labels:       <none>
Annotations:  common.k8s.elastic.co/controller-version: 1.0.0-beta1
              elasticsearch.k8s.elastic.co/cluster-uuid: WTVBPq84SUicvKt-99NKQw
API Version:  elasticsearch.k8s.elastic.co/v1beta1
Kind:         Elasticsearch
Metadata:
  Creation Timestamp:  2019-10-25T08:44:03Z
  Finalizers:
    finalizer.elasticsearch.k8s.elastic.co/observer
    finalizer.elasticsearch.k8s.elastic.co/secure-settings-secret
    finalizer.elasticsearch.k8s.elastic.co/http-certificates-secret
  Generation:        27
  Resource Version:  347957923
  Self Link:         /apis/elasticsearch.k8s.elastic.co/v1beta1/namespaces/default/elasticsearches/my-elastic-cluster
  UID:               98f623e5-f703-11e9-903e-4d01210a8401ff
Spec:
  Http:
    Service:
      Metadata:
        Creation Timestamp:  <nil>
      Spec:
        Ports:
          Node Port:    32280
          Port:         9200
          Protocol:     TCP
          Target Port:  9200
        Type:           LoadBalancer
    Tls:
      Certificate:
  Node Sets:
    Config:
      node.data:              false
      node.ingest:            false
      node.master:            true
      node.ml:                false
      node.store.allow_mmap:  false
      xpack.security.authc.realms:
        Native:
          native1:
            Order:  1
    Count:          3
    Name:           node-master
    Pod Template:
      Metadata:
        Labels:
          Es:  master-node
      Spec:
        Containers:
          Env:
            Name:   ES_JAVA_OPTS
            Value:  -Xms2g -Xmx2g
          Name:     elasticsearch
          Resources:
            Limits:
              Cpu:     1
              Memory:  4Gi
        Init Containers:
          Command:
            sh
            -c
            bin/elasticsearch-plugin install --batch repository-gcs

          Name:  install-plugins
          Resources:
    Volume Claim Templates:
      Metadata:
        Name:  elasticsearch-data
      Spec:
        Access Modes:
          ReadWriteOnce
        Resources:
          Requests:
            Storage:         10Gi
        Storage Class Name:  ssd
      Status:
    Config:
      node.data:              true
      node.ingest:            true
      node.master:            false
      node.ml:                true
      node.store.allow_mmap:  false
      xpack.security.authc.realms:
        Native:
          native1:
            Order:  1
    Count:          5
    Name:           node-data
    Pod Template:
      Metadata:
        Labels:
          Es:  data-node
      Spec:
        Containers:
          Env:
            Name:   ES_JAVA_OPTS
            Value:  -Xms3g -Xmx3g
          Name:     elasticsearch
          Resources:
            Limits:
              Cpu:     2
              Memory:  6Gi
        Init Containers:
          Command:
            sh
            -c
            bin/elasticsearch-plugin install --batch repository-gcs

          Name:  install-plugins
          Resources:
    Volume Claim Templates:
      Metadata:
        Name:  elasticsearch-data
      Spec:
        Access Modes:
          ReadWriteOnce
        Resources:
          Requests:
            Storage:         100Gi
        Storage Class Name:  ssd
      Status:
  Secure Settings:
    Secret Name:  gcs-credentials
  Update Strategy:
    Change Budget:
  Version:  7.4.0
Status:
  Available Nodes:  8
  Health:           green
  Phase:            Ready
Events:             <none>

Also, what's the order in which I must make the upgrade, first the operator then elastic stack version or first elastic stack version and then the operator?
Any help is greatly appreciated!
Cheers,
Radu

You can also get the yaml representation of your current resource: kubectl get es my-elastic-cluster -n default -o yaml

Yes. As explain above, if you eventually decide to retrieve the Elasticsearch resource as a yaml file, you can also use kubectl apply -f <your_file.yaml>

It's usually a good idea to update the operator first to be sure that it's compatible with the latest versions of Elasticsearch.

Hey @michael.morello
I ended up creating a new cluster and restoring from snapshots as this was way easier and less hassle.
Thank you for your support.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.