diff --git a/Dockerfile b/Dockerfile index 72ac3d6..0fa6fb1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN apk add --no-cache \ RUN wget https://github.com/mikefarah/yq/releases/download/v4.23.1/yq_linux_amd64 -O /usr/bin/yq && chmod +x /usr/bin/yq -RUN yq 'del(.vm.endpoint) | .chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBE_NAMESPACE", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' ${FABRIC_CFG_PATH}/core.yaml > core.yaml +RUN yq 'del(.vm.endpoint) | .chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' ${FABRIC_CFG_PATH}/core.yaml > core.yaml FROM hyperledger/fabric-peer:${HLF_VERSION} diff --git a/README.md b/README.md index 4c437a7..5e01653 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Status: it should just about work now but there are a few issues to iron out (an The k8s builder can be run in cluster using the `KUBERNETES_SERVICE_HOST` and `KUBERNETES_SERVICE_PORT` environment variables, or it can connect using a `KUBECONFIG_PATH` environment variable. -An optional `KUBE_NAMESPACE` can be used to specify the namespace to deploy chaincode to. +An optional `FABRIC_CHAINCODE_NAMESPACE` can be used to specify the namespace to deploy chaincode to. A `CORE_PEER_ID` environment variable is also currently required. @@ -22,7 +22,7 @@ External builders are configured in the `core.yaml` file, for example: path: /home/peer/ccbuilders/k8s_builder propagateEnvironment: - CORE_PEER_ID - - KUBE_NAMESPACE + - FABRIC_CHAINCODE_NAMESPACE - KUBERNETES_SERVICE_HOST - KUBERNETES_SERVICE_PORT ``` diff --git a/cmd/run/main.go b/cmd/run/main.go index 736b6ad..f155085 100644 --- a/cmd/run/main.go +++ b/cmd/run/main.go @@ -17,15 +17,15 @@ func main() { os.Exit(1) } - peerID, err := util.GetRequiredEnv("CORE_PEER_ID") + peerID, err := util.GetRequiredEnv(util.PeerIdVariable) if err != nil { - fmt.Fprintln(os.Stderr, "Expected CORE_PEER_ID environment variable") + fmt.Fprintf(os.Stderr, "Expected %s environment variable\n", util.PeerIdVariable) os.Exit(1) } - kubeconfigPath := util.GetOptionalEnv("KUBECONFIG_PATH", "") + kubeconfigPath := util.GetOptionalEnv(util.KubeconfigPathVariable, "") - kubeNamespace := util.GetOptionalEnv("KUBE_NAMESPACE", "") + kubeNamespace := util.GetOptionalEnv(util.ChaincodeNamespaceVariable, "") if kubeNamespace == "" { kubeNamespace, err = util.GetKubeNamespace() if err != nil { diff --git a/docs/TEST_NETWORK_K8S.md b/docs/TEST_NETWORK_K8S.md index 18991ba..b508dc4 100644 --- a/docs/TEST_NETWORK_K8S.md +++ b/docs/TEST_NETWORK_K8S.md @@ -19,7 +19,6 @@ The org1 and org2 `core.yaml` files also need to be updated with the k8s builder path: /opt/hyperledger/k8s_builder propagateEnvironment: - CORE_PEER_ID - - KUBE_NAMESPACE - KUBERNETES_SERVICE_HOST - KUBERNETES_SERVICE_PORT ``` @@ -28,8 +27,8 @@ You can use [yq](https://mikefarah.gitbook.io/yq/) to update the `core.yaml` fil Make sure you are in the `fabric-samples/test-network-k8s` directory before running the following commands. ```shell -yq -i '.chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBE_NAMESPACE", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' config/org1/core.yaml -yq -i '.chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBE_NAMESPACE", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' config/org2/core.yaml +yq -i '.chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' config/org1/core.yaml +yq -i '.chaincode.externalBuilders += { "name": "k8s_builder", "path": "/opt/hyperledger/k8s_builder", "propagateEnvironment": [ "CORE_PEER_ID", "KUBERNETES_SERVICE_HOST", "KUBERNETES_SERVICE_PORT" ] }' config/org2/core.yaml ``` ## Kubernetes permissions diff --git a/internal/util/env.go b/internal/util/env.go index 10772e7..166781d 100644 --- a/internal/util/env.go +++ b/internal/util/env.go @@ -7,6 +7,12 @@ import ( "os" ) +const ( + ChaincodeNamespaceVariable = "FABRIC_CHAINCODE_NAMESPACE" + KubeconfigPathVariable = "KUBECONFIG_PATH" + PeerIdVariable = "CORE_PEER_ID" +) + func GetOptionalEnv(key, defaultValue string) string { if value, ok := os.LookupEnv(key); ok { return value