2 min read | by Jordi Prats
In case we have some objects on the kubernetes cluster that we want to modify but we don't have the original yaml, we can retrieve the object in yaml format from the cluster using kubectl
To do so we'll have to instruct kubectl to output the object in yaml format using the -o yaml option as follows:
apiVersion: v1 kind: Service metadata: annotations: meta.helm.sh/release-name: pet2cattle meta.helm.sh/release-namespace: kube-system creationTimestamp: "2020-12-22T18:17:54Z" labels: app.kubernetes.io/instance: pet2cattle app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: pet2cattle app.kubernetes.io/version: "2.6" helm.sh/chart: pet2cattle-1 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:meta.helm.sh/release-name: {} f:meta.helm.sh/release-namespace: {} f:labels: .: {} f:app.kubernetes.io/instance: {} f:app.kubernetes.io/managed-by: {} f:app.kubernetes.io/name: {} f:app.kubernetes.io/version: {} f:helm.sh/chart: {} f:spec: f:ports: .: {} k:{"port":8000,"protocol":"TCP"}: .: {} f:name: {} f:port: {} f:protocol: {} f:targetPort: {} f:selector: .: {} f:app.kubernetes.io/instance: {} f:app.kubernetes.io/name: {} f:sessionAffinity: {} f:type: {} manager: Go-http-client operation: Update time: "2020-12-29T18:47:41Z" name: pet2cattle namespace: kube-system resourceVersion: "5284239" selfLink: /api/v1/namespaces/kube-system/services/pet2cattle uid: de1068f2-4da7-4a91-882d-4f5861b5c3fd spec: clusterIP: 10.43.151.25 ports: - name: http port: 8000 protocol: TCP targetPort: http selector: app.kubernetes.io/instance: pet2cattle app.kubernetes.io/name: pet2cattle sessionAffinity: None type: ClusterIP status: loadBalancer: {}
There are going to be fields that we are not interested in, for example all the managedFields, the creationTimestamp or the object's uid, so we can just remove them from the yaml file
Posted on 11/01/2021