Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating a Catalog of operators #233

Open
thomassuedbroecker opened this issue Mar 22, 2022 · 3 comments
Open

Creating a Catalog of operators #233

thomassuedbroecker opened this issue Mar 22, 2022 · 3 comments

Comments

@thomassuedbroecker
Copy link

thomassuedbroecker commented Mar 22, 2022

Version

I have the same behavior on both OS.

  • macOS
opm version
Version: version.Version{OpmVersion:"v1.21.0", GitCommit:"9999f796", BuildDate:"2022-03-03T21:23:12Z", GoOs:"linux", GoArch:"amd64"}
go version                   
go version go1.17.6 darwin/amd64
  • Linux:
opm version
Version: version.Version{OpmVersion:"v1.21.0", GitCommit:"9999f796", BuildDate:"2022-03-03T21:23:12Z", GoOs:"linux", GoArch:"amd64"}
go version
go version go1.17.8 linux/amd64

Situation

I try follow the instruction to create a catalog in the OLM documention

Initialize the catalog (https://olm.operatorframework.io/docs/tasks/creating-a-catalog/#initialize-the-catalog)

This are the steps to reproduce:

Step 1: Execute opm alpha generate

opm alpha generate dockerfile frontend-catalog

The creation of the dockerfile doesn't work

  • Output
Run an alpha subcommand

Usage:
  opm alpha [command]

Available Commands:
  bundle      Operator bundle commands
  diff        Diff old and new catalog references into a declarative config
  list        List contents of an index

Flags:
  -h, --help   help for alpha

Global Flags:
      --skip-tls-verify   skip TLS certificate verification for container image registries while pulling bundles
      --use-http          use plain HTTP for container image registries while pulling bundles

Use "opm alpha [command] --help" for more information about a command.

Step 2: Execute opm init

The creation catalog/operator yaml or json works

opm init frontendoperator \
    --default-channel=preview \
    --description=./frontend-catalog/README.md \
    --icon=./frontend-catalog/frontendoperator.svg \
    --output yaml > ./frontend-catalog/operator.yaml
  • Output:
---
defaultChannel: preview
description: |-
  # This is an example Operator

  You will just deploy a simple web application.
icon:
  base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbm........m9ybT0icm90YXRlKDQ1KSIgLz4KPC9zdmc+Cg==
  mediatype: image/svg+xml
name: frontendoperator
schema: olm.package

Step 3: Execute opm validate

Doesn't work

opm validate frontend-catalog

Output:

FATA[0000] json: cannot unmarshal string into Go value of type declcfg.tmp 

Summary

For me the OPM doesn't work on two OSs, I am not able to follow the written documentation.

@timflannagan
Copy link
Contributor

timflannagan commented Mar 22, 2022

@thomassuedbroecker I briefly poked around this locally and it looks like opm's dockerfile generation functionality was graduated out of alpha sometime in the past couple of minor version releases:

$ make bin/opm
...
$ ./bin/opm --help
CLI to interact with operator-registry and build indexes of operator content

Usage:
  opm [command]

Available Commands:
  completion  generate the autocompletion script for the specified shell
  generate    Generate various artifacts for declarative config indexes
  help        Help about any command
  index       generate operator index container images
  init        Generate an olm.package declarative config blob
  migrate     Migrate a sqlite-based index image or database file to a file-based catalog
  registry    interact with operator-registry database
  render      Generate a declarative config blob from catalogs and bundles
  serve       serve declarative configs
  validate    Validate the declarative index config
  version     Print the opm version

Flags:
  -h, --help              help for opm
      --skip-tls-verify   skip TLS certificate verification for container image registries while pulling bundles
      --use-http          use plain HTTP for container image registries while pulling bundles

Use "opm [command] --help" for more information about a command.
$ ./bin/opm generate --help
Generate various artifacts for declarative config indexes

Usage:
  opm generate [command]

Available Commands:
  dockerfile  Generate a Dockerfile for a declarative config index

Flags:
  -h, --help   help for generate

Global Flags:
      --skip-tls-verify   skip TLS certificate verification for container image registries while pulling bundles
      --use-http          use plain HTTP for container image registries while pulling bundles

Use "opm generate [command] --help" for more information about a command.
$ ./bin/opm generate dockerfile --help
Generate a Dockerfile for a declarative config index.

This command creates a Dockerfile in the same directory as the <dcRootDir>
(named <dcDirName>.Dockerfile) that can be used to build the index. If a
Dockerfile with the same name already exists, this command will fail.

When specifying extra labels, note that if duplicate keys exist, only the last
value of each duplicate key will be added to the generated Dockerfile.

Usage:
  opm generate dockerfile <dcRootDir> [flags]

Flags:
  -i, --binary-image string    Image in which to build catalog. (default "quay.io/operator-framework/opm:latest")
  -l, --extra-labels strings   Extra labels to include in the generated Dockerfile. Labels should be of the form 'key=value'.
  -h, --help                   help for dockerfile

Global Flags:
      --skip-tls-verify   skip TLS certificate verification for container image registries while pulling bundles
      --use-http          use plain HTTP for container image registries while pulling bundles
$ ./bin/opm version
Version: version.Version{OpmVersion:"v1.21.0-1-gb4264e2b", GitCommit:"b4264e2b", BuildDate:"2022-03-22T13:53:39Z", GoOs:"linux", GoArch:"amd64"}

cc @joelanford @anik120

@thomassuedbroecker
Copy link
Author

Hi @timflannagan thanks for your feedback.

I used the Operator SDK and it worked. But the documentation inside OLM should also work ;-)
Here my blog post Deploy an operator without the Operator SDK

Greetings Thomas

@lsierant
Copy link

I have just encountered the same error. It is happening only if dockerfile exists in the catalog directory.
If you generate exactly like in the documentation, then dockerfile is in the dir above it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants