Akses Internet Melalui Proxy

Jika Anda melakukan deployment di lingkungan yang memerlukan akses internet melalui proxy, Anda perlu mengonfigurasi layanan agar dapat mengakses sumber daya sebagaimana mestinya.

Cara terbaik untuk melakukannya adalah dengan mendefinisikan satu berkas yang berisi variabel lingkungan yang diperlukan dalam konfigurasi Butane Anda, dan mereferensikannya melalui berkas systemd drop-in unit untuk semua layanan yang memerlukan akses internet.

Mendefinisikan variabel lingkungan proxy umum

Berkas umum ini kemudian harus direferensikan secara eksplisit oleh setiap layanan yang memerlukan akses internet.

variant: fcos
version: 1.6.0
storage:
  files:
    - path: /etc/example-proxy.env
      mode: 0644
      contents:
        inline: |
          https_proxy="http://example.com:8080"
          all_proxy="http://example.com:8080"
          http_proxy="http://example.com:8080"
          HTTP_PROXY="http://example.com:8080"
          HTTPS_PROXY="http://example.com:8080"
          no_proxy="*.example.com,127.0.0.1,0.0.0.0,localhost"

Mendefinisikan drop-in unit untuk layanan inti

Zincati digunakan untuk memeriksa pembaruan OS, dan rpm-ostree digunakan untuk menerapkan pembaruan OS serta paket tambahan. Keduanya memerlukan akses internet. Layanan countme yang bersifat opsional dan anonim juga memerlukan akses jika diaktifkan.

Anda juga dapat menggunakan referensi berkas lokal untuk unit systemd alih-alih menuliskannya langsung. Lihat Menggunakan parameter --files-dir milik Butane untuk Menyematkan Berkas untuk informasi lebih lanjut.
variant: fcos
version: 1.6.0
systemd:
  units:
    - name: rpm-ostreed.service
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
    EnvironmentFile=/etc/example-proxy.env
    - name: zincati.service
  dropins:
        - name: 99-proxy.conf
          contents: |
       [Service]
            EnvironmentFile=/etc/example-proxy.env
    - name: rpm-ostree-countme.service
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
          EnvironmentFile=/etc/example-proxy.env

Mendefinisikan drop-in unit untuk container daemon

Jika Anda menggunakan Docker, maka drop-in untuk docker.service sudah cukup. Jika menjalankan Kubernetes dengan containerd (tanpa Docker), maka drop-in containerd.service mungkin juga diperlukan.

variant: fcos
version: 1.6.0
systemd:
  units:
    - name: docker.service
      enabled: true
      dropins:
        - name: 99-proxy.conf
          contents: |
       [Service]
            EnvironmentFile=/etc/example-proxy.env
    - name: containerd.service
      enabled: true
      dropins:
        - name: 99-proxy.conf
          contents: |
            [Service]
  EnvironmentFile=/etc/example-proxy.env

Mendefinisikan penggunaan proxy untuk unit systemd Podman

Podman tidak memiliki daemon, sehingga konfigurasi dilakukan untuk setiap layanan individual yang dijadwalkan, dan dapat disertakan dalam definisi lengkap unit systemd.

variant: fcos
version: 1.6.0
systemd:
  units:
    - name: example-svc.service
      enabled: true
      contents: |
        [Unit]
        After=network-online.target
     Wants=network-online.target

        [Service]
        EnvironmentFile=/etc/example-proxy.env
        ExecStartPre=-/bin/podman kill example-svc
        ExecStartPre=-/bin/podman rm example-svc
        ExecStartPre=-/bin/podman pull example-image:latest
        ExecStart=/bin/podman run --name example-svc example-image:latest
        ExecStop=/bin/podman stop example-svc

        [Install]
        WantedBy=multi-user.target