Might be a use case for testing crio and the secrets for generically
updating container ca cert chain.

On Tue, Jul 17, 2018, 10:38 Ahmed Ossama <ah...@aossama.com> wrote:

> So I inspected the container runtime, and it turns out to be that
> /etc/ssl/certs is a sym link to /etc/pki/tls/certs directory.
>
> Modifiying the destinationDir caused the certificate to be injected, but
> the build process is still failing because the certificate is not in the
> global trusted CAs in the container.
>
> Did anyone come across an issue like this where the outbound internet
> connection going to an appliance that inspects the traffic and injecting
> it's own certificate?
>
> On 07/17/2018 08:50 AM, Ben Parees wrote:
>
>
>
> On Tue, Jul 17, 2018 at 5:06 AM, Ahmed Ossama <ah...@aossama.com> wrote:
>
>> For option #1, I granted the sa/builder the anyuid scc, and added the
>> serviceAccount: builder in the buildconfig. I thought this might make the
>> build run with root (Yes, it's not a good idea to run builds using root, I
>> was just trying it), but it didn't work anyway.
>>
>> For option #2, I've created the secret with:
>>
>> $ oc create secret generic root-certificate
>> --from-file=RootCertificate-2048-SHA256.crt=RootCertificate-2048-SHA256.crt
>>
>> Then edited the bc to:
>>
>>   source:
>>     git:
>>       ref: c967a614ca0429ef219e884ae1b2ff6e447449d8
>>       uri: http://gitlab.example.com/public-projects/java-blueprint.git
>>     secrets:
>>     - destinationDir: /etc/ssl/certs
>>       secret:
>>         name: root-certificate
>>     type: Git
>>
>> So this causes the build to fail with the error:
>>
>> error: Uploading to container failed: Error response from daemon:
>> {"message":"Error processing tar file(exit status 1): mkdir
>> /certs/..2018_07_17_00_07_32.144170643: no such file or directory"}
>> ERROR: The destination directory for "/var/run/secrets/
>> openshift.io/build/root-certificate" injection must exist in container
>> ("/etc/ssl/certs")
>>
>
> the docs make this behavior clear:
>
> "The destinationDir must exist or an error will occur. No directory paths
> are created during the copy process."
>
>
> https://docs.openshift.org/latest/dev_guide/builds/build_inputs.html#using-secrets-s2i-strategy
>
>
>
>> I tried changing the destinationDir to  /etc/certs, and the build passed
>> the above error but yet failed to connect to the repositories.
>>
>
> presumably this created a directory named "/etc/certs" containing a file
> for each key in your secret.  Your build logic would need to reference
> /etc/certs/<keyname> as the CA input file.
>
>
> Is there another way to inject the CA during the builds? Or this is the
>> only way?
>>
>> On 07/16/2018 09:49 PM, Graham Dumpleton wrote:
>>
>> The first will not work because you aren't root when a build occurs so
>> can't copy files to locations which require root access.
>>
>> For the second option, how has the build secret been set up in the build
>> config? Specifically, what does the spec.source.secrets part of the build
>> config look like, and what keys are defined in the secret?
>>
>> $ oc explain bc.spec.source.secrets
>> RESOURCE: secrets <[]Object>
>>
>> DESCRIPTION:
>>      secrets represents a list of secrets and their destinations that
>> will be
>>      used only for the build.
>>
>>      SecretBuildSource describes a secret and its destination directory
>> that
>>      will be used only at the build time. The content of the secret
>> referenced
>>      here will be copied into the destination directory instead of
>> mounting.
>>
>> FIELDS:
>>    destinationDir <string>
>>      destinationDir is the directory where the files from the secret
>> should be
>>      available for the build time. For the Source build strategy, these
>> will be
>>      injected into a container where the assemble script runs. Later,
>> when the
>>      script finishes, all files injected will be truncated to zero
>> length. For
>>      the Docker build strategy, these will be copied into the build
>> directory,
>>      where the Dockerfile is located, so users can ADD or COPY them during
>>      docker build.
>>
>>    secret <Object> -required-
>>      secret is a reference to an existing secret that you want to use in
>> your
>>      build.
>>
>> $ oc explain bc.spec.source.secrets.secret
>> RESOURCE: secret <Object>
>>
>> DESCRIPTION:
>>      secret is a reference to an existing secret that you want to use in
>> your
>>      build.
>>
>>      LocalObjectReference contains enough information to let you locate
>> the
>>      referenced object inside the same namespace.
>>
>> FIELDS:
>>    name <string>
>>      Name of the referent. More info:
>>
>> https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
>>
>> Graham
>>
>> On 17 Jul 2018, at 9:16 am, Ahmed Ossama <ah...@aossama.com> wrote:
>>
>> Hi Everyone,
>>
>> I have an OpenShift installation which is sitting behind an appliance
>> which intercepts outbound SSL traffic. Regular machines have the SSL
>> certificate of the appliance installed on them and they are able to access
>> the internet without any issues.
>>
>> My issue is with during the build; Because OpenShift builds images in
>> containers, thus the container which is building the code doesn't have the
>> SSL certificate of the interceptor installed in it. So grabbing code
>> dependencies from npm, maven or pypi during a build fails because the build
>> tries to connect to the repo manager via HTTPs, but since the CA of the
>> interceptor is not installed in the build container it fails.
>>
>> My question is: How can I inject the CA certificate of the interceptor in
>> the build container so that the traffic from the interceptor is trusted?
>>
>> So far I've tried two options but they failed:
>>
>> Option #1, have customized .s2i/bin/assemble script which downloads the
>> certificate in /etc/pki/ca-trust/source/anchors/ and running
>> update-ca-trust. But this option fails with:
>>
>> $ oc logs dsqc-4-build
>>   % Total    % Received % Xferd  Average Speed   Time Time     Time
>> Current
>>                                  Dload  Upload   Total Spent    Left
>> Speed
>>   0     0    0     0    0     0      0      0 --:--:-- --:--:--
>> --:--:--     0Warning: Failed to create the file
>> Warning:
>> /etc/pki/ca-trust/source/anchors/ZscalerRootCertificate-2048-SHA256.cr
>> Warning: t: Permission denied
>>  52  1732   52   901    0     0  14515      0 --:--:-- --:--:-- --:--:--
>> 14770
>> curl: (23) Failed writing body (0 != 901)
>> p11-kit: couldn't create file:
>> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt: Permission denied
>> p11-kit: couldn't create file:
>> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem: Permission denied
>> p11-kit: couldn't create file:
>> /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem: Permission denied
>> p11-kit: couldn't create file:
>> /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem: Permission denied
>> p11-kit: couldn't create file: /etc/pki/ca-trust/extracted/java/cacerts:
>> Permission denied
>> /tmp/scripts/assemble: line 14: /tmp/scripts/s2i-setup: No such file or
>> directory
>> error: build error: non-zero (13) exit code from
>> registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift@sha256:6c009f430da02bdcff618a7dcd085d7d22547263eeebfb8d6377a4cf6f58769d
>>
>> Option #2: following the steps detailed in
>> https://docs.openshift.com/container-platform/3.9/dev_guide/builds/build_inputs.html#using-secrets-during-build
>> but it fails with the error:
>>
>> $ oc logs po/dsqc-5-build
>> error: Uploading to container failed: Error response from daemon:
>> {"message":"Error processing tar file(exit status 1): mkdir
>> /certs/..2018_07_16_23_14_03.650131122: no such file or directory"}
>> ERROR: The destination directory for "/var/run/secrets/
>> openshift.io/build/root-certificate" injection must exist in container
>> ("/etc/ssl/certs")
>>
>> Any help is extremely appreciated.
>>
>> --
>> Regards,
>> Ahmed Ossama
>>
>> _______________________________________________
>> users mailing list
>> users@lists.openshift.redhat.com
>> http://lists.openshift.redhat.com/openshiftmm/listinfo/users
>>
>>
>>
>> --
>> Regards,
>> Ahmed Ossama
>>
>>
>> _______________________________________________
>> users mailing list
>> users@lists.openshift.redhat.com
>> http://lists.openshift.redhat.com/openshiftmm/listinfo/users
>>
>>
>
>
> --
> Ben Parees | OpenShift
>
>
> --
> Regards,
> Ahmed Ossama
>
> _______________________________________________
> users mailing list
> users@lists.openshift.redhat.com
> http://lists.openshift.redhat.com/openshiftmm/listinfo/users
>
_______________________________________________
users mailing list
users@lists.openshift.redhat.com
http://lists.openshift.redhat.com/openshiftmm/listinfo/users

Reply via email to