Alright, I think I’ve got a solution for your problem here.
Problem
I believe what you’re experiencing here is due to the helm install
command in Step 7 of the interactive Secretless Broker tutorial, where it specifies that the conjur-oss
service should not be externally accessible:
helm install conjur-cluster cyberark/conjur-oss \
--set ssl.hostname=conjur.demo.com,dataKey="$(docker run --rm cyberark/conjur data-key generate)",authenticators="authn-k8s/dev" \
--set postgres.persistentVolume.create=false \
--> --set service.external.enabled=false \
--namespace conjur-server
I deployed a Conjur Open Source server to my own Kubernetes-enabled Docker cluster with the command from the tutorial, which created the following services:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
conjur-cluster-conjur-oss NodePort 10.97.143.80 <none> 443:30248/TCP 7m6s
conjur-cluster-postgres ClusterIP 10.99.57.104 <none> 5432/TCP 7m6s
Note that neither has an EXTERNAL-IP
.
The URL gathered in Step 7 of the tutorial, and aliased to conjur.demo.com
is an internal address, accessible from inside the K8s cluster, but not from outside. When trying to reach the service with curl
or openssl
, with the URL gathered from Step 7:
% curl -k -v https://10.1.0.7:9443
* Trying 10.1.0.7...
* TCP_NODELAY set
* Connection failed
* connect to 10.1.0.7 port 9443 failed: Operation timed out
* Failed to connect to 10.1.0.7 port 9443: Operation timed out
* Closing connection 0
curl: (7) Failed to connect to 10.1.0.7 port 9443: Operation timed out
% openssl s_client -showcerts -connect 10.1.0.7:9443 < /dev/null
connect: Operation timed out
connect:errno=60
Solution
I used helm upgrade
to enable an external service:
helm upgrade conjur-cluster cyberark/conjur-oss \
--set ssl.hostname=conjur.demo.com,dataKey="$(docker run --rm cyberark/conjur data-key generate)",authenticators="authn-k8s/dev" \
--set postgres.persistentVolume.create=false \
--> --set service.external.enabled=true \
--namespace conjur-server
This will create an externally-accessible load-balancer service:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
conjur-cluster-conjur-oss NodePort 10.97.143.80 <none> 443:30248/TCP 11m
conjur-cluster-conjur-oss-ingress LoadBalancer 10.105.110.217 localhost 443:31606/TCP 26s
conjur-cluster-postgres ClusterIP 10.99.57.104 <none> 5432/TCP 11m
If you adjust the /etc/host
entry to map conjur.demo.com
to localhost
, accessing with curl
and openssl
:
% curl -v -k https://conjur.demo.com:443
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to conjur.demo.com (127.0.0.1) port 443 (#0)
...
< HTTP/1.1 200 OK
% openssl s_client -showcerts -connect conjur.demo.com:443 < /dev/null
CONNECTED(00000003)
depth=1 CN = conjur-oss-ca
...
Let me know if this helps, or doesn’t!