opm
(Operator Package Manager)是用来生成bundle注释、编译/验证bundle manifests image和其他功能的一个CLI。
安装opm
# to fix the error: SSL_ERROR_SYSCALL in connection to github.com:443
git config --global --unset http.proxy
git config --global --unset https.proxy
git clone https://github.com/operator-framework/operator-registry
cd operator-registry
make build
echo "alias opm='/Users/carawang/operator-registry/bin/opm'" >> ~/.bashrc
source ~/.bashrc
opm -h
生成Bundle Annotations 和 DockerFile
我们知道一个bundle的目录由manifest, metadata, dockerfile组成,metadata中的anno和dockerfile可由opm生成,则我们用opm generate它们之前,需要提供manifest的crd和csv。如:
carawang@carawangs-MacBook-Pro ~ % tree my_first_operator_bundle
my_first_operator_bundle
└── manifest
├── redis-operator.v0.4.0.clusterserviceversion.yaml
└── redis.redis.redis.opstreelabs.in.crd.yaml
1 directory, 2 files
则我们执行生成指令
opm alpha bundle generate --directory manifest --package test_redis_operator --channels stable --default stable
则目录结构变为
carawang@carawangs-MacBook-Pro my_first_operator_bundle % tree
.
├── bundle.Dockerfile
├── manifest
│ ├── redis-operator.v0.4.0.clusterserviceversion.yaml
│ └── redis.redis.redis.opstreelabs.in.crd.yaml
└── metadata
└── annotations.yaml
2 directories, 4 files
编译operator
# -t是tag编译的operator,这个是我自己quay.io的账户下创建的registry.
opm alpha bundle build --directory manifest --package test_redis_operator --channels stable --default stable -t quay.io/carawang/test_redis_operator.v0.1.0:latest
执行完成后,查看这个image已经生成并push
carawang@carawangs-MacBook-Pro my_first_operator_bundle % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/carawang/test_redis_operator.v0.1.0 latest 062228a9a1dd 3 minutes ago 1.05MB
carawang@carawangs-MacBook-Pro my_first_operator_bundle % docker push quay.io/carawang/test_redis_operator.v0.1.0
验证bundle operator
opm alpha bundle validate --tag quay.io/carawang/test_redis_operator.v0.1.0 --image-builder docker
输出为:
INFO[0005] All validation tests have been completed successfully container-tool=docker
完成!