Bug 2002502
| Summary: | []corev1.EnvVar{} can't be appended to container.env | ||
|---|---|---|---|
| Product: | OpenShift Container Platform | Reporter: | Fan Jia <jfan> |
| Component: | Operator SDK | Assignee: | amacdona <austin> |
| Status: | CLOSED ERRATA | QA Contact: | Fan Jia <jfan> |
| Severity: | urgent | Docs Contact: | |
| Priority: | urgent | ||
| Version: | 4.9 | CC: | aos-bugs, jesusr, jlanford, marobrie |
| Target Milestone: | --- | ||
| Target Release: | 4.9.0 | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2021-10-18 17:51:28 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Fan Jia
2021-09-09 02:58:22 UTC
To verify the code, please add the ellipsis.
`{ container.Env = append(container.Env, proxyVars...) }`
You can use the docs PR to verify this https://github.com/operator-framework/operator-sdk/pull/5204 Ive also pushed my example if you want to have a look https://github.com/asmacdo/go-proxy-demo verified.
test env:
1. operator-sdk version: "v1.10.1-ocp", commit: "972fd59bb3a4cdb2e5102fc37fc3afa32f6c066f", kubernetes version: "v1.21", go version: "go1.16.5", GOOS: "linux", GOARCH: "amd64"
2. cv:4.9.0-0.nightly-2021-09-10-170926
3. add the http_proxy message to the go operator
1)controllers/memcached_controller.go
`
import (
......
proxy "github.com/operator-framework/operator-lib/proxy"
......
)
func (r *MemcachedReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
......
if err != nil && errors.IsNotFound(err) {
dep := r.deploymentForMemcached(memcached)
for i, container := range dep.Spec.Template.Spec.Containers {
dep.Spec.Template.Spec.Containers[i].Env = append(container.Env, proxy.ReadProxyVarsFromEnv()...)
}
`
2)Makefile
deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
$(KUSTOMIZE) build config/default | HTTP_PROXY=$(shell kubectl get proxies.config.openshift.io cluster -o json | jq '.spec.httpProxy') envsubst | kubectl apply -f -
3)config/manager/manager.yaml
config/manager/manager.yaml
containers:
- args:
- --leader-elect
- --leader-election-id=helm-proxy-demo
image: controller:latest
name: manager
env:
- name: "HTTP_PROXY"
value: $HTTP_PROXY
test result:
CR created success and env is passed to operand
1.$oc create -f config/samples/cache_v1_memcached.yaml
memcached.cache.example.com/memcached-sample created
2.$oc get deployment memcached-sample -o=jsonpath={.spec.template.spec.containers[0].env}
[map[name:HTTP_PROXY value:http://proxy-user1:JYgU8qRZV4DY4Pxxxxx@ec2-18-188-xxxxxx.us-xxxx-2.compute.xxxxxxxx.com:3128] map[name:http_proxy value:http://proxy-user1:JYgU8qRZV4DY4xxxxxxx@ec2-18-188-xxxxx.us-xxxx-2.compute.xxxxxxxx.com:3128]]
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: OpenShift Container Platform 4.9.0 bug fix and security update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2021:3759 |