Error in google healthcare when trying to create a dicom store

3/8/2021

I leave the link as a guide https://cloud.google.com/healthcare/docs/how-tos/dicom-connect-pacs#creating_a_dicom_store<br>

Deploying the adapter using Google Kubernetes Engine<br>

my manifest file

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: dicom-adapter
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: dicom-adapter
    spec:
      containers:
        - name: dicom-import-adapter
          image: gcr.io/cloud-healthcare-containers/healthcare-api-dicom-dicomweb-adapter-import:0.2.1
          ports:
            - containerPort: 2575
              protocol: TCP
              name: "port"
          args:
            - "--dimse_aet=IMPORTADAPTER"
            - "--dimse_port=2575"
            - "--dicomweb_address=https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb" `

In console

$kubectl apply -f dicom_adapter.yaml
error: unable to recognize "dicom_adapter.yaml": no matches for kind "Deployment" in version "extensions/v1beta"
-- Facu
google-cloud-healthcare
kubernetes

1 Answer

3/9/2021

In your yaml file change apiVersion from extensions/v1beta1 to apps/v1.

In official doc:

Deployment in the extensions/v1beta1, apps/v1beta1, and apps/v1beta2 API versions is no longer served

  • Migrate to use the apps/v1 API version, available since v1.9. Existing persisted data can be retrieved/updated via the new version.

In new version of Kubernetes there are changes:

  • Creating the cluster (k8s cluster in 1.15 version not longer available in GKE)
  • Configuring the Deployment: starting from k8s clusters 1.16 version - apiVersion: extensions/v1beta1 not longer available migrate to use the apps/v1 API version, available since v1.9.
    see doc: api-deprecations-in-1-16/

This issue is raised here: https://issuetracker.google.com/issues/185205137

Also under spec section in your deployment configuration you have to use selector field with matchLabels section. In your case part of deployment should look like:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: dicom-adapter
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: dicom-adapter
    spec:
      selector:  
        matchLabels:  
          app: dicom-adapter

the selector: matchLabels tells the resource, whatever it may be, service, deployment, etc, to match the pod, according to that label.

Take a look on official documentation - kubernetes-object-labels-selectors.

-- Malgorzata
Source: StackOverflow