Awx-operator: Fügen Sie den Containern private CAs hinzu

Erstellt am 7. Juni 2021  ·  6Kommentare  ·  Quelle: ansible/awx-operator

Hi,
Um den Zugriff auf TLS-Sites mit privaten CAs zu ermöglichen, müssen wir CA-Zertifikate zu den AWX-Containern hinzufügen. Gibt es eine native Möglichkeit, dies mit dem AWX-Operator zu tun?

Ich habe extra_volumes/ee_extra_volume_mounts verwendet, um crt-Dateien nach /etc/pki/ca-trust/source/anchors/ zu bekommen, aber ein Lauf von update-ca-trust fehlt. Gibt es eine native Möglichkeit, eigene CAs hinzuzufügen?

Aktuell haben wir dafür zwei Anwendungsfälle:

  1. Projekte von GIT holen
  2. Verwendung des Moduls "uri" in Rollen
    danke im voraus
    Max
bug in_progress

Hilfreichster Kommentar

Funktioniert hier gut, sorry für die späte Rückmeldung!

Alle 6 Kommentare

Dieser Kommentar beschreibt einige Möglichkeiten zum Anpassen einer Ausführungsumgebung. Ich habe keine Erfahrungen aus erster Hand mit dem ansible-builder aber das einfache Ableiten eines Docker-Images aus der "offiziellen" EE (in Kombination mit der zusätzlichen Volume-Bereitstellung) funktioniert für mich.

@suukit Könnten Sie es bitte mit den in diesem Zweig angegebenen Änderungen versuchen https://github.com/ansible/awx-operator/compare/devel...tchellomello :custom-ca?expand=1

Um es Ihnen leichter zu machen, habe ich dieses Testbild unter https://quay.io/repository/tchellomello/awx-operator?tab=tags quay.io/tchellomello/awx-operator:custom-ca

Grundsätzlich können Sie also die folgenden Schritte ausführen:

  1. Aktualisieren Sie Ihr awx-operator mit diesem Test-POC (siehe https://gist.github.com/tchellomello/e38c71248591034f8a7cc28421fe2245)
$ kubectl apply -f https://gist.githubusercontent.com/tchellomello/e38c71248591034f8a7cc28421fe2245/raw/b8c1d657553d33d8ba75bb077b5960bb5abbca3c/awx-operator.yml
  1. Erstellen Sie ein Geheimnis mit allen Bundle-Zertifizierungsstellen. Siehe mein Beispiel unten:

Hinweis : Der Schlüssel muss bundle-ca.crt

$ cat Toca_ROOT_CA.crt  Toca_Intermediate_CA.crt  > /tmp/bundle-ca.crt
$ kubectl create secret generic  awx-ssl-ca-custom  --from-file=bundle-ca.crt=/tmp/bundle-ca.crt
  1. Sobald der Operator aktualisiert wurde, ändern Sie Ihre awx Art, um das neue Geheimnis zuzuordnen
apiVersion: awx.ansible.com/v1beta1
kind: AWX
....
spec:
  bundle_cacert_secret: awx-ssl-ca-custom
....
 ```


So before applying this patch, you should see:

![image](https://user-images.githubusercontent.com/809840/121632422-f153e880-ca4e-11eb-8d83-c0179e326427.png)

```yaml
$  openssl  s_client -connect git.tatu.home:443 
CONNECTED(00000003)
[...SNIP...]

    SRP username: None
    TLS session ticket lifetime hint: 604800 (seconds)
    TLS session ticket:
    0000 - 18 71 bb 56 c4 6d 89 64-d0 df ac 2d fa cc 45 1e   .q.V.m.d...-..E.
    0010 - c0 71 c4 ba 50 ee 91 90-da d5 fe 8e 5e d1 a1 00   .q..P.......^...
    0020 - 57 8c 77 3b 09 e9 d5 fe-25 24 d5 bf d7 fd 76 bc   W.w;....%$....v.
    0030 - 1e a5 77 1b bd 3c bb 9b-25 df 48 a5 07 91 40 3b   ..w..<..%.H...@;
    0040 - d0 28 de e7 c6 4c 3c 12-51 d8 a0 0f ae 38 7a 44   .(...L<.Q....8zD
    0050 - 65 03 9a ac a7 82 e6 6f-be 2f 68 6c 6e 4e 11 55   e......o./hlnN.U
    0060 - d9 a6 85 9a ee 81 cd 63-51 65 58 8a 38 30 61 c8   .......cQeX.80a.
    0070 - d0 91 0c 1a 96 2b 1d 6c-c4 67 2a cf a2 05 a1 a0   .....+.l.g*.....
    0080 - ad                                                .

    Start Time: 1623388039
    Timeout   : 7200 (sec)
    Verify return code: 21 (unable to verify the first certificate)   <--- oops
    Extended master secret: no
    Max Early Data: 0


Nach diesem Patch sollten Sie Folgendes sehen:

awx-ssl-ca-6cccf6577d-jzrk9   0/4     Pending             0          0s      <none>          <none>   <none>           <none>
awx-ssl-ca-6cccf6577d-jzrk9   0/4     Pending             0          0s      <none>          p70      <none>           <none>
awx-ssl-ca-6cccf6577d-jzrk9   0/4     Init:0/1            0          0s      <none>          p70      <none>           <none>
awx-ssl-ca-6cccf6577d-jzrk9   0/4     Init:0/1            0          1s      10.233.64.98    p70      <none>           <none>
awx-ssl-ca-6cccf6577d-jzrk9   0/4     PodInitializing     0          2s      10.233.64.98    p70      <none>           <none>
awx-ssl-ca-6cccf6577d-jzrk9   4/4     Running             0          4s      10.233.64.98    p70      <none>           <none>

image

Wenn Sie den Container überprüfen, sollten Sie außerdem sehen, dass die benutzerdefinierte CA als vertrauenswürdig aufgeführt ist

(py39) mdemello<strong i="11">@storm</strong> ~> kubectl iexec awx /bin/bash                                                                                                                                                                                     00:53:40
Namespace: default | Pod: ✔ awx-ssl-ca-6cccf6577d-jzrk9
Container: ✔ awx-ssl-ca-task
bash-4.4$ ls -la /etc/pki/ca-trust/source/anchors/bundle-ca.crt 
-rw-r--r--. 1 root root 4086 Jun 11 04:51 /etc/pki/ca-trust/source/anchors/bundle-ca.crt
bash-4.4$ trust list | grep -i toca
    label: TOCA ROOT CA
    label: Toca Intermediate Certificate Authority
bash-4.4$ openssl  s_client -connect git.tatu.home:443 
CONNECTED(00000003)
[...SNIP...]

    SRP username: None
    TLS session ticket lifetime hint: 604800 (seconds)
    TLS session ticket:
    0000 - 18 71 bb 56 c4 6d 89 64-d0 df ac 2d fa cc 45 1e   .q.V.m.d...-..E.
    0010 - 00 b2 67 b8 66 db 91 57-f8 85 92 e3 ef 61 4e 3f   ..g.f..W.....aN?
    0020 - 66 e2 64 01 45 b8 ab 7f-f8 84 7f 5e f6 2d e2 56   f.d.E......^.-.V
    0030 - d3 2c 4b 19 cb 93 19 74-c7 0b e3 7d 76 d8 cd f7   .,K....t...}v...
    0040 - 30 5a 87 23 27 34 d7 47-8e f5 c3 6c 41 81 7d 18   0Z.#'4.G...lA.}.
    0050 - 13 96 4e e7 76 3b 50 f0-fb 8d 9d df 4a 51 9d 36   ..N.v;P.....JQ.6
    0060 - 0e a9 1a 57 26 62 51 eb-f2 ec 24 56 93 5f 01 73   ...W&bQ...$V._.s
    0070 - 67 f5 a1 a7 38 e1 dc 5e-27 65 c6 24 f5 ff 2c dc   g...8..^'e.$..,.
    0080 - eb                                                .

    Start Time: 1623387247
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)    <----- yes
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK

bash-4.4$ git clone https://git.tatu.home/mmello/test-ansible.git
Cloning into 'test-ansible'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), 1.81 KiB | 928.00 KiB/s, done.

Bitte lassen Sie mich wissen, ob das bei Ihnen funktioniert hat.

@tchellomello : Danke, ich werde es versuchen

Funktioniert hier gut, sorry für die späte Rückmeldung!

Funktioniert diese Lösung für WinRM-CA-Zertifikate? Ich öffne ein Problem bei awx, weil ich nicht weiß, ob es ein Operator- oder ein awx-Problem ist.
https://github.com/ansible/awx/issues/10884

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen